From ba2ec6db3de89154b5891cec8e17d2a89c35e141 Mon Sep 17 00:00:00 2001 From: d34dscene Date: Wed, 2 Jul 2025 01:44:51 +0200 Subject: [PATCH] cleanup validation logic --- agent/internal/client/auth.go | 2 +- agent/internal/collector/machine.go | 10 +- go.mod | 4 +- go.sum | 16 +- internal/api/handler/oidc.go | 2 +- internal/api/middlewares/audit.go | 74 +- internal/api/middlewares/auth.go | 71 +- internal/api/server/cors.go | 3 +- internal/api/server/server.go | 2 +- internal/api/service/agent.go | 22 +- internal/api/service/setting.go | 4 +- internal/api/service/user.go | 100 +- internal/backup/backup.go | 4 +- internal/config/setup.go | 10 +- internal/config/tasks.go | 10 +- internal/mail/mail.go | 39 +- internal/settings/settings.go | 58 +- internal/settings/settings_test.go | 13 +- internal/settings/validate.go | 4 +- internal/storage/s3.go | 45 +- internal/storage/types.go | 2 +- pkg/util/ip.go | 78 +- proto/gen/mantrae/v1/agent.pb.go | 230 +- proto/gen/mantrae/v1/backup.pb.go | 121 +- proto/gen/mantrae/v1/dns_provider.pb.go | 260 +- proto/gen/mantrae/v1/entry_point.pb.go | 197 +- proto/gen/mantrae/v1/event.pb.go | 139 +- .../v1/mantraev1connect/user.connect.go | 28 - proto/gen/mantrae/v1/middleware.pb.go | 286 +- proto/gen/mantrae/v1/profile.pb.go | 185 +- proto/gen/mantrae/v1/router.pb.go | 258 +- proto/gen/mantrae/v1/service.pb.go | 288 +- proto/gen/mantrae/v1/setting.pb.go | 98 +- proto/gen/mantrae/v1/user.pb.go | 628 +- proto/gen/openapi/openapi.yaml | 163 +- proto/mantrae/v1/agent.proto | 35 +- proto/mantrae/v1/backup.proto | 10 +- proto/mantrae/v1/dns_provider.proto | 6 +- proto/mantrae/v1/entry_point.proto | 30 +- proto/mantrae/v1/event.proto | 5 +- proto/mantrae/v1/middleware.proto | 55 +- proto/mantrae/v1/profile.proto | 25 +- proto/mantrae/v1/router.proto | 50 +- proto/mantrae/v1/service.proto | 55 +- proto/mantrae/v1/setting.proto | 10 +- proto/mantrae/v1/user.proto | 46 +- .../lib/components/modals/ConfigModal.svelte | 4 +- .../lib/components/modals/UserModal.svelte | 23 +- web/src/lib/gen/buf/validate/validate_pb.ts | 8456 ++++++++--------- web/src/lib/gen/mantrae/v1/agent_pb.ts | 543 +- web/src/lib/gen/mantrae/v1/auditlog_pb.ts | 149 +- web/src/lib/gen/mantrae/v1/backup_pb.ts | 256 +- web/src/lib/gen/mantrae/v1/dns_provider_pb.ts | 474 +- web/src/lib/gen/mantrae/v1/entry_point_pb.ts | 382 +- web/src/lib/gen/mantrae/v1/event_pb.ts | 487 +- web/src/lib/gen/mantrae/v1/middleware_pb.ts | 675 +- web/src/lib/gen/mantrae/v1/profile_pb.ts | 334 +- web/src/lib/gen/mantrae/v1/router_pb.ts | 519 +- web/src/lib/gen/mantrae/v1/service_pb.ts | 533 +- web/src/lib/gen/mantrae/v1/setting_pb.ts | 194 +- web/src/lib/gen/mantrae/v1/user_pb.ts | 798 +- web/src/lib/gen/mantrae/v1/util_pb.ts | 103 +- web/src/routes/+layout.ts | 57 +- web/src/routes/login/+page.svelte | 18 +- web/src/routes/settings/+page.svelte | 219 +- 65 files changed, 8571 insertions(+), 9434 deletions(-) diff --git a/agent/internal/client/auth.go b/agent/internal/client/auth.go index 138f073..41cf65c 100644 --- a/agent/internal/client/auth.go +++ b/agent/internal/client/auth.go @@ -103,8 +103,8 @@ func (t *TokenSource) Refresh(ctx context.Context) { req := connect.NewRequest(&mantraev1.HealthCheckRequest{ MachineId: info.MachineID, Hostname: info.Hostname, + PrivateIp: info.PrivateIP, PublicIp: info.PublicIPs.IPv4, - PrivateIp: info.PrivateIPs.IPv4, }) resp, err := t.client.HealthCheck(ctx, req) diff --git a/agent/internal/collector/machine.go b/agent/internal/collector/machine.go index 7ea9c9e..b297754 100644 --- a/agent/internal/collector/machine.go +++ b/agent/internal/collector/machine.go @@ -8,10 +8,10 @@ import ( ) type Machine struct { - MachineID string - Hostname string - PrivateIPs util.IPAddresses - PublicIPs util.IPAddresses + MachineID string + Hostname string + PrivateIP string + PublicIPs util.IPAddresses } // GetMachineInfo retrieves information about the local machine @@ -36,7 +36,7 @@ func GetMachineInfo() *Machine { slog.Error("Failed to get hostname", "error", err) } - result.PrivateIPs, err = util.GetPrivateIPs() + result.PrivateIP, err = util.GetHostIPv4() if err != nil { slog.Error("Failed to get local IP", "error", err) } diff --git a/go.mod b/go.mod index 8579dec..6b7ac33 100644 --- a/go.mod +++ b/go.mod @@ -31,6 +31,7 @@ require ( golang.org/x/net v0.41.0 golang.org/x/oauth2 v0.30.0 google.golang.org/protobuf v1.36.6 + gopkg.in/yaml.v3 v3.0.1 modernc.org/sqlite v1.38.0 sigs.k8s.io/yaml v1.5.0 ) @@ -120,9 +121,8 @@ require ( google.golang.org/genproto/googleapis/api v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect google.golang.org/grpc v1.73.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect gotest.tools/v3 v3.5.2 // indirect - modernc.org/libc v1.66.1 // indirect + modernc.org/libc v1.66.2 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect ) diff --git a/go.sum b/go.sum index 4074672..f0ccca0 100644 --- a/go.sum +++ b/go.sum @@ -327,18 +327,18 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q= gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA= -modernc.org/cc/v4 v4.26.1 h1:+X5NtzVBn0KgsBCBe+xkDC7twLb/jNVj9FPgiwSQO3s= -modernc.org/cc/v4 v4.26.1/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM= +modernc.org/cc/v4 v4.26.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= -modernc.org/fileutil v1.3.3 h1:3qaU+7f7xxTUmvU1pJTZiDLAIoJVdUSSauJNHg9yXoA= -modernc.org/fileutil v1.3.3/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/fileutil v1.3.8 h1:qtzNm7ED75pd1C7WgAGcK4edm4fvhtBsEiI/0NQ54YM= +modernc.org/fileutil v1.3.8/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= -modernc.org/goabi0 v0.0.3 h1:y81b9r3asCh6Xtse6Nz85aYGB0cG3M3U6222yap1KWI= -modernc.org/goabi0 v0.0.3/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= -modernc.org/libc v1.66.1 h1:4uQsntXbVyAgrV+j6NhKvDiUypoJL48BWQx6sy9y8ok= -modernc.org/libc v1.66.1/go.mod h1:AiZxInURfEJx516LqEaFcrC+X38rt9G7+8ojIXQKHbo= +modernc.org/goabi0 v0.1.2 h1:9mfG19tFBypPnlSKRAjI5nXGMLmVy+jLyKNVKsMzt/8= +modernc.org/goabi0 v0.1.2/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= +modernc.org/libc v1.66.2 h1:JCBxlJzZOIwZY54fzjHN3Wsn8Ty5PUTPr/xioRkmecI= +modernc.org/libc v1.66.2/go.mod h1:ceIGzvXxP+JV3pgVjP9avPZo6Chlsfof2egXBH3YT5Q= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= diff --git a/internal/api/handler/oidc.go b/internal/api/handler/oidc.go index a903da1..ae555d4 100644 --- a/internal/api/handler/oidc.go +++ b/internal/api/handler/oidc.go @@ -232,7 +232,7 @@ func getOIDCConfig( r *http.Request, a *config.App, ) (*oauth2.Config, *oidc.IDTokenVerifier, error) { - sets := a.SM.GetAll() + sets := a.SM.GetAll(ctx) // Parse settings (same as before but simplified validation) if enabled, ok := sets[settings.KeyOIDCEnabled]; ok { diff --git a/internal/api/middlewares/audit.go b/internal/api/middlewares/audit.go index 68a9d86..7dac63e 100644 --- a/internal/api/middlewares/audit.go +++ b/internal/api/middlewares/audit.go @@ -19,7 +19,7 @@ type AuditEvent struct { Details string } -// AuditInterceptor automatically logs CRUD operations +// NewAuditInterceptor automatically logs CRUD operations func NewAuditInterceptor(app *config.App) connect.UnaryInterceptorFunc { return func(next connect.UnaryFunc) connect.UnaryFunc { return func(ctx context.Context, req connect.AnyRequest) (connect.AnyResponse, error) { @@ -32,7 +32,7 @@ func NewAuditInterceptor(app *config.App) connect.UnaryInterceptorFunc { // Log audit event asynchronously to avoid blocking the response go func(auditCtx context.Context) { if auditErr := createAuditLog(auditCtx, app.Conn.GetQuery(), *auditEvent); auditErr != nil { - slog.Error("failed to create audit log", "error", auditErr) + slog.Warn("failed to create audit log", "error", auditErr) } }(ctx) } @@ -51,10 +51,9 @@ func extractAuditEvent(req connect.AnyRequest, resp connect.AnyResponse) *AuditE return nil } - service := parts[1] // e.g., "mantrae.v1.ProfileService" - method := parts[2] // e.g., "CreateProfile" + service := parts[1] + method := parts[2] - // Map method names to audit events eventType := mapMethodToEvent(method) if eventType == "" { return nil // Not an auditable operation @@ -102,8 +101,6 @@ func getResourceType(service string) string { return "agent" case strings.Contains(service, "UserService"): return "user" - case strings.Contains(service, "SettingService"): - return "setting" default: return "unknown" } @@ -163,10 +160,7 @@ func extractProfileServiceDetails( } case "DeleteProfile": if deleteReq, ok := req.Any().(*mantraev1.DeleteProfileRequest); ok { - return &deleteReq.Id, fmt.Sprintf( - "Deleted profile (ID: %d)", - deleteReq.Id, - ) + return &deleteReq.Id, fmt.Sprintf("Deleted profile (ID: %d)", deleteReq.Id) } } return nil, "" @@ -198,10 +192,7 @@ func extractRouterServiceDetails( } case "DeleteRouter": if deleteReq, ok := req.Any().(*mantraev1.DeleteRouterRequest); ok { - return nil, fmt.Sprintf( - "Deleted router (ID: %d)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted router (ID: %d)", deleteReq.Id) } } return nil, "" @@ -233,10 +224,7 @@ func extractServiceServiceDetails( } case "DeleteService": if deleteReq, ok := req.Any().(*mantraev1.DeleteServiceRequest); ok { - return nil, fmt.Sprintf( - "Deleted service (ID: %d)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted service (ID: %d)", deleteReq.Id) } } return nil, "" @@ -268,10 +256,7 @@ func extractMiddlewareServiceDetails( } case "DeleteMiddleware": if deleteReq, ok := req.Any().(*mantraev1.DeleteMiddlewareRequest); ok { - return nil, fmt.Sprintf( - "Deleted middleware (ID: %d)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted middleware (ID: %d)", deleteReq.Id) } } return nil, "" @@ -303,10 +288,7 @@ func extractEntryPointServiceDetails( } case "DeleteEntryPoint": if deleteReq, ok := req.Any().(*mantraev1.DeleteEntryPointRequest); ok { - return nil, fmt.Sprintf( - "Deleted entrypoint (ID: %d)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted entrypoint (ID: %d)", deleteReq.Id) } } return nil, "" @@ -320,10 +302,7 @@ func extractDNSProviderServiceDetails( switch method { case "CreateDnsProvider": if createReq, ok := req.Any().(*mantraev1.CreateDnsProviderRequest); ok { - return nil, fmt.Sprintf( - "Created DNS provider '%s'", - createReq.Name, - ) + return nil, fmt.Sprintf("Created DNS provider '%s'", createReq.Name) } case "UpdateDnsProvider": if updateReq, ok := req.Any().(*mantraev1.UpdateDnsProviderRequest); ok { @@ -337,10 +316,7 @@ func extractDNSProviderServiceDetails( } case "DeleteDnsProvider": if deleteReq, ok := req.Any().(*mantraev1.DeleteDnsProviderRequest); ok { - return nil, fmt.Sprintf( - "Deleted DNS provider (ID: %d)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted DNS provider (ID: %d)", deleteReq.Id) } } return nil, "" @@ -371,10 +347,7 @@ func extractAgentServiceDetails( } case "DeleteAgent": if deleteReq, ok := req.Any().(*mantraev1.DeleteAgentRequest); ok { - return nil, fmt.Sprintf( - "Deleted agent (ID: %s)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted agent (ID: %s)", deleteReq.Id) } } return nil, "" @@ -388,10 +361,7 @@ func extractUserServiceDetails( switch method { case "CreateUser": if createReq, ok := req.Any().(*mantraev1.CreateUserRequest); ok { - return nil, fmt.Sprintf( - "Created user '%s'", - createReq.Username, - ) + return nil, fmt.Sprintf("Created user '%s'", createReq.Username) } case "UpdateUser": if updateReq, ok := req.Any().(*mantraev1.UpdateUserRequest); ok { @@ -405,10 +375,7 @@ func extractUserServiceDetails( } case "DeleteUser": if deleteReq, ok := req.Any().(*mantraev1.DeleteUserRequest); ok { - return nil, fmt.Sprintf( - "Deleted user (ID: %s)", - deleteReq.Id, - ) + return nil, fmt.Sprintf("Deleted user (ID: %s)", deleteReq.Id) } } return nil, "" @@ -426,16 +393,7 @@ func createAuditLog(ctx context.Context, q *db.Queries, event AuditEvent) error } // Extract user/agent context if available - if valUserID := ctx.Value(AuthUserIDKey); valUserID != nil { - if userID, ok := valUserID.(string); ok && userID != "" { - params.UserID = &userID - } - } - if valAgentID := ctx.Value(AuthAgentIDKey); valAgentID != nil { - if agentID, ok := valAgentID.(string); ok && agentID != "" { - params.AgentID = &agentID - } - } - + params.UserID = GetUserIDFromContext(ctx) + params.AgentID = GetAgentIDFromContext(ctx) return q.CreateAuditLog(ctx, params) } diff --git a/internal/api/middlewares/auth.go b/internal/api/middlewares/auth.go index 25f6895..0c74a89 100644 --- a/internal/api/middlewares/auth.go +++ b/internal/api/middlewares/auth.go @@ -66,10 +66,13 @@ func (h *MiddlewareHandler) JWTAuth(next http.Handler) http.Handler { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } - + if claims.IsExpired() { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } user, err := h.app.Conn.GetQuery().GetUserByID(r.Context(), claims.UserID) if err != nil { - http.Error(w, "User not found", http.StatusUnauthorized) + http.Error(w, "Unauthorized", http.StatusUnauthorized) return } @@ -83,9 +86,13 @@ func (h *MiddlewareHandler) JWTAuth(next http.Handler) http.Handler { http.Error(w, "Unauthorized", http.StatusUnauthorized) return } + if claims.IsExpired() { + http.Error(w, "Unauthorized", http.StatusUnauthorized) + return + } user, err := h.app.Conn.GetQuery().GetUserByID(r.Context(), claims.UserID) if err != nil { - http.Error(w, "User not found", http.StatusUnauthorized) + http.Error(w, "Unauthorized", http.StatusUnauthorized) return } @@ -157,13 +164,27 @@ func (i *AuthInterceptor) authenticateRequest( if err != nil { return nil, connect.NewError( connect.CodeNotFound, - errors.New("agent not found"), + errors.New("unauthorized"), ) } if agent.Token != getBearerToken(header) { return nil, connect.NewError( connect.CodeUnauthenticated, - errors.New("token mismatch"), + errors.New("unauthorized"), + ) + } + claims, err := meta.DecodeAgentToken(agent.Token, i.app.Secret) + if err != nil { + return nil, connect.NewError( + connect.CodeUnauthenticated, + errors.New("unauthorized"), + ) + } + // Check if token is expired + if claims.IsExpired() { + return nil, connect.NewError( + connect.CodeUnauthenticated, + errors.New("unauthorized"), ) } return context.WithValue(ctx, AuthAgentIDKey, agent.ID), nil @@ -175,14 +196,20 @@ func (i *AuthInterceptor) authenticateRequest( if err != nil { return nil, connect.NewError( connect.CodeUnauthenticated, - errors.New("invalid token"), + errors.New("unauthorized"), + ) + } + if claims.IsExpired() { + return nil, connect.NewError( + connect.CodeUnauthenticated, + errors.New("unauthorized"), ) } user, err := i.app.Conn.GetQuery().GetUserByID(ctx, claims.UserID) if err != nil { return nil, connect.NewError( connect.CodeUnauthenticated, - errors.New("invalid token"), + errors.New("unauthorized"), ) } return context.WithValue(ctx, AuthUserIDKey, user.ID), nil @@ -192,14 +219,20 @@ func (i *AuthInterceptor) authenticateRequest( if err != nil { return nil, connect.NewError( connect.CodeUnauthenticated, - errors.New("invalid token"), + errors.New("unauthorized"), + ) + } + if claims.IsExpired() { + return nil, connect.NewError( + connect.CodeUnauthenticated, + errors.New("unauthorized"), ) } user, err := i.app.Conn.GetQuery().GetUserByID(ctx, claims.UserID) if err != nil { return nil, connect.NewError( connect.CodeUnauthenticated, - errors.New("invalid token"), + errors.New("unauthorized"), ) } return context.WithValue(ctx, AuthUserIDKey, user.ID), nil @@ -248,12 +281,20 @@ func getCookieToken(header http.Header) string { return token } -func GetUserIDFromContext(ctx context.Context) (string, bool) { - id, ok := ctx.Value(AuthUserIDKey).(string) - return id, ok +func GetUserIDFromContext(ctx context.Context) *string { + if id := ctx.Value(AuthUserIDKey); id != nil { + if userID, ok := id.(string); ok && userID != "" { + return &userID + } + } + return nil } -func GetAgentIDFromContext(ctx context.Context) (string, bool) { - agent, ok := ctx.Value(AuthAgentIDKey).(string) - return agent, ok +func GetAgentIDFromContext(ctx context.Context) *string { + if agent := ctx.Value(AuthAgentIDKey); agent != nil { + if agentID, ok := agent.(string); ok && agentID != "" { + return &agentID + } + } + return nil } diff --git a/internal/api/server/cors.go b/internal/api/server/cors.go index 951b8cd..2743770 100644 --- a/internal/api/server/cors.go +++ b/internal/api/server/cors.go @@ -1,6 +1,7 @@ package server import ( + "context" "net/http" "time" @@ -21,7 +22,7 @@ func (s *Server) WithCORS(h http.Handler) http.Handler { "http://127.0.0.1:" + s.Port, } - serverURL, ok := s.app.SM.Get(settings.KeyServerURL) + serverURL, ok := s.app.SM.Get(context.Background(), settings.KeyServerURL) if ok { allowedOrigins = append(allowedOrigins, serverURL) } diff --git a/internal/api/server/server.go b/internal/api/server/server.go index cbe708e..5526e05 100644 --- a/internal/api/server/server.go +++ b/internal/api/server/server.go @@ -87,7 +87,7 @@ func (s *Server) Start(ctx context.Context) error { // Start server in a goroutine go func() { - serverURL, ok := s.app.SM.Get("server_url") + serverURL, ok := s.app.SM.Get(ctx, "server_url") if ok && serverURL == "" { serverURL = s.Host + ":" + s.Port } diff --git a/internal/api/service/agent.go b/internal/api/service/agent.go index 76ed8ea..a63803e 100644 --- a/internal/api/service/agent.go +++ b/internal/api/service/agent.go @@ -178,6 +178,11 @@ func (s *AgentService) HealthCheck( params.PrivateIp = &req.Msg.PrivateIp } + // Update ActiveIp if it's not set + if agent.ActiveIp == nil && req.Msg.PrivateIp != "" { + params.ActiveIp = &req.Msg.PrivateIp + } + result, err := s.app.Conn.GetQuery().UpdateAgent(ctx, params) if err != nil { return nil, connect.NewError(connect.CodeInternal, err) @@ -243,22 +248,17 @@ func (s *AgentService) updateToken(ctx context.Context, agent *db.Agent) (*strin } func (s *AgentService) createToken(agentID string, profileID int64) (*string, error) { - serverURL, ok := s.app.SM.Get(settings.KeyServerURL) - if !ok { - return nil, errors.New("failed to get server url setting") - } - - agentInterval, ok := s.app.SM.Get(settings.KeyAgentCleanupInterval) - if !ok { - return nil, errors.New("failed to get agent cleanup interval setting") - } + sets := s.app.SM.GetMany( + context.Background(), + []string{settings.KeyServerURL, settings.KeyAgentCleanupInterval}, + ) token, err := meta.EncodeAgentToken( profileID, agentID, - serverURL, + sets[settings.KeyServerURL], s.app.Secret, - time.Now().Add(settings.AsDuration(agentInterval)), + time.Now().Add(settings.AsDuration(sets[settings.KeyAgentCleanupInterval])), ) if err != nil { return nil, err diff --git a/internal/api/service/setting.go b/internal/api/service/setting.go index f7466d6..2e905be 100644 --- a/internal/api/service/setting.go +++ b/internal/api/service/setting.go @@ -23,7 +23,7 @@ func (s *SettingService) GetSetting( ctx context.Context, req *connect.Request[mantraev1.GetSettingRequest], ) (*connect.Response[mantraev1.GetSettingResponse], error) { - value, ok := s.app.SM.Get(req.Msg.Key) + value, ok := s.app.SM.Get(ctx, req.Msg.Key) if !ok { return nil, connect.NewError(connect.CodeInternal, errors.New("setting not found")) } @@ -52,7 +52,7 @@ func (s *SettingService) ListSettings( req *connect.Request[mantraev1.ListSettingsRequest], ) (*connect.Response[mantraev1.ListSettingsResponse], error) { var settings []*mantraev1.Setting - for key, val := range s.app.SM.GetAll() { + for key, val := range s.app.SM.GetAll(ctx) { settings = append(settings, &mantraev1.Setting{Key: key, Value: val}) } return connect.NewResponse(&mantraev1.ListSettingsResponse{Settings: settings}), nil diff --git a/internal/api/service/user.go b/internal/api/service/user.go index 5a33ec0..1197db5 100644 --- a/internal/api/service/user.go +++ b/internal/api/service/user.go @@ -41,7 +41,7 @@ func (s *UserService) LoginUser( case *mantraev1.LoginUserRequest_Email: user, err = s.app.Conn.GetQuery().GetUserByEmail(ctx, &id.Email) default: - return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("one of username or email must be set")) + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("username or email must be set")) } if err != nil { return nil, connect.NewError(connect.CodeInternal, err) @@ -70,7 +70,7 @@ func (s *UserService) LoginUser( Secure: req.Header().Get("X-Forwarded-Proto") == "https", SameSite: http.SameSiteLaxMode, } - res := connect.NewResponse(&mantraev1.LoginUserResponse{Token: token}) + res := connect.NewResponse(&mantraev1.LoginUserResponse{User: convert.UserToProto(&user)}) res.Header().Set("Set-Cookie", cookie.String()) return res, nil } @@ -93,25 +93,6 @@ func (s *UserService) LogoutUser( return res, nil } -func (s *UserService) VerifyJWT( - ctx context.Context, - req *connect.Request[mantraev1.VerifyJWTRequest], -) (*connect.Response[mantraev1.VerifyJWTResponse], error) { - val := ctx.Value(middlewares.AuthUserIDKey) - userID, ok := val.(string) - if !ok || userID == "" { - return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("unauthenticated")) - } - result, err := s.app.Conn.GetQuery().GetUserByID(ctx, userID) - if err != nil { - return nil, connect.NewError(connect.CodeInternal, err) - } - - return connect.NewResponse(&mantraev1.VerifyJWTResponse{ - User: convert.UserToProto(&result), - }), nil -} - func (s *UserService) VerifyOTP( ctx context.Context, req *connect.Request[mantraev1.VerifyOTPRequest], @@ -124,22 +105,20 @@ func (s *UserService) VerifyOTP( case *mantraev1.VerifyOTPRequest_Email: user, err = s.app.Conn.GetQuery().GetUserByEmail(ctx, &id.Email) default: - return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("one of username or email must be set")) + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("username or email must be set")) } if err != nil { return nil, connect.NewError(connect.CodeInternal, err) } if user.Otp == nil || user.OtpExpiry == nil { - return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("no OTP token found")) + return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("invalid token")) } - if *user.Otp != util.HashOTP(req.Msg.Otp) { - return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("invalid OTP token")) + return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("invalid token")) } - if time.Now().After(*user.OtpExpiry) { - return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("OTP token expired")) + return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("token expired")) } expirationTime := time.Now().Add(1 * time.Hour) @@ -152,7 +131,29 @@ func (s *UserService) VerifyOTP( return nil, connect.NewError(connect.CodeInternal, err) } - return connect.NewResponse(&mantraev1.VerifyOTPResponse{Token: token}), nil + // Delete OTP if it's set + if user.Otp != nil && user.OtpExpiry != nil { + if err := s.app.Conn.GetQuery().UpdateUserResetToken(ctx, db.UpdateUserResetTokenParams{ + ID: user.ID, + Otp: nil, + OtpExpiry: nil, + }); err != nil { + return nil, connect.NewError(connect.CodeInternal, err) + } + } + + cookie := http.Cookie{ + Name: meta.CookieName, + Value: token, + Path: "/", + HttpOnly: true, + MaxAge: int(expirationTime.Unix() - time.Now().Unix()), + Secure: req.Header().Get("X-Forwarded-Proto") == "https", + SameSite: http.SameSiteLaxMode, + } + res := connect.NewResponse(&mantraev1.VerifyOTPResponse{User: convert.UserToProto(&user)}) + res.Header().Set("Set-Cookie", cookie.String()) + return res, nil } func (s *UserService) SendOTP( @@ -167,7 +168,7 @@ func (s *UserService) SendOTP( case *mantraev1.SendOTPRequest_Email: user, err = s.app.Conn.GetQuery().GetUserByEmail(ctx, &id.Email) default: - return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("one of username or email must be set")) + return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("username or email must be set")) } if err != nil { return nil, connect.NewError(connect.CodeInternal, err) @@ -214,7 +215,11 @@ func (s *UserService) GetUser( case *mantraev1.GetUserRequest_Email: user, err = s.app.Conn.GetQuery().GetUserByEmail(ctx, &id.Email) default: - return nil, connect.NewError(connect.CodeInvalidArgument, errors.New("one of id, username, or email must be set")) + userID := middlewares.GetUserIDFromContext(ctx) + if userID == nil { + return nil, connect.NewError(connect.CodeUnauthenticated, errors.New("unauthenticated")) + } + user, err = s.app.Conn.GetQuery().GetUserByID(ctx, *userID) } if err != nil { return nil, connect.NewError(connect.CodeInternal, err) @@ -335,30 +340,17 @@ func (s *UserService) GetOIDCStatus( ctx context.Context, req *connect.Request[mantraev1.GetOIDCStatusRequest], ) (*connect.Response[mantraev1.GetOIDCStatusResponse], error) { - oidcEnabled, ok := s.app.SM.Get(settings.KeyOIDCEnabled) - if !ok { - return nil, connect.NewError( - connect.CodeInternal, - errors.New("failed to get oidc enabled setting"), - ) - } - loginEnabled, ok := s.app.SM.Get(settings.KeyPasswordLoginEnabled) - if !ok { - return nil, connect.NewError( - connect.CodeInternal, - errors.New("failed to get login disabled setting"), - ) - } - provider, ok := s.app.SM.Get(settings.KeyOIDCProviderName) - if !ok { - return nil, connect.NewError( - connect.CodeInternal, - errors.New("failed to get oidc provider name setting"), - ) - } + sets := s.app.SM.GetMany( + ctx, + []string{ + settings.KeyOIDCEnabled, + settings.KeyPasswordLoginEnabled, + settings.KeyOIDCProviderName, + }, + ) return connect.NewResponse(&mantraev1.GetOIDCStatusResponse{ - OidcEnabled: oidcEnabled == "true", - LoginEnabled: loginEnabled == "true", - Provider: provider, + OidcEnabled: sets[settings.KeyOIDCEnabled] == "true", + LoginEnabled: sets[settings.KeyPasswordLoginEnabled] == "true", + Provider: sets[settings.KeyOIDCProviderName], }), nil } diff --git a/internal/backup/backup.go b/internal/backup/backup.go index c95e6b0..61ff8a0 100644 --- a/internal/backup/backup.go +++ b/internal/backup/backup.go @@ -72,7 +72,7 @@ func (m *BackupManager) backupLoop(ctx context.Context) { defer m.waitGroup.Done() // Get backup interval - interval, ok := m.SM.Get(settings.KeyBackupInterval) + interval, ok := m.SM.Get(ctx, settings.KeyBackupInterval) if !ok { slog.Error("failed to get backup interval") return @@ -254,7 +254,7 @@ func (m *BackupManager) cleanup(ctx context.Context) error { return fmt.Errorf("failed to list backups: %w", err) } - retention, ok := m.SM.Get(settings.KeyBackupKeep) + retention, ok := m.SM.Get(ctx, settings.KeyBackupKeep) if !ok { return fmt.Errorf("failed to get retention setting") } diff --git a/internal/config/setup.go b/internal/config/setup.go index bcd49e6..9d22dc8 100644 --- a/internal/config/setup.go +++ b/internal/config/setup.go @@ -117,13 +117,14 @@ func (a *App) setupDefaultData(ctx context.Context) error { } // Check default server url - ips, err := util.GetPrivateIPs() + ip, err := util.GetHostIPv4() if err != nil { return fmt.Errorf("failed to get private IPs: %w", err) } - serverURL, ok := a.SM.Get("server_url") + serverURL, ok := a.SM.Get(ctx, "server_url") if !ok || serverURL == "" { - if err = a.SM.Set(ctx, "server_url", ips.IPv4); err != nil { + url := fmt.Sprintf("http://%s:3000", ip) + if err = a.SM.Set(ctx, "server_url", url); err != nil { return fmt.Errorf("failed to set server url: %w", err) } } @@ -132,7 +133,8 @@ func (a *App) setupDefaultData(ctx context.Context) error { return fmt.Errorf("failed to parse server url: %w", err) } if u.Hostname() == "127.0.0.1" || u.Hostname() == "localhost" { - if err := a.SM.Set(ctx, "server_url", ips.IPv4); err != nil { + url := fmt.Sprintf("http://%s:3000", ip) + if err := a.SM.Set(ctx, "server_url", url); err != nil { return fmt.Errorf("failed to set server url: %w", err) } } diff --git a/internal/config/tasks.go b/internal/config/tasks.go index d531eef..ae71c93 100644 --- a/internal/config/tasks.go +++ b/internal/config/tasks.go @@ -20,7 +20,7 @@ func (a *App) setupBackgroundJobs(ctx context.Context) { // syncTraefik periodically syncs the Traefik configuration func (a *App) syncTraefik(ctx context.Context) { - duration, ok := a.SM.Get(settings.KeyTraefikSyncInterval) + duration, ok := a.SM.Get(ctx, settings.KeyTraefikSyncInterval) if !ok { slog.Error("Failed to get Traefik sync interval setting") return @@ -64,7 +64,7 @@ func (a *App) syncTraefik(ctx context.Context) { // syncDNS periodically syncs the DNS records func (a *App) syncDNS(ctx context.Context) { - duration, ok := a.SM.Get(settings.KeyDNSSyncInterval) + duration, ok := a.SM.Get(ctx, settings.KeyDNSSyncInterval) if !ok { slog.Error("Failed to get DNS sync interval setting") return @@ -89,7 +89,7 @@ func (a *App) syncDNS(ctx context.Context) { } func (a *App) cleanupAgents(ctx context.Context) { - duration, ok := a.SM.Get(settings.KeyAgentCleanupInterval) + duration, ok := a.SM.Get(ctx, settings.KeyAgentCleanupInterval) if !ok { slog.Error("failed to get agent cleanup interval setting") return @@ -103,7 +103,7 @@ func (a *App) cleanupAgents(ctx context.Context) { case <-ctx.Done(): return case <-ticker.C: - enabled, ok := a.SM.Get(settings.KeyAgentCleanupEnabled) + enabled, ok := a.SM.Get(ctx, settings.KeyAgentCleanupEnabled) if !ok { slog.Error("failed to get agent cleanup enabled setting") return @@ -114,7 +114,7 @@ func (a *App) cleanupAgents(ctx context.Context) { } // Timeout to delete old agents - timeout, ok := a.SM.Get(settings.KeyAgentCleanupInterval) + timeout, ok := a.SM.Get(ctx, settings.KeyAgentCleanupInterval) if !ok { slog.Error("failed to get agent cleanup interval setting") return diff --git a/internal/mail/mail.go b/internal/mail/mail.go index 8855688..65c8de7 100644 --- a/internal/mail/mail.go +++ b/internal/mail/mail.go @@ -2,7 +2,7 @@ package mail import ( - "errors" + "context" "fmt" "html/template" "net/smtp" @@ -63,32 +63,19 @@ func Send(sm *settings.SettingsManager, to, templateName string, data map[string } func getConfig(sm *settings.SettingsManager) (*EmailConfig, error) { - host, ok := sm.Get(settings.KeyEmailHost) - if !ok { - return nil, errors.New("failed to get email host") - } - port, ok := sm.Get(settings.KeyEmailPort) - if !ok { - return nil, errors.New("failed to get email port") - } - username, ok := sm.Get(settings.KeyEmailUser) - if !ok { - return nil, errors.New("failed to get email username") - } - password, ok := sm.Get(settings.KeyEmailPassword) - if !ok { - return nil, errors.New("failed to get email password") - } - from, ok := sm.Get(settings.KeyEmailFrom) - if !ok { - return nil, errors.New("failed to get email from") - } + sets := sm.GetMany(context.Background(), []string{ + settings.KeyEmailHost, + settings.KeyEmailPort, + settings.KeyEmailUser, + settings.KeyEmailPassword, + settings.KeyEmailFrom, + }) return &EmailConfig{ - Host: host, - Port: port, - Username: username, - Password: password, - From: from, + Host: sets[settings.KeyEmailHost], + Port: sets[settings.KeyEmailPort], + Username: sets[settings.KeyEmailUser], + Password: sets[settings.KeyEmailPassword], + From: sets[settings.KeyEmailFrom], }, nil } diff --git a/internal/settings/settings.go b/internal/settings/settings.go index 3753946..0689320 100644 --- a/internal/settings/settings.go +++ b/internal/settings/settings.go @@ -6,12 +6,10 @@ import ( "fmt" "log" "log/slog" - "maps" "os" "reflect" "strconv" "strings" - "sync" "time" "github.com/mizuchilabs/mantrae/internal/store" @@ -31,7 +29,7 @@ type Settings struct { S3AccessKey string `setting:"s3_access_key" default:""` S3SecretKey string `setting:"s3_secret_key" default:""` S3UsePathStyle bool `setting:"s3_use_path_style" default:"false"` - EmailHost string `setting:"email_host" default:"localhost"` + EmailHost string `setting:"email_host" default:""` EmailPort int `setting:"email_port" default:"587"` EmailUser string `setting:"email_user" default:""` EmailPassword string `setting:"email_password" default:""` @@ -52,10 +50,8 @@ type Settings struct { } type SettingsManager struct { - mu sync.RWMutex conn *store.Connection structT reflect.Type - cache map[string]string } func NewManager(conn *store.Connection) *SettingsManager { @@ -65,7 +61,6 @@ func NewManager(conn *store.Connection) *SettingsManager { return &SettingsManager{ conn: conn, structT: reflect.TypeOf(Settings{}), - cache: make(map[string]string), } } @@ -97,9 +92,6 @@ func (sm *SettingsManager) Start(ctx context.Context) { val = def } - // Set in cache and DB - sm.cache[key] = val - if _, exists := dbMap[key]; !exists { err = q.UpsertSetting(ctx, db.UpsertSettingParams{Key: key, Value: val}) if err != nil { @@ -129,11 +121,12 @@ func (sm *SettingsManager) validKeys() map[string]struct{} { return keys } -func (sm *SettingsManager) Get(key string) (string, bool) { - sm.mu.RLock() - val, ok := sm.cache[key] - sm.mu.RUnlock() - return val, ok +func (sm *SettingsManager) Get(ctx context.Context, key string) (string, bool) { + setting, err := sm.conn.GetQuery().GetSetting(ctx, key) + if err != nil { + return "", false + } + return setting.Value, true } func (sm *SettingsManager) Set(ctx context.Context, key, val string) error { @@ -146,50 +139,39 @@ func (sm *SettingsManager) Set(ctx context.Context, key, val string) error { return err } - sm.mu.Lock() - defer sm.mu.Unlock() - - // Store old value for potential rollback - oldVal, existed := sm.cache[key] - - // Update cache first - sm.cache[key] = val - // Update database if err := sm.conn.GetQuery().UpsertSetting(ctx, *params); err != nil { - // Rollback cache on database error - if existed { - sm.cache[key] = oldVal - } else { - delete(sm.cache, key) - } return fmt.Errorf("failed to update setting in database: %w", err) } return nil } -func (sm *SettingsManager) GetAll() map[string]string { - sm.mu.RLock() - result := make(map[string]string, len(sm.cache)) - maps.Copy(result, sm.cache) - sm.mu.RUnlock() +func (sm *SettingsManager) GetAll(ctx context.Context) map[string]string { + settings, err := sm.conn.GetQuery().ListSettings(ctx) + if err != nil { + return make(map[string]string) + } + + result := make(map[string]string, len(settings)) + for _, s := range settings { + result[s.Key] = s.Value + } return result } -func (sm *SettingsManager) GetMany(keys []string) map[string]string { - sm.mu.RLock() +func (sm *SettingsManager) GetMany(ctx context.Context, keys []string) map[string]string { result := make(map[string]string, len(keys)) for _, k := range keys { - if val, ok := sm.cache[k]; ok { + if val, ok := sm.Get(ctx, k); ok { result[k] = val } } - sm.mu.RUnlock() return result } // Helper + func AsString(val *string) string { if val == nil || *val == "" { return "" diff --git a/internal/settings/settings_test.go b/internal/settings/settings_test.go index dc97a11..7466749 100644 --- a/internal/settings/settings_test.go +++ b/internal/settings/settings_test.go @@ -25,7 +25,6 @@ func TestNewManager(t *testing.T) { sm := NewManager(conn) assert.NotNil(t, sm) assert.NotNil(t, sm.conn) - assert.NotNil(t, sm.cache) } func TestGetAndSet(t *testing.T) { @@ -38,7 +37,7 @@ func TestGetAndSet(t *testing.T) { err := sm.Set(ctx, KeyServerURL, "http://localhost:8080") assert.NoError(t, err) - val, ok := sm.Get(KeyServerURL) + val, ok := sm.Get(ctx, KeyServerURL) assert.True(t, ok) assert.Equal(t, "http://localhost:8080", val) @@ -55,7 +54,7 @@ func TestGetAll(t *testing.T) { sm.Start(ctx) // Test getting all values - allSettings := sm.GetAll() + allSettings := sm.GetAll(ctx) assert.NotEmpty(t, allSettings) assert.Equal(t, "local", allSettings[KeyStorage]) } @@ -69,7 +68,7 @@ func TestGetMany(t *testing.T) { // Test getting many values keys := []string{KeyServerURL, KeyStorage} - manySettings := sm.GetMany(keys) + manySettings := sm.GetMany(ctx, keys) assert.Len(t, manySettings, 2) assert.Equal(t, "", manySettings[KeyServerURL]) assert.Equal(t, "local", manySettings[KeyStorage]) @@ -95,17 +94,17 @@ func TestStart(t *testing.T) { sm.Start(ctx) // Check that the environment variable is used - val, ok := sm.Get(KeyServerURL) + val, ok := sm.Get(ctx, KeyServerURL) assert.True(t, ok) assert.Equal(t, "http://env.test", val) // Check that the database value is used - val, ok = sm.Get(KeyStorage) + val, ok = sm.Get(ctx, KeyStorage) assert.True(t, ok) assert.Equal(t, "db_value", val) // Check that the default value is used - val, ok = sm.Get(KeyBackupEnabled) + val, ok = sm.Get(ctx, KeyBackupEnabled) assert.True(t, ok) assert.Equal(t, "true", val) } diff --git a/internal/settings/validate.go b/internal/settings/validate.go index c1dfc57..b0201ab 100644 --- a/internal/settings/validate.go +++ b/internal/settings/validate.go @@ -49,7 +49,7 @@ func (sm *SettingsManager) validate(ctx context.Context, params *db.UpsertSettin case KeyPasswordLoginEnabled: // Don't allow disabling password login unless OIDC is oidcEnabled - oidcEnabled, ok := sm.Get(KeyOIDCEnabled) + oidcEnabled, ok := sm.Get(ctx, KeyOIDCEnabled) if !ok { return errors.New("failed to get OIDC setting") } @@ -59,7 +59,7 @@ func (sm *SettingsManager) validate(ctx context.Context, params *db.UpsertSettin case KeyOIDCEnabled: // If Password Login is disabled ensure to enable it again if oidc gets disabled - pwLogin, ok := sm.Get(KeyPasswordLoginEnabled) + pwLogin, ok := sm.Get(ctx, KeyPasswordLoginEnabled) if !ok { return errors.New("failed to get password login setting") } diff --git a/internal/storage/s3.go b/internal/storage/s3.go index 83286db..e3481cb 100644 --- a/internal/storage/s3.go +++ b/internal/storage/s3.go @@ -2,7 +2,6 @@ package storage import ( "context" - "errors" "fmt" "io" "net/url" @@ -162,38 +161,22 @@ func (s *S3Storage) Delete(ctx context.Context, name string) error { } func getSettings(sm *settings.SettingsManager) (*S3Config, error) { - region, ok := sm.Get(settings.KeyS3Region) - if !ok { - return nil, errors.New("failed to get S3 region") - } - endpoint, ok := sm.Get(settings.KeyS3Endpoint) - if !ok { - return nil, errors.New("failed to get S3 endpoint") - } - bucket, ok := sm.Get(settings.KeyS3Bucket) - if !ok { - return nil, errors.New("failed to get S3 bucket") - } - accessKey, ok := sm.Get(settings.KeyS3AccessKey) - if !ok { - return nil, errors.New("failed to get S3 access key") - } - secretKey, ok := sm.Get(settings.KeyS3SecretKey) - if !ok { - return nil, errors.New("failed to get S3 secret key") - } - usePathStyle, ok := sm.Get(settings.KeyS3UsePathStyle) - if !ok { - return nil, errors.New("failed to get S3 use path style") - } + sets := sm.GetMany(context.Background(), []string{ + settings.KeyS3Region, + settings.KeyS3Endpoint, + settings.KeyS3Bucket, + settings.KeyS3AccessKey, + settings.KeyS3SecretKey, + settings.KeyS3UsePathStyle, + }) cfg := S3Config{ - Region: region, - Endpoint: endpoint, - Bucket: bucket, - AccessKey: accessKey, - SecretKey: secretKey, - UsePathStyle: settings.AsBool(usePathStyle), + Region: sets[settings.KeyS3Region], + Endpoint: sets[settings.KeyS3Endpoint], + Bucket: sets[settings.KeyS3Bucket], + AccessKey: sets[settings.KeyS3AccessKey], + SecretKey: sets[settings.KeyS3SecretKey], + UsePathStyle: settings.AsBool(sets[settings.KeyS3UsePathStyle]), } return &cfg, nil } diff --git a/internal/storage/types.go b/internal/storage/types.go index 0a251ef..7233330 100644 --- a/internal/storage/types.go +++ b/internal/storage/types.go @@ -35,7 +35,7 @@ func GetBackend( sm *settings.SettingsManager, path string, ) (Backend, error) { - backendSetting, ok := sm.Get(settings.KeyStorage) + backendSetting, ok := sm.Get(ctx, settings.KeyStorage) if !ok { return nil, errors.New("failed to get storage backend") } diff --git a/pkg/util/ip.go b/pkg/util/ip.go index 46e862e..a0bcbda 100644 --- a/pkg/util/ip.go +++ b/pkg/util/ip.go @@ -2,6 +2,7 @@ package util import ( "context" + "errors" "fmt" "io" "log/slog" @@ -23,20 +24,73 @@ var ( cacheDuration = 5 * time.Minute ) -func GetPrivateIPs() (IPAddresses, error) { - var ips IPAddresses - addrs, _ := net.InterfaceAddrs() - for _, addr := range addrs { - if ipnet, ok := addr.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { - if ipnet.IP.To4() != nil { - ips.IPv4 = ipnet.IP.String() - } - if ipnet.IP.To4() == nil && ipnet.IP.To16() != nil { - ips.IPv6 = ipnet.IP.String() - } +func isVirtualInterface(name string) bool { + skipIfacesPrefixes := []string{ + "docker", + "br-", + "veth", + "lo", + "tun", + "tap", + "vmnet", + "wg", + "utun", + "ppp", + "virbr", + "cni", + "flannel", + "weave", + } + name = strings.ToLower(name) + for _, prefix := range skipIfacesPrefixes { + if strings.HasPrefix(name, prefix) { + return true } } - return ips, nil + return false +} + +func GetHostIPv4() (string, error) { + ifaces, err := net.Interfaces() + if err != nil { + return "", err + } + + for _, iface := range ifaces { + if iface.Flags&net.FlagUp == 0 { + continue // interface down + } + if iface.Flags&net.FlagLoopback != 0 { + continue // loopback + } + if isVirtualInterface(iface.Name) { + continue // skip virtual interfaces + } + + addrs, err := iface.Addrs() + if err != nil { + continue + } + + for _, addr := range addrs { + ipNet, ok := addr.(*net.IPNet) + if !ok { + continue + } + ip := ipNet.IP + if ip == nil || ip.IsLoopback() { + continue + } + ip4 := ip.To4() + if ip4 == nil { + continue + } + // Got a good candidate + return ip4.String(), nil + } + } + + return "", errors.New("no suitable IPv4 address found") } func GetPublicIPs() (IPAddresses, error) { diff --git a/proto/gen/mantrae/v1/agent.pb.go b/proto/gen/mantrae/v1/agent.pb.go index ef21921..bc1594a 100644 --- a/proto/gen/mantrae/v1/agent.pb.go +++ b/proto/gen/mantrae/v1/agent.pb.go @@ -951,128 +951,126 @@ var file_mantrae_v1_agent_proto_rawDesc = string([]byte{ 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x6d, 0x61, 0x70, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2d, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x3f, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x3e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, - 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, - 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x4e, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x70, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x02, 0x69, 0x70, 0x22, 0x40, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, - 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x30, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0xec, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, - 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, - 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x22, 0x60, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x6d, 0x61, 0x63, - 0x68, 0x69, 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, - 0x64, 0x12, 0x23, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, - 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x26, 0x0a, 0x0a, - 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, - 0x74, 0x65, 0x49, 0x70, 0x22, 0x3e, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, - 0x67, 0x65, 0x6e, 0x74, 0x22, 0x35, 0x0a, 0x17, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x52, - 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x2a, 0x0a, 0x0f, 0x47, 0x65, 0x74, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x22, 0x3c, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x22, 0x3e, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, - 0x32, 0xd1, 0x04, 0x0a, 0x0c, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x4a, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, - 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4e, 0x0a, - 0x0b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, - 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x12, 0x20, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x22, 0x48, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, + 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x22, 0x40, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4e, 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x22, 0x2d, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, - 0x73, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4e, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, - 0x68, 0x65, 0x63, 0x6b, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, - 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x15, 0x0a, 0x13, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0xe9, 0x01, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, + 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, + 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, + 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, + 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, + 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, 0x52, 0x06, + 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x60, + 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x06, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, + 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x22, 0xaf, 0x01, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x6d, 0x61, 0x63, 0x68, 0x69, + 0x6e, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x6d, 0x61, 0x63, 0x68, 0x69, 0x6e, 0x65, 0x49, 0x64, 0x12, + 0x23, 0x0a, 0x08, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x08, 0x68, 0x6f, 0x73, 0x74, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x69, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x08, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x49, 0x70, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x5f, 0x69, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x09, 0x70, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x49, 0x70, 0x22, 0x3e, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, + 0x6e, 0x74, 0x22, 0x32, 0x0a, 0x17, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, + 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, + 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x18, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x32, 0xd1, 0x04, 0x0a, 0x0c, + 0x41, 0x67, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x4a, 0x0a, 0x08, + 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4e, 0x0a, 0x0b, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x67, 0x65, 0x6e, 0x74, 0x49, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4e, + 0x0a, 0x0b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x12, 0x1e, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x50, + 0x0a, 0x0a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1d, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, + 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x67, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x4e, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x12, + 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x48, 0x65, 0x61, + 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x5d, 0x0a, 0x10, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, + 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, + 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, 0x74, 0x65, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x74, 0x61, - 0x74, 0x65, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xa4, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, - 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x6e, 0x74, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, + 0xa4, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x42, 0x0a, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, + 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/backup.pb.go b/proto/gen/mantrae/v1/backup.pb.go index eb1bb54..98b537d 100644 --- a/proto/gen/mantrae/v1/backup.pb.go +++ b/proto/gen/mantrae/v1/backup.pb.go @@ -502,67 +502,66 @@ var file_mantrae_v1_backup_proto_rawDesc = string([]byte{ 0x22, 0x15, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x36, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, - 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, - 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x22, 0x35, 0x0a, 0x13, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x6f, - 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x2c, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, 0xbb, 0x03, 0x0a, 0x0d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, - 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, - 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x52, 0x65, - 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, - 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x53, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, - 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x51, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, - 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, - 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x30, 0x01, 0x42, 0xa5, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, - 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x33, 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x14, 0x0a, + 0x12, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x22, 0x43, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x62, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, + 0x07, 0x62, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x22, 0x32, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x16, 0x0a, 0x14, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2b, 0x0a, 0x15, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, + 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x22, 0x2c, 0x0a, 0x16, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x32, + 0xbb, 0x03, 0x0a, 0x0d, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, + 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x65, 0x42, 0x61, 0x63, 0x6b, + 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0b, 0x4c, 0x69, + 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x75, + 0x70, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, + 0x51, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x12, + 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, + 0x63, 0x6b, 0x75, 0x70, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x42, 0x61, 0x63, + 0x6b, 0x75, 0x70, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0xa5, 0x01, + 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x42, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x75, 0x70, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, + 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, + 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, + 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, + 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/dns_provider.pb.go b/proto/gen/mantrae/v1/dns_provider.pb.go index 1397e41..3f8ff8a 100644 --- a/proto/gen/mantrae/v1/dns_provider.pb.go +++ b/proto/gen/mantrae/v1/dns_provider.pb.go @@ -783,144 +783,146 @@ var file_mantrae_v1_dns_provider_proto_rawDesc = string([]byte{ 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xad, 0x01, 0x0a, 0x11, 0x44, 0x6e, 0x73, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x17, - 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, 0x12, 0x17, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x70, 0x69, 0x55, 0x72, 0x6c, - 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x70, - 0x12, 0x18, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, - 0x74, 0x6f, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x61, 0x75, 0x74, 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x7a, - 0x6f, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x7a, 0x6f, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, - 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, - 0x16, 0x47, 0x65, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x70, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, - 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x22, 0xcc, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, - 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, - 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x3a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0b, - 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xe8, 0x01, 0x0a, 0x18, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, - 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, - 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xc9, 0x01, 0x0a, 0x11, 0x44, 0x6e, 0x73, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, + 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, 0x4b, 0x65, 0x79, + 0x12, 0x21, 0x0a, 0x07, 0x61, 0x70, 0x69, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0x88, 0x01, 0x01, 0x52, 0x06, 0x61, 0x70, 0x69, + 0x55, 0x72, 0x6c, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x70, 0x01, 0x52, 0x02, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x07, + 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, + 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x75, 0x74, 0x6f, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x61, 0x75, 0x74, + 0x6f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x7a, 0x6f, 0x6e, 0x65, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x7a, 0x6f, 0x6e, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x22, 0x33, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, + 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, + 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x54, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, - 0x36, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc7, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, - 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, - 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, - 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x79, - 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x64, 0x6e, - 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0xcc, 0x01, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, + 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, + 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x63, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x57, + 0x0a, 0x19, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x64, + 0x6e, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x98, 0x01, 0x0a, 0x0f, 0x44, 0x6e, - 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, - 0x1d, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x46, 0x4c, 0x41, 0x52, 0x45, - 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, - 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x44, 0x4e, 0x53, - 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, - 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x4e, 0x49, 0x54, 0x49, - 0x55, 0x4d, 0x10, 0x03, 0x32, 0xfc, 0x03, 0x0a, 0x12, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, - 0x69, 0x64, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x47, - 0x65, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6e, + 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0xe8, 0x01, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, + 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, + 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x35, + 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x22, 0x57, 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x3a, 0x0a, 0x0c, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0b, + 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x22, 0x36, 0x0a, 0x18, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x1b, 0x0a, 0x19, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xc7, 0x01, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, + 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, + 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x79, 0x0a, 0x18, 0x4c, 0x69, + 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0d, 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, + 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x98, 0x01, 0x0a, 0x0f, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x4e, 0x53, + 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, + 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x43, 0x4c, 0x4f, 0x55, 0x44, 0x46, 0x4c, 0x41, 0x52, 0x45, 0x10, 0x01, 0x12, 0x1e, + 0x0a, 0x1a, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4f, 0x57, 0x45, 0x52, 0x44, 0x4e, 0x53, 0x10, 0x02, 0x12, 0x20, + 0x0a, 0x1c, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, 0x52, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x43, 0x48, 0x4e, 0x49, 0x54, 0x49, 0x55, 0x4d, 0x10, 0x03, + 0x32, 0xfc, 0x03, 0x0a, 0x12, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x44, 0x6e, + 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, + 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x44, 0x6e, 0x73, + 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, + 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x60, 0x0a, 0x11, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x11, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x12, 0x24, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, 0x11, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x12, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x60, 0x0a, - 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x12, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, - 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x62, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, - 0x65, 0x72, 0x73, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, - 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, - 0x90, 0x02, 0x01, 0x42, 0xaa, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, - 0x64, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, - 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, - 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, + 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x10, 0x4c, + 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x12, + 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, + 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, + 0xaa, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x42, 0x10, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/entry_point.pb.go b/proto/gen/mantrae/v1/entry_point.pb.go index 7decbe5..12c0010 100644 --- a/proto/gen/mantrae/v1/entry_point.pb.go +++ b/proto/gen/mantrae/v1/entry_point.pb.go @@ -644,116 +644,115 @@ var file_mantrae_v1_entry_point_proto_rawDesc = string([]byte{ 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x32, 0x0a, 0x14, 0x47, 0x65, 0x74, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2f, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a, - 0x15, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, - 0xa6, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, - 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, + 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x50, 0x0a, 0x15, 0x47, 0x65, + 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, + 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0xa0, 0x01, 0x0a, + 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, + 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, + 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, + 0x53, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x65, + 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, + 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x91, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, - 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x53, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, + 0x73, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x53, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x97, 0x01, - 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, - 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x73, 0x5f, 0x64, - 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, - 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x22, 0x53, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x37, 0x0a, 0x0b, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x35, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, - 0x02, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0xf1, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, - 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, - 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, - 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, - 0x00, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, - 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, - 0x73, 0x65, 0x74, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, - 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, - 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, - 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xec, 0x03, 0x0a, 0x11, 0x45, - 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x59, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, - 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, - 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x74, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x22, 0x35, 0x0a, + 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, + 0x52, 0x02, 0x69, 0x64, 0x22, 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0xee, 0x01, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, + 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, + 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, + 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x22, 0x75, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x39, 0x0a, 0x0c, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x72, + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xec, 0x03, 0x0a, 0x11, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, + 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, + 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, - 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa9, 0x01, 0x0a, 0x0e, 0x63, 0x6f, - 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, - 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, - 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa9, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, + 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, + 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, + 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/event.pb.go b/proto/gen/mantrae/v1/event.pb.go index 785ba35..07ba381 100644 --- a/proto/gen/mantrae/v1/event.pb.go +++ b/proto/gen/mantrae/v1/event.pb.go @@ -685,77 +685,76 @@ var file_mantrae_v1_event_proto_rawDesc = string([]byte{ 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x42, 0x0a, 0x0a, - 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, - 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, - 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, - 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x47, - 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x52, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x13, 0x47, 0x6c, 0x6f, 0x62, 0x61, - 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, - 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, - 0x45, 0x0a, 0x14, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, - 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2a, 0x6f, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, - 0x45, 0x41, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, - 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, - 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0x8d, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, - 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, - 0x01, 0x12, 0x19, 0x0a, 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, - 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, - 0x44, 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, - 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, - 0x59, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, - 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x54, - 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, - 0x16, 0x0a, 0x12, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x53, 0x45, 0x52, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, - 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, - 0x56, 0x49, 0x44, 0x45, 0x52, 0x10, 0x08, 0x32, 0xbb, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, - 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, - 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, - 0x12, 0x53, 0x0a, 0x0c, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, - 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x08, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x22, 0x7f, 0x0a, 0x14, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x47, 0x0a, 0x15, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x22, 0x56, 0x0a, 0x13, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3f, 0x0a, 0x0e, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x14, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x30, 0x01, 0x42, 0xa4, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, - 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, - 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, - 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x52, 0x05, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x2a, 0x6f, 0x0a, 0x09, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x1a, 0x0a, 0x16, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, + 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, + 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x44, 0x10, 0x02, 0x12, 0x16, 0x0a, 0x12, 0x45, + 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, + 0x44, 0x10, 0x03, 0x2a, 0x8d, 0x02, 0x0a, 0x0c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x10, 0x01, 0x12, 0x19, 0x0a, + 0x15, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x52, 0x45, 0x53, 0x4f, + 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x49, 0x44, 0x44, 0x4c, 0x45, + 0x57, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, 0x1d, 0x0a, 0x19, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, + 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x50, 0x4f, + 0x49, 0x4e, 0x54, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x54, 0x5f, 0x4c, 0x4f, 0x47, + 0x10, 0x05, 0x12, 0x17, 0x0a, 0x13, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x41, 0x47, 0x45, 0x4e, 0x54, 0x10, 0x06, 0x12, 0x16, 0x0a, 0x12, 0x52, + 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x53, 0x45, + 0x52, 0x10, 0x07, 0x12, 0x1e, 0x0a, 0x1a, 0x52, 0x45, 0x53, 0x4f, 0x55, 0x52, 0x43, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x44, 0x4e, 0x53, 0x5f, 0x50, 0x52, 0x4f, 0x56, 0x49, 0x44, 0x45, + 0x52, 0x10, 0x08, 0x32, 0xbb, 0x01, 0x0a, 0x0c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x56, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, + 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x45, 0x76, 0x65, 0x6e, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, 0x01, 0x12, 0x53, 0x0a, 0x0c, + 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, + 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, + 0x6c, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x30, + 0x01, 0x42, 0xa4, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0a, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, + 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, + 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, + 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, + 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/mantraev1connect/user.connect.go b/proto/gen/mantrae/v1/mantraev1connect/user.connect.go index aa7d4ab..d000787 100644 --- a/proto/gen/mantrae/v1/mantraev1connect/user.connect.go +++ b/proto/gen/mantrae/v1/mantraev1connect/user.connect.go @@ -37,8 +37,6 @@ const ( UserServiceLoginUserProcedure = "/mantrae.v1.UserService/LoginUser" // UserServiceLogoutUserProcedure is the fully-qualified name of the UserService's LogoutUser RPC. UserServiceLogoutUserProcedure = "/mantrae.v1.UserService/LogoutUser" - // UserServiceVerifyJWTProcedure is the fully-qualified name of the UserService's VerifyJWT RPC. - UserServiceVerifyJWTProcedure = "/mantrae.v1.UserService/VerifyJWT" // UserServiceVerifyOTPProcedure is the fully-qualified name of the UserService's VerifyOTP RPC. UserServiceVerifyOTPProcedure = "/mantrae.v1.UserService/VerifyOTP" // UserServiceSendOTPProcedure is the fully-qualified name of the UserService's SendOTP RPC. @@ -62,7 +60,6 @@ const ( type UserServiceClient interface { LoginUser(context.Context, *connect.Request[v1.LoginUserRequest]) (*connect.Response[v1.LoginUserResponse], error) LogoutUser(context.Context, *connect.Request[v1.LogoutUserRequest]) (*connect.Response[v1.LogoutUserResponse], error) - VerifyJWT(context.Context, *connect.Request[v1.VerifyJWTRequest]) (*connect.Response[v1.VerifyJWTResponse], error) VerifyOTP(context.Context, *connect.Request[v1.VerifyOTPRequest]) (*connect.Response[v1.VerifyOTPResponse], error) SendOTP(context.Context, *connect.Request[v1.SendOTPRequest]) (*connect.Response[v1.SendOTPResponse], error) GetUser(context.Context, *connect.Request[v1.GetUserRequest]) (*connect.Response[v1.GetUserResponse], error) @@ -96,12 +93,6 @@ func NewUserServiceClient(httpClient connect.HTTPClient, baseURL string, opts .. connect.WithSchema(userServiceMethods.ByName("LogoutUser")), connect.WithClientOptions(opts...), ), - verifyJWT: connect.NewClient[v1.VerifyJWTRequest, v1.VerifyJWTResponse]( - httpClient, - baseURL+UserServiceVerifyJWTProcedure, - connect.WithSchema(userServiceMethods.ByName("VerifyJWT")), - connect.WithClientOptions(opts...), - ), verifyOTP: connect.NewClient[v1.VerifyOTPRequest, v1.VerifyOTPResponse]( httpClient, baseURL+UserServiceVerifyOTPProcedure, @@ -159,7 +150,6 @@ func NewUserServiceClient(httpClient connect.HTTPClient, baseURL string, opts .. type userServiceClient struct { loginUser *connect.Client[v1.LoginUserRequest, v1.LoginUserResponse] logoutUser *connect.Client[v1.LogoutUserRequest, v1.LogoutUserResponse] - verifyJWT *connect.Client[v1.VerifyJWTRequest, v1.VerifyJWTResponse] verifyOTP *connect.Client[v1.VerifyOTPRequest, v1.VerifyOTPResponse] sendOTP *connect.Client[v1.SendOTPRequest, v1.SendOTPResponse] getUser *connect.Client[v1.GetUserRequest, v1.GetUserResponse] @@ -180,11 +170,6 @@ func (c *userServiceClient) LogoutUser(ctx context.Context, req *connect.Request return c.logoutUser.CallUnary(ctx, req) } -// VerifyJWT calls mantrae.v1.UserService.VerifyJWT. -func (c *userServiceClient) VerifyJWT(ctx context.Context, req *connect.Request[v1.VerifyJWTRequest]) (*connect.Response[v1.VerifyJWTResponse], error) { - return c.verifyJWT.CallUnary(ctx, req) -} - // VerifyOTP calls mantrae.v1.UserService.VerifyOTP. func (c *userServiceClient) VerifyOTP(ctx context.Context, req *connect.Request[v1.VerifyOTPRequest]) (*connect.Response[v1.VerifyOTPResponse], error) { return c.verifyOTP.CallUnary(ctx, req) @@ -229,7 +214,6 @@ func (c *userServiceClient) GetOIDCStatus(ctx context.Context, req *connect.Requ type UserServiceHandler interface { LoginUser(context.Context, *connect.Request[v1.LoginUserRequest]) (*connect.Response[v1.LoginUserResponse], error) LogoutUser(context.Context, *connect.Request[v1.LogoutUserRequest]) (*connect.Response[v1.LogoutUserResponse], error) - VerifyJWT(context.Context, *connect.Request[v1.VerifyJWTRequest]) (*connect.Response[v1.VerifyJWTResponse], error) VerifyOTP(context.Context, *connect.Request[v1.VerifyOTPRequest]) (*connect.Response[v1.VerifyOTPResponse], error) SendOTP(context.Context, *connect.Request[v1.SendOTPRequest]) (*connect.Response[v1.SendOTPResponse], error) GetUser(context.Context, *connect.Request[v1.GetUserRequest]) (*connect.Response[v1.GetUserResponse], error) @@ -259,12 +243,6 @@ func NewUserServiceHandler(svc UserServiceHandler, opts ...connect.HandlerOption connect.WithSchema(userServiceMethods.ByName("LogoutUser")), connect.WithHandlerOptions(opts...), ) - userServiceVerifyJWTHandler := connect.NewUnaryHandler( - UserServiceVerifyJWTProcedure, - svc.VerifyJWT, - connect.WithSchema(userServiceMethods.ByName("VerifyJWT")), - connect.WithHandlerOptions(opts...), - ) userServiceVerifyOTPHandler := connect.NewUnaryHandler( UserServiceVerifyOTPProcedure, svc.VerifyOTP, @@ -321,8 +299,6 @@ func NewUserServiceHandler(svc UserServiceHandler, opts ...connect.HandlerOption userServiceLoginUserHandler.ServeHTTP(w, r) case UserServiceLogoutUserProcedure: userServiceLogoutUserHandler.ServeHTTP(w, r) - case UserServiceVerifyJWTProcedure: - userServiceVerifyJWTHandler.ServeHTTP(w, r) case UserServiceVerifyOTPProcedure: userServiceVerifyOTPHandler.ServeHTTP(w, r) case UserServiceSendOTPProcedure: @@ -356,10 +332,6 @@ func (UnimplementedUserServiceHandler) LogoutUser(context.Context, *connect.Requ return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mantrae.v1.UserService.LogoutUser is not implemented")) } -func (UnimplementedUserServiceHandler) VerifyJWT(context.Context, *connect.Request[v1.VerifyJWTRequest]) (*connect.Response[v1.VerifyJWTResponse], error) { - return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mantrae.v1.UserService.VerifyJWT is not implemented")) -} - func (UnimplementedUserServiceHandler) VerifyOTP(context.Context, *connect.Request[v1.VerifyOTPRequest]) (*connect.Response[v1.VerifyOTPResponse], error) { return nil, connect.NewError(connect.CodeUnimplemented, errors.New("mantrae.v1.UserService.VerifyOTP is not implemented")) } diff --git a/proto/gen/mantrae/v1/middleware.pb.go b/proto/gen/mantrae/v1/middleware.pb.go index 3409d53..49a1812 100644 --- a/proto/gen/mantrae/v1/middleware.pb.go +++ b/proto/gen/mantrae/v1/middleware.pb.go @@ -1093,161 +1093,159 @@ var file_mantrae_v1_middleware_proto_rawDesc = string([]byte{ 0x70, 0x65, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x38, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x38, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x79, 0x61, 0x6d, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x6d, - 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x6f, 0x6d, 0x6c, 0x22, 0x6f, 0x0a, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x6f, 0x6d, 0x6c, 0x22, 0x69, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, - 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4f, - 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, + 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4f, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x22, 0xe4, 0x01, 0x0a, 0x17, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, + 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, + 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, + 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x22, 0x52, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0a, + 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, + 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x22, 0xd4, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x52, 0x0a, 0x18, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x22, - 0xed, 0x01, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, - 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, - 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, - 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, - 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, - 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, - 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x52, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, - 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x36, 0x0a, 0x0a, 0x6d, - 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, - 0x61, 0x72, 0x65, 0x22, 0xdd, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, - 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, - 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x3b, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x22, 0x52, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x36, 0x0a, 0x0a, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x22, 0x72, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3b, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, - 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1a, 0x0a, 0x18, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xef, 0x02, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, - 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, - 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, - 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, - 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, - 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x02, 0x52, 0x05, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, - 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, - 0x00, 0x48, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, - 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, - 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x74, 0x0a, 0x17, 0x4c, 0x69, 0x73, - 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, - 0x72, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, - 0x65, 0x52, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1f, - 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, - 0x1d, 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, - 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4c, - 0x0a, 0x1c, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, - 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, - 0x0a, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2a, 0x64, 0x0a, 0x0e, - 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, - 0x0a, 0x1b, 0x4d, 0x49, 0x44, 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, - 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, - 0x18, 0x0a, 0x14, 0x4d, 0x49, 0x44, 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x49, 0x44, - 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, - 0x10, 0x02, 0x32, 0xdc, 0x04, 0x0a, 0x11, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, - 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, - 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, - 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, - 0x90, 0x02, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, - 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, - 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, + 0x6c, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, + 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x1a, 0x0a, + 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xec, 0x02, 0x0a, 0x16, 0x4c, 0x69, + 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3d, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, + 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, + 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, + 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, + 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, + 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x02, 0x52, 0x05, 0x6c, + 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, + 0x48, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, + 0x09, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, + 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x74, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, + 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, + 0x52, 0x0b, 0x6d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x12, 0x1f, 0x0a, + 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x1d, + 0x0a, 0x1b, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, + 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x4c, 0x0a, + 0x1c, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, 0x6c, + 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, + 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x52, 0x07, 0x70, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x2a, 0x64, 0x0a, 0x0e, 0x4d, + 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, + 0x1b, 0x4d, 0x49, 0x44, 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x4d, 0x49, 0x44, 0x44, 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x4d, 0x49, 0x44, 0x44, + 0x4c, 0x45, 0x57, 0x41, 0x52, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, + 0x02, 0x32, 0xdc, 0x04, 0x0a, 0x11, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4d, 0x69, + 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, + 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x12, 0x5d, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, + 0x65, 0x12, 0x5d, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, - 0x72, 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, - 0x61, 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, - 0x01, 0x12, 0x6e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, - 0x72, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, - 0x77, 0x61, 0x72, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, 0x6c, 0x75, - 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, - 0x01, 0x42, 0xa9, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, - 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x5d, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, + 0x77, 0x61, 0x72, 0x65, 0x12, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, + 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4d, 0x69, 0x64, + 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5f, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, + 0x65, 0x73, 0x12, 0x22, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, + 0x72, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x6e, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, + 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x12, 0x27, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, + 0x61, 0x72, 0x65, 0x50, 0x6c, 0x75, 0x67, 0x69, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x28, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x74, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, 0x6c, 0x75, 0x67, + 0x69, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x42, 0xa9, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x42, 0x0f, 0x4d, 0x69, 0x64, 0x64, 0x6c, 0x65, 0x77, 0x61, 0x72, 0x65, 0x50, + 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, + 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, + 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/profile.pb.go b/proto/gen/mantrae/v1/profile.pb.go index 55de428..139184b 100644 --- a/proto/gen/mantrae/v1/profile.pb.go +++ b/proto/gen/mantrae/v1/profile.pb.go @@ -592,102 +592,101 @@ var file_mantrae_v1_profile_proto_rawDesc = string([]byte{ 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2f, 0x0a, 0x11, + 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x2c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, - 0x12, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x22, 0x6d, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, - 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, - 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x22, 0x46, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, + 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x22, 0x43, 0x0a, 0x12, 0x47, 0x65, + 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, + 0x6a, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x15, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x15, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x22, 0x2f, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x13, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, + 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, + 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, + 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, + 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, + 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, + 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x22, 0x68, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x89, 0x01, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, - 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x25, - 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x46, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, - 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x22, 0x32, 0x0a, - 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, - 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, - 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, - 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, - 0x22, 0x68, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, - 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, - 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, - 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xbc, 0x03, 0x0a, 0x0e, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, - 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x6d, 0x61, + 0x52, 0x08, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x32, 0xbc, 0x03, 0x0a, 0x0e, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, + 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x1d, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, - 0x54, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, - 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, 0x0e, 0x63, 0x6f, - 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, 0x72, - 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, - 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, - 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, - 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, - 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x54, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x12, 0x20, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, 0x0e, 0x63, + 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x50, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, + 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, + 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, + 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, + 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, + 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/router.pb.go b/proto/gen/mantrae/v1/router.pb.go index 2636f5e..26ee13a 100644 --- a/proto/gen/mantrae/v1/router.pb.go +++ b/proto/gen/mantrae/v1/router.pb.go @@ -798,141 +798,139 @@ var file_mantrae_v1_router_proto_rawDesc = string([]byte{ 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x41, 0x74, 0x22, 0x67, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, - 0x52, 0x02, 0x69, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, - 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x0a, - 0x11, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0xff, - 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, - 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x65, 0x64, 0x41, 0x74, 0x22, 0x61, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, + 0x64, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, + 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x3f, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0xf9, 0x01, 0x0a, 0x13, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, + 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x42, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, + 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, + 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0x8a, 0x02, 0x0a, 0x13, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, - 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x22, 0x42, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x06, 0x72, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x22, 0x93, 0x02, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, - 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, - 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0d, - 0x64, 0x6e, 0x73, 0x5f, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x44, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x64, 0x6e, - 0x73, 0x50, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0x6a, - 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x37, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, - 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0xe7, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, - 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, - 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, - 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, - 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x39, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, - 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, - 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, - 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, - 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, - 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, - 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x22, 0x02, 0x28, 0x00, 0x48, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, - 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x07, - 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, - 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x64, 0x0a, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, - 0x6e, 0x74, 0x2a, 0x69, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, - 0x10, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, 0x54, 0x54, - 0x50, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4f, 0x55, 0x54, - 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x03, 0x32, 0xac, 0x03, - 0x0a, 0x0d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6d, + 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x3c, 0x0a, 0x0d, 0x64, 0x6e, 0x73, 0x5f, 0x70, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x6e, 0x73, 0x50, + 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x64, 0x6e, 0x73, 0x50, 0x72, 0x6f, 0x76, + 0x69, 0x64, 0x65, 0x72, 0x73, 0x22, 0x42, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, + 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x52, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x22, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, + 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, + 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe4, 0x02, 0x0a, 0x12, 0x4c, 0x69, 0x73, 0x74, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, + 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, + 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, + 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, + 0x39, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, + 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, + 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, + 0x30, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x03, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, + 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, + 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x64, + 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x07, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x07, 0x72, 0x6f, 0x75, 0x74, + 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x69, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x14, 0x0a, 0x10, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x48, + 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4f, 0x55, 0x54, 0x45, 0x52, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x52, 0x4f, + 0x55, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x50, 0x10, 0x03, 0x32, + 0xac, 0x03, 0x0a, 0x0d, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x1c, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x51, - 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x1f, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, - 0x75, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa5, 0x01, 0x0a, - 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, - 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, - 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, - 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, - 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, + 0x12, 0x51, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, + 0x74, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x51, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x53, 0x0a, 0x0b, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa5, + 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x42, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, + 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, + 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, + 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, + 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/service.pb.go b/proto/gen/mantrae/v1/service.pb.go index dbfbdea..b3a15f6 100644 --- a/proto/gen/mantrae/v1/service.pb.go +++ b/proto/gen/mantrae/v1/service.pb.go @@ -848,156 +848,154 @@ var file_mantrae_v1_service_proto_rawDesc = string([]byte{ 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, - 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x69, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, - 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x22, 0x43, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x63, 0x0a, 0x11, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, + 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x43, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x22, 0xde, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, + 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, + 0x1b, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, + 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xe7, 0x01, 0x0a, 0x14, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, - 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x19, 0x0a, - 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, - 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, + 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xb4, 0x01, 0x0a, + 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1b, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x63, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0xbd, 0x01, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, - 0x12, 0x1e, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, - 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, - 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x22, 0x6c, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, - 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x38, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x0b, - 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe9, 0x02, 0x0a, 0x13, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x22, 0x02, - 0x20, 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, - 0x08, 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, - 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, - 0x01, 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, - 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, - 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, - 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, - 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x03, - 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, - 0x65, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, - 0x0a, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, - 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x22, 0x74, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, - 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2a, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, - 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x56, 0x49, - 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x14, 0x0a, - 0x10, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, - 0x50, 0x10, 0x03, 0x32, 0xa6, 0x04, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, - 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, + 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, 0x66, 0x0a, 0x14, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x35, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x22, 0x17, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe6, 0x02, 0x0a, + 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x20, + 0x00, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, + 0x61, 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x07, 0x61, 0x67, 0x65, 0x6e, 0x74, + 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x3a, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x82, 0x01, 0x02, 0x10, 0x01, 0x48, 0x01, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x88, 0x01, + 0x01, 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x42, 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, + 0x72, 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, + 0x1a, 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, + 0x74, 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x02, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, + 0x74, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x05, + 0x20, 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x03, 0x52, + 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x61, + 0x67, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x07, 0x0a, 0x05, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, + 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x68, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, + 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1f, + 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, + 0x74, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x52, + 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, + 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x54, 0x79, + 0x70, 0x65, 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x4b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2a, 0x6e, 0x0a, 0x0b, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x15, 0x0a, 0x11, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x48, 0x54, 0x54, 0x50, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, + 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, + 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x44, 0x50, + 0x10, 0x03, 0x32, 0xa6, 0x04, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, + 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x0d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, 0x73, + 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, - 0x02, 0x01, 0x12, 0x68, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x26, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, - 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, - 0x0c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, - 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, - 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, - 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x69, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, + 0x01, 0x12, 0x68, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x12, 0x25, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, + 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x42, 0x79, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, 0x0e, + 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, + 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, + 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, + 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/setting.pb.go b/proto/gen/mantrae/v1/setting.pb.go index 08258e3..521e74b 100644 --- a/proto/gen/mantrae/v1/setting.pb.go +++ b/proto/gen/mantrae/v1/setting.pb.go @@ -363,56 +363,56 @@ var file_mantrae_v1_setting_proto_rawDesc = string([]byte{ 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x31, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x22, 0x2a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x4a, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1c, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, - 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, - 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x14, - 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, 0x90, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x41, 0x74, 0x22, 0x2e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, + 0x65, 0x79, 0x22, 0x2a, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x47, + 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x19, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6b, 0x65, + 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, - 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, - 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, - 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, - 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, - 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, - 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, - 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x12, 0x2d, 0x0a, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x22, + 0x15, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x47, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, + 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x13, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x32, + 0x90, 0x02, 0x0a, 0x0e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x50, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x03, 0x90, 0x02, 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, + 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x0c, 0x4c, 0x69, + 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x1f, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x53, 0x65, 0x74, + 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, + 0x02, 0x01, 0x42, 0xa6, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x0c, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, + 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, }) var ( diff --git a/proto/gen/mantrae/v1/user.pb.go b/proto/gen/mantrae/v1/user.pb.go index 8c33082..e2a1ebb 100644 --- a/proto/gen/mantrae/v1/user.pb.go +++ b/proto/gen/mantrae/v1/user.pb.go @@ -231,7 +231,7 @@ func (*LoginUserRequest_Email) isLoginUserRequest_Identifier() {} type LoginUserResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -266,11 +266,11 @@ func (*LoginUserResponse) Descriptor() ([]byte, []int) { return file_mantrae_v1_user_proto_rawDescGZIP(), []int{2} } -func (x *LoginUserResponse) GetToken() string { +func (x *LoginUserResponse) GetUser() *User { if x != nil { - return x.Token + return x.User } - return "" + return nil } type LogoutUserRequest struct { @@ -345,86 +345,6 @@ func (*LogoutUserResponse) Descriptor() ([]byte, []int) { return file_mantrae_v1_user_proto_rawDescGZIP(), []int{4} } -type VerifyJWTRequest struct { - state protoimpl.MessageState `protogen:"open.v1"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VerifyJWTRequest) Reset() { - *x = VerifyJWTRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VerifyJWTRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyJWTRequest) ProtoMessage() {} - -func (x *VerifyJWTRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[5] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyJWTRequest.ProtoReflect.Descriptor instead. -func (*VerifyJWTRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{5} -} - -type VerifyJWTResponse struct { - state protoimpl.MessageState `protogen:"open.v1"` - User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache -} - -func (x *VerifyJWTResponse) Reset() { - *x = VerifyJWTResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *VerifyJWTResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VerifyJWTResponse) ProtoMessage() {} - -func (x *VerifyJWTResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[6] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VerifyJWTResponse.ProtoReflect.Descriptor instead. -func (*VerifyJWTResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{6} -} - -func (x *VerifyJWTResponse) GetUser() *User { - if x != nil { - return x.User - } - return nil -} - type VerifyOTPRequest struct { state protoimpl.MessageState `protogen:"open.v1"` // Types that are valid to be assigned to Identifier: @@ -439,7 +359,7 @@ type VerifyOTPRequest struct { func (x *VerifyOTPRequest) Reset() { *x = VerifyOTPRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[7] + mi := &file_mantrae_v1_user_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -451,7 +371,7 @@ func (x *VerifyOTPRequest) String() string { func (*VerifyOTPRequest) ProtoMessage() {} func (x *VerifyOTPRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[7] + mi := &file_mantrae_v1_user_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -464,7 +384,7 @@ func (x *VerifyOTPRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyOTPRequest.ProtoReflect.Descriptor instead. func (*VerifyOTPRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{7} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{5} } func (x *VerifyOTPRequest) GetIdentifier() isVerifyOTPRequest_Identifier { @@ -517,14 +437,14 @@ func (*VerifyOTPRequest_Email) isVerifyOTPRequest_Identifier() {} type VerifyOTPResponse struct { state protoimpl.MessageState `protogen:"open.v1"` - Token string `protobuf:"bytes,1,opt,name=token,proto3" json:"token,omitempty"` + User *User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } func (x *VerifyOTPResponse) Reset() { *x = VerifyOTPResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[8] + mi := &file_mantrae_v1_user_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -536,7 +456,7 @@ func (x *VerifyOTPResponse) String() string { func (*VerifyOTPResponse) ProtoMessage() {} func (x *VerifyOTPResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[8] + mi := &file_mantrae_v1_user_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -549,14 +469,14 @@ func (x *VerifyOTPResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use VerifyOTPResponse.ProtoReflect.Descriptor instead. func (*VerifyOTPResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{8} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{6} } -func (x *VerifyOTPResponse) GetToken() string { +func (x *VerifyOTPResponse) GetUser() *User { if x != nil { - return x.Token + return x.User } - return "" + return nil } type SendOTPRequest struct { @@ -572,7 +492,7 @@ type SendOTPRequest struct { func (x *SendOTPRequest) Reset() { *x = SendOTPRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[9] + mi := &file_mantrae_v1_user_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -584,7 +504,7 @@ func (x *SendOTPRequest) String() string { func (*SendOTPRequest) ProtoMessage() {} func (x *SendOTPRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[9] + mi := &file_mantrae_v1_user_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -597,7 +517,7 @@ func (x *SendOTPRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendOTPRequest.ProtoReflect.Descriptor instead. func (*SendOTPRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{9} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{7} } func (x *SendOTPRequest) GetIdentifier() isSendOTPRequest_Identifier { @@ -649,7 +569,7 @@ type SendOTPResponse struct { func (x *SendOTPResponse) Reset() { *x = SendOTPResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[10] + mi := &file_mantrae_v1_user_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -661,7 +581,7 @@ func (x *SendOTPResponse) String() string { func (*SendOTPResponse) ProtoMessage() {} func (x *SendOTPResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[10] + mi := &file_mantrae_v1_user_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -674,7 +594,7 @@ func (x *SendOTPResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendOTPResponse.ProtoReflect.Descriptor instead. func (*SendOTPResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{10} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{8} } type GetUserRequest struct { @@ -691,7 +611,7 @@ type GetUserRequest struct { func (x *GetUserRequest) Reset() { *x = GetUserRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[11] + mi := &file_mantrae_v1_user_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -703,7 +623,7 @@ func (x *GetUserRequest) String() string { func (*GetUserRequest) ProtoMessage() {} func (x *GetUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[11] + mi := &file_mantrae_v1_user_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -716,7 +636,7 @@ func (x *GetUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserRequest.ProtoReflect.Descriptor instead. func (*GetUserRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{11} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{9} } func (x *GetUserRequest) GetIdentifier() isGetUserRequest_Identifier { @@ -784,7 +704,7 @@ type GetUserResponse struct { func (x *GetUserResponse) Reset() { *x = GetUserResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[12] + mi := &file_mantrae_v1_user_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -796,7 +716,7 @@ func (x *GetUserResponse) String() string { func (*GetUserResponse) ProtoMessage() {} func (x *GetUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[12] + mi := &file_mantrae_v1_user_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -809,7 +729,7 @@ func (x *GetUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetUserResponse.ProtoReflect.Descriptor instead. func (*GetUserResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{12} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{10} } func (x *GetUserResponse) GetUser() *User { @@ -831,7 +751,7 @@ type CreateUserRequest struct { func (x *CreateUserRequest) Reset() { *x = CreateUserRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[13] + mi := &file_mantrae_v1_user_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -843,7 +763,7 @@ func (x *CreateUserRequest) String() string { func (*CreateUserRequest) ProtoMessage() {} func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[13] + mi := &file_mantrae_v1_user_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -856,7 +776,7 @@ func (x *CreateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserRequest.ProtoReflect.Descriptor instead. func (*CreateUserRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{13} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{11} } func (x *CreateUserRequest) GetUsername() string { @@ -896,7 +816,7 @@ type CreateUserResponse struct { func (x *CreateUserResponse) Reset() { *x = CreateUserResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[14] + mi := &file_mantrae_v1_user_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -908,7 +828,7 @@ func (x *CreateUserResponse) String() string { func (*CreateUserResponse) ProtoMessage() {} func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[14] + mi := &file_mantrae_v1_user_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -921,7 +841,7 @@ func (x *CreateUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUserResponse.ProtoReflect.Descriptor instead. func (*CreateUserResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{14} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{12} } func (x *CreateUserResponse) GetUser() *User { @@ -944,7 +864,7 @@ type UpdateUserRequest struct { func (x *UpdateUserRequest) Reset() { *x = UpdateUserRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[15] + mi := &file_mantrae_v1_user_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -956,7 +876,7 @@ func (x *UpdateUserRequest) String() string { func (*UpdateUserRequest) ProtoMessage() {} func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[15] + mi := &file_mantrae_v1_user_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -969,7 +889,7 @@ func (x *UpdateUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserRequest.ProtoReflect.Descriptor instead. func (*UpdateUserRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{15} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{13} } func (x *UpdateUserRequest) GetId() string { @@ -1016,7 +936,7 @@ type UpdateUserResponse struct { func (x *UpdateUserResponse) Reset() { *x = UpdateUserResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[16] + mi := &file_mantrae_v1_user_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1028,7 +948,7 @@ func (x *UpdateUserResponse) String() string { func (*UpdateUserResponse) ProtoMessage() {} func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[16] + mi := &file_mantrae_v1_user_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1041,7 +961,7 @@ func (x *UpdateUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateUserResponse.ProtoReflect.Descriptor instead. func (*UpdateUserResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{16} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{14} } func (x *UpdateUserResponse) GetUser() *User { @@ -1060,7 +980,7 @@ type DeleteUserRequest struct { func (x *DeleteUserRequest) Reset() { *x = DeleteUserRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[17] + mi := &file_mantrae_v1_user_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1072,7 +992,7 @@ func (x *DeleteUserRequest) String() string { func (*DeleteUserRequest) ProtoMessage() {} func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[17] + mi := &file_mantrae_v1_user_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1085,7 +1005,7 @@ func (x *DeleteUserRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserRequest.ProtoReflect.Descriptor instead. func (*DeleteUserRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{17} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{15} } func (x *DeleteUserRequest) GetId() string { @@ -1103,7 +1023,7 @@ type DeleteUserResponse struct { func (x *DeleteUserResponse) Reset() { *x = DeleteUserResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[18] + mi := &file_mantrae_v1_user_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1115,7 +1035,7 @@ func (x *DeleteUserResponse) String() string { func (*DeleteUserResponse) ProtoMessage() {} func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[18] + mi := &file_mantrae_v1_user_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1128,7 +1048,7 @@ func (x *DeleteUserResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteUserResponse.ProtoReflect.Descriptor instead. func (*DeleteUserResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{18} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{16} } type ListUsersRequest struct { @@ -1141,7 +1061,7 @@ type ListUsersRequest struct { func (x *ListUsersRequest) Reset() { *x = ListUsersRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[19] + mi := &file_mantrae_v1_user_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1153,7 +1073,7 @@ func (x *ListUsersRequest) String() string { func (*ListUsersRequest) ProtoMessage() {} func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[19] + mi := &file_mantrae_v1_user_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1166,7 +1086,7 @@ func (x *ListUsersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUsersRequest.ProtoReflect.Descriptor instead. func (*ListUsersRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{19} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{17} } func (x *ListUsersRequest) GetLimit() int64 { @@ -1193,7 +1113,7 @@ type ListUsersResponse struct { func (x *ListUsersResponse) Reset() { *x = ListUsersResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[20] + mi := &file_mantrae_v1_user_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1205,7 +1125,7 @@ func (x *ListUsersResponse) String() string { func (*ListUsersResponse) ProtoMessage() {} func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[20] + mi := &file_mantrae_v1_user_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1218,7 +1138,7 @@ func (x *ListUsersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListUsersResponse.ProtoReflect.Descriptor instead. func (*ListUsersResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{20} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{18} } func (x *ListUsersResponse) GetUsers() []*User { @@ -1243,7 +1163,7 @@ type GetOIDCStatusRequest struct { func (x *GetOIDCStatusRequest) Reset() { *x = GetOIDCStatusRequest{} - mi := &file_mantrae_v1_user_proto_msgTypes[21] + mi := &file_mantrae_v1_user_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1255,7 +1175,7 @@ func (x *GetOIDCStatusRequest) String() string { func (*GetOIDCStatusRequest) ProtoMessage() {} func (x *GetOIDCStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[21] + mi := &file_mantrae_v1_user_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1268,7 +1188,7 @@ func (x *GetOIDCStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOIDCStatusRequest.ProtoReflect.Descriptor instead. func (*GetOIDCStatusRequest) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{21} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{19} } type GetOIDCStatusResponse struct { @@ -1282,7 +1202,7 @@ type GetOIDCStatusResponse struct { func (x *GetOIDCStatusResponse) Reset() { *x = GetOIDCStatusResponse{} - mi := &file_mantrae_v1_user_proto_msgTypes[22] + mi := &file_mantrae_v1_user_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1294,7 +1214,7 @@ func (x *GetOIDCStatusResponse) String() string { func (*GetOIDCStatusResponse) ProtoMessage() {} func (x *GetOIDCStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_mantrae_v1_user_proto_msgTypes[22] + mi := &file_mantrae_v1_user_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1307,7 +1227,7 @@ func (x *GetOIDCStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetOIDCStatusResponse.ProtoReflect.Descriptor instead. func (*GetOIDCStatusResponse) Descriptor() ([]byte, []int) { - return file_mantrae_v1_user_proto_rawDescGZIP(), []int{22} + return file_mantrae_v1_user_proto_rawDescGZIP(), []int{20} } func (x *GetOIDCStatusResponse) GetOidcEnabled() bool { @@ -1373,176 +1293,167 @@ var file_mantrae_v1_user_proto_rawDesc = string([]byte{ 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x08, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, - 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x29, 0x0a, 0x11, 0x4c, + 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x39, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, + 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x13, 0x0a, 0x11, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x14, 0x0a, 0x12, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x12, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4a, 0x57, 0x54, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x39, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4a, - 0x57, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x22, 0x8d, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, - 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, - 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, - 0x03, 0x6f, 0x74, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, - 0x01, 0x01, 0x72, 0x02, 0x10, 0x06, 0x52, 0x03, 0x6f, 0x74, 0x70, 0x42, 0x13, 0x0a, 0x0a, 0x69, - 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, - 0x22, 0x29, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0x6d, 0x0a, 0x0e, 0x53, - 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, - 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, - 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x65, - 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x88, 0x01, - 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x19, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, - 0x04, 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, - 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, - 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x37, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x22, 0x9d, 0x01, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, - 0x01, 0x72, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x26, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x08, 0x52, 0x08, 0x70, - 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x22, 0x3a, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0xc8, 0x01, - 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x26, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, - 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, - 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, - 0x6e, 0x12, 0x28, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x08, 0x48, 0x00, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, - 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x22, 0x2f, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0a, 0xba, 0x48, 0x07, 0xc8, 0x01, 0x01, 0x72, 0x02, 0x10, - 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x71, 0x0a, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, - 0x56, 0xba, 0x48, 0x53, 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, - 0x61, 0x6c, 0x69, 0x64, 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, - 0x20, 0x62, 0x65, 0x20, 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, - 0x20, 0x67, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, - 0x16, 0x74, 0x68, 0x69, 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, - 0x68, 0x69, 0x73, 0x20, 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, - 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x42, 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, 0x52, 0x06, - 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, - 0x6d, 0x69, 0x74, 0x42, 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x5c, - 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x26, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x65, 0x22, 0x8b, 0x01, 0x0a, 0x10, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, + 0x03, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1a, + 0x0a, 0x03, 0x6f, 0x74, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, + 0x72, 0x03, 0x98, 0x01, 0x06, 0x52, 0x03, 0x6f, 0x74, 0x70, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, + 0x39, 0x0a, 0x11, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, - 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x16, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x7b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, - 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, - 0x0c, 0x6f, 0x69, 0x64, 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x0b, 0x6f, 0x69, 0x64, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, - 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x6e, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, - 0x72, 0x32, 0xd1, 0x06, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x48, 0x0a, 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, - 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, - 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, - 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x4c, - 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, - 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x6d, 0x0a, 0x0e, 0x53, 0x65, + 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x25, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, + 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x42, 0x13, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, + 0x65, 0x72, 0x12, 0x05, 0xba, 0x48, 0x02, 0x08, 0x01, 0x22, 0x11, 0x0a, 0x0f, 0x53, 0x65, 0x6e, + 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x81, 0x01, 0x0a, + 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x19, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, + 0x72, 0x02, 0x10, 0x01, 0x48, 0x00, 0x52, 0x02, 0x69, 0x64, 0x12, 0x25, 0x0a, 0x08, 0x75, 0x73, + 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, + 0x04, 0x72, 0x02, 0x10, 0x03, 0x48, 0x00, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x48, 0x00, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x66, 0x69, 0x65, 0x72, + 0x22, 0x37, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x11, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x23, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x08, 0x52, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, + 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, + 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, + 0x6d, 0x69, 0x6e, 0x22, 0x3a, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, + 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, + 0xc5, 0x01, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x23, + 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x03, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x73, 0x5f, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x69, 0x73, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x2b, 0x0a, + 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x0a, 0xba, 0x48, 0x07, 0xd8, 0x01, 0x01, 0x72, 0x02, 0x10, 0x08, 0x48, 0x00, 0x52, 0x08, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x70, + 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x3a, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x24, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x6d, 0x61, + 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x22, 0x2c, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x10, 0x01, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xc0, 0x01, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x71, 0x0a, 0x05, + 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x42, 0x56, 0xba, 0x48, 0x53, + 0xba, 0x01, 0x50, 0x0a, 0x0b, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x2e, 0x76, 0x61, 0x6c, 0x69, 0x64, + 0x12, 0x29, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, + 0x65, 0x69, 0x74, 0x68, 0x65, 0x72, 0x20, 0x2d, 0x31, 0x20, 0x6f, 0x72, 0x20, 0x67, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x30, 0x1a, 0x16, 0x74, 0x68, 0x69, + 0x73, 0x20, 0x3d, 0x3d, 0x20, 0x2d, 0x31, 0x20, 0x7c, 0x7c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, + 0x3e, 0x20, 0x30, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x88, 0x01, 0x01, 0x12, + 0x24, 0x0a, 0x06, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x42, + 0x07, 0xba, 0x48, 0x04, 0x22, 0x02, 0x28, 0x00, 0x48, 0x01, 0x52, 0x06, 0x6f, 0x66, 0x66, 0x73, + 0x65, 0x74, 0x88, 0x01, 0x01, 0x42, 0x08, 0x0a, 0x06, 0x5f, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x42, + 0x09, 0x0a, 0x07, 0x5f, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x22, 0x5c, 0x0a, 0x11, 0x4c, 0x69, + 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x26, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, + 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x16, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4f, + 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x22, 0x7b, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x69, 0x64, + 0x63, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0b, 0x6f, 0x69, 0x64, 0x63, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x23, 0x0a, 0x0d, + 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x72, 0x32, 0x87, 0x06, + 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x48, 0x0a, + 0x09, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x4c, 0x6f, 0x67, 0x6f, 0x75, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, + 0x50, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, + 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, + 0x0a, 0x07, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x47, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x56, 0x65, 0x72, 0x69, - 0x66, 0x79, 0x4a, 0x57, 0x54, 0x12, 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, - 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x48, 0x0a, 0x09, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x12, - 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, - 0x69, 0x66, 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x65, 0x72, 0x69, 0x66, - 0x79, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x42, 0x0a, 0x07, - 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x12, 0x1a, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x54, 0x50, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x47, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, 0x4b, 0x0a, 0x0a, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, - 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, - 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x4d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x2e, + 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, + 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, + 0x73, 0x65, 0x72, 0x12, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, + 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1e, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x4d, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x1c, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, - 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1d, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, 0x01, 0x12, - 0x54, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, - 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, - 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xa3, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, 0x6d, 0x61, - 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, 0x6e, 0x2f, - 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, 0x74, 0x72, - 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, 0x61, 0x6e, - 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, - 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x5c, 0x56, - 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, - 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, + 0x73, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x03, 0x90, 0x02, + 0x01, 0x12, 0x54, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x20, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x49, 0x44, 0x43, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0xa3, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x2e, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x76, 0x31, 0x42, 0x09, 0x55, 0x73, 0x65, 0x72, + 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6d, 0x69, 0x7a, 0x75, 0x63, 0x68, 0x69, 0x6c, 0x61, 0x62, 0x73, 0x2f, + 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x67, 0x65, + 0x6e, 0x2f, 0x6d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2f, 0x76, 0x31, 0x3b, 0x6d, 0x61, 0x6e, + 0x74, 0x72, 0x61, 0x65, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x4d, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4d, + 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0a, 0x4d, 0x61, 0x6e, 0x74, + 0x72, 0x61, 0x65, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x16, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, + 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, + 0x02, 0x0b, 0x4d, 0x61, 0x6e, 0x74, 0x72, 0x61, 0x65, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1557,70 +1468,67 @@ func file_mantrae_v1_user_proto_rawDescGZIP() []byte { return file_mantrae_v1_user_proto_rawDescData } -var file_mantrae_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 23) +var file_mantrae_v1_user_proto_msgTypes = make([]protoimpl.MessageInfo, 21) var file_mantrae_v1_user_proto_goTypes = []any{ (*User)(nil), // 0: mantrae.v1.User (*LoginUserRequest)(nil), // 1: mantrae.v1.LoginUserRequest (*LoginUserResponse)(nil), // 2: mantrae.v1.LoginUserResponse (*LogoutUserRequest)(nil), // 3: mantrae.v1.LogoutUserRequest (*LogoutUserResponse)(nil), // 4: mantrae.v1.LogoutUserResponse - (*VerifyJWTRequest)(nil), // 5: mantrae.v1.VerifyJWTRequest - (*VerifyJWTResponse)(nil), // 6: mantrae.v1.VerifyJWTResponse - (*VerifyOTPRequest)(nil), // 7: mantrae.v1.VerifyOTPRequest - (*VerifyOTPResponse)(nil), // 8: mantrae.v1.VerifyOTPResponse - (*SendOTPRequest)(nil), // 9: mantrae.v1.SendOTPRequest - (*SendOTPResponse)(nil), // 10: mantrae.v1.SendOTPResponse - (*GetUserRequest)(nil), // 11: mantrae.v1.GetUserRequest - (*GetUserResponse)(nil), // 12: mantrae.v1.GetUserResponse - (*CreateUserRequest)(nil), // 13: mantrae.v1.CreateUserRequest - (*CreateUserResponse)(nil), // 14: mantrae.v1.CreateUserResponse - (*UpdateUserRequest)(nil), // 15: mantrae.v1.UpdateUserRequest - (*UpdateUserResponse)(nil), // 16: mantrae.v1.UpdateUserResponse - (*DeleteUserRequest)(nil), // 17: mantrae.v1.DeleteUserRequest - (*DeleteUserResponse)(nil), // 18: mantrae.v1.DeleteUserResponse - (*ListUsersRequest)(nil), // 19: mantrae.v1.ListUsersRequest - (*ListUsersResponse)(nil), // 20: mantrae.v1.ListUsersResponse - (*GetOIDCStatusRequest)(nil), // 21: mantrae.v1.GetOIDCStatusRequest - (*GetOIDCStatusResponse)(nil), // 22: mantrae.v1.GetOIDCStatusResponse - (*timestamppb.Timestamp)(nil), // 23: google.protobuf.Timestamp + (*VerifyOTPRequest)(nil), // 5: mantrae.v1.VerifyOTPRequest + (*VerifyOTPResponse)(nil), // 6: mantrae.v1.VerifyOTPResponse + (*SendOTPRequest)(nil), // 7: mantrae.v1.SendOTPRequest + (*SendOTPResponse)(nil), // 8: mantrae.v1.SendOTPResponse + (*GetUserRequest)(nil), // 9: mantrae.v1.GetUserRequest + (*GetUserResponse)(nil), // 10: mantrae.v1.GetUserResponse + (*CreateUserRequest)(nil), // 11: mantrae.v1.CreateUserRequest + (*CreateUserResponse)(nil), // 12: mantrae.v1.CreateUserResponse + (*UpdateUserRequest)(nil), // 13: mantrae.v1.UpdateUserRequest + (*UpdateUserResponse)(nil), // 14: mantrae.v1.UpdateUserResponse + (*DeleteUserRequest)(nil), // 15: mantrae.v1.DeleteUserRequest + (*DeleteUserResponse)(nil), // 16: mantrae.v1.DeleteUserResponse + (*ListUsersRequest)(nil), // 17: mantrae.v1.ListUsersRequest + (*ListUsersResponse)(nil), // 18: mantrae.v1.ListUsersResponse + (*GetOIDCStatusRequest)(nil), // 19: mantrae.v1.GetOIDCStatusRequest + (*GetOIDCStatusResponse)(nil), // 20: mantrae.v1.GetOIDCStatusResponse + (*timestamppb.Timestamp)(nil), // 21: google.protobuf.Timestamp } var file_mantrae_v1_user_proto_depIdxs = []int32{ - 23, // 0: mantrae.v1.User.otp_expiry:type_name -> google.protobuf.Timestamp - 23, // 1: mantrae.v1.User.last_login:type_name -> google.protobuf.Timestamp - 23, // 2: mantrae.v1.User.created_at:type_name -> google.protobuf.Timestamp - 23, // 3: mantrae.v1.User.updated_at:type_name -> google.protobuf.Timestamp - 0, // 4: mantrae.v1.VerifyJWTResponse.user:type_name -> mantrae.v1.User - 0, // 5: mantrae.v1.GetUserResponse.user:type_name -> mantrae.v1.User - 0, // 6: mantrae.v1.CreateUserResponse.user:type_name -> mantrae.v1.User - 0, // 7: mantrae.v1.UpdateUserResponse.user:type_name -> mantrae.v1.User - 0, // 8: mantrae.v1.ListUsersResponse.users:type_name -> mantrae.v1.User - 1, // 9: mantrae.v1.UserService.LoginUser:input_type -> mantrae.v1.LoginUserRequest - 3, // 10: mantrae.v1.UserService.LogoutUser:input_type -> mantrae.v1.LogoutUserRequest - 5, // 11: mantrae.v1.UserService.VerifyJWT:input_type -> mantrae.v1.VerifyJWTRequest - 7, // 12: mantrae.v1.UserService.VerifyOTP:input_type -> mantrae.v1.VerifyOTPRequest - 9, // 13: mantrae.v1.UserService.SendOTP:input_type -> mantrae.v1.SendOTPRequest - 11, // 14: mantrae.v1.UserService.GetUser:input_type -> mantrae.v1.GetUserRequest - 13, // 15: mantrae.v1.UserService.CreateUser:input_type -> mantrae.v1.CreateUserRequest - 15, // 16: mantrae.v1.UserService.UpdateUser:input_type -> mantrae.v1.UpdateUserRequest - 17, // 17: mantrae.v1.UserService.DeleteUser:input_type -> mantrae.v1.DeleteUserRequest - 19, // 18: mantrae.v1.UserService.ListUsers:input_type -> mantrae.v1.ListUsersRequest - 21, // 19: mantrae.v1.UserService.GetOIDCStatus:input_type -> mantrae.v1.GetOIDCStatusRequest + 21, // 0: mantrae.v1.User.otp_expiry:type_name -> google.protobuf.Timestamp + 21, // 1: mantrae.v1.User.last_login:type_name -> google.protobuf.Timestamp + 21, // 2: mantrae.v1.User.created_at:type_name -> google.protobuf.Timestamp + 21, // 3: mantrae.v1.User.updated_at:type_name -> google.protobuf.Timestamp + 0, // 4: mantrae.v1.LoginUserResponse.user:type_name -> mantrae.v1.User + 0, // 5: mantrae.v1.VerifyOTPResponse.user:type_name -> mantrae.v1.User + 0, // 6: mantrae.v1.GetUserResponse.user:type_name -> mantrae.v1.User + 0, // 7: mantrae.v1.CreateUserResponse.user:type_name -> mantrae.v1.User + 0, // 8: mantrae.v1.UpdateUserResponse.user:type_name -> mantrae.v1.User + 0, // 9: mantrae.v1.ListUsersResponse.users:type_name -> mantrae.v1.User + 1, // 10: mantrae.v1.UserService.LoginUser:input_type -> mantrae.v1.LoginUserRequest + 3, // 11: mantrae.v1.UserService.LogoutUser:input_type -> mantrae.v1.LogoutUserRequest + 5, // 12: mantrae.v1.UserService.VerifyOTP:input_type -> mantrae.v1.VerifyOTPRequest + 7, // 13: mantrae.v1.UserService.SendOTP:input_type -> mantrae.v1.SendOTPRequest + 9, // 14: mantrae.v1.UserService.GetUser:input_type -> mantrae.v1.GetUserRequest + 11, // 15: mantrae.v1.UserService.CreateUser:input_type -> mantrae.v1.CreateUserRequest + 13, // 16: mantrae.v1.UserService.UpdateUser:input_type -> mantrae.v1.UpdateUserRequest + 15, // 17: mantrae.v1.UserService.DeleteUser:input_type -> mantrae.v1.DeleteUserRequest + 17, // 18: mantrae.v1.UserService.ListUsers:input_type -> mantrae.v1.ListUsersRequest + 19, // 19: mantrae.v1.UserService.GetOIDCStatus:input_type -> mantrae.v1.GetOIDCStatusRequest 2, // 20: mantrae.v1.UserService.LoginUser:output_type -> mantrae.v1.LoginUserResponse 4, // 21: mantrae.v1.UserService.LogoutUser:output_type -> mantrae.v1.LogoutUserResponse - 6, // 22: mantrae.v1.UserService.VerifyJWT:output_type -> mantrae.v1.VerifyJWTResponse - 8, // 23: mantrae.v1.UserService.VerifyOTP:output_type -> mantrae.v1.VerifyOTPResponse - 10, // 24: mantrae.v1.UserService.SendOTP:output_type -> mantrae.v1.SendOTPResponse - 12, // 25: mantrae.v1.UserService.GetUser:output_type -> mantrae.v1.GetUserResponse - 14, // 26: mantrae.v1.UserService.CreateUser:output_type -> mantrae.v1.CreateUserResponse - 16, // 27: mantrae.v1.UserService.UpdateUser:output_type -> mantrae.v1.UpdateUserResponse - 18, // 28: mantrae.v1.UserService.DeleteUser:output_type -> mantrae.v1.DeleteUserResponse - 20, // 29: mantrae.v1.UserService.ListUsers:output_type -> mantrae.v1.ListUsersResponse - 22, // 30: mantrae.v1.UserService.GetOIDCStatus:output_type -> mantrae.v1.GetOIDCStatusResponse - 20, // [20:31] is the sub-list for method output_type - 9, // [9:20] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name + 6, // 22: mantrae.v1.UserService.VerifyOTP:output_type -> mantrae.v1.VerifyOTPResponse + 8, // 23: mantrae.v1.UserService.SendOTP:output_type -> mantrae.v1.SendOTPResponse + 10, // 24: mantrae.v1.UserService.GetUser:output_type -> mantrae.v1.GetUserResponse + 12, // 25: mantrae.v1.UserService.CreateUser:output_type -> mantrae.v1.CreateUserResponse + 14, // 26: mantrae.v1.UserService.UpdateUser:output_type -> mantrae.v1.UpdateUserResponse + 16, // 27: mantrae.v1.UserService.DeleteUser:output_type -> mantrae.v1.DeleteUserResponse + 18, // 28: mantrae.v1.UserService.ListUsers:output_type -> mantrae.v1.ListUsersResponse + 20, // 29: mantrae.v1.UserService.GetOIDCStatus:output_type -> mantrae.v1.GetOIDCStatusResponse + 20, // [20:30] is the sub-list for method output_type + 10, // [10:20] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_mantrae_v1_user_proto_init() } @@ -1632,28 +1540,28 @@ func file_mantrae_v1_user_proto_init() { (*LoginUserRequest_Username)(nil), (*LoginUserRequest_Email)(nil), } - file_mantrae_v1_user_proto_msgTypes[7].OneofWrappers = []any{ + file_mantrae_v1_user_proto_msgTypes[5].OneofWrappers = []any{ (*VerifyOTPRequest_Username)(nil), (*VerifyOTPRequest_Email)(nil), } - file_mantrae_v1_user_proto_msgTypes[9].OneofWrappers = []any{ + file_mantrae_v1_user_proto_msgTypes[7].OneofWrappers = []any{ (*SendOTPRequest_Username)(nil), (*SendOTPRequest_Email)(nil), } - file_mantrae_v1_user_proto_msgTypes[11].OneofWrappers = []any{ + file_mantrae_v1_user_proto_msgTypes[9].OneofWrappers = []any{ (*GetUserRequest_Id)(nil), (*GetUserRequest_Username)(nil), (*GetUserRequest_Email)(nil), } - file_mantrae_v1_user_proto_msgTypes[15].OneofWrappers = []any{} - file_mantrae_v1_user_proto_msgTypes[19].OneofWrappers = []any{} + file_mantrae_v1_user_proto_msgTypes[13].OneofWrappers = []any{} + file_mantrae_v1_user_proto_msgTypes[17].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_mantrae_v1_user_proto_rawDesc), len(file_mantrae_v1_user_proto_rawDesc)), NumEnums: 0, - NumMessages: 23, + NumMessages: 21, NumExtensions: 0, NumServices: 1, }, diff --git a/proto/gen/openapi/openapi.yaml b/proto/gen/openapi/openapi.yaml index 55c99d4..1ffdd34 100644 --- a/proto/gen/openapi/openapi.yaml +++ b/proto/gen/openapi/openapi.yaml @@ -235,8 +235,6 @@ components: title: profile_id format: int64 title: CreateAgentRequest - required: - - profileId additionalProperties: false mantrae.v1.CreateAgentResponse: type: object @@ -254,8 +252,6 @@ components: title: id minLength: 1 title: DeleteAgentRequest - required: - - id additionalProperties: false mantrae.v1.DeleteAgentResponse: type: object @@ -269,8 +265,6 @@ components: title: id minLength: 1 title: GetAgentRequest - required: - - id additionalProperties: false mantrae.v1.GetAgentResponse: type: object @@ -340,8 +334,6 @@ components: format: int64 nullable: true title: ListAgentsRequest - required: - - profileId additionalProperties: false mantrae.v1.ListAgentsResponse: type: object @@ -367,8 +359,6 @@ components: title: id minLength: 1 title: RotateAgentTokenRequest - required: - - id additionalProperties: false mantrae.v1.RotateAgentTokenResponse: type: object @@ -388,11 +378,8 @@ components: ip: type: string title: ip - minLength: 1 + format: ip title: UpdateAgentIPRequest - required: - - id - - ip additionalProperties: false mantrae.v1.UpdateAgentIPResponse: type: object @@ -587,8 +574,6 @@ components: title: name minLength: 1 title: DeleteBackupRequest - required: - - name additionalProperties: false mantrae.v1.DeleteBackupResponse: type: object @@ -633,8 +618,6 @@ components: title: name minLength: 1 title: RestoreBackupRequest - required: - - name additionalProperties: false mantrae.v1.RestoreBackupResponse: type: object @@ -730,12 +713,15 @@ components: apiKey: type: string title: api_key + minLength: 1 apiUrl: type: string title: api_url + format: uri ip: type: string title: ip + format: ip proxied: type: boolean title: proxied @@ -869,9 +855,6 @@ components: type: boolean title: is_default title: CreateEntryPointRequest - required: - - profileId - - name additionalProperties: false mantrae.v1.CreateEntryPointResponse: type: object @@ -942,8 +925,6 @@ components: title: id format: int64 title: GetEntryPointRequest - required: - - id additionalProperties: false mantrae.v1.GetEntryPointResponse: type: object @@ -984,8 +965,6 @@ components: format: int64 nullable: true title: ListEntryPointsRequest - required: - - profileId additionalProperties: false mantrae.v1.ListEntryPointsResponse: type: object @@ -1025,9 +1004,6 @@ components: type: boolean title: is_default title: UpdateEntryPointRequest - required: - - id - - name additionalProperties: false mantrae.v1.UpdateEntryPointResponse: type: object @@ -1133,10 +1109,6 @@ components: title: config $ref: '#/components/schemas/google.protobuf.Struct' title: CreateMiddlewareRequest - required: - - profileId - - name - - type additionalProperties: false mantrae.v1.CreateMiddlewareResponse: type: object @@ -1160,9 +1132,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.MiddlewareType' title: DeleteMiddlewareRequest - required: - - id - - type additionalProperties: false mantrae.v1.DeleteMiddlewareResponse: type: object @@ -1196,9 +1165,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.MiddlewareType' title: GetMiddlewareRequest - required: - - id - - type additionalProperties: false mantrae.v1.GetMiddlewareResponse: type: object @@ -1248,8 +1214,6 @@ components: format: int64 nullable: true title: ListMiddlewaresRequest - required: - - profileId additionalProperties: false mantrae.v1.ListMiddlewaresResponse: type: object @@ -1398,10 +1362,6 @@ components: type: boolean title: enabled title: UpdateMiddlewareRequest - required: - - id - - name - - type additionalProperties: false mantrae.v1.UpdateMiddlewareResponse: type: object @@ -1447,8 +1407,6 @@ components: $ref: '#/components/schemas/mantrae.v1.RouterType' title: CreateRouterRequest required: - - profileId - - name - type additionalProperties: false mantrae.v1.CreateRouterResponse: @@ -1473,9 +1431,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.RouterType' title: DeleteRouterRequest - required: - - id - - type additionalProperties: false mantrae.v1.DeleteRouterResponse: type: object @@ -1495,9 +1450,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.RouterType' title: GetRouterRequest - required: - - id - - type additionalProperties: false mantrae.v1.GetRouterResponse: type: object @@ -1547,8 +1499,6 @@ components: format: int64 nullable: true title: ListRoutersRequest - required: - - profileId additionalProperties: false mantrae.v1.ListRoutersResponse: type: object @@ -1638,10 +1588,6 @@ components: $ref: '#/components/schemas/mantrae.v1.DnsProvider' title: dns_providers title: UpdateRouterRequest - required: - - id - - name - - type additionalProperties: false mantrae.v1.UpdateRouterResponse: type: object @@ -1683,10 +1629,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.ServiceType' title: CreateServiceRequest - required: - - profileId - - name - - type additionalProperties: false mantrae.v1.CreateServiceResponse: type: object @@ -1710,9 +1652,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.ServiceType' title: DeleteServiceRequest - required: - - id - - type additionalProperties: false mantrae.v1.DeleteServiceResponse: type: object @@ -1755,9 +1694,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.ServiceType' title: GetServiceRequest - required: - - id - - type additionalProperties: false mantrae.v1.GetServiceResponse: type: object @@ -1807,8 +1743,6 @@ components: format: int64 nullable: true title: ListServicesRequest - required: - - profileId additionalProperties: false mantrae.v1.ListServicesResponse: type: object @@ -1882,10 +1816,6 @@ components: title: type $ref: '#/components/schemas/mantrae.v1.ServiceType' title: UpdateServiceRequest - required: - - id - - name - - type additionalProperties: false mantrae.v1.UpdateServiceResponse: type: object @@ -1914,9 +1844,6 @@ components: type: boolean title: is_admin title: CreateUserRequest - required: - - username - - password additionalProperties: false mantrae.v1.CreateUserResponse: type: object @@ -1934,8 +1861,6 @@ components: title: id minLength: 1 title: DeleteUserRequest - required: - - id additionalProperties: false mantrae.v1.DeleteUserResponse: type: object @@ -2073,9 +1998,9 @@ components: mantrae.v1.LoginUserResponse: type: object properties: - token: - type: string - title: token + user: + title: user + $ref: '#/components/schemas/mantrae.v1.User' title: LoginUserResponse additionalProperties: false mantrae.v1.LogoutUserRequest: @@ -2138,9 +2063,6 @@ components: minLength: 8 nullable: true title: UpdateUserRequest - required: - - id - - username additionalProperties: false mantrae.v1.UpdateUserResponse: type: object @@ -2185,18 +2107,6 @@ components: $ref: '#/components/schemas/google.protobuf.Timestamp' title: User additionalProperties: false - mantrae.v1.VerifyJWTRequest: - type: object - title: VerifyJWTRequest - additionalProperties: false - mantrae.v1.VerifyJWTResponse: - type: object - properties: - user: - title: user - $ref: '#/components/schemas/mantrae.v1.User' - title: VerifyJWTResponse - additionalProperties: false mantrae.v1.VerifyOTPRequest: type: object anyOf: @@ -2222,17 +2132,16 @@ components: otp: type: string title: otp + maxLength: 6 minLength: 6 title: VerifyOTPRequest - required: - - otp additionalProperties: false mantrae.v1.VerifyOTPResponse: type: object properties: - token: - type: string - title: token + user: + title: user + $ref: '#/components/schemas/mantrae.v1.User' title: VerifyOTPResponse additionalProperties: false mantrae.v1.EventType: @@ -2388,8 +2297,6 @@ components: title: resource_types description: Filter by specific resource types title: ProfileEventsRequest - required: - - profileId additionalProperties: false mantrae.v1.ProfileEventsResponse: type: object @@ -2411,8 +2318,6 @@ components: title: description nullable: true title: CreateProfileRequest - required: - - name additionalProperties: false mantrae.v1.CreateProfileResponse: type: object @@ -2433,8 +2338,6 @@ components: title: id format: int64 title: DeleteProfileRequest - required: - - id additionalProperties: false mantrae.v1.DeleteProfileResponse: type: object @@ -2451,8 +2354,6 @@ components: title: id format: int64 title: GetProfileRequest - required: - - id additionalProperties: false mantrae.v1.GetProfileResponse: type: object @@ -2545,9 +2446,6 @@ components: title: description nullable: true title: UpdateProfileRequest - required: - - id - - name additionalProperties: false mantrae.v1.UpdateProfileResponse: type: object @@ -2565,8 +2463,6 @@ components: title: key minLength: 1 title: GetSettingRequest - required: - - key additionalProperties: false mantrae.v1.GetSettingResponse: type: object @@ -2615,8 +2511,6 @@ components: type: string title: value title: UpdateSettingRequest - required: - - key additionalProperties: false mantrae.v1.UpdateSettingResponse: type: object @@ -5008,41 +4902,6 @@ paths: application/json: schema: $ref: '#/components/schemas/mantrae.v1.LogoutUserResponse' - /mantrae.v1.UserService/VerifyJWT: - post: - tags: - - mantrae.v1.UserService - summary: VerifyJWT - operationId: mantrae.v1.UserService.VerifyJWT - parameters: - - name: Connect-Protocol-Version - in: header - required: true - schema: - $ref: '#/components/schemas/connect-protocol-version' - - name: Connect-Timeout-Ms - in: header - schema: - $ref: '#/components/schemas/connect-timeout-header' - requestBody: - content: - application/json: - schema: - $ref: '#/components/schemas/mantrae.v1.VerifyJWTRequest' - required: true - responses: - default: - description: Error - content: - application/json: - schema: - $ref: '#/components/schemas/connect.error' - "200": - description: Success - content: - application/json: - schema: - $ref: '#/components/schemas/mantrae.v1.VerifyJWTResponse' /mantrae.v1.UserService/VerifyOTP: post: tags: diff --git a/proto/mantrae/v1/agent.proto b/proto/mantrae/v1/agent.proto index 8c78dd4..385e029 100644 --- a/proto/mantrae/v1/agent.proto +++ b/proto/mantrae/v1/agent.proto @@ -43,52 +43,34 @@ message Container { } message GetAgentRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; } message GetAgentResponse { Agent agent = 1; } message CreateAgentRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; } message CreateAgentResponse { Agent agent = 1; } message UpdateAgentIPRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - string ip = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; + string ip = 2 [(buf.validate.field).string.ip = true]; } message UpdateAgentIPResponse { Agent agent = 1; } message DeleteAgentRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; } message DeleteAgentResponse {} message ListAgentsRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; optional int64 limit = 2 [(buf.validate.field).cel = { id: "limit.valid" message: "limit must be either -1 or greater than 0" @@ -112,10 +94,7 @@ message HealthCheckResponse { } message RotateAgentTokenRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; } message RotateAgentTokenResponse { Agent agent = 1; diff --git a/proto/mantrae/v1/backup.proto b/proto/mantrae/v1/backup.proto index 6b5a3b0..65e3cae 100644 --- a/proto/mantrae/v1/backup.proto +++ b/proto/mantrae/v1/backup.proto @@ -27,10 +27,7 @@ message CreateBackupRequest {} message CreateBackupResponse {} message RestoreBackupRequest { - string name = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string name = 1 [(buf.validate.field).string.min_len = 1]; } message RestoreBackupResponse {} @@ -40,10 +37,7 @@ message ListBackupsResponse { } message DeleteBackupRequest { - string name = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string name = 1 [(buf.validate.field).string.min_len = 1]; } message DeleteBackupResponse {} diff --git a/proto/mantrae/v1/dns_provider.proto b/proto/mantrae/v1/dns_provider.proto index 27e34f8..048a8d8 100644 --- a/proto/mantrae/v1/dns_provider.proto +++ b/proto/mantrae/v1/dns_provider.proto @@ -35,9 +35,9 @@ message DnsProvider { } message DnsProviderConfig { - string api_key = 1; - string api_url = 2; - string ip = 3; + string api_key = 1 [(buf.validate.field).string.min_len = 1]; + string api_url = 2 [(buf.validate.field).string.uri = true]; + string ip = 3 [(buf.validate.field).string.ip = true]; bool proxied = 4; bool auto_update = 5; string zone_type = 6; diff --git a/proto/mantrae/v1/entry_point.proto b/proto/mantrae/v1/entry_point.proto index 1f56d7b..c447758 100644 --- a/proto/mantrae/v1/entry_point.proto +++ b/proto/mantrae/v1/entry_point.proto @@ -28,24 +28,15 @@ message EntryPoint { } message GetEntryPointRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; } message GetEntryPointResponse { EntryPoint entry_point = 1; } message CreateEntryPointRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; string address = 3 [(buf.validate.field).string.min_len = 1]; bool is_default = 4; } @@ -54,14 +45,8 @@ message CreateEntryPointResponse { } message UpdateEntryPointRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; string address = 3 [(buf.validate.field).string.min_len = 1]; bool is_default = 4; } @@ -78,10 +63,7 @@ message DeleteEntryPointRequest { message DeleteEntryPointResponse {} message ListEntryPointsRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; optional int64 limit = 2 [(buf.validate.field).cel = { id: "limit.valid" message: "limit must be either -1 or greater than 0" diff --git a/proto/mantrae/v1/event.proto b/proto/mantrae/v1/event.proto index 37bb382..e0a8352 100644 --- a/proto/mantrae/v1/event.proto +++ b/proto/mantrae/v1/event.proto @@ -68,10 +68,7 @@ message GlobalEvent { } message ProfileEventsRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; repeated ResourceType resource_types = 2; // Filter by specific resource types } message ProfileEventsResponse { diff --git a/proto/mantrae/v1/middleware.proto b/proto/mantrae/v1/middleware.proto index 4f5803d..1eb60ef 100644 --- a/proto/mantrae/v1/middleware.proto +++ b/proto/mantrae/v1/middleware.proto @@ -64,33 +64,18 @@ message PluginSnippet { } message GetMiddlewareRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - MiddlewareType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + MiddlewareType type = 2 [(buf.validate.field).enum.defined_only = true]; } message GetMiddlewareResponse { Middleware middleware = 1; } message CreateMiddlewareRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; string agent_id = 2; - string name = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - MiddlewareType type = 4 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + string name = 3 [(buf.validate.field).string.min_len = 1]; + MiddlewareType type = 4 [(buf.validate.field).enum.defined_only = true]; google.protobuf.Struct config = 5; } message CreateMiddlewareResponse { @@ -98,18 +83,9 @@ message CreateMiddlewareResponse { } message UpdateMiddlewareRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - MiddlewareType type = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; + MiddlewareType type = 3 [(buf.validate.field).enum.defined_only = true]; google.protobuf.Struct config = 4; bool enabled = 5; } @@ -118,22 +94,13 @@ message UpdateMiddlewareResponse { } message DeleteMiddlewareRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - MiddlewareType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + MiddlewareType type = 2 [(buf.validate.field).enum.defined_only = true]; } message DeleteMiddlewareResponse {} message ListMiddlewaresRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; optional string agent_id = 2 [(buf.validate.field).string.min_len = 1]; optional MiddlewareType type = 3 [(buf.validate.field).enum.defined_only = true]; optional int64 limit = 4 [(buf.validate.field).cel = { diff --git a/proto/mantrae/v1/profile.proto b/proto/mantrae/v1/profile.proto index 70a89df..5e7c3dc 100644 --- a/proto/mantrae/v1/profile.proto +++ b/proto/mantrae/v1/profile.proto @@ -26,20 +26,14 @@ message Profile { } message GetProfileRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; } message GetProfileResponse { Profile profile = 1; } message CreateProfileRequest { - string name = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string name = 1 [(buf.validate.field).string.min_len = 1]; optional string description = 2; } message CreateProfileResponse { @@ -47,14 +41,8 @@ message CreateProfileResponse { } message UpdateProfileRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; optional string description = 3; } message UpdateProfileResponse { @@ -62,10 +50,7 @@ message UpdateProfileResponse { } message DeleteProfileRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; } message DeleteProfileResponse {} diff --git a/proto/mantrae/v1/router.proto b/proto/mantrae/v1/router.proto index 6f7fe2b..e8add0b 100644 --- a/proto/mantrae/v1/router.proto +++ b/proto/mantrae/v1/router.proto @@ -40,29 +40,17 @@ message Router { } message GetRouterRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - RouterType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + RouterType type = 2 [(buf.validate.field).enum.defined_only = true]; } message GetRouterResponse { Router router = 1; } message CreateRouterRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; string agent_id = 2; - string name = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string name = 3 [(buf.validate.field).string.min_len = 1]; google.protobuf.Struct config = 4; bool enabled = 5; RouterType type = 6 [ @@ -75,18 +63,9 @@ message CreateRouterResponse { } message UpdateRouterRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - RouterType type = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; + RouterType type = 3 [(buf.validate.field).enum.defined_only = true]; google.protobuf.Struct config = 4; bool enabled = 5; repeated DnsProvider dns_providers = 6; @@ -96,22 +75,13 @@ message UpdateRouterResponse { } message DeleteRouterRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - RouterType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + RouterType type = 2 [(buf.validate.field).enum.defined_only = true]; } message DeleteRouterResponse {} message ListRoutersRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; optional string agent_id = 2 [(buf.validate.field).string.min_len = 1]; optional RouterType type = 3 [(buf.validate.field).enum.defined_only = true]; optional int64 limit = 4 [(buf.validate.field).cel = { diff --git a/proto/mantrae/v1/service.proto b/proto/mantrae/v1/service.proto index 4718d5b..f77732f 100644 --- a/proto/mantrae/v1/service.proto +++ b/proto/mantrae/v1/service.proto @@ -41,75 +41,42 @@ message Service { } message GetServiceRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - ServiceType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + ServiceType type = 2 [(buf.validate.field).enum.defined_only = true]; } message GetServiceResponse { Service service = 1; } message CreateServiceRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; string agent_id = 2; - string name = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string name = 3 [(buf.validate.field).string.min_len = 1]; google.protobuf.Struct config = 4; - ServiceType type = 5 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + ServiceType type = 5 [(buf.validate.field).enum.defined_only = true]; } message CreateServiceResponse { Service service = 1; } message UpdateServiceRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - string name = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + string name = 2 [(buf.validate.field).string.min_len = 1]; google.protobuf.Struct config = 3; - ServiceType type = 4 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + ServiceType type = 4 [(buf.validate.field).enum.defined_only = true]; } message UpdateServiceResponse { Service service = 1; } message DeleteServiceRequest { - int64 id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; - ServiceType type = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).enum.defined_only = true - ]; + int64 id = 1 [(buf.validate.field).int64.gt = 0]; + ServiceType type = 2 [(buf.validate.field).enum.defined_only = true]; } message DeleteServiceResponse {} message ListServicesRequest { - int64 profile_id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).int64.gt = 0 - ]; + int64 profile_id = 1 [(buf.validate.field).int64.gt = 0]; optional string agent_id = 2 [(buf.validate.field).string.min_len = 1]; optional ServiceType type = 3 [(buf.validate.field).enum.defined_only = true]; optional int64 limit = 4 [(buf.validate.field).cel = { diff --git a/proto/mantrae/v1/setting.proto b/proto/mantrae/v1/setting.proto index f986374..3d134f0 100644 --- a/proto/mantrae/v1/setting.proto +++ b/proto/mantrae/v1/setting.proto @@ -22,20 +22,14 @@ message Setting { } message GetSettingRequest { - string key = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string key = 1 [(buf.validate.field).string.min_len = 1]; } message GetSettingResponse { string value = 1; } message UpdateSettingRequest { - string key = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string key = 1 [(buf.validate.field).string.min_len = 1]; string value = 2; } message UpdateSettingResponse { diff --git a/proto/mantrae/v1/user.proto b/proto/mantrae/v1/user.proto index afa515a..6d33855 100644 --- a/proto/mantrae/v1/user.proto +++ b/proto/mantrae/v1/user.proto @@ -8,7 +8,6 @@ import "google/protobuf/timestamp.proto"; service UserService { rpc LoginUser(LoginUserRequest) returns (LoginUserResponse); rpc LogoutUser(LogoutUserRequest) returns (LogoutUserResponse); - rpc VerifyJWT(VerifyJWTRequest) returns (VerifyJWTResponse); rpc VerifyOTP(VerifyOTPRequest) returns (VerifyOTPResponse); rpc SendOTP(SendOTPRequest) returns (SendOTPResponse); rpc GetUser(GetUserRequest) returns (GetUserResponse) { @@ -48,30 +47,22 @@ message LoginUserRequest { ]; } message LoginUserResponse { - string token = 1; + User user = 1; } message LogoutUserRequest {} message LogoutUserResponse {} -message VerifyJWTRequest {} -message VerifyJWTResponse { - User user = 1; -} - message VerifyOTPRequest { oneof identifier { option (buf.validate.oneof).required = true; string username = 1 [(buf.validate.field).string.min_len = 3]; string email = 2 [(buf.validate.field).string.email = true]; } - string otp = 3 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 6 - ]; + string otp = 3 [(buf.validate.field).string.len = 6]; } message VerifyOTPResponse { - string token = 1; + User user = 1; } message SendOTPRequest { @@ -85,7 +76,6 @@ message SendOTPResponse {} message GetUserRequest { oneof identifier { - option (buf.validate.oneof).required = true; string id = 1 [(buf.validate.field).string.min_len = 1]; string username = 2 [(buf.validate.field).string.min_len = 3]; string email = 3 [(buf.validate.field).string.email = true]; @@ -96,14 +86,8 @@ message GetUserResponse { } message CreateUserRequest { - string username = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 3 - ]; - string password = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 8 - ]; + string username = 1 [(buf.validate.field).string.min_len = 3]; + string password = 2 [(buf.validate.field).string.min_len = 8]; string email = 3 [(buf.validate.field).string.email = true]; bool is_admin = 4; } @@ -112,27 +96,21 @@ message CreateUserResponse { } message UpdateUserRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; - string username = 2 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 3 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; + string username = 2 [(buf.validate.field).string.min_len = 3]; string email = 3 [(buf.validate.field).string.email = true]; bool is_admin = 4; - optional string password = 5 [(buf.validate.field).string.min_len = 8]; + optional string password = 5 [ + (buf.validate.field).string.min_len = 8, + (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED + ]; } message UpdateUserResponse { User user = 1; } message DeleteUserRequest { - string id = 1 [ - (buf.validate.field).required = true, - (buf.validate.field).string.min_len = 1 - ]; + string id = 1 [(buf.validate.field).string.min_len = 1]; } message DeleteUserResponse {} diff --git a/web/src/lib/components/modals/ConfigModal.svelte b/web/src/lib/components/modals/ConfigModal.svelte index 4f36bf6..82181d6 100644 --- a/web/src/lib/components/modals/ConfigModal.svelte +++ b/web/src/lib/components/modals/ConfigModal.svelte @@ -30,7 +30,9 @@ - + Dynamic Config diff --git a/web/src/lib/components/modals/UserModal.svelte b/web/src/lib/components/modals/UserModal.svelte index f2a6634..d89c648 100644 --- a/web/src/lib/components/modals/UserModal.svelte +++ b/web/src/lib/components/modals/UserModal.svelte @@ -7,11 +7,12 @@ import { toast } from 'svelte-sonner'; import PasswordInput from '../ui/password-input/password-input.svelte'; import Separator from '../ui/separator/separator.svelte'; - import type { User } from '$lib/gen/mantrae/v1/user_pb'; + import { UpdateUserRequestSchema, type User } from '$lib/gen/mantrae/v1/user_pb'; import { userClient } from '$lib/api'; import { ConnectError } from '@connectrpc/connect'; import { pageIndex, pageSize } from '$lib/stores/common'; import { user } from '$lib/stores/user'; + import { create } from '@bufbuild/protobuf'; interface Props { data?: User[]; @@ -27,13 +28,15 @@ const handleSubmit = async () => { try { if (item.id) { - await userClient.updateUser({ - id: item.id, - username: item.username, - email: item.email, - isAdmin: item.isAdmin, - password: item.password - }); + let payload = create(UpdateUserRequestSchema); + payload.id = item.id; + payload.username = item.username; + payload.email = item.email; + payload.isAdmin = item.isAdmin; + if (item.password && item.password.length > 0) { + payload.password = item.password; + } + await userClient.updateUser(payload); toast.success(`User ${item.username} updated successfully.`); } else { await userClient.createUser({ @@ -138,9 +141,7 @@ Delete {/if} - + diff --git a/web/src/lib/gen/buf/validate/validate_pb.ts b/web/src/lib/gen/buf/validate/validate_pb.ts index 0d825d3..864c10f 100644 --- a/web/src/lib/gen/buf/validate/validate_pb.ts +++ b/web/src/lib/gen/buf/validate/validate_pb.ts @@ -16,32 +16,17 @@ // @generated from file buf/validate/validate.proto (package buf.validate, syntax proto2) /* eslint-disable */ -import type { GenEnum, GenExtension, GenFile, GenMessage } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, extDesc, fileDesc, messageDesc } from '@bufbuild/protobuf/codegenv2'; -import type { - Duration, - FieldDescriptorProto_Type, - FieldOptions, - MessageOptions, - OneofOptions, - Timestamp -} from '@bufbuild/protobuf/wkt'; -import { - file_google_protobuf_descriptor, - file_google_protobuf_duration, - file_google_protobuf_timestamp -} from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenExtension, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, extDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Duration, FieldDescriptorProto_Type, FieldOptions, MessageOptions, OneofOptions, Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file buf/validate/validate.proto. */ -export const file_buf_validate_validate: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJwCgxNZXNzYWdlUnVsZXMSEAoIZGlzYWJsZWQYASABKAgSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZSI0ChBNZXNzYWdlT25lb2ZSdWxlEg4KBmZpZWxkcxgBIAMoCRIQCghyZXF1aXJlZBgCIAEoCCIeCgpPbmVvZlJ1bGVzEhAKCHJlcXVpcmVkGAEgASgIIr8ICgpGaWVsZFJ1bGVzEh8KA2NlbBgXIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEhAKCHJlcXVpcmVkGBkgASgIEiQKBmlnbm9yZRgbIAEoDjIULmJ1Zi52YWxpZGF0ZS5JZ25vcmUSKQoFZmxvYXQYASABKAsyGC5idWYudmFsaWRhdGUuRmxvYXRSdWxlc0gAEisKBmRvdWJsZRgCIAEoCzIZLmJ1Zi52YWxpZGF0ZS5Eb3VibGVSdWxlc0gAEikKBWludDMyGAMgASgLMhguYnVmLnZhbGlkYXRlLkludDMyUnVsZXNIABIpCgVpbnQ2NBgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQ2NFJ1bGVzSAASKwoGdWludDMyGAUgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQzMlJ1bGVzSAASKwoGdWludDY0GAYgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQ2NFJ1bGVzSAASKwoGc2ludDMyGAcgASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQzMlJ1bGVzSAASKwoGc2ludDY0GAggASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQ2NFJ1bGVzSAASLQoHZml4ZWQzMhgJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDMyUnVsZXNIABItCgdmaXhlZDY0GAogASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkNjRSdWxlc0gAEi8KCHNmaXhlZDMyGAsgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDMyUnVsZXNIABIvCghzZml4ZWQ2NBgMIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQ2NFJ1bGVzSAASJwoEYm9vbBgNIAEoCzIXLmJ1Zi52YWxpZGF0ZS5Cb29sUnVsZXNIABIrCgZzdHJpbmcYDiABKAsyGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXNIABIpCgVieXRlcxgPIAEoCzIYLmJ1Zi52YWxpZGF0ZS5CeXRlc1J1bGVzSAASJwoEZW51bRgQIAEoCzIXLmJ1Zi52YWxpZGF0ZS5FbnVtUnVsZXNIABIvCghyZXBlYXRlZBgSIAEoCzIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzSAASJQoDbWFwGBMgASgLMhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzSAASJQoDYW55GBQgASgLMhYuYnVmLnZhbGlkYXRlLkFueVJ1bGVzSAASLwoIZHVyYXRpb24YFSABKAsyGy5idWYudmFsaWRhdGUuRHVyYXRpb25SdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJTCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSE3NraXBwZWRpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqHAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhkKFUlHTk9SRV9JRl9VTlBPUFVMQVRFRBABEhsKF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFEAISEQoNSUdOT1JFX0FMV0FZUxADKhpJR05PUkVfRU1QVFlJR05PUkVfREVGQVVMVCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQrsBChBjb20uYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlogIDQlZYqgIMQnVmLlZhbGlkYXRlygIMQnVmXFZhbGlkYXRl4gIYQnVmXFZhbGlkYXRlXEdQQk1ldGFkYXRh6gINQnVmOjpWYWxpZGF0ZQ', - [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp] - ); +export const file_buf_validate_validate: GenFile = /*@__PURE__*/ + fileDesc("ChtidWYvdmFsaWRhdGUvdmFsaWRhdGUucHJvdG8SDGJ1Zi52YWxpZGF0ZSI3CgRSdWxlEgoKAmlkGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEgoKZXhwcmVzc2lvbhgDIAEoCSJwCgxNZXNzYWdlUnVsZXMSEAoIZGlzYWJsZWQYASABKAgSHwoDY2VsGAMgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGUSLQoFb25lb2YYBCADKAsyHi5idWYudmFsaWRhdGUuTWVzc2FnZU9uZW9mUnVsZSI0ChBNZXNzYWdlT25lb2ZSdWxlEg4KBmZpZWxkcxgBIAMoCRIQCghyZXF1aXJlZBgCIAEoCCIeCgpPbmVvZlJ1bGVzEhAKCHJlcXVpcmVkGAEgASgIIr8ICgpGaWVsZFJ1bGVzEh8KA2NlbBgXIAMoCzISLmJ1Zi52YWxpZGF0ZS5SdWxlEhAKCHJlcXVpcmVkGBkgASgIEiQKBmlnbm9yZRgbIAEoDjIULmJ1Zi52YWxpZGF0ZS5JZ25vcmUSKQoFZmxvYXQYASABKAsyGC5idWYudmFsaWRhdGUuRmxvYXRSdWxlc0gAEisKBmRvdWJsZRgCIAEoCzIZLmJ1Zi52YWxpZGF0ZS5Eb3VibGVSdWxlc0gAEikKBWludDMyGAMgASgLMhguYnVmLnZhbGlkYXRlLkludDMyUnVsZXNIABIpCgVpbnQ2NBgEIAEoCzIYLmJ1Zi52YWxpZGF0ZS5JbnQ2NFJ1bGVzSAASKwoGdWludDMyGAUgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQzMlJ1bGVzSAASKwoGdWludDY0GAYgASgLMhkuYnVmLnZhbGlkYXRlLlVJbnQ2NFJ1bGVzSAASKwoGc2ludDMyGAcgASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQzMlJ1bGVzSAASKwoGc2ludDY0GAggASgLMhkuYnVmLnZhbGlkYXRlLlNJbnQ2NFJ1bGVzSAASLQoHZml4ZWQzMhgJIAEoCzIaLmJ1Zi52YWxpZGF0ZS5GaXhlZDMyUnVsZXNIABItCgdmaXhlZDY0GAogASgLMhouYnVmLnZhbGlkYXRlLkZpeGVkNjRSdWxlc0gAEi8KCHNmaXhlZDMyGAsgASgLMhsuYnVmLnZhbGlkYXRlLlNGaXhlZDMyUnVsZXNIABIvCghzZml4ZWQ2NBgMIAEoCzIbLmJ1Zi52YWxpZGF0ZS5TRml4ZWQ2NFJ1bGVzSAASJwoEYm9vbBgNIAEoCzIXLmJ1Zi52YWxpZGF0ZS5Cb29sUnVsZXNIABIrCgZzdHJpbmcYDiABKAsyGS5idWYudmFsaWRhdGUuU3RyaW5nUnVsZXNIABIpCgVieXRlcxgPIAEoCzIYLmJ1Zi52YWxpZGF0ZS5CeXRlc1J1bGVzSAASJwoEZW51bRgQIAEoCzIXLmJ1Zi52YWxpZGF0ZS5FbnVtUnVsZXNIABIvCghyZXBlYXRlZBgSIAEoCzIbLmJ1Zi52YWxpZGF0ZS5SZXBlYXRlZFJ1bGVzSAASJQoDbWFwGBMgASgLMhYuYnVmLnZhbGlkYXRlLk1hcFJ1bGVzSAASJQoDYW55GBQgASgLMhYuYnVmLnZhbGlkYXRlLkFueVJ1bGVzSAASLwoIZHVyYXRpb24YFSABKAsyGy5idWYudmFsaWRhdGUuRHVyYXRpb25SdWxlc0gAEjEKCXRpbWVzdGFtcBgWIAEoCzIcLmJ1Zi52YWxpZGF0ZS5UaW1lc3RhbXBSdWxlc0gAQgYKBHR5cGVKBAgYEBlKBAgaEBtSB3NraXBwZWRSDGlnbm9yZV9lbXB0eSJTCg9QcmVkZWZpbmVkUnVsZXMSHwoDY2VsGAEgAygLMhIuYnVmLnZhbGlkYXRlLlJ1bGVKBAgYEBlKBAgaEBtSE3NraXBwZWRpZ25vcmVfZW1wdHki2hcKCkZsb2F0UnVsZXMSgwEKBWNvbnN0GAEgASgCQnTCSHEKbwoLZmxvYXQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKfAQoCbHQYAiABKAJCkAHCSIwBCokBCghmbG9hdC5sdBp9IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKvAQoDbHRlGAMgASgCQp8BwkibAQqYAQoJZmxvYXQubHRlGooBIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+IHJ1bGVzLmx0ZSk/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAAS7wcKAmd0GAQgASgCQuAHwkjcBwqNAQoIZmxvYXQuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrDAQoLZmxvYXQuZ3RfbHQaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrNAQoVZmxvYXQuZ3RfbHRfZXhjbHVzaXZlGrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycK0wEKDGZsb2F0Lmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt0BChZmbG9hdC5ndF9sdGVfZXhjbHVzaXZlGsIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARK6CAoDZ3RlGAUgASgCQqoIwkimCAqbAQoJZmxvYXQuZ3RlGo0BIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmICh0aGlzLmlzTmFuKCkgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCtIBCgxmbG9hdC5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtwBChZmbG9hdC5ndGVfbHRfZXhjbHVzaXZlGsEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwriAQoNZmxvYXQuZ3RlX2x0ZRrQAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK7AEKF2Zsb2F0Lmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEn8KAmluGAYgAygCQnPCSHAKbgoIZmxvYXQuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgHIAMoAkJmwkhjCmEKDGZsb2F0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnUKBmZpbml0ZRgIIAEoCEJlwkhiCmAKDGZsb2F0LmZpbml0ZRpQcnVsZXMuZmluaXRlID8gKHRoaXMuaXNOYW4oKSB8fCB0aGlzLmlzSW5mKCkgPyAndmFsdWUgbXVzdCBiZSBmaW5pdGUnIDogJycpIDogJycSKwoHZXhhbXBsZRgJIAMoAkIawkgXChUKDWZsb2F0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIu0XCgtEb3VibGVSdWxlcxKEAQoFY29uc3QYASABKAFCdcJIcgpwCgxkb3VibGUuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKgAQoCbHQYAiABKAFCkQHCSI0BCooBCglkb3VibGUubHQafSFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQpPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASsAEKA2x0ZRgDIAEoAUKgAcJInAEKmQEKCmRvdWJsZS5sdGUaigEhaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzID4gcnVsZXMubHRlKT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABL0BwoCZ3QYBCABKAFC5QfCSOEHCo4BCglkb3VibGUuZ3QagAEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwrEAQoMZG91YmxlLmd0X2x0GrMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKzgEKFmRvdWJsZS5ndF9sdF9leGNsdXNpdmUaswFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrUAQoNZG91YmxlLmd0X2x0ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCt4BChdkb3VibGUuZ3RfbHRlX2V4Y2x1c2l2ZRrCAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESvwgKA2d0ZRgFIAEoAUKvCMJIqwgKnAEKCmRvdWJsZS5ndGUajQEhaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgKHRoaXMuaXNOYW4oKSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycK0wEKDWRvdWJsZS5ndGVfbHQawQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCt0BChdkb3VibGUuZ3RlX2x0X2V4Y2x1c2l2ZRrBAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHRoaXMuaXNOYW4oKSB8fCAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK4wEKDmRvdWJsZS5ndGVfbHRlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcy5pc05hbigpIHx8IHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrtAQoYZG91YmxlLmd0ZV9sdGVfZXhjbHVzaXZlGtABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmICh0aGlzLmlzTmFuKCkgfHwgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSkpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoAUJ0wkhxCm8KCWRvdWJsZS5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygBQmfCSGQKYgoNZG91YmxlLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEnYKBmZpbml0ZRgIIAEoCEJmwkhjCmEKDWRvdWJsZS5maW5pdGUaUHJ1bGVzLmZpbml0ZSA/ICh0aGlzLmlzTmFuKCkgfHwgdGhpcy5pc0luZigpID8gJ3ZhbHVlIG11c3QgYmUgZmluaXRlJyA6ICcnKSA6ICcnEiwKB2V4YW1wbGUYCSADKAFCG8JIGAoWCg5kb3VibGUuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDMyUnVsZXMSgwEKBWNvbnN0GAEgASgFQnTCSHEKbwoLaW50MzIuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKAVCfMJIeQp3CghpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgFQowBwkiIAQqFAQoJaW50MzIubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKAVCiAfCSIQHCnoKCGludDMyLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQzMi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50MzIuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoBULTB8JIzwcKiAEKCWludDMyLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQzMi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQzMi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQzMi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoBUJzwkhwCm4KCGludDMyLmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKAVCZsJIYwphCgxpbnQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAggAygFQhrCSBcKFQoNaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ijBUKCkludDY0UnVsZXMSgwEKBWNvbnN0GAEgASgDQnTCSHEKbwoLaW50NjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKKAQoCbHQYAiABKANCfMJIeQp3CghpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKcAQoDbHRlGAMgASgDQowBwkiIAQqFAQoJaW50NjQubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABKXBwoCZ3QYBCABKANCiAfCSIQHCnoKCGludDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwqzAQoLaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrsBChVpbnQ2NC5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrDAQoMaW50NjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrLAQoWaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES4wcKA2d0ZRgFIAEoA0LTB8JIzwcKiAEKCWludDY0Lmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsIBCgxpbnQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKygEKFmludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtIBCg1pbnQ2NC5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCtoBChdpbnQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJ/CgJpbhgGIAMoA0JzwkhwCm4KCGludDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ2CgZub3RfaW4YByADKANCZsJIYwphCgxpbnQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIrCgdleGFtcGxlGAkgAygDQhrCSBcKFQoNaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoDUJ1wkhyCnAKDHVpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoDUJ9wkh6CngKCXVpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgNQo0BwkiJAQqGAQoKdWludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgNQo0HwkiJBwp7Cgl1aW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoDULYB8JI1AcKiQEKCnVpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoDUJ0wkhxCm8KCXVpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygNQmfCSGQKYgoNdWludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKA1CG8JIGAoWCg51aW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1VJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoBEJ1wkhyCnAKDHVpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoBEJ9wkh6CngKCXVpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgEQo0BwkiJAQqGAQoKdWludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgEQo0HwkiJBwp7Cgl1aW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgx1aW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZ1aW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXVpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChd1aW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoBELYB8JI1AcKiQEKCnVpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNdWludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXdWludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg51aW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYdWludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoBEJ0wkhxCm8KCXVpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygEQmfCSGQKYgoNdWludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKARCG8JIGAoWCg51aW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQzMlJ1bGVzEoQBCgVjb25zdBgBIAEoEUJ1wkhyCnAKDHNpbnQzMi5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEUJ9wkh6CngKCXNpbnQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgRQo0BwkiJAQqGAQoKc2ludDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgRQo0HwkiJBwp7CglzaW50MzIuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50MzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50MzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQzMi5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50MzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEULYB8JI1AcKiQEKCnNpbnQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDMyLmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50MzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDMyLmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEUJ0wkhxCm8KCXNpbnQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygRQmfCSGQKYgoNc2ludDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBFCG8JIGAoWCg5zaW50MzIuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4inhUKC1NJbnQ2NFJ1bGVzEoQBCgVjb25zdBgBIAEoEkJ1wkhyCnAKDHNpbnQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEosBCgJsdBgCIAEoEkJ9wkh6CngKCXNpbnQ2NC5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKdAQoDbHRlGAMgASgSQo0BwkiJAQqGAQoKc2ludDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASnAcKAmd0GAQgASgSQo0HwkiJBwp7CglzaW50NjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrQBCgxzaW50NjQuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCrwBChZzaW50NjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxAEKDXNpbnQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCswBChdzaW50NjQuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES6AcKA2d0ZRgFIAEoEkLYB8JI1AcKiQEKCnNpbnQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrDAQoNc2ludDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrLAQoXc2ludDY0Lmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtMBCg5zaW50NjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrbAQoYc2ludDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoABCgJpbhgGIAMoEkJ0wkhxCm8KCXNpbnQ2NC5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAcgAygSQmfCSGQKYgoNc2ludDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEiwKB2V4YW1wbGUYCCADKBJCG8JIGAoWCg5zaW50NjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4irxUKDEZpeGVkMzJSdWxlcxKFAQoFY29uc3QYASABKAdCdsJIcwpxCg1maXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjAEKAmx0GAIgASgHQn7CSHsKeQoKZml4ZWQzMi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABKeAQoDbHRlGAMgASgHQo4BwkiKAQqHAQoLZml4ZWQzMi5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqEHCgJndBgEIAEoB0KSB8JIjgcKfAoKZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtQEKDWZpeGVkMzIuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr0BChdmaXhlZDMyLmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsUBCg5maXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzQEKGGZpeGVkMzIuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAES7QcKA2d0ZRgFIAEoB0LdB8JI2QcKigEKC2ZpeGVkMzIuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxAEKDmZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCswBChhmaXhlZDMyLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtQBCg9maXhlZDMyLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3AEKGWZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESgQEKAmluGAYgAygHQnXCSHIKcAoKZml4ZWQzMi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSeAoGbm90X2luGAcgAygHQmjCSGUKYwoOZml4ZWQzMi5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxItCgdleGFtcGxlGAggAygHQhzCSBkKFwoPZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKvFQoMRml4ZWQ2NFJ1bGVzEoUBCgVjb25zdBgBIAEoBkJ2wkhzCnEKDWZpeGVkNjQuY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKMAQoCbHQYAiABKAZCfsJIewp5CgpmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp4BCgNsdGUYAyABKAZCjgHCSIoBCocBCgtmaXhlZDY0Lmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASoQcKAmd0GAQgASgGQpIHwkiOBwp8CgpmaXhlZDY0Lmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq1AQoNZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvQEKF2ZpeGVkNjQuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxQEKDmZpeGVkNjQuZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrNAQoYZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLtBwoDZ3RlGAUgASgGQt0HwkjZBwqKAQoLZml4ZWQ2NC5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrEAQoOZml4ZWQ2NC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzAEKGGZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1AEKD2ZpeGVkNjQuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrcAQoZZml4ZWQ2NC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKBAQoCaW4YBiADKAZCdcJIcgpwCgpmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ4CgZub3RfaW4YByADKAZCaMJIZQpjCg5maXhlZDY0Lm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi0KB2V4YW1wbGUYCCADKAZCHMJIGQoXCg9maXhlZDY0LmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkILCglsZXNzX3RoYW5CDgoMZ3JlYXRlcl90aGFuIsAVCg1TRml4ZWQzMlJ1bGVzEoYBCgVjb25zdBgBIAEoD0J3wkh0CnIKDnNmaXhlZDMyLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSjQEKAmx0GAIgASgPQn/CSHwKegoLc2ZpeGVkMzIubHQaayFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID49IHJ1bGVzLmx0PyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMubHRdKSA6ICcnSAASnwEKA2x0ZRgDIAEoD0KPAcJIiwEKiAEKDHNmaXhlZDMyLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASpgcKAmd0GAQgASgPQpcHwkiTBwp9CgtzZml4ZWQzMi5ndBpuIWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPD0gcnVsZXMuZ3Q/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndF0pIDogJycKtgEKDnNmaXhlZDMyLmd0X2x0GqMBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndCAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwq+AQoYc2ZpeGVkMzIuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxgEKD3NmaXhlZDMyLmd0X2x0ZRqyAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndCAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJycKzgEKGXNmaXhlZDMyLmd0X2x0ZV9leGNsdXNpdmUasAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndCAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJ0gBEvIHCgNndGUYBSABKA9C4gfCSN4HCosBCgxzZml4ZWQzMi5ndGUaeyFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDwgcnVsZXMuZ3RlPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlXSkgOiAnJwrFAQoPc2ZpeGVkMzIuZ3RlX2x0GrEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCs0BChlzZml4ZWQzMi5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrVAQoQc2ZpeGVkMzIuZ3RlX2x0ZRrAAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA+PSBydWxlcy5ndGUgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJwrdAQoac2ZpeGVkMzIuZ3RlX2x0ZV9leGNsdXNpdmUavgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnSAESggEKAmluGAYgAygPQnbCSHMKcQoLc2ZpeGVkMzIuaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnkKBm5vdF9pbhgHIAMoD0JpwkhmCmQKD3NmaXhlZDMyLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEi4KB2V4YW1wbGUYCCADKA9CHcJIGgoYChBzZml4ZWQzMi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiLAFQoNU0ZpeGVkNjRSdWxlcxKGAQoFY29uc3QYASABKBBCd8JIdApyCg5zZml4ZWQ2NC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEo0BCgJsdBgCIAEoEEJ/wkh8CnoKC3NmaXhlZDY0Lmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAEp8BCgNsdGUYAyABKBBCjwHCSIsBCogBCgxzZml4ZWQ2NC5sdGUaeCFoYXMocnVsZXMuZ3RlKSAmJiAhaGFzKHJ1bGVzLmd0KSAmJiB0aGlzID4gcnVsZXMubHRlPyAndmFsdWUgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMubHRlXSkgOiAnJ0gAEqYHCgJndBgEIAEoEEKXB8JIkwcKfQoLc2ZpeGVkNjQuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrYBCg5zZml4ZWQ2NC5ndF9sdBqjAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPj0gcnVsZXMubHQgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKvgEKGHNmaXhlZDY0Lmd0X2x0X2V4Y2x1c2l2ZRqhAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndCAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDw9IHJ1bGVzLmd0KT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCsYBCg9zZml4ZWQ2NC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs4BChlzZml4ZWQ2NC5ndF9sdGVfZXhjbHVzaXZlGrABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0ZSA8IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0ZV0pIDogJydIARLyBwoDZ3RlGAUgASgQQuIHwkjeBwqLAQoMc2ZpeGVkNjQuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxQEKD3NmaXhlZDY0Lmd0ZV9sdBqxAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPj0gcnVsZXMuZ3RlICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrNAQoZc2ZpeGVkNjQuZ3RlX2x0X2V4Y2x1c2l2ZRqvAWhhcyhydWxlcy5sdCkgJiYgcnVsZXMubHQgPCBydWxlcy5ndGUgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8IHJ1bGVzLmd0ZSk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycK1QEKEHNmaXhlZDY0Lmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3QEKGnNmaXhlZDY0Lmd0ZV9sdGVfZXhjbHVzaXZlGr4BaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlIDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRlXSkgOiAnJ0gBEoIBCgJpbhgGIAMoEEJ2wkhzCnEKC3NmaXhlZDY0LmluGmIhKHRoaXMgaW4gZ2V0RmllbGQocnVsZXMsICdpbicpKSA/ICd2YWx1ZSBtdXN0IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdpbicpXSkgOiAnJxJ5CgZub3RfaW4YByADKBBCacJIZgpkCg9zZml4ZWQ2NC5ub3RfaW4aUXRoaXMgaW4gcnVsZXMubm90X2luID8gJ3ZhbHVlIG11c3Qgbm90IGJlIGluIGxpc3QgJXMnLmZvcm1hdChbcnVsZXMubm90X2luXSkgOiAnJxIuCgdleGFtcGxlGAggAygQQh3CSBoKGAoQc2ZpeGVkNjQuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACQgsKCWxlc3NfdGhhbkIOCgxncmVhdGVyX3RoYW4ixwEKCUJvb2xSdWxlcxKCAQoFY29uc3QYASABKAhCc8JIcApuCgpib29sLmNvbnN0GmB0aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGVxdWFsICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSKgoHZXhhbXBsZRgCIAMoCEIZwkgWChQKDGJvb2wuZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIpA3CgtTdHJpbmdSdWxlcxKGAQoFY29uc3QYASABKAlCd8JIdApyCgxzdHJpbmcuY29uc3QaYnRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgYCVzYCcuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEn4KA2xlbhgTIAEoBEJxwkhuCmwKCnN0cmluZy5sZW4aXnVpbnQodGhpcy5zaXplKCkpICE9IHJ1bGVzLmxlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLmxlbl0pIDogJycSmQEKB21pbl9sZW4YAiABKARChwHCSIMBCoABCg5zdHJpbmcubWluX2xlbhpudWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fbGVuID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlIGF0IGxlYXN0ICVzIGNoYXJhY3RlcnMnLmZvcm1hdChbcnVsZXMubWluX2xlbl0pIDogJycSlwEKB21heF9sZW4YAyABKARChQHCSIEBCn8KDnN0cmluZy5tYXhfbGVuGm11aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBjaGFyYWN0ZXJzJy5mb3JtYXQoW3J1bGVzLm1heF9sZW5dKSA6ICcnEpsBCglsZW5fYnl0ZXMYFCABKARChwHCSIMBCoABChBzdHJpbmcubGVuX2J5dGVzGmx1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgIT0gcnVsZXMubGVuX2J5dGVzID8gJ3ZhbHVlIGxlbmd0aCBtdXN0IGJlICVzIGJ5dGVzJy5mb3JtYXQoW3J1bGVzLmxlbl9ieXRlc10pIDogJycSowEKCW1pbl9ieXRlcxgEIAEoBEKPAcJIiwEKiAEKEHN0cmluZy5taW5fYnl0ZXMadHVpbnQoYnl0ZXModGhpcykuc2l6ZSgpKSA8IHJ1bGVzLm1pbl9ieXRlcyA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fYnl0ZXNdKSA6ICcnEqIBCgltYXhfYnl0ZXMYBSABKARCjgHCSIoBCocBChBzdHJpbmcubWF4X2J5dGVzGnN1aW50KGJ5dGVzKHRoaXMpLnNpemUoKSkgPiBydWxlcy5tYXhfYnl0ZXMgPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgYXQgbW9zdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5tYXhfYnl0ZXNdKSA6ICcnEo0BCgdwYXR0ZXJuGAYgASgJQnzCSHkKdwoOc3RyaW5nLnBhdHRlcm4aZSF0aGlzLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgZG9lcyBub3QgbWF0Y2ggcmVnZXggcGF0dGVybiBgJXNgJy5mb3JtYXQoW3J1bGVzLnBhdHRlcm5dKSA6ICcnEoQBCgZwcmVmaXgYByABKAlCdMJIcQpvCg1zdHJpbmcucHJlZml4Gl4hdGhpcy5zdGFydHNXaXRoKHJ1bGVzLnByZWZpeCkgPyAndmFsdWUgZG9lcyBub3QgaGF2ZSBwcmVmaXggYCVzYCcuZm9ybWF0KFtydWxlcy5wcmVmaXhdKSA6ICcnEoIBCgZzdWZmaXgYCCABKAlCcsJIbwptCg1zdHJpbmcuc3VmZml4GlwhdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4IGAlc2AnLmZvcm1hdChbcnVsZXMuc3VmZml4XSkgOiAnJxKQAQoIY29udGFpbnMYCSABKAlCfsJIewp5Cg9zdHJpbmcuY29udGFpbnMaZiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluIHN1YnN0cmluZyBgJXNgJy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKYAQoMbm90X2NvbnRhaW5zGBcgASgJQoEBwkh+CnwKE3N0cmluZy5ub3RfY29udGFpbnMaZXRoaXMuY29udGFpbnMocnVsZXMubm90X2NvbnRhaW5zKSA/ICd2YWx1ZSBjb250YWlucyBzdWJzdHJpbmcgYCVzYCcuZm9ybWF0KFtydWxlcy5ub3RfY29udGFpbnNdKSA6ICcnEoABCgJpbhgKIAMoCUJ0wkhxCm8KCXN0cmluZy5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSdwoGbm90X2luGAsgAygJQmfCSGQKYgoNc3RyaW5nLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEt8BCgVlbWFpbBgMIAEoCELNAcJIyQEKYQoMc3RyaW5nLmVtYWlsEiN2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgZW1haWwgYWRkcmVzcxosIXJ1bGVzLmVtYWlsIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0VtYWlsKCkKZAoSc3RyaW5nLmVtYWlsX2VtcHR5EjJ2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzcxoaIXJ1bGVzLmVtYWlsIHx8IHRoaXMgIT0gJydIABLnAQoIaG9zdG5hbWUYDSABKAhC0gHCSM4BCmUKD3N0cmluZy5ob3N0bmFtZRIedmFsdWUgbXVzdCBiZSBhIHZhbGlkIGhvc3RuYW1lGjIhcnVsZXMuaG9zdG5hbWUgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKQplChVzdHJpbmcuaG9zdG5hbWVfZW1wdHkSLXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0bmFtZRodIXJ1bGVzLmhvc3RuYW1lIHx8IHRoaXMgIT0gJydIABLHAQoCaXAYDiABKAhCuAHCSLQBClUKCXN0cmluZy5pcBIgdmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQIGFkZHJlc3MaJiFydWxlcy5pcCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCgpClsKD3N0cmluZy5pcF9lbXB0eRIvdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIGFkZHJlc3MaFyFydWxlcy5pcCB8fCB0aGlzICE9ICcnSAAS1gEKBGlwdjQYDyABKAhCxQHCSMEBClwKC3N0cmluZy5pcHY0EiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NCBhZGRyZXNzGikhcnVsZXMuaXB2NCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcCg0KQphChFzdHJpbmcuaXB2NF9lbXB0eRIxdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcxoZIXJ1bGVzLmlwdjQgfHwgdGhpcyAhPSAnJ0gAEtYBCgRpcHY2GBAgASgIQsUBwkjBAQpcCgtzdHJpbmcuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxopIXJ1bGVzLmlwdjYgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXAoNikKYQoRc3RyaW5nLmlwdjZfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IGFkZHJlc3MaGSFydWxlcy5pcHY2IHx8IHRoaXMgIT0gJydIABK/AQoDdXJpGBEgASgIQq8BwkirAQpRCgpzdHJpbmcudXJpEhl2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVJJGighcnVsZXMudXJpIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc1VyaSgpClYKEHN0cmluZy51cmlfZW1wdHkSKHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBVUkkaGCFydWxlcy51cmkgfHwgdGhpcyAhPSAnJ0gAEnAKB3VyaV9yZWYYEiABKAhCXcJIWgpYCg5zdHJpbmcudXJpX3JlZhIjdmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVSSSBSZWZlcmVuY2UaISFydWxlcy51cmlfcmVmIHx8IHRoaXMuaXNVcmlSZWYoKUgAEpACCgdhZGRyZXNzGBUgASgIQvwBwkj4AQqBAQoOc3RyaW5nLmFkZHJlc3MSLXZhbHVlIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgb3IgaXAgYWRkcmVzcxpAIXJ1bGVzLmFkZHJlc3MgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdG5hbWUoKSB8fCB0aGlzLmlzSXAoKQpyChRzdHJpbmcuYWRkcmVzc19lbXB0eRI8dmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIGhvc3RuYW1lLCBvciBpcCBhZGRyZXNzGhwhcnVsZXMuYWRkcmVzcyB8fCB0aGlzICE9ICcnSAASmAIKBHV1aWQYFiABKAhChwLCSIMCCqUBCgtzdHJpbmcudXVpZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeiFydWxlcy51dWlkIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpClkKEXN0cmluZy51dWlkX2VtcHR5Eil2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgVVVJRBoZIXJ1bGVzLnV1aWQgfHwgdGhpcyAhPSAnJ0gAEvABCgV0dXVpZBghIAEoCELeAcJI2gEKcwoMc3RyaW5nLnR1dWlkEiJ2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgdHJpbW1lZCBVVUlEGj8hcnVsZXMudHV1aWQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLm1hdGNoZXMoJ15bMC05YS1mQS1GXXszMn0kJykKYwoSc3RyaW5nLnR1dWlkX2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgdHJpbW1lZCBVVUlEGhohcnVsZXMudHV1aWQgfHwgdGhpcyAhPSAnJ0gAEpYCChFpcF93aXRoX3ByZWZpeGxlbhgaIAEoCEL4AcJI9AEKeAoYc3RyaW5nLmlwX3dpdGhfcHJlZml4bGVuEh92YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVAgcHJlZml4GjshcnVsZXMuaXBfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoKQp4Ch5zdHJpbmcuaXBfd2l0aF9wcmVmaXhsZW5fZW1wdHkSLnZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUCBwcmVmaXgaJiFydWxlcy5pcF93aXRoX3ByZWZpeGxlbiB8fCB0aGlzICE9ICcnSAASzwIKE2lwdjRfd2l0aF9wcmVmaXhsZW4YGyABKAhCrwLCSKsCCpMBChpzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbhI1dmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaPiFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQpCpIBCiBzdHJpbmcuaXB2NF93aXRoX3ByZWZpeGxlbl9lbXB0eRJEdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgYWRkcmVzcyB3aXRoIHByZWZpeCBsZW5ndGgaKCFydWxlcy5pcHY0X3dpdGhfcHJlZml4bGVuIHx8IHRoaXMgIT0gJydIABLPAgoTaXB2Nl93aXRoX3ByZWZpeGxlbhgcIAEoCEKvAsJIqwIKkwEKGnN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuEjV2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBo+IXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgoNikKkgEKIHN0cmluZy5pcHY2X3dpdGhfcHJlZml4bGVuX2VtcHR5EkR2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzIHdpdGggcHJlZml4IGxlbmd0aBooIXJ1bGVzLmlwdjZfd2l0aF9wcmVmaXhsZW4gfHwgdGhpcyAhPSAnJ0gAEvIBCglpcF9wcmVmaXgYHSABKAhC3AHCSNgBCmwKEHN0cmluZy5pcF9wcmVmaXgSH3ZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBwcmVmaXgaNyFydWxlcy5pcF9wcmVmaXggfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSXBQcmVmaXgodHJ1ZSkKaAoWc3RyaW5nLmlwX3ByZWZpeF9lbXB0eRIudmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQIHByZWZpeBoeIXJ1bGVzLmlwX3ByZWZpeCB8fCB0aGlzICE9ICcnSAASgwIKC2lwdjRfcHJlZml4GB4gASgIQusBwkjnAQp1ChJzdHJpbmcuaXB2NF9wcmVmaXgSIXZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUHY0IHByZWZpeBo8IXJ1bGVzLmlwdjRfcHJlZml4IHx8IHRoaXMgPT0gJycgfHwgdGhpcy5pc0lwUHJlZml4KDQsIHRydWUpCm4KGHN0cmluZy5pcHY0X3ByZWZpeF9lbXB0eRIwdmFsdWUgaXMgZW1wdHksIHdoaWNoIGlzIG5vdCBhIHZhbGlkIElQdjQgcHJlZml4GiAhcnVsZXMuaXB2NF9wcmVmaXggfHwgdGhpcyAhPSAnJ0gAEoMCCgtpcHY2X3ByZWZpeBgfIAEoCELrAcJI5wEKdQoSc3RyaW5nLmlwdjZfcHJlZml4EiF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSVB2NiBwcmVmaXgaPCFydWxlcy5pcHY2X3ByZWZpeCB8fCB0aGlzID09ICcnIHx8IHRoaXMuaXNJcFByZWZpeCg2LCB0cnVlKQpuChhzdHJpbmcuaXB2Nl9wcmVmaXhfZW1wdHkSMHZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY2IHByZWZpeBogIXJ1bGVzLmlwdjZfcHJlZml4IHx8IHRoaXMgIT0gJydIABK1AgoNaG9zdF9hbmRfcG9ydBggIAEoCEKbAsJIlwIKmQEKFHN0cmluZy5ob3N0X2FuZF9wb3J0EkF2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgaG9zdCAoaG9zdG5hbWUgb3IgSVAgYWRkcmVzcykgYW5kIHBvcnQgcGFpcho+IXJ1bGVzLmhvc3RfYW5kX3BvcnQgfHwgdGhpcyA9PSAnJyB8fCB0aGlzLmlzSG9zdEFuZFBvcnQodHJ1ZSkKeQoac3RyaW5nLmhvc3RfYW5kX3BvcnRfZW1wdHkSN3ZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBob3N0IGFuZCBwb3J0IHBhaXIaIiFydWxlcy5ob3N0X2FuZF9wb3J0IHx8IHRoaXMgIT0gJydIABKoBQoQd2VsbF9rbm93bl9yZWdleBgYIAEoDjIYLmJ1Zi52YWxpZGF0ZS5Lbm93blJlZ2V4QvEEwkjtBArwAQojc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWUSJnZhbHVlIG11c3QgYmUgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGqABcnVsZXMud2VsbF9rbm93bl9yZWdleCAhPSAxIHx8IHRoaXMgPT0gJycgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeOj9bMC05YS16QS1aISMkJSZcJyorLS5eX3x+XHg2MF0rJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKyQnKQqNAQopc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX25hbWVfZW1wdHkSNXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBIVFRQIGhlYWRlciBuYW1lGilydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDEgfHwgdGhpcyAhPSAnJwrnAQokc3RyaW5nLndlbGxfa25vd25fcmVnZXguaGVhZGVyX3ZhbHVlEid2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgSFRUUCBoZWFkZXIgdmFsdWUalQFydWxlcy53ZWxsX2tub3duX3JlZ2V4ICE9IDIgfHwgdGhpcy5tYXRjaGVzKCFoYXMocnVsZXMuc3RyaWN0KSB8fCBydWxlcy5zdHJpY3QgPydeW15cdTAwMDAtXHUwMDA4XHUwMDBBLVx1MDAxRlx1MDA3Rl0qJCcgOideW15cdTAwMDBcdTAwMEFcdTAwMERdKiQnKUgAEg4KBnN0cmljdBgZIAEoCBIsCgdleGFtcGxlGCIgAygJQhvCSBgKFgoOc3RyaW5nLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duIuoQCgpCeXRlc1J1bGVzEoABCgVjb25zdBgBIAEoDEJxwkhuCmwKC2J5dGVzLmNvbnN0Gl10aGlzICE9IGdldEZpZWxkKHJ1bGVzLCAnY29uc3QnKSA/ICd2YWx1ZSBtdXN0IGJlICV4Jy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnY29uc3QnKV0pIDogJycSeAoDbGVuGA0gASgEQmvCSGgKZgoJYnl0ZXMubGVuGll1aW50KHRoaXMuc2l6ZSgpKSAhPSBydWxlcy5sZW4gPyAndmFsdWUgbGVuZ3RoIG11c3QgYmUgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubGVuXSkgOiAnJxKQAQoHbWluX2xlbhgCIAEoBEJ/wkh8CnoKDWJ5dGVzLm1pbl9sZW4aaXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2xlbiA/ICd2YWx1ZSBsZW5ndGggbXVzdCBiZSBhdCBsZWFzdCAlcyBieXRlcycuZm9ybWF0KFtydWxlcy5taW5fbGVuXSkgOiAnJxKIAQoHbWF4X2xlbhgDIAEoBEJ3wkh0CnIKDWJ5dGVzLm1heF9sZW4aYXVpbnQodGhpcy5zaXplKCkpID4gcnVsZXMubWF4X2xlbiA/ICd2YWx1ZSBtdXN0IGJlIGF0IG1vc3QgJXMgYnl0ZXMnLmZvcm1hdChbcnVsZXMubWF4X2xlbl0pIDogJycSkAEKB3BhdHRlcm4YBCABKAlCf8JIfAp6Cg1ieXRlcy5wYXR0ZXJuGmkhc3RyaW5nKHRoaXMpLm1hdGNoZXMocnVsZXMucGF0dGVybikgPyAndmFsdWUgbXVzdCBtYXRjaCByZWdleCBwYXR0ZXJuIGAlc2AnLmZvcm1hdChbcnVsZXMucGF0dGVybl0pIDogJycSgQEKBnByZWZpeBgFIAEoDEJxwkhuCmwKDGJ5dGVzLnByZWZpeBpcIXRoaXMuc3RhcnRzV2l0aChydWxlcy5wcmVmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgcHJlZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnByZWZpeF0pIDogJycSfwoGc3VmZml4GAYgASgMQm/CSGwKagoMYnl0ZXMuc3VmZml4GlohdGhpcy5lbmRzV2l0aChydWxlcy5zdWZmaXgpID8gJ3ZhbHVlIGRvZXMgbm90IGhhdmUgc3VmZml4ICV4Jy5mb3JtYXQoW3J1bGVzLnN1ZmZpeF0pIDogJycSgwEKCGNvbnRhaW5zGAcgASgMQnHCSG4KbAoOYnl0ZXMuY29udGFpbnMaWiF0aGlzLmNvbnRhaW5zKHJ1bGVzLmNvbnRhaW5zKSA/ICd2YWx1ZSBkb2VzIG5vdCBjb250YWluICV4Jy5mb3JtYXQoW3J1bGVzLmNvbnRhaW5zXSkgOiAnJxKnAQoCaW4YCCADKAxCmgHCSJYBCpMBCghieXRlcy5pbhqGAWdldEZpZWxkKHJ1bGVzLCAnaW4nKS5zaXplKCkgPiAwICYmICEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnYKBm5vdF9pbhgJIAMoDEJmwkhjCmEKDGJ5dGVzLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEusBCgJpcBgKIAEoCELcAcJI2AEKdAoIYnl0ZXMuaXASIHZhbHVlIG11c3QgYmUgYSB2YWxpZCBJUCBhZGRyZXNzGkYhcnVsZXMuaXAgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0IHx8IHRoaXMuc2l6ZSgpID09IDE2CmAKDmJ5dGVzLmlwX2VtcHR5Ei92YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVAgYWRkcmVzcxodIXJ1bGVzLmlwIHx8IHRoaXMuc2l6ZSgpICE9IDBIABLkAQoEaXB2NBgLIAEoCELTAcJIzwEKZQoKYnl0ZXMuaXB2NBIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjQgYWRkcmVzcxozIXJ1bGVzLmlwdjQgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSA0CmYKEGJ5dGVzLmlwdjRfZW1wdHkSMXZhbHVlIGlzIGVtcHR5LCB3aGljaCBpcyBub3QgYSB2YWxpZCBJUHY0IGFkZHJlc3MaHyFydWxlcy5pcHY0IHx8IHRoaXMuc2l6ZSgpICE9IDBIABLlAQoEaXB2NhgMIAEoCELUAcJI0AEKZgoKYnl0ZXMuaXB2NhIidmFsdWUgbXVzdCBiZSBhIHZhbGlkIElQdjYgYWRkcmVzcxo0IXJ1bGVzLmlwdjYgfHwgdGhpcy5zaXplKCkgPT0gMCB8fCB0aGlzLnNpemUoKSA9PSAxNgpmChBieXRlcy5pcHY2X2VtcHR5EjF2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggaXMgbm90IGEgdmFsaWQgSVB2NiBhZGRyZXNzGh8hcnVsZXMuaXB2NiB8fCB0aGlzLnNpemUoKSAhPSAwSAASKwoHZXhhbXBsZRgOIAMoDEIawkgXChUKDWJ5dGVzLmV4YW1wbGUaBHRydWUqCQjoBxCAgICAAkIMCgp3ZWxsX2tub3duItQDCglFbnVtUnVsZXMSggEKBWNvbnN0GAEgASgFQnPCSHAKbgoKZW51bS5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEhQKDGRlZmluZWRfb25seRgCIAEoCBJ+CgJpbhgDIAMoBUJywkhvCm0KB2VudW0uaW4aYiEodGhpcyBpbiBnZXRGaWVsZChydWxlcywgJ2luJykpID8gJ3ZhbHVlIG11c3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2luJyldKSA6ICcnEnUKBm5vdF9pbhgEIAMoBUJlwkhiCmAKC2VudW0ubm90X2luGlF0aGlzIGluIHJ1bGVzLm5vdF9pbiA/ICd2YWx1ZSBtdXN0IG5vdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW3J1bGVzLm5vdF9pbl0pIDogJycSKgoHZXhhbXBsZRgFIAMoBUIZwkgWChQKDGVudW0uZXhhbXBsZRoEdHJ1ZSoJCOgHEICAgIACIvsDCg1SZXBlYXRlZFJ1bGVzEp4BCgltaW5faXRlbXMYASABKARCigHCSIYBCoMBChJyZXBlYXRlZC5taW5faXRlbXMabXVpbnQodGhpcy5zaXplKCkpIDwgcnVsZXMubWluX2l0ZW1zID8gJ3ZhbHVlIG11c3QgY29udGFpbiBhdCBsZWFzdCAlZCBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1pbl9pdGVtc10pIDogJycSogEKCW1heF9pdGVtcxgCIAEoBEKOAcJIigEKhwEKEnJlcGVhdGVkLm1heF9pdGVtcxpxdWludCh0aGlzLnNpemUoKSkgPiBydWxlcy5tYXhfaXRlbXMgPyAndmFsdWUgbXVzdCBjb250YWluIG5vIG1vcmUgdGhhbiAlcyBpdGVtKHMpJy5mb3JtYXQoW3J1bGVzLm1heF9pdGVtc10pIDogJycScAoGdW5pcXVlGAMgASgIQmDCSF0KWwoPcmVwZWF0ZWQudW5pcXVlEihyZXBlYXRlZCB2YWx1ZSBtdXN0IGNvbnRhaW4gdW5pcXVlIGl0ZW1zGh4hcnVsZXMudW5pcXVlIHx8IHRoaXMudW5pcXVlKCkSJwoFaXRlbXMYBCABKAsyGC5idWYudmFsaWRhdGUuRmllbGRSdWxlcyoJCOgHEICAgIACIooDCghNYXBSdWxlcxKPAQoJbWluX3BhaXJzGAEgASgEQnzCSHkKdwoNbWFwLm1pbl9wYWlycxpmdWludCh0aGlzLnNpemUoKSkgPCBydWxlcy5taW5fcGFpcnMgPyAnbWFwIG11c3QgYmUgYXQgbGVhc3QgJWQgZW50cmllcycuZm9ybWF0KFtydWxlcy5taW5fcGFpcnNdKSA6ICcnEo4BCgltYXhfcGFpcnMYAiABKARCe8JIeAp2Cg1tYXAubWF4X3BhaXJzGmV1aW50KHRoaXMuc2l6ZSgpKSA+IHJ1bGVzLm1heF9wYWlycyA/ICdtYXAgbXVzdCBiZSBhdCBtb3N0ICVkIGVudHJpZXMnLmZvcm1hdChbcnVsZXMubWF4X3BhaXJzXSkgOiAnJxImCgRrZXlzGAQgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMSKAoGdmFsdWVzGAUgASgLMhguYnVmLnZhbGlkYXRlLkZpZWxkUnVsZXMqCQjoBxCAgICAAiImCghBbnlSdWxlcxIKCgJpbhgCIAMoCRIOCgZub3RfaW4YAyADKAkimRcKDUR1cmF0aW9uUnVsZXMSoQEKBWNvbnN0GAIgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQnfCSHQKcgoOZHVyYXRpb24uY29uc3QaYHRoaXMgIT0gZ2V0RmllbGQocnVsZXMsICdjb25zdCcpID8gJ3ZhbHVlIG11c3QgZXF1YWwgJXMnLmZvcm1hdChbZ2V0RmllbGQocnVsZXMsICdjb25zdCcpXSkgOiAnJxKoAQoCbHQYAyABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25Cf8JIfAp6CgtkdXJhdGlvbi5sdBprIWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPj0gcnVsZXMubHQ/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5sdF0pIDogJydIABK6AQoDbHRlGAQgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9uQo8BwkiLAQqIAQoMZHVyYXRpb24ubHRlGnghaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+IHJ1bGVzLmx0ZT8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmx0ZV0pIDogJydIABLBBwoCZ3QYBSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25ClwfCSJMHCn0KC2R1cmF0aW9uLmd0Gm4haGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8PSBydWxlcy5ndD8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0XSkgOiAnJwq2AQoOZHVyYXRpb24uZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr4BChhkdXJhdGlvbi5ndF9sdF9leGNsdXNpdmUaoQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3QgJiYgKHJ1bGVzLmx0IDw9IHRoaXMgJiYgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBvciBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3QsIHJ1bGVzLmx0XSkgOiAnJwrGAQoPZHVyYXRpb24uZ3RfbHRlGrIBaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRlXSkgOiAnJwrOAQoZZHVyYXRpb24uZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESjQgKA2d0ZRgGIAEoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkLiB8JI3gcKiwEKDGR1cmF0aW9uLmd0ZRp7IWhhcyhydWxlcy5sdCkgJiYgIWhhcyhydWxlcy5sdGUpICYmIHRoaXMgPCBydWxlcy5ndGU/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGVdKSA6ICcnCsUBCg9kdXJhdGlvbi5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzQEKGWR1cmF0aW9uLmd0ZV9sdF9leGNsdXNpdmUarwFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0IDwgcnVsZXMuZ3RlICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0ZSwgcnVsZXMubHRdKSA6ICcnCtUBChBkdXJhdGlvbi5ndGVfbHRlGsABaGFzKHJ1bGVzLmx0ZSkgJiYgcnVsZXMubHRlID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+IHJ1bGVzLmx0ZSB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdGVdKSA6ICcnCt0BChpkdXJhdGlvbi5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARKdAQoCaW4YByADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CdsJIcwpxCgtkdXJhdGlvbi5pbhpiISh0aGlzIGluIGdldEZpZWxkKHJ1bGVzLCAnaW4nKSkgPyAndmFsdWUgbXVzdCBiZSBpbiBsaXN0ICVzJy5mb3JtYXQoW2dldEZpZWxkKHJ1bGVzLCAnaW4nKV0pIDogJycSlAEKBm5vdF9pbhgIIAMoCzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbkJpwkhmCmQKD2R1cmF0aW9uLm5vdF9pbhpRdGhpcyBpbiBydWxlcy5ub3RfaW4gPyAndmFsdWUgbXVzdCBub3QgYmUgaW4gbGlzdCAlcycuZm9ybWF0KFtydWxlcy5ub3RfaW5dKSA6ICcnEkkKB2V4YW1wbGUYCSADKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CHcJIGgoYChBkdXJhdGlvbi5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiKSGAoOVGltZXN0YW1wUnVsZXMSowEKBWNvbnN0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEJ4wkh1CnMKD3RpbWVzdGFtcC5jb25zdBpgdGhpcyAhPSBnZXRGaWVsZChydWxlcywgJ2NvbnN0JykgPyAndmFsdWUgbXVzdCBlcXVhbCAlcycuZm9ybWF0KFtnZXRGaWVsZChydWxlcywgJ2NvbnN0JyldKSA6ICcnEqsBCgJsdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBCgAHCSH0KewoMdGltZXN0YW1wLmx0GmshaGFzKHJ1bGVzLmd0ZSkgJiYgIWhhcyhydWxlcy5ndCkgJiYgdGhpcyA+PSBydWxlcy5sdD8gJ3ZhbHVlIG11c3QgYmUgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmx0XSkgOiAnJ0gAErwBCgNsdGUYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpABwkiMAQqJAQoNdGltZXN0YW1wLmx0ZRp4IWhhcyhydWxlcy5ndGUpICYmICFoYXMocnVsZXMuZ3QpICYmIHRoaXMgPiBydWxlcy5sdGU/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5sdGVdKSA6ICcnSAASbAoGbHRfbm93GAcgASgIQlrCSFcKVQoQdGltZXN0YW1wLmx0X25vdxpBKHJ1bGVzLmx0X25vdyAmJiB0aGlzID4gbm93KSA/ICd2YWx1ZSBtdXN0IGJlIGxlc3MgdGhhbiBub3cnIDogJydIABLHBwoCZ3QYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQpwHwkiYBwp+Cgx0aW1lc3RhbXAuZ3QabiFoYXMocnVsZXMubHQpICYmICFoYXMocnVsZXMubHRlKSAmJiB0aGlzIDw9IHJ1bGVzLmd0PyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RdKSA6ICcnCrcBCg90aW1lc3RhbXAuZ3RfbHQaowFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ICYmICh0aGlzID49IHJ1bGVzLmx0IHx8IHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgYW5kIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndCwgcnVsZXMubHRdKSA6ICcnCr8BChl0aW1lc3RhbXAuZ3RfbHRfZXhjbHVzaXZlGqEBaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdCA8PSB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdF0pIDogJycKxwEKEHRpbWVzdGFtcC5ndF9sdGUasgFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3QgJiYgKHRoaXMgPiBydWxlcy5sdGUgfHwgdGhpcyA8PSBydWxlcy5ndCk/ICd2YWx1ZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAlcyBhbmQgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnCs8BChp0aW1lc3RhbXAuZ3RfbHRlX2V4Y2x1c2l2ZRqwAWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ICYmIChydWxlcy5sdGUgPCB0aGlzICYmIHRoaXMgPD0gcnVsZXMuZ3QpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gJXMgb3IgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0LCBydWxlcy5sdGVdKSA6ICcnSAESkwgKA2d0ZRgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBC5wfCSOMHCowBCg10aW1lc3RhbXAuZ3RlGnshaGFzKHJ1bGVzLmx0KSAmJiAhaGFzKHJ1bGVzLmx0ZSkgJiYgdGhpcyA8IHJ1bGVzLmd0ZT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzJy5mb3JtYXQoW3J1bGVzLmd0ZV0pIDogJycKxgEKEHRpbWVzdGFtcC5ndGVfbHQasQFoYXMocnVsZXMubHQpICYmIHJ1bGVzLmx0ID49IHJ1bGVzLmd0ZSAmJiAodGhpcyA+PSBydWxlcy5sdCB8fCB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIGFuZCBsZXNzIHRoYW4gJXMnLmZvcm1hdChbcnVsZXMuZ3RlLCBydWxlcy5sdF0pIDogJycKzgEKGnRpbWVzdGFtcC5ndGVfbHRfZXhjbHVzaXZlGq8BaGFzKHJ1bGVzLmx0KSAmJiBydWxlcy5sdCA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHQgPD0gdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0XSkgOiAnJwrWAQoRdGltZXN0YW1wLmd0ZV9sdGUawAFoYXMocnVsZXMubHRlKSAmJiBydWxlcy5sdGUgPj0gcnVsZXMuZ3RlICYmICh0aGlzID4gcnVsZXMubHRlIHx8IHRoaXMgPCBydWxlcy5ndGUpPyAndmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gJXMgYW5kIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJycK3gEKG3RpbWVzdGFtcC5ndGVfbHRlX2V4Y2x1c2l2ZRq+AWhhcyhydWxlcy5sdGUpICYmIHJ1bGVzLmx0ZSA8IHJ1bGVzLmd0ZSAmJiAocnVsZXMubHRlIDwgdGhpcyAmJiB0aGlzIDwgcnVsZXMuZ3RlKT8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvICVzIG9yIGxlc3MgdGhhbiBvciBlcXVhbCB0byAlcycuZm9ybWF0KFtydWxlcy5ndGUsIHJ1bGVzLmx0ZV0pIDogJydIARJvCgZndF9ub3cYCCABKAhCXcJIWgpYChB0aW1lc3RhbXAuZ3Rfbm93GkQocnVsZXMuZ3Rfbm93ICYmIHRoaXMgPCBub3cpID8gJ3ZhbHVlIG11c3QgYmUgZ3JlYXRlciB0aGFuIG5vdycgOiAnJ0gBErgBCgZ3aXRoaW4YCSABKAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb25CjAHCSIgBCoUBChB0aW1lc3RhbXAud2l0aGluGnF0aGlzIDwgbm93LXJ1bGVzLndpdGhpbiB8fCB0aGlzID4gbm93K3J1bGVzLndpdGhpbiA/ICd2YWx1ZSBtdXN0IGJlIHdpdGhpbiAlcyBvZiBub3cnLmZvcm1hdChbcnVsZXMud2l0aGluXSkgOiAnJxJLCgdleGFtcGxlGAogAygLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIewkgbChkKEXRpbWVzdGFtcC5leGFtcGxlGgR0cnVlKgkI6AcQgICAgAJCCwoJbGVzc190aGFuQg4KDGdyZWF0ZXJfdGhhbiI5CgpWaW9sYXRpb25zEisKCnZpb2xhdGlvbnMYASADKAsyFy5idWYudmFsaWRhdGUuVmlvbGF0aW9uIp8BCglWaW9sYXRpb24SJgoFZmllbGQYBSABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEiUKBHJ1bGUYBiABKAsyFy5idWYudmFsaWRhdGUuRmllbGRQYXRoEg8KB3J1bGVfaWQYAiABKAkSDwoHbWVzc2FnZRgDIAEoCRIPCgdmb3Jfa2V5GAQgASgISgQIARACUgpmaWVsZF9wYXRoIj0KCUZpZWxkUGF0aBIwCghlbGVtZW50cxgBIAMoCzIeLmJ1Zi52YWxpZGF0ZS5GaWVsZFBhdGhFbGVtZW50IukCChBGaWVsZFBhdGhFbGVtZW50EhQKDGZpZWxkX251bWJlchgBIAEoBRISCgpmaWVsZF9uYW1lGAIgASgJEj4KCmZpZWxkX3R5cGUYAyABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRI8CghrZXlfdHlwZRgEIAEoDjIqLmdvb2dsZS5wcm90b2J1Zi5GaWVsZERlc2NyaXB0b3JQcm90by5UeXBlEj4KCnZhbHVlX3R5cGUYBSABKA4yKi5nb29nbGUucHJvdG9idWYuRmllbGREZXNjcmlwdG9yUHJvdG8uVHlwZRIPCgVpbmRleBgGIAEoBEgAEhIKCGJvb2xfa2V5GAcgASgISAASEQoHaW50X2tleRgIIAEoA0gAEhIKCHVpbnRfa2V5GAkgASgESAASFAoKc3RyaW5nX2tleRgKIAEoCUgAQgsKCXN1YnNjcmlwdCqHAQoGSWdub3JlEhYKEklHTk9SRV9VTlNQRUNJRklFRBAAEhkKFUlHTk9SRV9JRl9VTlBPUFVMQVRFRBABEhsKF0lHTk9SRV9JRl9ERUZBVUxUX1ZBTFVFEAISEQoNSUdOT1JFX0FMV0FZUxADKhpJR05PUkVfRU1QVFlJR05PUkVfREVGQVVMVCpuCgpLbm93blJlZ2V4EhsKF0tOT1dOX1JFR0VYX1VOU1BFQ0lGSUVEEAASIAocS05PV05fUkVHRVhfSFRUUF9IRUFERVJfTkFNRRABEiEKHUtOT1dOX1JFR0VYX0hUVFBfSEVBREVSX1ZBTFVFEAI6VgoHbWVzc2FnZRIfLmdvb2dsZS5wcm90b2J1Zi5NZXNzYWdlT3B0aW9ucxiHCSABKAsyGi5idWYudmFsaWRhdGUuTWVzc2FnZVJ1bGVzUgdtZXNzYWdlOk4KBW9uZW9mEh0uZ29vZ2xlLnByb3RvYnVmLk9uZW9mT3B0aW9ucxiHCSABKAsyGC5idWYudmFsaWRhdGUuT25lb2ZSdWxlc1IFb25lb2Y6TgoFZmllbGQSHS5nb29nbGUucHJvdG9idWYuRmllbGRPcHRpb25zGIcJIAEoCzIYLmJ1Zi52YWxpZGF0ZS5GaWVsZFJ1bGVzUgVmaWVsZDpdCgpwcmVkZWZpbmVkEh0uZ29vZ2xlLnByb3RvYnVmLkZpZWxkT3B0aW9ucxiICSABKAsyHS5idWYudmFsaWRhdGUuUHJlZGVmaW5lZFJ1bGVzUgpwcmVkZWZpbmVkQrsBChBjb20uYnVmLnZhbGlkYXRlQg1WYWxpZGF0ZVByb3RvUAFaR2J1Zi5idWlsZC9nZW4vZ28vYnVmYnVpbGQvcHJvdG92YWxpZGF0ZS9wcm90b2NvbGJ1ZmZlcnMvZ28vYnVmL3ZhbGlkYXRlogIDQlZYqgIMQnVmLlZhbGlkYXRlygIMQnVmXFZhbGlkYXRl4gIYQnVmXFZhbGlkYXRlXEdQQk1ldGFkYXRh6gINQnVmOjpWYWxpZGF0ZQ", [file_google_protobuf_descriptor, file_google_protobuf_duration, file_google_protobuf_timestamp]); /** * `Rule` represents a validation rule written in the Common Expression @@ -62,43 +47,42 @@ export const file_buf_validate_validate: GenFile = * * @generated from message buf.validate.Rule */ -export type Rule = Message<'buf.validate.Rule'> & { - /** - * `id` is a string that serves as a machine-readable name for this Rule. - * It should be unique within its scope, which could be either a message or a field. - * - * @generated from field: optional string id = 1; - */ - id: string; +export type Rule = Message<"buf.validate.Rule"> & { + /** + * `id` is a string that serves as a machine-readable name for this Rule. + * It should be unique within its scope, which could be either a message or a field. + * + * @generated from field: optional string id = 1; + */ + id: string; - /** - * `message` is an optional field that provides a human-readable error message - * for this Rule when the CEL expression evaluates to false. If a - * non-empty message is provided, any strings resulting from the CEL - * expression evaluation are ignored. - * - * @generated from field: optional string message = 2; - */ - message: string; + /** + * `message` is an optional field that provides a human-readable error message + * for this Rule when the CEL expression evaluates to false. If a + * non-empty message is provided, any strings resulting from the CEL + * expression evaluation are ignored. + * + * @generated from field: optional string message = 2; + */ + message: string; - /** - * `expression` is the actual CEL expression that will be evaluated for - * validation. This string must resolve to either a boolean or a string - * value. If the expression evaluates to false or a non-empty string, the - * validation is considered failed, and the message is rejected. - * - * @generated from field: optional string expression = 3; - */ - expression: string; + /** + * `expression` is the actual CEL expression that will be evaluated for + * validation. This string must resolve to either a boolean or a string + * value. If the expression evaluates to false or a non-empty string, the + * validation is considered failed, and the message is rejected. + * + * @generated from field: optional string expression = 3; + */ + expression: string; }; /** * Describes the message buf.validate.Rule. * Use `create(RuleSchema)` to create a new message. */ -export const RuleSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 0); +export const RuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 0); /** * MessageRules represents validation rules that are applied to the entire message. @@ -106,121 +90,119 @@ export const RuleSchema: GenMessage = * * @generated from message buf.validate.MessageRules */ -export type MessageRules = Message<'buf.validate.MessageRules'> & { - /** - * `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message. - * This includes any fields within the message that would otherwise support validation. - * - * ```proto - * message MyMessage { - * // validation will be bypassed for this message - * option (buf.validate.message).disabled = true; - * } - * ``` - * - * @generated from field: optional bool disabled = 1; - */ - disabled: boolean; +export type MessageRules = Message<"buf.validate.MessageRules"> & { + /** + * `disabled` is a boolean flag that, when set to true, nullifies any validation rules for this message. + * This includes any fields within the message that would otherwise support validation. + * + * ```proto + * message MyMessage { + * // validation will be bypassed for this message + * option (buf.validate.message).disabled = true; + * } + * ``` + * + * @generated from field: optional bool disabled = 1; + */ + disabled: boolean; - /** - * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message. - * These rules are written in Common Expression Language (CEL) syntax. For more information, - * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). - * - * - * ```proto - * message MyMessage { - * // The field `foo` must be greater than 42. - * option (buf.validate.message).cel = { - * id: "my_message.value", - * message: "value must be greater than 42", - * expression: "this.foo > 42", - * }; - * optional int32 foo = 1; - * } - * ``` - * - * @generated from field: repeated buf.validate.Rule cel = 3; - */ - cel: Rule[]; + /** + * `cel` is a repeated field of type Rule. Each Rule specifies a validation rule to be applied to this message. + * These rules are written in Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * + * ```proto + * message MyMessage { + * // The field `foo` must be greater than 42. + * option (buf.validate.message).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this.foo > 42", + * }; + * optional int32 foo = 1; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 3; + */ + cel: Rule[]; - /** - * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields - * of which at most one can be present. If `required` is also specified, then exactly one - * of the specified fields _must_ be present. - * - * This will enforce oneof-like constraints with a few features not provided by - * actual Protobuf oneof declarations: - * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof, - * only scalar fields are allowed. - * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member - * fields have explicit presence. This means that, for the purpose of determining - * how many fields are set, explicitly setting such a field to its zero value is - * effectively the same as not setting it at all. - * 3. This will always generate validation errors for a message unmarshalled from - * serialized data that sets more than one field. With a Protobuf oneof, when - * multiple fields are present in the serialized form, earlier values are usually - * silently ignored when unmarshalling, with only the last field being set when - * unmarshalling completes. - * - * Note that adding a field to a `oneof` will also set the IGNORE_IF_UNPOPULATED on the fields. This means - * only the field that is set will be validated and the unset fields are not validated according to the field rules. - * This behavior can be overridden by setting `ignore` against a field. - * - * ```proto - * message MyMessage { - * // Only one of `field1` or `field2` _can_ be present in this message. - * option (buf.validate.message).oneof = { fields: ["field1", "field2"] }; - * // Exactly one of `field3` or `field4` _must_ be present in this message. - * option (buf.validate.message).oneof = { fields: ["field3", "field4"], required: true }; - * string field1 = 1; - * bytes field2 = 2; - * bool field3 = 3; - * int32 field4 = 4; - * } - * ``` - * - * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4; - */ - oneof: MessageOneofRule[]; + /** + * `oneof` is a repeated field of type MessageOneofRule that specifies a list of fields + * of which at most one can be present. If `required` is also specified, then exactly one + * of the specified fields _must_ be present. + * + * This will enforce oneof-like constraints with a few features not provided by + * actual Protobuf oneof declarations: + * 1. Repeated and map fields are allowed in this validation. In a Protobuf oneof, + * only scalar fields are allowed. + * 2. Fields with implicit presence are allowed. In a Protobuf oneof, all member + * fields have explicit presence. This means that, for the purpose of determining + * how many fields are set, explicitly setting such a field to its zero value is + * effectively the same as not setting it at all. + * 3. This will always generate validation errors for a message unmarshalled from + * serialized data that sets more than one field. With a Protobuf oneof, when + * multiple fields are present in the serialized form, earlier values are usually + * silently ignored when unmarshalling, with only the last field being set when + * unmarshalling completes. + * + * Note that adding a field to a `oneof` will also set the IGNORE_IF_UNPOPULATED on the fields. This means + * only the field that is set will be validated and the unset fields are not validated according to the field rules. + * This behavior can be overridden by setting `ignore` against a field. + * + * ```proto + * message MyMessage { + * // Only one of `field1` or `field2` _can_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field1", "field2"] }; + * // Exactly one of `field3` or `field4` _must_ be present in this message. + * option (buf.validate.message).oneof = { fields: ["field3", "field4"], required: true }; + * string field1 = 1; + * bytes field2 = 2; + * bool field3 = 3; + * int32 field4 = 4; + * } + * ``` + * + * @generated from field: repeated buf.validate.MessageOneofRule oneof = 4; + */ + oneof: MessageOneofRule[]; }; /** * Describes the message buf.validate.MessageRules. * Use `create(MessageRulesSchema)` to create a new message. */ -export const MessageRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 1); +export const MessageRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 1); /** * @generated from message buf.validate.MessageOneofRule */ -export type MessageOneofRule = Message<'buf.validate.MessageOneofRule'> & { - /** - * A list of field names to include in the oneof. All field names must be - * defined in the message. At least one field must be specified, and - * duplicates are not permitted. - * - * @generated from field: repeated string fields = 1; - */ - fields: string[]; +export type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { + /** + * A list of field names to include in the oneof. All field names must be + * defined in the message. At least one field must be specified, and + * duplicates are not permitted. + * + * @generated from field: repeated string fields = 1; + */ + fields: string[]; - /** - * If true, one of the fields specified _must_ be set. - * - * @generated from field: optional bool required = 2; - */ - required: boolean; + /** + * If true, one of the fields specified _must_ be set. + * + * @generated from field: optional bool required = 2; + */ + required: boolean; }; /** * Describes the message buf.validate.MessageOneofRule. * Use `create(MessageOneofRuleSchema)` to create a new message. */ -export const MessageOneofRuleSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 2); +export const MessageOneofRuleSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 2); /** * The `OneofRules` message type enables you to manage rules for @@ -228,38 +210,37 @@ export const MessageOneofRuleSchema: GenMessage = * * @generated from message buf.validate.OneofRules */ -export type OneofRules = Message<'buf.validate.OneofRules'> & { - /** - * If `required` is true, exactly one field of the oneof must be present. A - * validation error is returned if no fields in the oneof are present. The - * field itself may still be a default value; further rules - * should be placed on the fields themselves to ensure they are valid values, - * such as `min_len` or `gt`. - * - * ```proto - * message MyMessage { - * oneof value { - * // Either `a` or `b` must be set. If `a` is set, it must also be - * // non-empty; whereas if `b` is set, it can still be an empty string. - * option (buf.validate.oneof).required = true; - * string a = 1 [(buf.validate.field).string.min_len = 1]; - * string b = 2; - * } - * } - * ``` - * - * @generated from field: optional bool required = 1; - */ - required: boolean; +export type OneofRules = Message<"buf.validate.OneofRules"> & { + /** + * If `required` is true, exactly one field of the oneof must be present. A + * validation error is returned if no fields in the oneof are present. The + * field itself may still be a default value; further rules + * should be placed on the fields themselves to ensure they are valid values, + * such as `min_len` or `gt`. + * + * ```proto + * message MyMessage { + * oneof value { + * // Either `a` or `b` must be set. If `a` is set, it must also be + * // non-empty; whereas if `b` is set, it can still be an empty string. + * option (buf.validate.oneof).required = true; + * string a = 1 [(buf.validate.field).string.min_len = 1]; + * string b = 2; + * } + * } + * ``` + * + * @generated from field: optional bool required = 1; + */ + required: boolean; }; /** * Describes the message buf.validate.OneofRules. * Use `create(OneofRulesSchema)` to create a new message. */ -export const OneofRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 3); +export const OneofRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 3); /** * FieldRules encapsulates the rules for each type of field. Depending on @@ -267,237 +248,214 @@ export const OneofRulesSchema: GenMessage = * * @generated from message buf.validate.FieldRules */ -export type FieldRules = Message<'buf.validate.FieldRules'> & { - /** - * `cel` is a repeated field used to represent a textual expression - * in the Common Expression Language (CEL) syntax. For more information, - * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). - * - * ```proto - * message MyMessage { - * // The field `value` must be greater than 42. - * optional int32 value = 1 [(buf.validate.field).cel = { - * id: "my_message.value", - * message: "value must be greater than 42", - * expression: "this > 42", - * }]; - * } - * ``` - * - * @generated from field: repeated buf.validate.Rule cel = 23; - */ - cel: Rule[]; +export type FieldRules = Message<"buf.validate.FieldRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/custom-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.field).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 23; + */ + cel: Rule[]; - /** - * If `required` is true, the field must be populated. A populated field can be - * described as "serialized in the wire format," which includes: - * - * - the following "nullable" fields must be explicitly set to be considered populated: - * - singular message fields (whose fields may be unpopulated/default values) - * - member fields of a oneof (may be their default value) - * - proto3 optional fields (may be their default value) - * - proto2 scalar fields (both optional and required) - * - proto3 scalar fields must be non-zero to be considered populated - * - repeated and map fields must be non-empty to be considered populated - * - map keys/values and repeated items are always considered populated - * - * ```proto - * message MyMessage { - * // The field `value` must be set to a non-null value. - * optional MyOtherMessage value = 1 [(buf.validate.field).required = true]; - * } - * ``` - * - * @generated from field: optional bool required = 25; - */ - required: boolean; + /** + * If `required` is true, the field must be populated. A populated field can be + * described as "serialized in the wire format," which includes: + * + * - the following "nullable" fields must be explicitly set to be considered populated: + * - singular message fields (whose fields may be unpopulated/default values) + * - member fields of a oneof (may be their default value) + * - proto3 optional fields (may be their default value) + * - proto2 scalar fields (both optional and required) + * - proto3 scalar fields must be non-zero to be considered populated + * - repeated and map fields must be non-empty to be considered populated + * - map keys/values and repeated items are always considered populated + * + * ```proto + * message MyMessage { + * // The field `value` must be set to a non-null value. + * optional MyOtherMessage value = 1 [(buf.validate.field).required = true]; + * } + * ``` + * + * @generated from field: optional bool required = 25; + */ + required: boolean; - /** - * Skip validation on the field if its value matches the specified criteria. - * See Ignore enum for details. - * - * ```proto - * message UpdateRequest { - * // The uri rule only applies if the field is populated and not an empty - * // string. - * optional string url = 1 [ - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE, - * (buf.validate.field).string.uri = true, - * ]; - * } - * ``` - * - * @generated from field: optional buf.validate.Ignore ignore = 27; - */ - ignore: Ignore; + /** + * Skip validation on the field if its value matches the specified criteria. + * See Ignore enum for details. + * + * ```proto + * message UpdateRequest { + * // The uri rule only applies if the field is populated and not an empty + * // string. + * optional string url = 1 [ + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE, + * (buf.validate.field).string.uri = true, + * ]; + * } + * ``` + * + * @generated from field: optional buf.validate.Ignore ignore = 27; + */ + ignore: Ignore; - /** - * @generated from oneof buf.validate.FieldRules.type - */ - type: - | { - /** - * Scalar Field Types - * - * @generated from field: buf.validate.FloatRules float = 1; - */ - value: FloatRules; - case: 'float'; - } - | { - /** - * @generated from field: buf.validate.DoubleRules double = 2; - */ - value: DoubleRules; - case: 'double'; - } - | { - /** - * @generated from field: buf.validate.Int32Rules int32 = 3; - */ - value: Int32Rules; - case: 'int32'; - } - | { - /** - * @generated from field: buf.validate.Int64Rules int64 = 4; - */ - value: Int64Rules; - case: 'int64'; - } - | { - /** - * @generated from field: buf.validate.UInt32Rules uint32 = 5; - */ - value: UInt32Rules; - case: 'uint32'; - } - | { - /** - * @generated from field: buf.validate.UInt64Rules uint64 = 6; - */ - value: UInt64Rules; - case: 'uint64'; - } - | { - /** - * @generated from field: buf.validate.SInt32Rules sint32 = 7; - */ - value: SInt32Rules; - case: 'sint32'; - } - | { - /** - * @generated from field: buf.validate.SInt64Rules sint64 = 8; - */ - value: SInt64Rules; - case: 'sint64'; - } - | { - /** - * @generated from field: buf.validate.Fixed32Rules fixed32 = 9; - */ - value: Fixed32Rules; - case: 'fixed32'; - } - | { - /** - * @generated from field: buf.validate.Fixed64Rules fixed64 = 10; - */ - value: Fixed64Rules; - case: 'fixed64'; - } - | { - /** - * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11; - */ - value: SFixed32Rules; - case: 'sfixed32'; - } - | { - /** - * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12; - */ - value: SFixed64Rules; - case: 'sfixed64'; - } - | { - /** - * @generated from field: buf.validate.BoolRules bool = 13; - */ - value: BoolRules; - case: 'bool'; - } - | { - /** - * @generated from field: buf.validate.StringRules string = 14; - */ - value: StringRules; - case: 'string'; - } - | { - /** - * @generated from field: buf.validate.BytesRules bytes = 15; - */ - value: BytesRules; - case: 'bytes'; - } - | { - /** - * Complex Field Types - * - * @generated from field: buf.validate.EnumRules enum = 16; - */ - value: EnumRules; - case: 'enum'; - } - | { - /** - * @generated from field: buf.validate.RepeatedRules repeated = 18; - */ - value: RepeatedRules; - case: 'repeated'; - } - | { - /** - * @generated from field: buf.validate.MapRules map = 19; - */ - value: MapRules; - case: 'map'; - } - | { - /** - * Well-Known Field Types - * - * @generated from field: buf.validate.AnyRules any = 20; - */ - value: AnyRules; - case: 'any'; - } - | { - /** - * @generated from field: buf.validate.DurationRules duration = 21; - */ - value: DurationRules; - case: 'duration'; - } - | { - /** - * @generated from field: buf.validate.TimestampRules timestamp = 22; - */ - value: TimestampRules; - case: 'timestamp'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.FieldRules.type + */ + type: { + /** + * Scalar Field Types + * + * @generated from field: buf.validate.FloatRules float = 1; + */ + value: FloatRules; + case: "float"; + } | { + /** + * @generated from field: buf.validate.DoubleRules double = 2; + */ + value: DoubleRules; + case: "double"; + } | { + /** + * @generated from field: buf.validate.Int32Rules int32 = 3; + */ + value: Int32Rules; + case: "int32"; + } | { + /** + * @generated from field: buf.validate.Int64Rules int64 = 4; + */ + value: Int64Rules; + case: "int64"; + } | { + /** + * @generated from field: buf.validate.UInt32Rules uint32 = 5; + */ + value: UInt32Rules; + case: "uint32"; + } | { + /** + * @generated from field: buf.validate.UInt64Rules uint64 = 6; + */ + value: UInt64Rules; + case: "uint64"; + } | { + /** + * @generated from field: buf.validate.SInt32Rules sint32 = 7; + */ + value: SInt32Rules; + case: "sint32"; + } | { + /** + * @generated from field: buf.validate.SInt64Rules sint64 = 8; + */ + value: SInt64Rules; + case: "sint64"; + } | { + /** + * @generated from field: buf.validate.Fixed32Rules fixed32 = 9; + */ + value: Fixed32Rules; + case: "fixed32"; + } | { + /** + * @generated from field: buf.validate.Fixed64Rules fixed64 = 10; + */ + value: Fixed64Rules; + case: "fixed64"; + } | { + /** + * @generated from field: buf.validate.SFixed32Rules sfixed32 = 11; + */ + value: SFixed32Rules; + case: "sfixed32"; + } | { + /** + * @generated from field: buf.validate.SFixed64Rules sfixed64 = 12; + */ + value: SFixed64Rules; + case: "sfixed64"; + } | { + /** + * @generated from field: buf.validate.BoolRules bool = 13; + */ + value: BoolRules; + case: "bool"; + } | { + /** + * @generated from field: buf.validate.StringRules string = 14; + */ + value: StringRules; + case: "string"; + } | { + /** + * @generated from field: buf.validate.BytesRules bytes = 15; + */ + value: BytesRules; + case: "bytes"; + } | { + /** + * Complex Field Types + * + * @generated from field: buf.validate.EnumRules enum = 16; + */ + value: EnumRules; + case: "enum"; + } | { + /** + * @generated from field: buf.validate.RepeatedRules repeated = 18; + */ + value: RepeatedRules; + case: "repeated"; + } | { + /** + * @generated from field: buf.validate.MapRules map = 19; + */ + value: MapRules; + case: "map"; + } | { + /** + * Well-Known Field Types + * + * @generated from field: buf.validate.AnyRules any = 20; + */ + value: AnyRules; + case: "any"; + } | { + /** + * @generated from field: buf.validate.DurationRules duration = 21; + */ + value: DurationRules; + case: "duration"; + } | { + /** + * @generated from field: buf.validate.TimestampRules timestamp = 22; + */ + value: TimestampRules; + case: "timestamp"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message buf.validate.FieldRules. * Use `create(FieldRulesSchema)` to create a new message. */ -export const FieldRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 4); +export const FieldRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 4); /** * PredefinedRules are custom rules that can be re-used with @@ -505,35 +463,34 @@ export const FieldRulesSchema: GenMessage = * * @generated from message buf.validate.PredefinedRules */ -export type PredefinedRules = Message<'buf.validate.PredefinedRules'> & { - /** - * `cel` is a repeated field used to represent a textual expression - * in the Common Expression Language (CEL) syntax. For more information, - * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/). - * - * ```proto - * message MyMessage { - * // The field `value` must be greater than 42. - * optional int32 value = 1 [(buf.validate.predefined).cel = { - * id: "my_message.value", - * message: "value must be greater than 42", - * expression: "this > 42", - * }]; - * } - * ``` - * - * @generated from field: repeated buf.validate.Rule cel = 1; - */ - cel: Rule[]; +export type PredefinedRules = Message<"buf.validate.PredefinedRules"> & { + /** + * `cel` is a repeated field used to represent a textual expression + * in the Common Expression Language (CEL) syntax. For more information, + * [see our documentation](https://buf.build/docs/protovalidate/schemas/predefined-rules/). + * + * ```proto + * message MyMessage { + * // The field `value` must be greater than 42. + * optional int32 value = 1 [(buf.validate.predefined).cel = { + * id: "my_message.value", + * message: "value must be greater than 42", + * expression: "this > 42", + * }]; + * } + * ``` + * + * @generated from field: repeated buf.validate.Rule cel = 1; + */ + cel: Rule[]; }; /** * Describes the message buf.validate.PredefinedRules. * Use `create(PredefinedRulesSchema)` to create a new message. */ -export const PredefinedRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 5); +export const PredefinedRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 5); /** * FloatRules describes the rules applied to `float` values. These @@ -541,188 +498,181 @@ export const PredefinedRulesSchema: GenMessage = * * @generated from message buf.validate.FloatRules */ -export type FloatRules = Message<'buf.validate.FloatRules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyFloat { - * // value must equal 42.0 - * float value = 1 [(buf.validate.field).float.const = 42.0]; - * } - * ``` - * - * @generated from field: optional float const = 1; - */ - const: number; +export type FloatRules = Message<"buf.validate.FloatRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must equal 42.0 + * float value = 1 [(buf.validate.field).float.const = 42.0]; + * } + * ``` + * + * @generated from field: optional float const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.FloatRules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyFloat { - * // value must be less than 10.0 - * float value = 1 [(buf.validate.field).float.lt = 10.0]; - * } - * ``` - * - * @generated from field: float lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyFloat { - * // value must be less than or equal to 10.0 - * float value = 1 [(buf.validate.field).float.lte = 10.0]; - * } - * ``` - * - * @generated from field: float lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.FloatRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than 10.0 + * float value = 1 [(buf.validate.field).float.lt = 10.0]; + * } + * ``` + * + * @generated from field: float lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be less than or equal to 10.0 + * float value = 1 [(buf.validate.field).float.lte = 10.0]; + * } + * ``` + * + * @generated from field: float lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.FloatRules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFloat { - * // value must be greater than 5.0 [float.gt] - * float value = 1 [(buf.validate.field).float.gt = 5.0]; - * - * // value must be greater than 5 and less than 10.0 [float.gt_lt] - * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; - * - * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] - * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; - * } - * ``` - * - * @generated from field: float gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFloat { - * // value must be greater than or equal to 5.0 [float.gte] - * float value = 1 [(buf.validate.field).float.gte = 5.0]; - * - * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] - * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; - * - * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] - * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; - * } - * ``` - * - * @generated from field: float gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.FloatRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than 5.0 [float.gt] + * float value = 1 [(buf.validate.field).float.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [float.gt_lt] + * float other_value = 2 [(buf.validate.field).float = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [float.gt_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFloat { + * // value must be greater than or equal to 5.0 [float.gte] + * float value = 1 [(buf.validate.field).float.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [float.gte_lt] + * float other_value = 2 [(buf.validate.field).float = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [float.gte_lt_exclusive] + * float another_value = 3 [(buf.validate.field).float = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: float gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message - * is generated. - * - * ```proto - * message MyFloat { - * // value must be in list [1.0, 2.0, 3.0] - * float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }]; - * } - * ``` - * - * @generated from field: repeated float in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFloat { + * // value must be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float in = 6; + */ + in: number[]; - /** - * `in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyFloat { - * // value must not be in list [1.0, 2.0, 3.0] - * float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }]; - * } - * ``` - * - * @generated from field: repeated float not_in = 7; - */ - notIn: number[]; + /** + * `in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFloat { + * // value must not be in list [1.0, 2.0, 3.0] + * float value = 1 [(buf.validate.field).float = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated float not_in = 7; + */ + notIn: number[]; - /** - * `finite` requires the field value to be finite. If the field value is - * infinite or NaN, an error message is generated. - * - * @generated from field: optional bool finite = 8; - */ - finite: boolean; + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyFloat { - * float value = 1 [ - * (buf.validate.field).float.example = 1.0, - * (buf.validate.field).float.example = inf - * ]; - * } - * ``` - * - * @generated from field: repeated float example = 9; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFloat { + * float value = 1 [ + * (buf.validate.field).float.example = 1.0, + * (buf.validate.field).float.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated float example = 9; + */ + example: number[]; }; /** * Describes the message buf.validate.FloatRules. * Use `create(FloatRulesSchema)` to create a new message. */ -export const FloatRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 6); +export const FloatRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 6); /** * DoubleRules describes the rules applied to `double` values. These @@ -730,188 +680,181 @@ export const FloatRulesSchema: GenMessage = * * @generated from message buf.validate.DoubleRules */ -export type DoubleRules = Message<'buf.validate.DoubleRules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyDouble { - * // value must equal 42.0 - * double value = 1 [(buf.validate.field).double.const = 42.0]; - * } - * ``` - * - * @generated from field: optional double const = 1; - */ - const: number; +export type DoubleRules = Message<"buf.validate.DoubleRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must equal 42.0 + * double value = 1 [(buf.validate.field).double.const = 42.0]; + * } + * ``` + * + * @generated from field: optional double const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.DoubleRules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyDouble { - * // value must be less than 10.0 - * double value = 1 [(buf.validate.field).double.lt = 10.0]; - * } - * ``` - * - * @generated from field: double lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified value - * (field <= value). If the field value is greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyDouble { - * // value must be less than or equal to 10.0 - * double value = 1 [(buf.validate.field).double.lte = 10.0]; - * } - * ``` - * - * @generated from field: double lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.DoubleRules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than 10.0 + * double value = 1 [(buf.validate.field).double.lt = 10.0]; + * } + * ``` + * + * @generated from field: double lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified value + * (field <= value). If the field value is greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be less than or equal to 10.0 + * double value = 1 [(buf.validate.field).double.lte = 10.0]; + * } + * ``` + * + * @generated from field: double lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.DoubleRules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, - * the range is reversed, and the field value must be outside the specified - * range. If the field value doesn't meet the required conditions, an error - * message is generated. - * - * ```proto - * message MyDouble { - * // value must be greater than 5.0 [double.gt] - * double value = 1 [(buf.validate.field).double.gt = 5.0]; - * - * // value must be greater than 5 and less than 10.0 [double.gt_lt] - * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; - * - * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] - * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; - * } - * ``` - * - * @generated from field: double gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyDouble { - * // value must be greater than or equal to 5.0 [double.gte] - * double value = 1 [(buf.validate.field).double.gte = 5.0]; - * - * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] - * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; - * - * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] - * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; - * } - * ``` - * - * @generated from field: double gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.DoubleRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or `lte`, + * the range is reversed, and the field value must be outside the specified + * range. If the field value doesn't meet the required conditions, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than 5.0 [double.gt] + * double value = 1 [(buf.validate.field).double.gt = 5.0]; + * + * // value must be greater than 5 and less than 10.0 [double.gt_lt] + * double other_value = 2 [(buf.validate.field).double = { gt: 5.0, lt: 10.0 }]; + * + * // value must be greater than 10 or less than 5.0 [double.gt_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gt: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDouble { + * // value must be greater than or equal to 5.0 [double.gte] + * double value = 1 [(buf.validate.field).double.gte = 5.0]; + * + * // value must be greater than or equal to 5.0 and less than 10.0 [double.gte_lt] + * double other_value = 2 [(buf.validate.field).double = { gte: 5.0, lt: 10.0 }]; + * + * // value must be greater than or equal to 10.0 or less than 5.0 [double.gte_lt_exclusive] + * double another_value = 3 [(buf.validate.field).double = { gte: 10.0, lt: 5.0 }]; + * } + * ``` + * + * @generated from field: double gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyDouble { - * // value must be in list [1.0, 2.0, 3.0] - * double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }]; - * } - * ``` - * - * @generated from field: repeated double in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyDouble { + * // value must be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyDouble { - * // value must not be in list [1.0, 2.0, 3.0] - * double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }]; - * } - * ``` - * - * @generated from field: repeated double not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyDouble { + * // value must not be in list [1.0, 2.0, 3.0] + * double value = 1 [(buf.validate.field).double = { not_in: [1.0, 2.0, 3.0] }]; + * } + * ``` + * + * @generated from field: repeated double not_in = 7; + */ + notIn: number[]; - /** - * `finite` requires the field value to be finite. If the field value is - * infinite or NaN, an error message is generated. - * - * @generated from field: optional bool finite = 8; - */ - finite: boolean; + /** + * `finite` requires the field value to be finite. If the field value is + * infinite or NaN, an error message is generated. + * + * @generated from field: optional bool finite = 8; + */ + finite: boolean; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyDouble { - * double value = 1 [ - * (buf.validate.field).double.example = 1.0, - * (buf.validate.field).double.example = inf - * ]; - * } - * ``` - * - * @generated from field: repeated double example = 9; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDouble { + * double value = 1 [ + * (buf.validate.field).double.example = 1.0, + * (buf.validate.field).double.example = inf + * ]; + * } + * ``` + * + * @generated from field: repeated double example = 9; + */ + example: number[]; }; /** * Describes the message buf.validate.DoubleRules. * Use `create(DoubleRulesSchema)` to create a new message. */ -export const DoubleRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 7); +export const DoubleRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 7); /** * Int32Rules describes the rules applied to `int32` values. These @@ -919,180 +862,173 @@ export const DoubleRulesSchema: GenMessage = * * @generated from message buf.validate.Int32Rules */ -export type Int32Rules = Message<'buf.validate.Int32Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyInt32 { - * // value must equal 42 - * int32 value = 1 [(buf.validate.field).int32.const = 42]; - * } - * ``` - * - * @generated from field: optional int32 const = 1; - */ - const: number; +export type Int32Rules = Message<"buf.validate.Int32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must equal 42 + * int32 value = 1 [(buf.validate.field).int32.const = 42]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.Int32Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field - * < value). If the field value is equal to or greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyInt32 { - * // value must be less than 10 - * int32 value = 1 [(buf.validate.field).int32.lt = 10]; - * } - * ``` - * - * @generated from field: int32 lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyInt32 { - * // value must be less than or equal to 10 - * int32 value = 1 [(buf.validate.field).int32.lte = 10]; - * } - * ``` - * - * @generated from field: int32 lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Int32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than 10 + * int32 value = 1 [(buf.validate.field).int32.lt = 10]; + * } + * ``` + * + * @generated from field: int32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be less than or equal to 10 + * int32 value = 1 [(buf.validate.field).int32.lte = 10]; + * } + * ``` + * + * @generated from field: int32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.Int32Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyInt32 { - * // value must be greater than 5 [int32.gt] - * int32 value = 1 [(buf.validate.field).int32.gt = 5]; - * - * // value must be greater than 5 and less than 10 [int32.gt_lt] - * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] - * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: int32 gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified value - * (exclusive). If the value of `gte` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyInt32 { - * // value must be greater than or equal to 5 [int32.gte] - * int32 value = 1 [(buf.validate.field).int32.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] - * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] - * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: int32 gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Int32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than 5 [int32.gt] + * int32 value = 1 [(buf.validate.field).int32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int32.gt_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int32.gt_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified value + * (exclusive). If the value of `gte` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt32 { + * // value must be greater than or equal to 5 [int32.gte] + * int32 value = 1 [(buf.validate.field).int32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int32.gte_lt] + * int32 other_value = 2 [(buf.validate.field).int32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int32.gte_lt_exclusive] + * int32 another_value = 3 [(buf.validate.field).int32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyInt32 { - * // value must be in list [1, 2, 3] - * int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated int32 in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt32 { + * // value must be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error message - * is generated. - * - * ```proto - * message MyInt32 { - * // value must not be in list [1, 2, 3] - * int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated int32 not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error message + * is generated. + * + * ```proto + * message MyInt32 { + * // value must not be in list [1, 2, 3] + * int32 value = 1 [(buf.validate.field).int32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 7; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyInt32 { - * int32 value = 1 [ - * (buf.validate.field).int32.example = 1, - * (buf.validate.field).int32.example = -10 - * ]; - * } - * ``` - * - * @generated from field: repeated int32 example = 8; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt32 { + * int32 value = 1 [ + * (buf.validate.field).int32.example = 1, + * (buf.validate.field).int32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int32 example = 8; + */ + example: number[]; }; /** * Describes the message buf.validate.Int32Rules. * Use `create(Int32RulesSchema)` to create a new message. */ -export const Int32RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 8); +export const Int32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 8); /** * Int64Rules describes the rules applied to `int64` values. These @@ -1100,180 +1036,173 @@ export const Int32RulesSchema: GenMessage = * * @generated from message buf.validate.Int64Rules */ -export type Int64Rules = Message<'buf.validate.Int64Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyInt64 { - * // value must equal 42 - * int64 value = 1 [(buf.validate.field).int64.const = 42]; - * } - * ``` - * - * @generated from field: optional int64 const = 1; - */ - const: bigint; +export type Int64Rules = Message<"buf.validate.Int64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must equal 42 + * int64 value = 1 [(buf.validate.field).int64.const = 42]; + * } + * ``` + * + * @generated from field: optional int64 const = 1; + */ + const: bigint; - /** - * @generated from oneof buf.validate.Int64Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyInt64 { - * // value must be less than 10 - * int64 value = 1 [(buf.validate.field).int64.lt = 10]; - * } - * ``` - * - * @generated from field: int64 lt = 2; - */ - value: bigint; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyInt64 { - * // value must be less than or equal to 10 - * int64 value = 1 [(buf.validate.field).int64.lte = 10]; - * } - * ``` - * - * @generated from field: int64 lte = 3; - */ - value: bigint; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Int64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than 10 + * int64 value = 1 [(buf.validate.field).int64.lt = 10]; + * } + * ``` + * + * @generated from field: int64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be less than or equal to 10 + * int64 value = 1 [(buf.validate.field).int64.lte = 10]; + * } + * ``` + * + * @generated from field: int64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.Int64Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyInt64 { - * // value must be greater than 5 [int64.gt] - * int64 value = 1 [(buf.validate.field).int64.gt = 5]; - * - * // value must be greater than 5 and less than 10 [int64.gt_lt] - * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] - * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: int64 gt = 4; - */ - value: bigint; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyInt64 { - * // value must be greater than or equal to 5 [int64.gte] - * int64 value = 1 [(buf.validate.field).int64.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] - * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] - * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: int64 gte = 5; - */ - value: bigint; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Int64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than 5 [int64.gt] + * int64 value = 1 [(buf.validate.field).int64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [int64.gt_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [int64.gt_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyInt64 { + * // value must be greater than or equal to 5 [int64.gte] + * int64 value = 1 [(buf.validate.field).int64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [int64.gte_lt] + * int64 other_value = 2 [(buf.validate.field).int64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [int64.gte_lt_exclusive] + * int64 another_value = 3 [(buf.validate.field).int64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: int64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyInt64 { - * // value must be in list [1, 2, 3] - * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated int64 in = 6; - */ - in: bigint[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyInt64 { + * // value must be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 in = 6; + */ + in: bigint[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyInt64 { - * // value must not be in list [1, 2, 3] - * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated int64 not_in = 7; - */ - notIn: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyInt64 { + * // value must not be in list [1, 2, 3] + * int64 value = 1 [(buf.validate.field).int64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated int64 not_in = 7; + */ + notIn: bigint[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyInt64 { - * int64 value = 1 [ - * (buf.validate.field).int64.example = 1, - * (buf.validate.field).int64.example = -10 - * ]; - * } - * ``` - * - * @generated from field: repeated int64 example = 9; - */ - example: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyInt64 { + * int64 value = 1 [ + * (buf.validate.field).int64.example = 1, + * (buf.validate.field).int64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated int64 example = 9; + */ + example: bigint[]; }; /** * Describes the message buf.validate.Int64Rules. * Use `create(Int64RulesSchema)` to create a new message. */ -export const Int64RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 9); +export const Int64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 9); /** * UInt32Rules describes the rules applied to `uint32` values. These @@ -1281,180 +1210,173 @@ export const Int64RulesSchema: GenMessage = * * @generated from message buf.validate.UInt32Rules */ -export type UInt32Rules = Message<'buf.validate.UInt32Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyUInt32 { - * // value must equal 42 - * uint32 value = 1 [(buf.validate.field).uint32.const = 42]; - * } - * ``` - * - * @generated from field: optional uint32 const = 1; - */ - const: number; +export type UInt32Rules = Message<"buf.validate.UInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must equal 42 + * uint32 value = 1 [(buf.validate.field).uint32.const = 42]; + * } + * ``` + * + * @generated from field: optional uint32 const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.UInt32Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyUInt32 { - * // value must be less than 10 - * uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; - * } - * ``` - * - * @generated from field: uint32 lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyUInt32 { - * // value must be less than or equal to 10 - * uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; - * } - * ``` - * - * @generated from field: uint32 lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.UInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than 10 + * uint32 value = 1 [(buf.validate.field).uint32.lt = 10]; + * } + * ``` + * + * @generated from field: uint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be less than or equal to 10 + * uint32 value = 1 [(buf.validate.field).uint32.lte = 10]; + * } + * ``` + * + * @generated from field: uint32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.UInt32Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyUInt32 { - * // value must be greater than 5 [uint32.gt] - * uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; - * - * // value must be greater than 5 and less than 10 [uint32.gt_lt] - * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] - * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: uint32 gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyUInt32 { - * // value must be greater than or equal to 5 [uint32.gte] - * uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] - * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] - * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: uint32 gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.UInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than 5 [uint32.gt] + * uint32 value = 1 [(buf.validate.field).uint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint32.gt_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint32.gt_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt32 { + * // value must be greater than or equal to 5 [uint32.gte] + * uint32 value = 1 [(buf.validate.field).uint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint32.gte_lt] + * uint32 other_value = 2 [(buf.validate.field).uint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint32.gte_lt_exclusive] + * uint32 another_value = 3 [(buf.validate.field).uint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyUInt32 { - * // value must be in list [1, 2, 3] - * uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated uint32 in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt32 { + * // value must be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyUInt32 { - * // value must not be in list [1, 2, 3] - * uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated uint32 not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt32 { + * // value must not be in list [1, 2, 3] + * uint32 value = 1 [(buf.validate.field).uint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint32 not_in = 7; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyUInt32 { - * uint32 value = 1 [ - * (buf.validate.field).uint32.example = 1, - * (buf.validate.field).uint32.example = 10 - * ]; - * } - * ``` - * - * @generated from field: repeated uint32 example = 8; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt32 { + * uint32 value = 1 [ + * (buf.validate.field).uint32.example = 1, + * (buf.validate.field).uint32.example = 10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint32 example = 8; + */ + example: number[]; }; /** * Describes the message buf.validate.UInt32Rules. * Use `create(UInt32RulesSchema)` to create a new message. */ -export const UInt32RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 10); +export const UInt32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 10); /** * UInt64Rules describes the rules applied to `uint64` values. These @@ -1462,1260 +1384,1211 @@ export const UInt32RulesSchema: GenMessage = * * @generated from message buf.validate.UInt64Rules */ -export type UInt64Rules = Message<'buf.validate.UInt64Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyUInt64 { - * // value must equal 42 - * uint64 value = 1 [(buf.validate.field).uint64.const = 42]; - * } - * ``` - * - * @generated from field: optional uint64 const = 1; - */ - const: bigint; +export type UInt64Rules = Message<"buf.validate.UInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must equal 42 + * uint64 value = 1 [(buf.validate.field).uint64.const = 42]; + * } + * ``` + * + * @generated from field: optional uint64 const = 1; + */ + const: bigint; - /** - * @generated from oneof buf.validate.UInt64Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyUInt64 { - * // value must be less than 10 - * uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; - * } - * ``` - * - * @generated from field: uint64 lt = 2; - */ - value: bigint; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyUInt64 { - * // value must be less than or equal to 10 - * uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; - * } - * ``` - * - * @generated from field: uint64 lte = 3; - */ - value: bigint; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.UInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than 10 + * uint64 value = 1 [(buf.validate.field).uint64.lt = 10]; + * } + * ``` + * + * @generated from field: uint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be less than or equal to 10 + * uint64 value = 1 [(buf.validate.field).uint64.lte = 10]; + * } + * ``` + * + * @generated from field: uint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.UInt64Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyUInt64 { - * // value must be greater than 5 [uint64.gt] - * uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; - * - * // value must be greater than 5 and less than 10 [uint64.gt_lt] - * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] - * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: uint64 gt = 4; - */ - value: bigint; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyUInt64 { - * // value must be greater than or equal to 5 [uint64.gte] - * uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] - * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] - * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: uint64 gte = 5; - */ - value: bigint; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.UInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than 5 [uint64.gt] + * uint64 value = 1 [(buf.validate.field).uint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [uint64.gt_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [uint64.gt_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyUInt64 { + * // value must be greater than or equal to 5 [uint64.gte] + * uint64 value = 1 [(buf.validate.field).uint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [uint64.gte_lt] + * uint64 other_value = 2 [(buf.validate.field).uint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [uint64.gte_lt_exclusive] + * uint64 another_value = 3 [(buf.validate.field).uint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: uint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyUInt64 { - * // value must be in list [1, 2, 3] - * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated uint64 in = 6; - */ - in: bigint[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyUInt64 { + * // value must be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 in = 6; + */ + in: bigint[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyUInt64 { - * // value must not be in list [1, 2, 3] - * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated uint64 not_in = 7; - */ - notIn: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyUInt64 { + * // value must not be in list [1, 2, 3] + * uint64 value = 1 [(buf.validate.field).uint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated uint64 not_in = 7; + */ + notIn: bigint[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyUInt64 { - * uint64 value = 1 [ - * (buf.validate.field).uint64.example = 1, - * (buf.validate.field).uint64.example = -10 - * ]; - * } - * ``` - * - * @generated from field: repeated uint64 example = 8; - */ - example: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyUInt64 { + * uint64 value = 1 [ + * (buf.validate.field).uint64.example = 1, + * (buf.validate.field).uint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated uint64 example = 8; + */ + example: bigint[]; }; /** * Describes the message buf.validate.UInt64Rules. * Use `create(UInt64RulesSchema)` to create a new message. */ -export const UInt64RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 11); +export const UInt64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 11); /** * SInt32Rules describes the rules applied to `sint32` values. * * @generated from message buf.validate.SInt32Rules */ -export type SInt32Rules = Message<'buf.validate.SInt32Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MySInt32 { - * // value must equal 42 - * sint32 value = 1 [(buf.validate.field).sint32.const = 42]; - * } - * ``` - * - * @generated from field: optional sint32 const = 1; - */ - const: number; +export type SInt32Rules = Message<"buf.validate.SInt32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must equal 42 + * sint32 value = 1 [(buf.validate.field).sint32.const = 42]; + * } + * ``` + * + * @generated from field: optional sint32 const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.SInt32Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field - * < value). If the field value is equal to or greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySInt32 { - * // value must be less than 10 - * sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; - * } - * ``` - * - * @generated from field: sint32 lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySInt32 { - * // value must be less than or equal to 10 - * sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; - * } - * ``` - * - * @generated from field: sint32 lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SInt32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than 10 + * sint32 value = 1 [(buf.validate.field).sint32.lt = 10]; + * } + * ``` + * + * @generated from field: sint32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be less than or equal to 10 + * sint32 value = 1 [(buf.validate.field).sint32.lte = 10]; + * } + * ``` + * + * @generated from field: sint32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.SInt32Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySInt32 { - * // value must be greater than 5 [sint32.gt] - * sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; - * - * // value must be greater than 5 and less than 10 [sint32.gt_lt] - * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] - * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sint32 gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySInt32 { - * // value must be greater than or equal to 5 [sint32.gte] - * sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] - * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] - * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sint32 gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SInt32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than 5 [sint32.gt] + * sint32 value = 1 [(buf.validate.field).sint32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint32.gt_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint32.gt_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt32 { + * // value must be greater than or equal to 5 [sint32.gte] + * sint32 value = 1 [(buf.validate.field).sint32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint32.gte_lt] + * sint32 other_value = 2 [(buf.validate.field).sint32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint32.gte_lt_exclusive] + * sint32 another_value = 3 [(buf.validate.field).sint32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MySInt32 { - * // value must be in list [1, 2, 3] - * sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sint32 in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySInt32 { + * // value must be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MySInt32 { - * // value must not be in list [1, 2, 3] - * sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sint32 not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt32 { + * // value must not be in list [1, 2, 3] + * sint32 value = 1 [(buf.validate.field).sint32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint32 not_in = 7; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MySInt32 { - * sint32 value = 1 [ - * (buf.validate.field).sint32.example = 1, - * (buf.validate.field).sint32.example = -10 - * ]; - * } - * ``` - * - * @generated from field: repeated sint32 example = 8; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt32 { + * sint32 value = 1 [ + * (buf.validate.field).sint32.example = 1, + * (buf.validate.field).sint32.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint32 example = 8; + */ + example: number[]; }; /** * Describes the message buf.validate.SInt32Rules. * Use `create(SInt32RulesSchema)` to create a new message. */ -export const SInt32RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 12); +export const SInt32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 12); /** * SInt64Rules describes the rules applied to `sint64` values. * * @generated from message buf.validate.SInt64Rules */ -export type SInt64Rules = Message<'buf.validate.SInt64Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MySInt64 { - * // value must equal 42 - * sint64 value = 1 [(buf.validate.field).sint64.const = 42]; - * } - * ``` - * - * @generated from field: optional sint64 const = 1; - */ - const: bigint; +export type SInt64Rules = Message<"buf.validate.SInt64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must equal 42 + * sint64 value = 1 [(buf.validate.field).sint64.const = 42]; + * } + * ``` + * + * @generated from field: optional sint64 const = 1; + */ + const: bigint; - /** - * @generated from oneof buf.validate.SInt64Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field - * < value). If the field value is equal to or greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySInt64 { - * // value must be less than 10 - * sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; - * } - * ``` - * - * @generated from field: sint64 lt = 2; - */ - value: bigint; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySInt64 { - * // value must be less than or equal to 10 - * sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; - * } - * ``` - * - * @generated from field: sint64 lte = 3; - */ - value: bigint; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SInt64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field + * < value). If the field value is equal to or greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than 10 + * sint64 value = 1 [(buf.validate.field).sint64.lt = 10]; + * } + * ``` + * + * @generated from field: sint64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be less than or equal to 10 + * sint64 value = 1 [(buf.validate.field).sint64.lte = 10]; + * } + * ``` + * + * @generated from field: sint64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.SInt64Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySInt64 { - * // value must be greater than 5 [sint64.gt] - * sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; - * - * // value must be greater than 5 and less than 10 [sint64.gt_lt] - * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] - * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sint64 gt = 4; - */ - value: bigint; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySInt64 { - * // value must be greater than or equal to 5 [sint64.gte] - * sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] - * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] - * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sint64 gte = 5; - */ - value: bigint; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SInt64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than 5 [sint64.gt] + * sint64 value = 1 [(buf.validate.field).sint64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sint64.gt_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sint64.gt_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySInt64 { + * // value must be greater than or equal to 5 [sint64.gte] + * sint64 value = 1 [(buf.validate.field).sint64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sint64.gte_lt] + * sint64 other_value = 2 [(buf.validate.field).sint64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sint64.gte_lt_exclusive] + * sint64 another_value = 3 [(buf.validate.field).sint64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sint64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message - * is generated. - * - * ```proto - * message MySInt64 { - * // value must be in list [1, 2, 3] - * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sint64 in = 6; - */ - in: bigint[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MySInt64 { + * // value must be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 in = 6; + */ + in: bigint[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MySInt64 { - * // value must not be in list [1, 2, 3] - * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sint64 not_in = 7; - */ - notIn: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySInt64 { + * // value must not be in list [1, 2, 3] + * sint64 value = 1 [(buf.validate.field).sint64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sint64 not_in = 7; + */ + notIn: bigint[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MySInt64 { - * sint64 value = 1 [ - * (buf.validate.field).sint64.example = 1, - * (buf.validate.field).sint64.example = -10 - * ]; - * } - * ``` - * - * @generated from field: repeated sint64 example = 8; - */ - example: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySInt64 { + * sint64 value = 1 [ + * (buf.validate.field).sint64.example = 1, + * (buf.validate.field).sint64.example = -10 + * ]; + * } + * ``` + * + * @generated from field: repeated sint64 example = 8; + */ + example: bigint[]; }; /** * Describes the message buf.validate.SInt64Rules. * Use `create(SInt64RulesSchema)` to create a new message. */ -export const SInt64RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 13); +export const SInt64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 13); /** * Fixed32Rules describes the rules applied to `fixed32` values. * * @generated from message buf.validate.Fixed32Rules */ -export type Fixed32Rules = Message<'buf.validate.Fixed32Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. - * If the field value doesn't match, an error message is generated. - * - * ```proto - * message MyFixed32 { - * // value must equal 42 - * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; - * } - * ``` - * - * @generated from field: optional fixed32 const = 1; - */ - const: number; +export type Fixed32Rules = Message<"buf.validate.Fixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must equal 42 + * fixed32 value = 1 [(buf.validate.field).fixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed32 const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.Fixed32Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyFixed32 { - * // value must be less than 10 - * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; - * } - * ``` - * - * @generated from field: fixed32 lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyFixed32 { - * // value must be less than or equal to 10 - * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; - * } - * ``` - * - * @generated from field: fixed32 lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Fixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lt = 10]; + * } + * ``` + * + * @generated from field: fixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be less than or equal to 10 + * fixed32 value = 1 [(buf.validate.field).fixed32.lte = 10]; + * } + * ``` + * + * @generated from field: fixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.Fixed32Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFixed32 { - * // value must be greater than 5 [fixed32.gt] - * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; - * - * // value must be greater than 5 and less than 10 [fixed32.gt_lt] - * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] - * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: fixed32 gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFixed32 { - * // value must be greater than or equal to 5 [fixed32.gte] - * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] - * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] - * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: fixed32 gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Fixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than 5 [fixed32.gt] + * fixed32 value = 1 [(buf.validate.field).fixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed32.gt_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed32.gt_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed32 { + * // value must be greater than or equal to 5 [fixed32.gte] + * fixed32 value = 1 [(buf.validate.field).fixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed32.gte_lt] + * fixed32 other_value = 2 [(buf.validate.field).fixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed32.gte_lt_exclusive] + * fixed32 another_value = 3 [(buf.validate.field).fixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message - * is generated. - * - * ```proto - * message MyFixed32 { - * // value must be in list [1, 2, 3] - * fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated fixed32 in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message + * is generated. + * + * ```proto + * message MyFixed32 { + * // value must be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyFixed32 { - * // value must not be in list [1, 2, 3] - * fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated fixed32 not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed32 { + * // value must not be in list [1, 2, 3] + * fixed32 value = 1 [(buf.validate.field).fixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed32 not_in = 7; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyFixed32 { - * fixed32 value = 1 [ - * (buf.validate.field).fixed32.example = 1, - * (buf.validate.field).fixed32.example = 2 - * ]; - * } - * ``` - * - * @generated from field: repeated fixed32 example = 8; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed32 { + * fixed32 value = 1 [ + * (buf.validate.field).fixed32.example = 1, + * (buf.validate.field).fixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed32 example = 8; + */ + example: number[]; }; /** * Describes the message buf.validate.Fixed32Rules. * Use `create(Fixed32RulesSchema)` to create a new message. */ -export const Fixed32RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 14); +export const Fixed32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 14); /** * Fixed64Rules describes the rules applied to `fixed64` values. * * @generated from message buf.validate.Fixed64Rules */ -export type Fixed64Rules = Message<'buf.validate.Fixed64Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyFixed64 { - * // value must equal 42 - * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; - * } - * ``` - * - * @generated from field: optional fixed64 const = 1; - */ - const: bigint; +export type Fixed64Rules = Message<"buf.validate.Fixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must equal 42 + * fixed64 value = 1 [(buf.validate.field).fixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional fixed64 const = 1; + */ + const: bigint; - /** - * @generated from oneof buf.validate.Fixed64Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MyFixed64 { - * // value must be less than 10 - * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; - * } - * ``` - * - * @generated from field: fixed64 lt = 2; - */ - value: bigint; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MyFixed64 { - * // value must be less than or equal to 10 - * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; - * } - * ``` - * - * @generated from field: fixed64 lte = 3; - */ - value: bigint; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Fixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lt = 10]; + * } + * ``` + * + * @generated from field: fixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be less than or equal to 10 + * fixed64 value = 1 [(buf.validate.field).fixed64.lte = 10]; + * } + * ``` + * + * @generated from field: fixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.Fixed64Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFixed64 { - * // value must be greater than 5 [fixed64.gt] - * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; - * - * // value must be greater than 5 and less than 10 [fixed64.gt_lt] - * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] - * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: fixed64 gt = 4; - */ - value: bigint; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyFixed64 { - * // value must be greater than or equal to 5 [fixed64.gte] - * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] - * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] - * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: fixed64 gte = 5; - */ - value: bigint; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.Fixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than 5 [fixed64.gt] + * fixed64 value = 1 [(buf.validate.field).fixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [fixed64.gt_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [fixed64.gt_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyFixed64 { + * // value must be greater than or equal to 5 [fixed64.gte] + * fixed64 value = 1 [(buf.validate.field).fixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [fixed64.gte_lt] + * fixed64 other_value = 2 [(buf.validate.field).fixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [fixed64.gte_lt_exclusive] + * fixed64 another_value = 3 [(buf.validate.field).fixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: fixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MyFixed64 { - * // value must be in list [1, 2, 3] - * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated fixed64 in = 6; - */ - in: bigint[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MyFixed64 { + * // value must be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 in = 6; + */ + in: bigint[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MyFixed64 { - * // value must not be in list [1, 2, 3] - * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated fixed64 not_in = 7; - */ - notIn: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MyFixed64 { + * // value must not be in list [1, 2, 3] + * fixed64 value = 1 [(buf.validate.field).fixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated fixed64 not_in = 7; + */ + notIn: bigint[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyFixed64 { - * fixed64 value = 1 [ - * (buf.validate.field).fixed64.example = 1, - * (buf.validate.field).fixed64.example = 2 - * ]; - * } - * ``` - * - * @generated from field: repeated fixed64 example = 8; - */ - example: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyFixed64 { + * fixed64 value = 1 [ + * (buf.validate.field).fixed64.example = 1, + * (buf.validate.field).fixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated fixed64 example = 8; + */ + example: bigint[]; }; /** * Describes the message buf.validate.Fixed64Rules. * Use `create(Fixed64RulesSchema)` to create a new message. */ -export const Fixed64RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 15); +export const Fixed64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 15); /** * SFixed32Rules describes the rules applied to `fixed32` values. * * @generated from message buf.validate.SFixed32Rules */ -export type SFixed32Rules = Message<'buf.validate.SFixed32Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MySFixed32 { - * // value must equal 42 - * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; - * } - * ``` - * - * @generated from field: optional sfixed32 const = 1; - */ - const: number; +export type SFixed32Rules = Message<"buf.validate.SFixed32Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must equal 42 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed32 const = 1; + */ + const: number; - /** - * @generated from oneof buf.validate.SFixed32Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MySFixed32 { - * // value must be less than 10 - * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; - * } - * ``` - * - * @generated from field: sfixed32 lt = 2; - */ - value: number; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySFixed32 { - * // value must be less than or equal to 10 - * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; - * } - * ``` - * - * @generated from field: sfixed32 lte = 3; - */ - value: number; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SFixed32Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lt = 2; + */ + value: number; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be less than or equal to 10 + * sfixed32 value = 1 [(buf.validate.field).sfixed32.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed32 lte = 3; + */ + value: number; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.SFixed32Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySFixed32 { - * // value must be greater than 5 [sfixed32.gt] - * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; - * - * // value must be greater than 5 and less than 10 [sfixed32.gt_lt] - * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] - * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sfixed32 gt = 4; - */ - value: number; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySFixed32 { - * // value must be greater than or equal to 5 [sfixed32.gte] - * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] - * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] - * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sfixed32 gte = 5; - */ - value: number; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SFixed32Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than 5 [sfixed32.gt] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed32.gt_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed32.gt_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gt = 4; + */ + value: number; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed32 { + * // value must be greater than or equal to 5 [sfixed32.gte] + * sfixed32 value = 1 [(buf.validate.field).sfixed32.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed32.gte_lt] + * sfixed32 other_value = 2 [(buf.validate.field).sfixed32 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed32.gte_lt_exclusive] + * sfixed32 another_value = 3 [(buf.validate.field).sfixed32 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed32 gte = 5; + */ + value: number; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MySFixed32 { - * // value must be in list [1, 2, 3] - * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sfixed32 in = 6; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed32 { + * // value must be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 in = 6; + */ + in: number[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MySFixed32 { - * // value must not be in list [1, 2, 3] - * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sfixed32 not_in = 7; - */ - notIn: number[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed32 { + * // value must not be in list [1, 2, 3] + * sfixed32 value = 1 [(buf.validate.field).sfixed32 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed32 not_in = 7; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MySFixed32 { - * sfixed32 value = 1 [ - * (buf.validate.field).sfixed32.example = 1, - * (buf.validate.field).sfixed32.example = 2 - * ]; - * } - * ``` - * - * @generated from field: repeated sfixed32 example = 8; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed32 { + * sfixed32 value = 1 [ + * (buf.validate.field).sfixed32.example = 1, + * (buf.validate.field).sfixed32.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed32 example = 8; + */ + example: number[]; }; /** * Describes the message buf.validate.SFixed32Rules. * Use `create(SFixed32RulesSchema)` to create a new message. */ -export const SFixed32RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 16); +export const SFixed32RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 16); /** * SFixed64Rules describes the rules applied to `fixed64` values. * * @generated from message buf.validate.SFixed64Rules */ -export type SFixed64Rules = Message<'buf.validate.SFixed64Rules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MySFixed64 { - * // value must equal 42 - * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; - * } - * ``` - * - * @generated from field: optional sfixed64 const = 1; - */ - const: bigint; +export type SFixed64Rules = Message<"buf.validate.SFixed64Rules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must equal 42 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.const = 42]; + * } + * ``` + * + * @generated from field: optional sfixed64 const = 1; + */ + const: bigint; - /** - * @generated from oneof buf.validate.SFixed64Rules.less_than - */ - lessThan: - | { - /** - * `lt` requires the field value to be less than the specified value (field < - * value). If the field value is equal to or greater than the specified value, - * an error message is generated. - * - * ```proto - * message MySFixed64 { - * // value must be less than 10 - * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; - * } - * ``` - * - * @generated from field: sfixed64 lt = 2; - */ - value: bigint; - case: 'lt'; - } - | { - /** - * `lte` requires the field value to be less than or equal to the specified - * value (field <= value). If the field value is greater than the specified - * value, an error message is generated. - * - * ```proto - * message MySFixed64 { - * // value must be less than or equal to 10 - * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; - * } - * ``` - * - * @generated from field: sfixed64 lte = 3; - */ - value: bigint; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SFixed64Rules.less_than + */ + lessThan: { + /** + * `lt` requires the field value to be less than the specified value (field < + * value). If the field value is equal to or greater than the specified value, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lt = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lt = 2; + */ + value: bigint; + case: "lt"; + } | { + /** + * `lte` requires the field value to be less than or equal to the specified + * value (field <= value). If the field value is greater than the specified + * value, an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be less than or equal to 10 + * sfixed64 value = 1 [(buf.validate.field).sfixed64.lte = 10]; + * } + * ``` + * + * @generated from field: sfixed64 lte = 3; + */ + value: bigint; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.SFixed64Rules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the field value to be greater than the specified value - * (exclusive). If the value of `gt` is larger than a specified `lt` or - * `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySFixed64 { - * // value must be greater than 5 [sfixed64.gt] - * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; - * - * // value must be greater than 5 and less than 10 [sfixed64.gt_lt] - * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; - * - * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] - * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sfixed64 gt = 4; - */ - value: bigint; - case: 'gt'; - } - | { - /** - * `gte` requires the field value to be greater than or equal to the specified - * value (exclusive). If the value of `gte` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MySFixed64 { - * // value must be greater than or equal to 5 [sfixed64.gte] - * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; - * - * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] - * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; - * - * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] - * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; - * } - * ``` - * - * @generated from field: sfixed64 gte = 5; - */ - value: bigint; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.SFixed64Rules.greater_than + */ + greaterThan: { + /** + * `gt` requires the field value to be greater than the specified value + * (exclusive). If the value of `gt` is larger than a specified `lt` or + * `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than 5 [sfixed64.gt] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gt = 5]; + * + * // value must be greater than 5 and less than 10 [sfixed64.gt_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gt: 5, lt: 10 }]; + * + * // value must be greater than 10 or less than 5 [sfixed64.gt_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gt: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gt = 4; + */ + value: bigint; + case: "gt"; + } | { + /** + * `gte` requires the field value to be greater than or equal to the specified + * value (exclusive). If the value of `gte` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MySFixed64 { + * // value must be greater than or equal to 5 [sfixed64.gte] + * sfixed64 value = 1 [(buf.validate.field).sfixed64.gte = 5]; + * + * // value must be greater than or equal to 5 and less than 10 [sfixed64.gte_lt] + * sfixed64 other_value = 2 [(buf.validate.field).sfixed64 = { gte: 5, lt: 10 }]; + * + * // value must be greater than or equal to 10 or less than 5 [sfixed64.gte_lt_exclusive] + * sfixed64 another_value = 3 [(buf.validate.field).sfixed64 = { gte: 10, lt: 5 }]; + * } + * ``` + * + * @generated from field: sfixed64 gte = 5; + */ + value: bigint; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` requires the field value to be equal to one of the specified values. - * If the field value isn't one of the specified values, an error message is - * generated. - * - * ```proto - * message MySFixed64 { - * // value must be in list [1, 2, 3] - * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sfixed64 in = 6; - */ - in: bigint[]; + /** + * `in` requires the field value to be equal to one of the specified values. + * If the field value isn't one of the specified values, an error message is + * generated. + * + * ```proto + * message MySFixed64 { + * // value must be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 in = 6; + */ + in: bigint[]; - /** - * `not_in` requires the field value to not be equal to any of the specified - * values. If the field value is one of the specified values, an error - * message is generated. - * - * ```proto - * message MySFixed64 { - * // value must not be in list [1, 2, 3] - * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }]; - * } - * ``` - * - * @generated from field: repeated sfixed64 not_in = 7; - */ - notIn: bigint[]; + /** + * `not_in` requires the field value to not be equal to any of the specified + * values. If the field value is one of the specified values, an error + * message is generated. + * + * ```proto + * message MySFixed64 { + * // value must not be in list [1, 2, 3] + * sfixed64 value = 1 [(buf.validate.field).sfixed64 = { not_in: [1, 2, 3] }]; + * } + * ``` + * + * @generated from field: repeated sfixed64 not_in = 7; + */ + notIn: bigint[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MySFixed64 { - * sfixed64 value = 1 [ - * (buf.validate.field).sfixed64.example = 1, - * (buf.validate.field).sfixed64.example = 2 - * ]; - * } - * ``` - * - * @generated from field: repeated sfixed64 example = 8; - */ - example: bigint[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MySFixed64 { + * sfixed64 value = 1 [ + * (buf.validate.field).sfixed64.example = 1, + * (buf.validate.field).sfixed64.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated sfixed64 example = 8; + */ + example: bigint[]; }; /** * Describes the message buf.validate.SFixed64Rules. * Use `create(SFixed64RulesSchema)` to create a new message. */ -export const SFixed64RulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 17); +export const SFixed64RulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 17); /** * BoolRules describes the rules applied to `bool` values. These rules @@ -2723,48 +2596,47 @@ export const SFixed64RulesSchema: GenMessage = * * @generated from message buf.validate.BoolRules */ -export type BoolRules = Message<'buf.validate.BoolRules'> & { - /** - * `const` requires the field value to exactly match the specified boolean value. - * If the field value doesn't match, an error message is generated. - * - * ```proto - * message MyBool { - * // value must equal true - * bool value = 1 [(buf.validate.field).bool.const = true]; - * } - * ``` - * - * @generated from field: optional bool const = 1; - */ - const: boolean; +export type BoolRules = Message<"buf.validate.BoolRules"> & { + /** + * `const` requires the field value to exactly match the specified boolean value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBool { + * // value must equal true + * bool value = 1 [(buf.validate.field).bool.const = true]; + * } + * ``` + * + * @generated from field: optional bool const = 1; + */ + const: boolean; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyBool { - * bool value = 1 [ - * (buf.validate.field).bool.example = 1, - * (buf.validate.field).bool.example = 2 - * ]; - * } - * ``` - * - * @generated from field: repeated bool example = 2; - */ - example: boolean[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBool { + * bool value = 1 [ + * (buf.validate.field).bool.example = 1, + * (buf.validate.field).bool.example = 2 + * ]; + * } + * ``` + * + * @generated from field: repeated bool example = 2; + */ + example: boolean[]; }; /** * Describes the message buf.validate.BoolRules. * Use `create(BoolRulesSchema)` to create a new message. */ -export const BoolRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 18); +export const BoolRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 18); /** * StringRules describes the rules applied to `string` values These @@ -2772,679 +2644,659 @@ export const BoolRulesSchema: GenMessage = * * @generated from message buf.validate.StringRules */ -export type StringRules = Message<'buf.validate.StringRules'> & { - /** - * `const` requires the field value to exactly match the specified value. If - * the field value doesn't match, an error message is generated. - * - * ```proto - * message MyString { - * // value must equal `hello` - * string value = 1 [(buf.validate.field).string.const = "hello"]; - * } - * ``` - * - * @generated from field: optional string const = 1; - */ - const: string; +export type StringRules = Message<"buf.validate.StringRules"> & { + /** + * `const` requires the field value to exactly match the specified value. If + * the field value doesn't match, an error message is generated. + * + * ```proto + * message MyString { + * // value must equal `hello` + * string value = 1 [(buf.validate.field).string.const = "hello"]; + * } + * ``` + * + * @generated from field: optional string const = 1; + */ + const: string; - /** - * `len` dictates that the field value must have the specified - * number of characters (Unicode code points), which may differ from the number - * of bytes in the string. If the field value does not meet the specified - * length, an error message will be generated. - * - * ```proto - * message MyString { - * // value length must be 5 characters - * string value = 1 [(buf.validate.field).string.len = 5]; - * } - * ``` - * - * @generated from field: optional uint64 len = 19; - */ - len: bigint; + /** + * `len` dictates that the field value must have the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value does not meet the specified + * length, an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 5 characters + * string value = 1 [(buf.validate.field).string.len = 5]; + * } + * ``` + * + * @generated from field: optional uint64 len = 19; + */ + len: bigint; - /** - * `min_len` specifies that the field value must have at least the specified - * number of characters (Unicode code points), which may differ from the number - * of bytes in the string. If the field value contains fewer characters, an error - * message will be generated. - * - * ```proto - * message MyString { - * // value length must be at least 3 characters - * string value = 1 [(buf.validate.field).string.min_len = 3]; - * } - * ``` - * - * @generated from field: optional uint64 min_len = 2; - */ - minLen: bigint; + /** + * `min_len` specifies that the field value must have at least the specified + * number of characters (Unicode code points), which may differ from the number + * of bytes in the string. If the field value contains fewer characters, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 3 characters + * string value = 1 [(buf.validate.field).string.min_len = 3]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; - /** - * `max_len` specifies that the field value must have no more than the specified - * number of characters (Unicode code points), which may differ from the - * number of bytes in the string. If the field value contains more characters, - * an error message will be generated. - * - * ```proto - * message MyString { - * // value length must be at most 10 characters - * string value = 1 [(buf.validate.field).string.max_len = 10]; - * } - * ``` - * - * @generated from field: optional uint64 max_len = 3; - */ - maxLen: bigint; + /** + * `max_len` specifies that the field value must have no more than the specified + * number of characters (Unicode code points), which may differ from the + * number of bytes in the string. If the field value contains more characters, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 10 characters + * string value = 1 [(buf.validate.field).string.max_len = 10]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; - /** - * `len_bytes` dictates that the field value must have the specified number of - * bytes. If the field value does not match the specified length in bytes, - * an error message will be generated. - * - * ```proto - * message MyString { - * // value length must be 6 bytes - * string value = 1 [(buf.validate.field).string.len_bytes = 6]; - * } - * ``` - * - * @generated from field: optional uint64 len_bytes = 20; - */ - lenBytes: bigint; + /** + * `len_bytes` dictates that the field value must have the specified number of + * bytes. If the field value does not match the specified length in bytes, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value length must be 6 bytes + * string value = 1 [(buf.validate.field).string.len_bytes = 6]; + * } + * ``` + * + * @generated from field: optional uint64 len_bytes = 20; + */ + lenBytes: bigint; - /** - * `min_bytes` specifies that the field value must have at least the specified - * number of bytes. If the field value contains fewer bytes, an error message - * will be generated. - * - * ```proto - * message MyString { - * // value length must be at least 4 bytes - * string value = 1 [(buf.validate.field).string.min_bytes = 4]; - * } - * - * ``` - * - * @generated from field: optional uint64 min_bytes = 4; - */ - minBytes: bigint; + /** + * `min_bytes` specifies that the field value must have at least the specified + * number of bytes. If the field value contains fewer bytes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value length must be at least 4 bytes + * string value = 1 [(buf.validate.field).string.min_bytes = 4]; + * } + * + * ``` + * + * @generated from field: optional uint64 min_bytes = 4; + */ + minBytes: bigint; - /** - * `max_bytes` specifies that the field value must have no more than the - * specified number of bytes. If the field value contains more bytes, an - * error message will be generated. - * - * ```proto - * message MyString { - * // value length must be at most 8 bytes - * string value = 1 [(buf.validate.field).string.max_bytes = 8]; - * } - * ``` - * - * @generated from field: optional uint64 max_bytes = 5; - */ - maxBytes: bigint; + /** + * `max_bytes` specifies that the field value must have no more than the + * specified number of bytes. If the field value contains more bytes, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value length must be at most 8 bytes + * string value = 1 [(buf.validate.field).string.max_bytes = 8]; + * } + * ``` + * + * @generated from field: optional uint64 max_bytes = 5; + */ + maxBytes: bigint; - /** - * `pattern` specifies that the field value must match the specified - * regular expression (RE2 syntax), with the expression provided without any - * delimiters. If the field value doesn't match the regular expression, an - * error message will be generated. - * - * ```proto - * message MyString { - * // value does not match regex pattern `^[a-zA-Z]//$` - * string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; - * } - * ``` - * - * @generated from field: optional string pattern = 6; - */ - pattern: string; + /** + * `pattern` specifies that the field value must match the specified + * regular expression (RE2 syntax), with the expression provided without any + * delimiters. If the field value doesn't match the regular expression, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value does not match regex pattern `^[a-zA-Z]//$` + * string value = 1 [(buf.validate.field).string.pattern = "^[a-zA-Z]//$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 6; + */ + pattern: string; - /** - * `prefix` specifies that the field value must have the - * specified substring at the beginning of the string. If the field value - * doesn't start with the specified prefix, an error message will be - * generated. - * - * ```proto - * message MyString { - * // value does not have prefix `pre` - * string value = 1 [(buf.validate.field).string.prefix = "pre"]; - * } - * ``` - * - * @generated from field: optional string prefix = 7; - */ - prefix: string; + /** + * `prefix` specifies that the field value must have the + * specified substring at the beginning of the string. If the field value + * doesn't start with the specified prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value does not have prefix `pre` + * string value = 1 [(buf.validate.field).string.prefix = "pre"]; + * } + * ``` + * + * @generated from field: optional string prefix = 7; + */ + prefix: string; - /** - * `suffix` specifies that the field value must have the - * specified substring at the end of the string. If the field value doesn't - * end with the specified suffix, an error message will be generated. - * - * ```proto - * message MyString { - * // value does not have suffix `post` - * string value = 1 [(buf.validate.field).string.suffix = "post"]; - * } - * ``` - * - * @generated from field: optional string suffix = 8; - */ - suffix: string; + /** + * `suffix` specifies that the field value must have the + * specified substring at the end of the string. If the field value doesn't + * end with the specified suffix, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not have suffix `post` + * string value = 1 [(buf.validate.field).string.suffix = "post"]; + * } + * ``` + * + * @generated from field: optional string suffix = 8; + */ + suffix: string; - /** - * `contains` specifies that the field value must have the - * specified substring anywhere in the string. If the field value doesn't - * contain the specified substring, an error message will be generated. - * - * ```proto - * message MyString { - * // value does not contain substring `inside`. - * string value = 1 [(buf.validate.field).string.contains = "inside"]; - * } - * ``` - * - * @generated from field: optional string contains = 9; - */ - contains: string; + /** + * `contains` specifies that the field value must have the + * specified substring anywhere in the string. If the field value doesn't + * contain the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value does not contain substring `inside`. + * string value = 1 [(buf.validate.field).string.contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string contains = 9; + */ + contains: string; - /** - * `not_contains` specifies that the field value must not have the - * specified substring anywhere in the string. If the field value contains - * the specified substring, an error message will be generated. - * - * ```proto - * message MyString { - * // value contains substring `inside`. - * string value = 1 [(buf.validate.field).string.not_contains = "inside"]; - * } - * ``` - * - * @generated from field: optional string not_contains = 23; - */ - notContains: string; + /** + * `not_contains` specifies that the field value must not have the + * specified substring anywhere in the string. If the field value contains + * the specified substring, an error message will be generated. + * + * ```proto + * message MyString { + * // value contains substring `inside`. + * string value = 1 [(buf.validate.field).string.not_contains = "inside"]; + * } + * ``` + * + * @generated from field: optional string not_contains = 23; + */ + notContains: string; - /** - * `in` specifies that the field value must be equal to one of the specified - * values. If the field value isn't one of the specified values, an error - * message will be generated. - * - * ```proto - * message MyString { - * // value must be in list ["apple", "banana"] - * string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; - * } - * ``` - * - * @generated from field: repeated string in = 10; - */ - in: string[]; + /** + * `in` specifies that the field value must be equal to one of the specified + * values. If the field value isn't one of the specified values, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be in list ["apple", "banana"] + * string value = 1 [(buf.validate.field).string.in = "apple", (buf.validate.field).string.in = "banana"]; + * } + * ``` + * + * @generated from field: repeated string in = 10; + */ + in: string[]; - /** - * `not_in` specifies that the field value cannot be equal to any - * of the specified values. If the field value is one of the specified values, - * an error message will be generated. - * ```proto - * message MyString { - * // value must not be in list ["orange", "grape"] - * string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; - * } - * ``` - * - * @generated from field: repeated string not_in = 11; - */ - notIn: string[]; + /** + * `not_in` specifies that the field value cannot be equal to any + * of the specified values. If the field value is one of the specified values, + * an error message will be generated. + * ```proto + * message MyString { + * // value must not be in list ["orange", "grape"] + * string value = 1 [(buf.validate.field).string.not_in = "orange", (buf.validate.field).string.not_in = "grape"]; + * } + * ``` + * + * @generated from field: repeated string not_in = 11; + */ + notIn: string[]; - /** - * `WellKnown` rules provide advanced rules against common string - * patterns. - * - * @generated from oneof buf.validate.StringRules.well_known - */ - wellKnown: - | { - /** - * `email` specifies that the field value must be a valid email address, for - * example "foo@example.com". - * - * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address). - * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322), - * which allows many unexpected forms of email addresses and will easily match - * a typographical error. - * - * If the field value isn't a valid email address, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid email address - * string value = 1 [(buf.validate.field).string.email = true]; - * } - * ``` - * - * @generated from field: bool email = 12; - */ - value: boolean; - case: 'email'; - } - | { - /** - * `hostname` specifies that the field value must be a valid hostname, for - * example "foo.example.com". - * - * A valid hostname follows the rules below: - * - The name consists of one or more labels, separated by a dot ("."). - * - Each label can be 1 to 63 alphanumeric characters. - * - A label can contain hyphens ("-"), but must not start or end with a hyphen. - * - The right-most label must not be digits only. - * - The name can have a trailing dot—for example, "foo.example.com.". - * - The name can be 253 characters at most, excluding the optional trailing dot. - * - * If the field value isn't a valid hostname, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid hostname - * string value = 1 [(buf.validate.field).string.hostname = true]; - * } - * ``` - * - * @generated from field: bool hostname = 13; - */ - value: boolean; - case: 'hostname'; - } - | { - /** - * `ip` specifies that the field value must be a valid IP (v4 or v6) address. - * - * IPv4 addresses are expected in the dotted decimal format—for example, "192.168.5.21". - * IPv6 addresses are expected in their text representation—for example, "::1", - * or "2001:0DB8:ABCD:0012::0". - * - * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). - * Zone identifiers for IPv6 addresses (for example, "fe80::a%en1") are supported. - * - * If the field value isn't a valid IP address, an error message will be - * generated. - * - * ```proto - * message MyString { - * // value must be a valid IP address - * string value = 1 [(buf.validate.field).string.ip = true]; - * } - * ``` - * - * @generated from field: bool ip = 14; - */ - value: boolean; - case: 'ip'; - } - | { - /** - * `ipv4` specifies that the field value must be a valid IPv4 address—for - * example "192.168.5.21". If the field value isn't a valid IPv4 address, an - * error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv4 address - * string value = 1 [(buf.validate.field).string.ipv4 = true]; - * } - * ``` - * - * @generated from field: bool ipv4 = 15; - */ - value: boolean; - case: 'ipv4'; - } - | { - /** - * `ipv6` specifies that the field value must be a valid IPv6 address—for - * example "::1", or "d7a:115c:a1e0:ab12:4843:cd96:626b:430b". If the field - * value is not a valid IPv6 address, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv6 address - * string value = 1 [(buf.validate.field).string.ipv6 = true]; - * } - * ``` - * - * @generated from field: bool ipv6 = 16; - */ - value: boolean; - case: 'ipv6'; - } - | { - /** - * `uri` specifies that the field value must be a valid URI, for example - * "https://example.com/foo/bar?baz=quux#frag". - * - * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). - * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). - * - * If the field value isn't a valid URI, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid URI - * string value = 1 [(buf.validate.field).string.uri = true]; - * } - * ``` - * - * @generated from field: bool uri = 17; - */ - value: boolean; - case: 'uri'; - } - | { - /** - * `uri_ref` specifies that the field value must be a valid URI Reference—either - * a URI such as "https://example.com/foo/bar?baz=quux#frag", or a Relative - * Reference such as "./foo/bar?query". - * - * URI, URI Reference, and Relative Reference are defined in the internet - * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone - * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). - * - * If the field value isn't a valid URI Reference, an error message will be - * generated. - * - * ```proto - * message MyString { - * // value must be a valid URI Reference - * string value = 1 [(buf.validate.field).string.uri_ref = true]; - * } - * ``` - * - * @generated from field: bool uri_ref = 18; - */ - value: boolean; - case: 'uriRef'; - } - | { - /** - * `address` specifies that the field value must be either a valid hostname - * (for example, "example.com"), or a valid IP (v4 or v6) address (for example, - * "192.168.0.1", or "::1"). If the field value isn't a valid hostname or IP, - * an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid hostname, or ip address - * string value = 1 [(buf.validate.field).string.address = true]; - * } - * ``` - * - * @generated from field: bool address = 21; - */ - value: boolean; - case: 'address'; - } - | { - /** - * `uuid` specifies that the field value must be a valid UUID as defined by - * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the - * field value isn't a valid UUID, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid UUID - * string value = 1 [(buf.validate.field).string.uuid = true]; - * } - * ``` - * - * @generated from field: bool uuid = 22; - */ - value: boolean; - case: 'uuid'; - } - | { - /** - * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as - * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes - * omitted. If the field value isn't a valid UUID without dashes, an error message - * will be generated. - * - * ```proto - * message MyString { - * // value must be a valid trimmed UUID - * string value = 1 [(buf.validate.field).string.tuuid = true]; - * } - * ``` - * - * @generated from field: bool tuuid = 33; - */ - value: boolean; - case: 'tuuid'; - } - | { - /** - * `ip_with_prefixlen` specifies that the field value must be a valid IP - * (v4 or v6) address with prefix length—for example, "192.168.5.21/16" or - * "2001:0DB8:ABCD:0012::F1/64". If the field value isn't a valid IP with - * prefix length, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IP with prefix length - * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; - * } - * ``` - * - * @generated from field: bool ip_with_prefixlen = 26; - */ - value: boolean; - case: 'ipWithPrefixlen'; - } - | { - /** - * `ipv4_with_prefixlen` specifies that the field value must be a valid - * IPv4 address with prefix length—for example, "192.168.5.21/16". If the - * field value isn't a valid IPv4 address with prefix length, an error - * message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv4 address with prefix length - * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; - * } - * ``` - * - * @generated from field: bool ipv4_with_prefixlen = 27; - */ - value: boolean; - case: 'ipv4WithPrefixlen'; - } - | { - /** - * `ipv6_with_prefixlen` specifies that the field value must be a valid - * IPv6 address with prefix length—for example, "2001:0DB8:ABCD:0012::F1/64". - * If the field value is not a valid IPv6 address with prefix length, - * an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv6 address prefix length - * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; - * } - * ``` - * - * @generated from field: bool ipv6_with_prefixlen = 28; - */ - value: boolean; - case: 'ipv6WithPrefixlen'; - } - | { - /** - * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) - * prefix—for example, "192.168.0.0/16" or "2001:0DB8:ABCD:0012::0/64". - * - * The prefix must have all zeros for the unmasked bits. For example, - * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the - * prefix, and the remaining 64 bits must be zero. - * - * If the field value isn't a valid IP prefix, an error message will be - * generated. - * - * ```proto - * message MyString { - * // value must be a valid IP prefix - * string value = 1 [(buf.validate.field).string.ip_prefix = true]; - * } - * ``` - * - * @generated from field: bool ip_prefix = 29; - */ - value: boolean; - case: 'ipPrefix'; - } - | { - /** - * `ipv4_prefix` specifies that the field value must be a valid IPv4 - * prefix, for example "192.168.0.0/16". - * - * The prefix must have all zeros for the unmasked bits. For example, - * "192.168.0.0/16" designates the left-most 16 bits for the prefix, - * and the remaining 16 bits must be zero. - * - * If the field value isn't a valid IPv4 prefix, an error message - * will be generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv4 prefix - * string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; - * } - * ``` - * - * @generated from field: bool ipv4_prefix = 30; - */ - value: boolean; - case: 'ipv4Prefix'; - } - | { - /** - * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for - * example, "2001:0DB8:ABCD:0012::0/64". - * - * The prefix must have all zeros for the unmasked bits. For example, - * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the - * prefix, and the remaining 64 bits must be zero. - * - * If the field value is not a valid IPv6 prefix, an error message will be - * generated. - * - * ```proto - * message MyString { - * // value must be a valid IPv6 prefix - * string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; - * } - * ``` - * - * @generated from field: bool ipv6_prefix = 31; - */ - value: boolean; - case: 'ipv6Prefix'; - } - | { - /** - * `host_and_port` specifies that the field value must be valid host/port - * pair—for example, "example.com:8080". - * - * The host can be one of: - * - An IPv4 address in dotted decimal format—for example, "192.168.5.21". - * - An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". - * - A hostname—for example, "example.com". - * - * The port is separated by a colon. It must be non-empty, with a decimal number - * in the range of 0-65535, inclusive. - * - * @generated from field: bool host_and_port = 32; - */ - value: boolean; - case: 'hostAndPort'; - } - | { - /** - * `well_known_regex` specifies a common well-known pattern - * defined as a regex. If the field value doesn't match the well-known - * regex, an error message will be generated. - * - * ```proto - * message MyString { - * // value must be a valid HTTP header value - * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE]; - * } - * ``` - * - * #### KnownRegex - * - * `well_known_regex` contains some well-known patterns. - * - * | Name | Number | Description | - * |-------------------------------|--------|-------------------------------------------| - * | KNOWN_REGEX_UNSPECIFIED | 0 | | - * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) | - * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) | - * - * @generated from field: buf.validate.KnownRegex well_known_regex = 24; - */ - value: KnownRegex; - case: 'wellKnownRegex'; - } - | { case: undefined; value?: undefined }; + /** + * `WellKnown` rules provide advanced rules against common string + * patterns. + * + * @generated from oneof buf.validate.StringRules.well_known + */ + wellKnown: { + /** + * `email` specifies that the field value must be a valid email address, for + * example "foo@example.com". + * + * Conforms to the definition for a valid email address from the [HTML standard](https://html.spec.whatwg.org/multipage/input.html#valid-e-mail-address). + * Note that this standard willfully deviates from [RFC 5322](https://datatracker.ietf.org/doc/html/rfc5322), + * which allows many unexpected forms of email addresses and will easily match + * a typographical error. + * + * If the field value isn't a valid email address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid email address + * string value = 1 [(buf.validate.field).string.email = true]; + * } + * ``` + * + * @generated from field: bool email = 12; + */ + value: boolean; + case: "email"; + } | { + /** + * `hostname` specifies that the field value must be a valid hostname, for + * example "foo.example.com". + * + * A valid hostname follows the rules below: + * - The name consists of one or more labels, separated by a dot ("."). + * - Each label can be 1 to 63 alphanumeric characters. + * - A label can contain hyphens ("-"), but must not start or end with a hyphen. + * - The right-most label must not be digits only. + * - The name can have a trailing dot—for example, "foo.example.com.". + * - The name can be 253 characters at most, excluding the optional trailing dot. + * + * If the field value isn't a valid hostname, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname + * string value = 1 [(buf.validate.field).string.hostname = true]; + * } + * ``` + * + * @generated from field: bool hostname = 13; + */ + value: boolean; + case: "hostname"; + } | { + /** + * `ip` specifies that the field value must be a valid IP (v4 or v6) address. + * + * IPv4 addresses are expected in the dotted decimal format—for example, "192.168.5.21". + * IPv6 addresses are expected in their text representation—for example, "::1", + * or "2001:0DB8:ABCD:0012::0". + * + * Both formats are well-defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone identifiers for IPv6 addresses (for example, "fe80::a%en1") are supported. + * + * If the field value isn't a valid IP address, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP address + * string value = 1 [(buf.validate.field).string.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 14; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` specifies that the field value must be a valid IPv4 address—for + * example "192.168.5.21". If the field value isn't a valid IPv4 address, an + * error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address + * string value = 1 [(buf.validate.field).string.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 15; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` specifies that the field value must be a valid IPv6 address—for + * example "::1", or "d7a:115c:a1e0:ab12:4843:cd96:626b:430b". If the field + * value is not a valid IPv6 address, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address + * string value = 1 [(buf.validate.field).string.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 16; + */ + value: boolean; + case: "ipv6"; + } | { + /** + * `uri` specifies that the field value must be a valid URI, for example + * "https://example.com/foo/bar?baz=quux#frag". + * + * URI is defined in the internet standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). + * Zone Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid URI + * string value = 1 [(buf.validate.field).string.uri = true]; + * } + * ``` + * + * @generated from field: bool uri = 17; + */ + value: boolean; + case: "uri"; + } | { + /** + * `uri_ref` specifies that the field value must be a valid URI Reference—either + * a URI such as "https://example.com/foo/bar?baz=quux#frag", or a Relative + * Reference such as "./foo/bar?query". + * + * URI, URI Reference, and Relative Reference are defined in the internet + * standard [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986). Zone + * Identifiers in IPv6 address literals are supported ([RFC 6874](https://datatracker.ietf.org/doc/html/rfc6874)). + * + * If the field value isn't a valid URI Reference, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid URI Reference + * string value = 1 [(buf.validate.field).string.uri_ref = true]; + * } + * ``` + * + * @generated from field: bool uri_ref = 18; + */ + value: boolean; + case: "uriRef"; + } | { + /** + * `address` specifies that the field value must be either a valid hostname + * (for example, "example.com"), or a valid IP (v4 or v6) address (for example, + * "192.168.0.1", or "::1"). If the field value isn't a valid hostname or IP, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid hostname, or ip address + * string value = 1 [(buf.validate.field).string.address = true]; + * } + * ``` + * + * @generated from field: bool address = 21; + */ + value: boolean; + case: "address"; + } | { + /** + * `uuid` specifies that the field value must be a valid UUID as defined by + * [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2). If the + * field value isn't a valid UUID, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid UUID + * string value = 1 [(buf.validate.field).string.uuid = true]; + * } + * ``` + * + * @generated from field: bool uuid = 22; + */ + value: boolean; + case: "uuid"; + } | { + /** + * `tuuid` (trimmed UUID) specifies that the field value must be a valid UUID as + * defined by [RFC 4122](https://datatracker.ietf.org/doc/html/rfc4122#section-4.1.2) with all dashes + * omitted. If the field value isn't a valid UUID without dashes, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid trimmed UUID + * string value = 1 [(buf.validate.field).string.tuuid = true]; + * } + * ``` + * + * @generated from field: bool tuuid = 33; + */ + value: boolean; + case: "tuuid"; + } | { + /** + * `ip_with_prefixlen` specifies that the field value must be a valid IP + * (v4 or v6) address with prefix length—for example, "192.168.5.21/16" or + * "2001:0DB8:ABCD:0012::F1/64". If the field value isn't a valid IP with + * prefix length, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IP with prefix length + * string value = 1 [(buf.validate.field).string.ip_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ip_with_prefixlen = 26; + */ + value: boolean; + case: "ipWithPrefixlen"; + } | { + /** + * `ipv4_with_prefixlen` specifies that the field value must be a valid + * IPv4 address with prefix length—for example, "192.168.5.21/16". If the + * field value isn't a valid IPv4 address with prefix length, an error + * message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 address with prefix length + * string value = 1 [(buf.validate.field).string.ipv4_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv4_with_prefixlen = 27; + */ + value: boolean; + case: "ipv4WithPrefixlen"; + } | { + /** + * `ipv6_with_prefixlen` specifies that the field value must be a valid + * IPv6 address with prefix length—for example, "2001:0DB8:ABCD:0012::F1/64". + * If the field value is not a valid IPv6 address with prefix length, + * an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 address prefix length + * string value = 1 [(buf.validate.field).string.ipv6_with_prefixlen = true]; + * } + * ``` + * + * @generated from field: bool ipv6_with_prefixlen = 28; + */ + value: boolean; + case: "ipv6WithPrefixlen"; + } | { + /** + * `ip_prefix` specifies that the field value must be a valid IP (v4 or v6) + * prefix—for example, "192.168.0.0/16" or "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value isn't a valid IP prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IP prefix + * string value = 1 [(buf.validate.field).string.ip_prefix = true]; + * } + * ``` + * + * @generated from field: bool ip_prefix = 29; + */ + value: boolean; + case: "ipPrefix"; + } | { + /** + * `ipv4_prefix` specifies that the field value must be a valid IPv4 + * prefix, for example "192.168.0.0/16". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "192.168.0.0/16" designates the left-most 16 bits for the prefix, + * and the remaining 16 bits must be zero. + * + * If the field value isn't a valid IPv4 prefix, an error message + * will be generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv4 prefix + * string value = 1 [(buf.validate.field).string.ipv4_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv4_prefix = 30; + */ + value: boolean; + case: "ipv4Prefix"; + } | { + /** + * `ipv6_prefix` specifies that the field value must be a valid IPv6 prefix—for + * example, "2001:0DB8:ABCD:0012::0/64". + * + * The prefix must have all zeros for the unmasked bits. For example, + * "2001:0DB8:ABCD:0012::0/64" designates the left-most 64 bits for the + * prefix, and the remaining 64 bits must be zero. + * + * If the field value is not a valid IPv6 prefix, an error message will be + * generated. + * + * ```proto + * message MyString { + * // value must be a valid IPv6 prefix + * string value = 1 [(buf.validate.field).string.ipv6_prefix = true]; + * } + * ``` + * + * @generated from field: bool ipv6_prefix = 31; + */ + value: boolean; + case: "ipv6Prefix"; + } | { + /** + * `host_and_port` specifies that the field value must be valid host/port + * pair—for example, "example.com:8080". + * + * The host can be one of: + * - An IPv4 address in dotted decimal format—for example, "192.168.5.21". + * - An IPv6 address enclosed in square brackets—for example, "[2001:0DB8:ABCD:0012::F1]". + * - A hostname—for example, "example.com". + * + * The port is separated by a colon. It must be non-empty, with a decimal number + * in the range of 0-65535, inclusive. + * + * @generated from field: bool host_and_port = 32; + */ + value: boolean; + case: "hostAndPort"; + } | { + /** + * `well_known_regex` specifies a common well-known pattern + * defined as a regex. If the field value doesn't match the well-known + * regex, an error message will be generated. + * + * ```proto + * message MyString { + * // value must be a valid HTTP header value + * string value = 1 [(buf.validate.field).string.well_known_regex = KNOWN_REGEX_HTTP_HEADER_VALUE]; + * } + * ``` + * + * #### KnownRegex + * + * `well_known_regex` contains some well-known patterns. + * + * | Name | Number | Description | + * |-------------------------------|--------|-------------------------------------------| + * | KNOWN_REGEX_UNSPECIFIED | 0 | | + * | KNOWN_REGEX_HTTP_HEADER_NAME | 1 | HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2) | + * | KNOWN_REGEX_HTTP_HEADER_VALUE | 2 | HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4) | + * + * @generated from field: buf.validate.KnownRegex well_known_regex = 24; + */ + value: KnownRegex; + case: "wellKnownRegex"; + } | { case: undefined; value?: undefined }; - /** - * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to - * enable strict header validation. By default, this is true, and HTTP header - * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser - * validations that only disallow `\r\n\0` characters, which can be used to - * bypass header matching rules. - * - * ```proto - * message MyString { - * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. - * string value = 1 [(buf.validate.field).string.strict = false]; - * } - * ``` - * - * @generated from field: optional bool strict = 25; - */ - strict: boolean; + /** + * This applies to regexes `HTTP_HEADER_NAME` and `HTTP_HEADER_VALUE` to + * enable strict header validation. By default, this is true, and HTTP header + * validations are [RFC-compliant](https://datatracker.ietf.org/doc/html/rfc7230#section-3). Setting to false will enable looser + * validations that only disallow `\r\n\0` characters, which can be used to + * bypass header matching rules. + * + * ```proto + * message MyString { + * // The field `value` must have be a valid HTTP headers, but not enforced with strict rules. + * string value = 1 [(buf.validate.field).string.strict = false]; + * } + * ``` + * + * @generated from field: optional bool strict = 25; + */ + strict: boolean; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyString { - * string value = 1 [ - * (buf.validate.field).string.example = "hello", - * (buf.validate.field).string.example = "world" - * ]; - * } - * ``` - * - * @generated from field: repeated string example = 34; - */ - example: string[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyString { + * string value = 1 [ + * (buf.validate.field).string.example = "hello", + * (buf.validate.field).string.example = "world" + * ]; + * } + * ``` + * + * @generated from field: repeated string example = 34; + */ + example: string[]; }; /** * Describes the message buf.validate.StringRules. * Use `create(StringRulesSchema)` to create a new message. */ -export const StringRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 19); +export const StringRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 19); /** * BytesRules describe the rules applied to `bytes` values. These rules @@ -3452,976 +3304,951 @@ export const StringRulesSchema: GenMessage = * * @generated from message buf.validate.BytesRules */ -export type BytesRules = Message<'buf.validate.BytesRules'> & { - /** - * `const` requires the field value to exactly match the specified bytes - * value. If the field value doesn't match, an error message is generated. - * - * ```proto - * message MyBytes { - * // value must be "\x01\x02\x03\x04" - * bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; - * } - * ``` - * - * @generated from field: optional bytes const = 1; - */ - const: Uint8Array; +export type BytesRules = Message<"buf.validate.BytesRules"> & { + /** + * `const` requires the field value to exactly match the specified bytes + * value. If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be "\x01\x02\x03\x04" + * bytes value = 1 [(buf.validate.field).bytes.const = "\x01\x02\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes const = 1; + */ + const: Uint8Array; - /** - * `len` requires the field value to have the specified length in bytes. - * If the field value doesn't match, an error message is generated. - * - * ```proto - * message MyBytes { - * // value length must be 4 bytes. - * optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; - * } - * ``` - * - * @generated from field: optional uint64 len = 13; - */ - len: bigint; + /** + * `len` requires the field value to have the specified length in bytes. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be 4 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.len = 4]; + * } + * ``` + * + * @generated from field: optional uint64 len = 13; + */ + len: bigint; - /** - * `min_len` requires the field value to have at least the specified minimum - * length in bytes. - * If the field value doesn't meet the requirement, an error message is generated. - * - * ```proto - * message MyBytes { - * // value length must be at least 2 bytes. - * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; - * } - * ``` - * - * @generated from field: optional uint64 min_len = 2; - */ - minLen: bigint; + /** + * `min_len` requires the field value to have at least the specified minimum + * length in bytes. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value length must be at least 2 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.min_len = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_len = 2; + */ + minLen: bigint; - /** - * `max_len` requires the field value to have at most the specified maximum - * length in bytes. - * If the field value exceeds the requirement, an error message is generated. - * - * ```proto - * message MyBytes { - * // value must be at most 6 bytes. - * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; - * } - * ``` - * - * @generated from field: optional uint64 max_len = 3; - */ - maxLen: bigint; + /** + * `max_len` requires the field value to have at most the specified maximum + * length in bytes. + * If the field value exceeds the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be at most 6 bytes. + * optional bytes value = 1 [(buf.validate.field).bytes.max_len = 6]; + * } + * ``` + * + * @generated from field: optional uint64 max_len = 3; + */ + maxLen: bigint; - /** - * `pattern` requires the field value to match the specified regular - * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). - * The value of the field must be valid UTF-8 or validation will fail with a - * runtime error. - * If the field value doesn't match the pattern, an error message is generated. - * - * ```proto - * message MyBytes { - * // value must match regex pattern "^[a-zA-Z0-9]+$". - * optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; - * } - * ``` - * - * @generated from field: optional string pattern = 4; - */ - pattern: string; + /** + * `pattern` requires the field value to match the specified regular + * expression ([RE2 syntax](https://github.com/google/re2/wiki/Syntax)). + * The value of the field must be valid UTF-8 or validation will fail with a + * runtime error. + * If the field value doesn't match the pattern, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must match regex pattern "^[a-zA-Z0-9]+$". + * optional bytes value = 1 [(buf.validate.field).bytes.pattern = "^[a-zA-Z0-9]+$"]; + * } + * ``` + * + * @generated from field: optional string pattern = 4; + */ + pattern: string; - /** - * `prefix` requires the field value to have the specified bytes at the - * beginning of the string. - * If the field value doesn't meet the requirement, an error message is generated. - * - * ```proto - * message MyBytes { - * // value does not have prefix \x01\x02 - * optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; - * } - * ``` - * - * @generated from field: optional bytes prefix = 5; - */ - prefix: Uint8Array; + /** + * `prefix` requires the field value to have the specified bytes at the + * beginning of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have prefix \x01\x02 + * optional bytes value = 1 [(buf.validate.field).bytes.prefix = "\x01\x02"]; + * } + * ``` + * + * @generated from field: optional bytes prefix = 5; + */ + prefix: Uint8Array; - /** - * `suffix` requires the field value to have the specified bytes at the end - * of the string. - * If the field value doesn't meet the requirement, an error message is generated. - * - * ```proto - * message MyBytes { - * // value does not have suffix \x03\x04 - * optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; - * } - * ``` - * - * @generated from field: optional bytes suffix = 6; - */ - suffix: Uint8Array; + /** + * `suffix` requires the field value to have the specified bytes at the end + * of the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```proto + * message MyBytes { + * // value does not have suffix \x03\x04 + * optional bytes value = 1 [(buf.validate.field).bytes.suffix = "\x03\x04"]; + * } + * ``` + * + * @generated from field: optional bytes suffix = 6; + */ + suffix: Uint8Array; - /** - * `contains` requires the field value to have the specified bytes anywhere in - * the string. - * If the field value doesn't meet the requirement, an error message is generated. - * - * ```protobuf - * message MyBytes { - * // value does not contain \x02\x03 - * optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; - * } - * ``` - * - * @generated from field: optional bytes contains = 7; - */ - contains: Uint8Array; + /** + * `contains` requires the field value to have the specified bytes anywhere in + * the string. + * If the field value doesn't meet the requirement, an error message is generated. + * + * ```protobuf + * message MyBytes { + * // value does not contain \x02\x03 + * optional bytes value = 1 [(buf.validate.field).bytes.contains = "\x02\x03"]; + * } + * ``` + * + * @generated from field: optional bytes contains = 7; + */ + contains: Uint8Array; - /** - * `in` requires the field value to be equal to one of the specified - * values. If the field value doesn't match any of the specified values, an - * error message is generated. - * - * ```protobuf - * message MyBytes { - * // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] - * optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; - * } - * ``` - * - * @generated from field: repeated bytes in = 8; - */ - in: Uint8Array[]; + /** + * `in` requires the field value to be equal to one of the specified + * values. If the field value doesn't match any of the specified values, an + * error message is generated. + * + * ```protobuf + * message MyBytes { + * // value must in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes in = 8; + */ + in: Uint8Array[]; - /** - * `not_in` requires the field value to be not equal to any of the specified - * values. - * If the field value matches any of the specified values, an error message is - * generated. - * - * ```proto - * message MyBytes { - * // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] - * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; - * } - * ``` - * - * @generated from field: repeated bytes not_in = 9; - */ - notIn: Uint8Array[]; + /** + * `not_in` requires the field value to be not equal to any of the specified + * values. + * If the field value matches any of the specified values, an error message is + * generated. + * + * ```proto + * message MyBytes { + * // value must not in ["\x01\x02", "\x02\x03", "\x03\x04"] + * optional bytes value = 1 [(buf.validate.field).bytes.not_in = {"\x01\x02", "\x02\x03", "\x03\x04"}]; + * } + * ``` + * + * @generated from field: repeated bytes not_in = 9; + */ + notIn: Uint8Array[]; - /** - * WellKnown rules provide advanced rules against common byte - * patterns - * - * @generated from oneof buf.validate.BytesRules.well_known - */ - wellKnown: - | { - /** - * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. - * If the field value doesn't meet this rule, an error message is generated. - * - * ```proto - * message MyBytes { - * // value must be a valid IP address - * optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; - * } - * ``` - * - * @generated from field: bool ip = 10; - */ - value: boolean; - case: 'ip'; - } - | { - /** - * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. - * If the field value doesn't meet this rule, an error message is generated. - * - * ```proto - * message MyBytes { - * // value must be a valid IPv4 address - * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; - * } - * ``` - * - * @generated from field: bool ipv4 = 11; - */ - value: boolean; - case: 'ipv4'; - } - | { - /** - * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. - * If the field value doesn't meet this rule, an error message is generated. - * ```proto - * message MyBytes { - * // value must be a valid IPv6 address - * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; - * } - * ``` - * - * @generated from field: bool ipv6 = 12; - */ - value: boolean; - case: 'ipv6'; - } - | { case: undefined; value?: undefined }; + /** + * WellKnown rules provide advanced rules against common byte + * patterns + * + * @generated from oneof buf.validate.BytesRules.well_known + */ + wellKnown: { + /** + * `ip` ensures that the field `value` is a valid IP address (v4 or v6) in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IP address + * optional bytes value = 1 [(buf.validate.field).bytes.ip = true]; + * } + * ``` + * + * @generated from field: bool ip = 10; + */ + value: boolean; + case: "ip"; + } | { + /** + * `ipv4` ensures that the field `value` is a valid IPv4 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * + * ```proto + * message MyBytes { + * // value must be a valid IPv4 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv4 = true]; + * } + * ``` + * + * @generated from field: bool ipv4 = 11; + */ + value: boolean; + case: "ipv4"; + } | { + /** + * `ipv6` ensures that the field `value` is a valid IPv6 address in byte format. + * If the field value doesn't meet this rule, an error message is generated. + * ```proto + * message MyBytes { + * // value must be a valid IPv6 address + * optional bytes value = 1 [(buf.validate.field).bytes.ipv6 = true]; + * } + * ``` + * + * @generated from field: bool ipv6 = 12; + */ + value: boolean; + case: "ipv6"; + } | { case: undefined; value?: undefined }; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyBytes { - * bytes value = 1 [ - * (buf.validate.field).bytes.example = "\x01\x02", - * (buf.validate.field).bytes.example = "\x02\x03" - * ]; - * } - * ``` - * - * @generated from field: repeated bytes example = 14; - */ - example: Uint8Array[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyBytes { + * bytes value = 1 [ + * (buf.validate.field).bytes.example = "\x01\x02", + * (buf.validate.field).bytes.example = "\x02\x03" + * ]; + * } + * ``` + * + * @generated from field: repeated bytes example = 14; + */ + example: Uint8Array[]; }; /** * Describes the message buf.validate.BytesRules. * Use `create(BytesRulesSchema)` to create a new message. */ -export const BytesRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 20); +export const BytesRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 20); /** * EnumRules describe the rules applied to `enum` values. * * @generated from message buf.validate.EnumRules */ -export type EnumRules = Message<'buf.validate.EnumRules'> & { - /** - * `const` requires the field value to exactly match the specified enum value. - * If the field value doesn't match, an error message is generated. - * - * ```proto - * enum MyEnum { - * MY_ENUM_UNSPECIFIED = 0; - * MY_ENUM_VALUE1 = 1; - * MY_ENUM_VALUE2 = 2; - * } - * - * message MyMessage { - * // The field `value` must be exactly MY_ENUM_VALUE1. - * MyEnum value = 1 [(buf.validate.field).enum.const = 1]; - * } - * ``` - * - * @generated from field: optional int32 const = 1; - */ - const: number; +export type EnumRules = Message<"buf.validate.EnumRules"> & { + /** + * `const` requires the field value to exactly match the specified enum value. + * If the field value doesn't match, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be exactly MY_ENUM_VALUE1. + * MyEnum value = 1 [(buf.validate.field).enum.const = 1]; + * } + * ``` + * + * @generated from field: optional int32 const = 1; + */ + const: number; - /** - * `defined_only` requires the field value to be one of the defined values for - * this enum, failing on any undefined value. - * - * ```proto - * enum MyEnum { - * MY_ENUM_UNSPECIFIED = 0; - * MY_ENUM_VALUE1 = 1; - * MY_ENUM_VALUE2 = 2; - * } - * - * message MyMessage { - * // The field `value` must be a defined value of MyEnum. - * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; - * } - * ``` - * - * @generated from field: optional bool defined_only = 2; - */ - definedOnly: boolean; + /** + * `defined_only` requires the field value to be one of the defined values for + * this enum, failing on any undefined value. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be a defined value of MyEnum. + * MyEnum value = 1 [(buf.validate.field).enum.defined_only = true]; + * } + * ``` + * + * @generated from field: optional bool defined_only = 2; + */ + definedOnly: boolean; - /** - * `in` requires the field value to be equal to one of the - * specified enum values. If the field value doesn't match any of the - * specified values, an error message is generated. - * - * ```proto - * enum MyEnum { - * MY_ENUM_UNSPECIFIED = 0; - * MY_ENUM_VALUE1 = 1; - * MY_ENUM_VALUE2 = 2; - * } - * - * message MyMessage { - * // The field `value` must be equal to one of the specified values. - * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; - * } - * ``` - * - * @generated from field: repeated int32 in = 3; - */ - in: number[]; + /** + * `in` requires the field value to be equal to one of the + * specified enum values. If the field value doesn't match any of the + * specified values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must be equal to one of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 in = 3; + */ + in: number[]; - /** - * `not_in` requires the field value to be not equal to any of the - * specified enum values. If the field value matches one of the specified - * values, an error message is generated. - * - * ```proto - * enum MyEnum { - * MY_ENUM_UNSPECIFIED = 0; - * MY_ENUM_VALUE1 = 1; - * MY_ENUM_VALUE2 = 2; - * } - * - * message MyMessage { - * // The field `value` must not be equal to any of the specified values. - * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; - * } - * ``` - * - * @generated from field: repeated int32 not_in = 4; - */ - notIn: number[]; + /** + * `not_in` requires the field value to be not equal to any of the + * specified enum values. If the field value matches one of the specified + * values, an error message is generated. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * // The field `value` must not be equal to any of the specified values. + * MyEnum value = 1 [(buf.validate.field).enum = { not_in: [1, 2]}]; + * } + * ``` + * + * @generated from field: repeated int32 not_in = 4; + */ + notIn: number[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * enum MyEnum { - * MY_ENUM_UNSPECIFIED = 0; - * MY_ENUM_VALUE1 = 1; - * MY_ENUM_VALUE2 = 2; - * } - * - * message MyMessage { - * (buf.validate.field).enum.example = 1, - * (buf.validate.field).enum.example = 2 - * } - * ``` - * - * @generated from field: repeated int32 example = 5; - */ - example: number[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * enum MyEnum { + * MY_ENUM_UNSPECIFIED = 0; + * MY_ENUM_VALUE1 = 1; + * MY_ENUM_VALUE2 = 2; + * } + * + * message MyMessage { + * (buf.validate.field).enum.example = 1, + * (buf.validate.field).enum.example = 2 + * } + * ``` + * + * @generated from field: repeated int32 example = 5; + */ + example: number[]; }; /** * Describes the message buf.validate.EnumRules. * Use `create(EnumRulesSchema)` to create a new message. */ -export const EnumRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 21); +export const EnumRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 21); /** * RepeatedRules describe the rules applied to `repeated` values. * * @generated from message buf.validate.RepeatedRules */ -export type RepeatedRules = Message<'buf.validate.RepeatedRules'> & { - /** - * `min_items` requires that this field must contain at least the specified - * minimum number of items. - * - * Note that `min_items = 1` is equivalent to setting a field as `required`. - * - * ```proto - * message MyRepeated { - * // value must contain at least 2 items - * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; - * } - * ``` - * - * @generated from field: optional uint64 min_items = 1; - */ - minItems: bigint; +export type RepeatedRules = Message<"buf.validate.RepeatedRules"> & { + /** + * `min_items` requires that this field must contain at least the specified + * minimum number of items. + * + * Note that `min_items = 1` is equivalent to setting a field as `required`. + * + * ```proto + * message MyRepeated { + * // value must contain at least 2 items + * repeated string value = 1 [(buf.validate.field).repeated.min_items = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_items = 1; + */ + minItems: bigint; - /** - * `max_items` denotes that this field must not exceed a - * certain number of items as the upper limit. If the field contains more - * items than specified, an error message will be generated, requiring the - * field to maintain no more than the specified number of items. - * - * ```proto - * message MyRepeated { - * // value must contain no more than 3 item(s) - * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; - * } - * ``` - * - * @generated from field: optional uint64 max_items = 2; - */ - maxItems: bigint; + /** + * `max_items` denotes that this field must not exceed a + * certain number of items as the upper limit. If the field contains more + * items than specified, an error message will be generated, requiring the + * field to maintain no more than the specified number of items. + * + * ```proto + * message MyRepeated { + * // value must contain no more than 3 item(s) + * repeated string value = 1 [(buf.validate.field).repeated.max_items = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_items = 2; + */ + maxItems: bigint; - /** - * `unique` indicates that all elements in this field must - * be unique. This rule is strictly applicable to scalar and enum - * types, with message types not being supported. - * - * ```proto - * message MyRepeated { - * // repeated value must contain unique items - * repeated string value = 1 [(buf.validate.field).repeated.unique = true]; - * } - * ``` - * - * @generated from field: optional bool unique = 3; - */ - unique: boolean; + /** + * `unique` indicates that all elements in this field must + * be unique. This rule is strictly applicable to scalar and enum + * types, with message types not being supported. + * + * ```proto + * message MyRepeated { + * // repeated value must contain unique items + * repeated string value = 1 [(buf.validate.field).repeated.unique = true]; + * } + * ``` + * + * @generated from field: optional bool unique = 3; + */ + unique: boolean; - /** - * `items` details the rules to be applied to each item - * in the field. Even for repeated message fields, validation is executed - * against each item unless skip is explicitly specified. - * - * Note that repeated items are always considered populated. The `required` - * rule does not apply. - * - * ```proto - * message MyRepeated { - * // The items in the field `value` must follow the specified rules. - * repeated string value = 1 [(buf.validate.field).repeated.items = { - * string: { - * min_len: 3 - * max_len: 10 - * } - * }]; - * } - * ``` - * - * @generated from field: optional buf.validate.FieldRules items = 4; - */ - items?: FieldRules; + /** + * `items` details the rules to be applied to each item + * in the field. Even for repeated message fields, validation is executed + * against each item unless skip is explicitly specified. + * + * Note that repeated items are always considered populated. The `required` + * rule does not apply. + * + * ```proto + * message MyRepeated { + * // The items in the field `value` must follow the specified rules. + * repeated string value = 1 [(buf.validate.field).repeated.items = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * @generated from field: optional buf.validate.FieldRules items = 4; + */ + items?: FieldRules; }; /** * Describes the message buf.validate.RepeatedRules. * Use `create(RepeatedRulesSchema)` to create a new message. */ -export const RepeatedRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 22); +export const RepeatedRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 22); /** * MapRules describe the rules applied to `map` values. * * @generated from message buf.validate.MapRules */ -export type MapRules = Message<'buf.validate.MapRules'> & { - /** - * Specifies the minimum number of key-value pairs allowed. If the field has - * fewer key-value pairs than specified, an error message is generated. - * - * ```proto - * message MyMap { - * // The field `value` must have at least 2 key-value pairs. - * map value = 1 [(buf.validate.field).map.min_pairs = 2]; - * } - * ``` - * - * @generated from field: optional uint64 min_pairs = 1; - */ - minPairs: bigint; +export type MapRules = Message<"buf.validate.MapRules"> & { + /** + * Specifies the minimum number of key-value pairs allowed. If the field has + * fewer key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at least 2 key-value pairs. + * map value = 1 [(buf.validate.field).map.min_pairs = 2]; + * } + * ``` + * + * @generated from field: optional uint64 min_pairs = 1; + */ + minPairs: bigint; - /** - * Specifies the maximum number of key-value pairs allowed. If the field has - * more key-value pairs than specified, an error message is generated. - * - * ```proto - * message MyMap { - * // The field `value` must have at most 3 key-value pairs. - * map value = 1 [(buf.validate.field).map.max_pairs = 3]; - * } - * ``` - * - * @generated from field: optional uint64 max_pairs = 2; - */ - maxPairs: bigint; + /** + * Specifies the maximum number of key-value pairs allowed. If the field has + * more key-value pairs than specified, an error message is generated. + * + * ```proto + * message MyMap { + * // The field `value` must have at most 3 key-value pairs. + * map value = 1 [(buf.validate.field).map.max_pairs = 3]; + * } + * ``` + * + * @generated from field: optional uint64 max_pairs = 2; + */ + maxPairs: bigint; - /** - * Specifies the rules to be applied to each key in the field. - * - * Note that map keys are always considered populated. The `required` - * rule does not apply. - * - * ```proto - * message MyMap { - * // The keys in the field `value` must follow the specified rules. - * map value = 1 [(buf.validate.field).map.keys = { - * string: { - * min_len: 3 - * max_len: 10 - * } - * }]; - * } - * ``` - * - * @generated from field: optional buf.validate.FieldRules keys = 4; - */ - keys?: FieldRules; + /** + * Specifies the rules to be applied to each key in the field. + * + * Note that map keys are always considered populated. The `required` + * rule does not apply. + * + * ```proto + * message MyMap { + * // The keys in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.keys = { + * string: { + * min_len: 3 + * max_len: 10 + * } + * }]; + * } + * ``` + * + * @generated from field: optional buf.validate.FieldRules keys = 4; + */ + keys?: FieldRules; - /** - * Specifies the rules to be applied to the value of each key in the - * field. Message values will still have their validations evaluated unless - * skip is specified here. - * - * Note that map values are always considered populated. The `required` - * rule does not apply. - * - * ```proto - * message MyMap { - * // The values in the field `value` must follow the specified rules. - * map value = 1 [(buf.validate.field).map.values = { - * string: { - * min_len: 5 - * max_len: 20 - * } - * }]; - * } - * ``` - * - * @generated from field: optional buf.validate.FieldRules values = 5; - */ - values?: FieldRules; + /** + * Specifies the rules to be applied to the value of each key in the + * field. Message values will still have their validations evaluated unless + * skip is specified here. + * + * Note that map values are always considered populated. The `required` + * rule does not apply. + * + * ```proto + * message MyMap { + * // The values in the field `value` must follow the specified rules. + * map value = 1 [(buf.validate.field).map.values = { + * string: { + * min_len: 5 + * max_len: 20 + * } + * }]; + * } + * ``` + * + * @generated from field: optional buf.validate.FieldRules values = 5; + */ + values?: FieldRules; }; /** * Describes the message buf.validate.MapRules. * Use `create(MapRulesSchema)` to create a new message. */ -export const MapRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 23); +export const MapRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 23); /** * AnyRules describe rules applied exclusively to the `google.protobuf.Any` well-known type. * * @generated from message buf.validate.AnyRules */ -export type AnyRules = Message<'buf.validate.AnyRules'> & { - /** - * `in` requires the field's `type_url` to be equal to one of the - * specified values. If it doesn't match any of the specified values, an error - * message is generated. - * - * ```proto - * message MyAny { - * // The `value` field must have a `type_url` equal to one of the specified values. - * google.protobuf.Any value = 1 [(buf.validate.field).any = { - * in: ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"] - * }]; - * } - * ``` - * - * @generated from field: repeated string in = 2; - */ - in: string[]; +export type AnyRules = Message<"buf.validate.AnyRules"> & { + /** + * `in` requires the field's `type_url` to be equal to one of the + * specified values. If it doesn't match any of the specified values, an error + * message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must have a `type_url` equal to one of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * in: ["type.googleapis.com/MyType1", "type.googleapis.com/MyType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string in = 2; + */ + in: string[]; - /** - * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. - * - * ```proto - * message MyAny { - * // The `value` field must not have a `type_url` equal to any of the specified values. - * google.protobuf.Any value = 1 [(buf.validate.field).any = { - * not_in: ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"] - * }]; - * } - * ``` - * - * @generated from field: repeated string not_in = 3; - */ - notIn: string[]; + /** + * requires the field's type_url to be not equal to any of the specified values. If it matches any of the specified values, an error message is generated. + * + * ```proto + * message MyAny { + * // The `value` field must not have a `type_url` equal to any of the specified values. + * google.protobuf.Any value = 1 [(buf.validate.field).any = { + * not_in: ["type.googleapis.com/ForbiddenType1", "type.googleapis.com/ForbiddenType2"] + * }]; + * } + * ``` + * + * @generated from field: repeated string not_in = 3; + */ + notIn: string[]; }; /** * Describes the message buf.validate.AnyRules. * Use `create(AnyRulesSchema)` to create a new message. */ -export const AnyRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 24); +export const AnyRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 24); /** * DurationRules describe the rules applied exclusively to the `google.protobuf.Duration` well-known type. * * @generated from message buf.validate.DurationRules */ -export type DurationRules = Message<'buf.validate.DurationRules'> & { - /** - * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. - * If the field's value deviates from the specified value, an error message - * will be generated. - * - * ```proto - * message MyDuration { - * // value must equal 5s - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; - * } - * ``` - * - * @generated from field: optional google.protobuf.Duration const = 2; - */ - const?: Duration; +export type DurationRules = Message<"buf.validate.DurationRules"> & { + /** + * `const` dictates that the field must match the specified value of the `google.protobuf.Duration` type exactly. + * If the field's value deviates from the specified value, an error message + * will be generated. + * + * ```proto + * message MyDuration { + * // value must equal 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.const = "5s"]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration const = 2; + */ + const?: Duration; - /** - * @generated from oneof buf.validate.DurationRules.less_than - */ - lessThan: - | { - /** - * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, - * exclusive. If the field's value is greater than or equal to the specified - * value, an error message will be generated. - * - * ```proto - * message MyDuration { - * // value must be less than 5s - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; - * } - * ``` - * - * @generated from field: google.protobuf.Duration lt = 3; - */ - value: Duration; - case: 'lt'; - } - | { - /** - * `lte` indicates that the field must be less than or equal to the specified - * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, - * an error message will be generated. - * - * ```proto - * message MyDuration { - * // value must be less than or equal to 10s - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; - * } - * ``` - * - * @generated from field: google.protobuf.Duration lte = 4; - */ - value: Duration; - case: 'lte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.DurationRules.less_than + */ + lessThan: { + /** + * `lt` stipulates that the field must be less than the specified value of the `google.protobuf.Duration` type, + * exclusive. If the field's value is greater than or equal to the specified + * value, an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than 5s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = "5s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lt = 3; + */ + value: Duration; + case: "lt"; + } | { + /** + * `lte` indicates that the field must be less than or equal to the specified + * value of the `google.protobuf.Duration` type, inclusive. If the field's value is greater than the specified value, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be less than or equal to 10s + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lte = "10s"]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration lte = 4; + */ + value: Duration; + case: "lte"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.DurationRules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the duration field value to be greater than the specified - * value (exclusive). If the value of `gt` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyDuration { - * // duration must be greater than 5s [duration.gt] - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; - * - * // duration must be greater than 5s and less than 10s [duration.gt_lt] - * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; - * - * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] - * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; - * } - * ``` - * - * @generated from field: google.protobuf.Duration gt = 5; - */ - value: Duration; - case: 'gt'; - } - | { - /** - * `gte` requires the duration field value to be greater than or equal to the - * specified value (exclusive). If the value of `gte` is larger than a - * specified `lt` or `lte`, the range is reversed, and the field value must - * be outside the specified range. If the field value doesn't meet the - * required conditions, an error message is generated. - * - * ```proto - * message MyDuration { - * // duration must be greater than or equal to 5s [duration.gte] - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; - * - * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] - * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; - * - * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] - * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; - * } - * ``` - * - * @generated from field: google.protobuf.Duration gte = 6; - */ - value: Duration; - case: 'gte'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.DurationRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the duration field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than 5s [duration.gt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gt = { seconds: 5 }]; + * + * // duration must be greater than 5s and less than 10s [duration.gt_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gt: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than 10s or less than 5s [duration.gt_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gt: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gt = 5; + */ + value: Duration; + case: "gt"; + } | { + /** + * `gte` requires the duration field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value must + * be outside the specified range. If the field value doesn't meet the + * required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be greater than or equal to 5s [duration.gte] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.gte = { seconds: 5 }]; + * + * // duration must be greater than or equal to 5s and less than 10s [duration.gte_lt] + * google.protobuf.Duration another_value = 2 [(buf.validate.field).duration = { gte: { seconds: 5 }, lt: { seconds: 10 } }]; + * + * // duration must be greater than or equal to 10s or less than 5s [duration.gte_lt_exclusive] + * google.protobuf.Duration other_value = 3 [(buf.validate.field).duration = { gte: { seconds: 10 }, lt: { seconds: 5 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Duration gte = 6; + */ + value: Duration; + case: "gte"; + } | { case: undefined; value?: undefined }; - /** - * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. - * If the field's value doesn't correspond to any of the specified values, - * an error message will be generated. - * - * ```proto - * message MyDuration { - * // value must be in list [1s, 2s, 3s] - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; - * } - * ``` - * - * @generated from field: repeated google.protobuf.Duration in = 7; - */ - in: Duration[]; + /** + * `in` asserts that the field must be equal to one of the specified values of the `google.protobuf.Duration` type. + * If the field's value doesn't correspond to any of the specified values, + * an error message will be generated. + * + * ```proto + * message MyDuration { + * // value must be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration in = 7; + */ + in: Duration[]; - /** - * `not_in` denotes that the field must not be equal to - * any of the specified values of the `google.protobuf.Duration` type. - * If the field's value matches any of these values, an error message will be - * generated. - * - * ```proto - * message MyDuration { - * // value must not be in list [1s, 2s, 3s] - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; - * } - * ``` - * - * @generated from field: repeated google.protobuf.Duration not_in = 8; - */ - notIn: Duration[]; + /** + * `not_in` denotes that the field must not be equal to + * any of the specified values of the `google.protobuf.Duration` type. + * If the field's value matches any of these values, an error message will be + * generated. + * + * ```proto + * message MyDuration { + * // value must not be in list [1s, 2s, 3s] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.not_in = ["1s", "2s", "3s"]]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration not_in = 8; + */ + notIn: Duration[]; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyDuration { - * google.protobuf.Duration value = 1 [ - * (buf.validate.field).duration.example = { seconds: 1 }, - * (buf.validate.field).duration.example = { seconds: 2 }, - * ]; - * } - * ``` - * - * @generated from field: repeated google.protobuf.Duration example = 9; - */ - example: Duration[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyDuration { + * google.protobuf.Duration value = 1 [ + * (buf.validate.field).duration.example = { seconds: 1 }, + * (buf.validate.field).duration.example = { seconds: 2 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Duration example = 9; + */ + example: Duration[]; }; /** * Describes the message buf.validate.DurationRules. * Use `create(DurationRulesSchema)` to create a new message. */ -export const DurationRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 25); +export const DurationRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 25); /** * TimestampRules describe the rules applied exclusively to the `google.protobuf.Timestamp` well-known type. * * @generated from message buf.validate.TimestampRules */ -export type TimestampRules = Message<'buf.validate.TimestampRules'> & { - /** - * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. - * - * ```proto - * message MyTimestamp { - * // value must equal 2023-05-03T10:00:00Z - * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; - * } - * ``` - * - * @generated from field: optional google.protobuf.Timestamp const = 2; - */ - const?: Timestamp; +export type TimestampRules = Message<"buf.validate.TimestampRules"> & { + /** + * `const` dictates that this field, of the `google.protobuf.Timestamp` type, must exactly match the specified value. If the field value doesn't correspond to the specified timestamp, an error message will be generated. + * + * ```proto + * message MyTimestamp { + * // value must equal 2023-05-03T10:00:00Z + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.const = {seconds: 1727998800}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Timestamp const = 2; + */ + const?: Timestamp; - /** - * @generated from oneof buf.validate.TimestampRules.less_than - */ - lessThan: - | { - /** - * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. - * - * ```proto - * message MyDuration { - * // duration must be less than 'P3D' [duration.lt] - * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; - * } - * ``` - * - * @generated from field: google.protobuf.Timestamp lt = 3; - */ - value: Timestamp; - case: 'lt'; - } - | { - /** - * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. - * - * ```proto - * message MyTimestamp { - * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] - * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; - * } - * ``` - * - * @generated from field: google.protobuf.Timestamp lte = 4; - */ - value: Timestamp; - case: 'lte'; - } - | { - /** - * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. - * - * ```proto - * message MyTimestamp { - * // value must be less than now - * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; - * } - * ``` - * - * @generated from field: bool lt_now = 7; - */ - value: boolean; - case: 'ltNow'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.TimestampRules.less_than + */ + lessThan: { + /** + * requires the duration field value to be less than the specified value (field < value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyDuration { + * // duration must be less than 'P3D' [duration.lt] + * google.protobuf.Duration value = 1 [(buf.validate.field).duration.lt = { seconds: 259200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lt = 3; + */ + value: Timestamp; + case: "lt"; + } | { + /** + * requires the timestamp field value to be less than or equal to the specified value (field <= value). If the field value doesn't meet the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be less than or equal to '2023-05-14T00:00:00Z' [timestamp.lte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.lte = { seconds: 1678867200 }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp lte = 4; + */ + value: Timestamp; + case: "lte"; + } | { + /** + * `lt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be less than the current time. `lt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be less than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.lt_now = true]; + * } + * ``` + * + * @generated from field: bool lt_now = 7; + */ + value: boolean; + case: "ltNow"; + } | { case: undefined; value?: undefined }; - /** - * @generated from oneof buf.validate.TimestampRules.greater_than - */ - greaterThan: - | { - /** - * `gt` requires the timestamp field value to be greater than the specified - * value (exclusive). If the value of `gt` is larger than a specified `lt` - * or `lte`, the range is reversed, and the field value must be outside the - * specified range. If the field value doesn't meet the required conditions, - * an error message is generated. - * - * ```proto - * message MyTimestamp { - * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] - * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; - * - * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] - * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; - * - * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] - * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; - * } - * ``` - * - * @generated from field: google.protobuf.Timestamp gt = 5; - */ - value: Timestamp; - case: 'gt'; - } - | { - /** - * `gte` requires the timestamp field value to be greater than or equal to the - * specified value (exclusive). If the value of `gte` is larger than a - * specified `lt` or `lte`, the range is reversed, and the field value - * must be outside the specified range. If the field value doesn't meet - * the required conditions, an error message is generated. - * - * ```proto - * message MyTimestamp { - * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] - * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; - * - * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] - * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; - * - * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] - * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; - * } - * ``` - * - * @generated from field: google.protobuf.Timestamp gte = 6; - */ - value: Timestamp; - case: 'gte'; - } - | { - /** - * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. - * - * ```proto - * message MyTimestamp { - * // value must be greater than now - * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; - * } - * ``` - * - * @generated from field: bool gt_now = 8; - */ - value: boolean; - case: 'gtNow'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof buf.validate.TimestampRules.greater_than + */ + greaterThan: { + /** + * `gt` requires the timestamp field value to be greater than the specified + * value (exclusive). If the value of `gt` is larger than a specified `lt` + * or `lte`, the range is reversed, and the field value must be outside the + * specified range. If the field value doesn't meet the required conditions, + * an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than '2023-01-01T00:00:00Z' [timestamp.gt] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gt = { seconds: 1672444800 }]; + * + * // timestamp must be greater than '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gt_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gt: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gt_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gt: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gt = 5; + */ + value: Timestamp; + case: "gt"; + } | { + /** + * `gte` requires the timestamp field value to be greater than or equal to the + * specified value (exclusive). If the value of `gte` is larger than a + * specified `lt` or `lte`, the range is reversed, and the field value + * must be outside the specified range. If the field value doesn't meet + * the required conditions, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' [timestamp.gte] + * google.protobuf.Timestamp value = 1 [(buf.validate.field).timestamp.gte = { seconds: 1672444800 }]; + * + * // timestamp must be greater than or equal to '2023-01-01T00:00:00Z' and less than '2023-01-02T00:00:00Z' [timestamp.gte_lt] + * google.protobuf.Timestamp another_value = 2 [(buf.validate.field).timestamp = { gte: { seconds: 1672444800 }, lt: { seconds: 1672531200 } }]; + * + * // timestamp must be greater than or equal to '2023-01-02T00:00:00Z' or less than '2023-01-01T00:00:00Z' [timestamp.gte_lt_exclusive] + * google.protobuf.Timestamp other_value = 3 [(buf.validate.field).timestamp = { gte: { seconds: 1672531200 }, lt: { seconds: 1672444800 } }]; + * } + * ``` + * + * @generated from field: google.protobuf.Timestamp gte = 6; + */ + value: Timestamp; + case: "gte"; + } | { + /** + * `gt_now` specifies that this field, of the `google.protobuf.Timestamp` type, must be greater than the current time. `gt_now` can only be used with the `within` rule. + * + * ```proto + * message MyTimestamp { + * // value must be greater than now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.gt_now = true]; + * } + * ``` + * + * @generated from field: bool gt_now = 8; + */ + value: boolean; + case: "gtNow"; + } | { case: undefined; value?: undefined }; - /** - * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. - * - * ```proto - * message MyTimestamp { - * // value must be within 1 hour of now - * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; - * } - * ``` - * - * @generated from field: optional google.protobuf.Duration within = 9; - */ - within?: Duration; + /** + * `within` specifies that this field, of the `google.protobuf.Timestamp` type, must be within the specified duration of the current time. If the field value isn't within the duration, an error message is generated. + * + * ```proto + * message MyTimestamp { + * // value must be within 1 hour of now + * google.protobuf.Timestamp created_at = 1 [(buf.validate.field).timestamp.within = {seconds: 3600}]; + * } + * ``` + * + * @generated from field: optional google.protobuf.Duration within = 9; + */ + within?: Duration; - /** - * `example` specifies values that the field may have. These values SHOULD - * conform to other rules. `example` values will not impact validation - * but may be used as helpful guidance on how to populate the given field. - * - * ```proto - * message MyTimestamp { - * google.protobuf.Timestamp value = 1 [ - * (buf.validate.field).timestamp.example = { seconds: 1672444800 }, - * (buf.validate.field).timestamp.example = { seconds: 1672531200 }, - * ]; - * } - * ``` - * - * @generated from field: repeated google.protobuf.Timestamp example = 10; - */ - example: Timestamp[]; + /** + * `example` specifies values that the field may have. These values SHOULD + * conform to other rules. `example` values will not impact validation + * but may be used as helpful guidance on how to populate the given field. + * + * ```proto + * message MyTimestamp { + * google.protobuf.Timestamp value = 1 [ + * (buf.validate.field).timestamp.example = { seconds: 1672444800 }, + * (buf.validate.field).timestamp.example = { seconds: 1672531200 }, + * ]; + * } + * ``` + * + * @generated from field: repeated google.protobuf.Timestamp example = 10; + */ + example: Timestamp[]; }; /** * Describes the message buf.validate.TimestampRules. * Use `create(TimestampRulesSchema)` to create a new message. */ -export const TimestampRulesSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 26); +export const TimestampRulesSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 26); /** * `Violations` is a collection of `Violation` messages. This message type is returned by @@ -4430,22 +4257,21 @@ export const TimestampRulesSchema: GenMessage = * * @generated from message buf.validate.Violations */ -export type Violations = Message<'buf.validate.Violations'> & { - /** - * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. - * - * @generated from field: repeated buf.validate.Violation violations = 1; - */ - violations: Violation[]; +export type Violations = Message<"buf.validate.Violations"> & { + /** + * `violations` is a repeated field that contains all the `Violation` messages corresponding to the violations detected. + * + * @generated from field: repeated buf.validate.Violation violations = 1; + */ + violations: Violation[]; }; /** * Describes the message buf.validate.Violations. * Use `create(ViolationsSchema)` to create a new message. */ -export const ViolationsSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 27); +export const ViolationsSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 27); /** * `Violation` represents a single instance where a validation rule, expressed @@ -4494,97 +4320,96 @@ export const ViolationsSchema: GenMessage = * * @generated from message buf.validate.Violation */ -export type Violation = Message<'buf.validate.Violation'> & { - /** - * `field` is a machine-readable path to the field that failed validation. - * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. - * - * For example, consider the following message: - * - * ```proto - * message Message { - * bool a = 1 [(buf.validate.field).required = true]; - * } - * ``` - * - * It could produce the following violation: - * - * ```textproto - * violation { - * field { element { field_number: 1, field_name: "a", field_type: 8 } } - * ... - * } - * ``` - * - * @generated from field: optional buf.validate.FieldPath field = 5; - */ - field?: FieldPath; +export type Violation = Message<"buf.validate.Violation"> & { + /** + * `field` is a machine-readable path to the field that failed validation. + * This could be a nested field, in which case the path will include all the parent fields leading to the actual field that caused the violation. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * } + * ``` + * + * It could produce the following violation: + * + * ```textproto + * violation { + * field { element { field_number: 1, field_name: "a", field_type: 8 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath field = 5; + */ + field?: FieldPath; - /** - * `rule` is a machine-readable path that points to the specific rule that failed validation. - * This will be a nested field starting from the FieldRules of the field that failed validation. - * For custom rules, this will provide the path of the rule, e.g. `cel[0]`. - * - * For example, consider the following message: - * - * ```proto - * message Message { - * bool a = 1 [(buf.validate.field).required = true]; - * bool b = 2 [(buf.validate.field).cel = { - * id: "custom_rule", - * expression: "!this ? 'b must be true': ''" - * }] - * } - * ``` - * - * It could produce the following violations: - * - * ```textproto - * violation { - * rule { element { field_number: 25, field_name: "required", field_type: 8 } } - * ... - * } - * violation { - * rule { element { field_number: 23, field_name: "cel", field_type: 11, index: 0 } } - * ... - * } - * ``` - * - * @generated from field: optional buf.validate.FieldPath rule = 6; - */ - rule?: FieldPath; + /** + * `rule` is a machine-readable path that points to the specific rule that failed validation. + * This will be a nested field starting from the FieldRules of the field that failed validation. + * For custom rules, this will provide the path of the rule, e.g. `cel[0]`. + * + * For example, consider the following message: + * + * ```proto + * message Message { + * bool a = 1 [(buf.validate.field).required = true]; + * bool b = 2 [(buf.validate.field).cel = { + * id: "custom_rule", + * expression: "!this ? 'b must be true': ''" + * }] + * } + * ``` + * + * It could produce the following violations: + * + * ```textproto + * violation { + * rule { element { field_number: 25, field_name: "required", field_type: 8 } } + * ... + * } + * violation { + * rule { element { field_number: 23, field_name: "cel", field_type: 11, index: 0 } } + * ... + * } + * ``` + * + * @generated from field: optional buf.validate.FieldPath rule = 6; + */ + rule?: FieldPath; - /** - * `rule_id` is the unique identifier of the `Rule` that was not fulfilled. - * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated. - * - * @generated from field: optional string rule_id = 2; - */ - ruleId: string; + /** + * `rule_id` is the unique identifier of the `Rule` that was not fulfilled. + * This is the same `id` that was specified in the `Rule` message, allowing easy tracing of which rule was violated. + * + * @generated from field: optional string rule_id = 2; + */ + ruleId: string; - /** - * `message` is a human-readable error message that describes the nature of the violation. - * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation. - * - * @generated from field: optional string message = 3; - */ - message: string; + /** + * `message` is a human-readable error message that describes the nature of the violation. + * This can be the default error message from the violated `Rule`, or it can be a custom message that gives more context about the violation. + * + * @generated from field: optional string message = 3; + */ + message: string; - /** - * `for_key` indicates whether the violation was caused by a map key, rather than a value. - * - * @generated from field: optional bool for_key = 4; - */ - forKey: boolean; + /** + * `for_key` indicates whether the violation was caused by a map key, rather than a value. + * + * @generated from field: optional bool for_key = 4; + */ + forKey: boolean; }; /** * Describes the message buf.validate.Violation. * Use `create(ViolationSchema)` to create a new message. */ -export const ViolationSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 28); +export const ViolationSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 28); /** * `FieldPath` provides a path to a nested protobuf field. @@ -4594,22 +4419,21 @@ export const ViolationSchema: GenMessage = * * @generated from message buf.validate.FieldPath */ -export type FieldPath = Message<'buf.validate.FieldPath'> & { - /** - * `elements` contains each element of the path, starting from the root and recursing downward. - * - * @generated from field: repeated buf.validate.FieldPathElement elements = 1; - */ - elements: FieldPathElement[]; +export type FieldPath = Message<"buf.validate.FieldPath"> & { + /** + * `elements` contains each element of the path, starting from the root and recursing downward. + * + * @generated from field: repeated buf.validate.FieldPathElement elements = 1; + */ + elements: FieldPathElement[]; }; /** * Describes the message buf.validate.FieldPath. * Use `create(FieldPathSchema)` to create a new message. */ -export const FieldPathSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 29); +export const FieldPathSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 29); /** * `FieldPathElement` provides enough information to nest through a single protobuf field. @@ -4620,116 +4444,109 @@ export const FieldPathSchema: GenMessage = * * @generated from message buf.validate.FieldPathElement */ -export type FieldPathElement = Message<'buf.validate.FieldPathElement'> & { - /** - * `field_number` is the field number this path element refers to. - * - * @generated from field: optional int32 field_number = 1; - */ - fieldNumber: number; +export type FieldPathElement = Message<"buf.validate.FieldPathElement"> & { + /** + * `field_number` is the field number this path element refers to. + * + * @generated from field: optional int32 field_number = 1; + */ + fieldNumber: number; - /** - * `field_name` contains the field name this path element refers to. - * This can be used to display a human-readable path even if the field number is unknown. - * - * @generated from field: optional string field_name = 2; - */ - fieldName: string; + /** + * `field_name` contains the field name this path element refers to. + * This can be used to display a human-readable path even if the field number is unknown. + * + * @generated from field: optional string field_name = 2; + */ + fieldName: string; - /** - * `field_type` specifies the type of this field. When using reflection, this value is not needed. - * - * This value is provided to make it possible to traverse unknown fields through wire data. - * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes. - * - * [1]: https://protobuf.dev/programming-guides/encoding/#packed - * [2]: https://protobuf.dev/programming-guides/encoding/#groups - * - * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and - * can be explicitly used in Protocol Buffers 2023 Edition. - * - * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3; - */ - fieldType: FieldDescriptorProto_Type; + /** + * `field_type` specifies the type of this field. When using reflection, this value is not needed. + * + * This value is provided to make it possible to traverse unknown fields through wire data. + * When traversing wire data, be mindful of both packed[1] and delimited[2] encoding schemes. + * + * [1]: https://protobuf.dev/programming-guides/encoding/#packed + * [2]: https://protobuf.dev/programming-guides/encoding/#groups + * + * N.B.: Although groups are deprecated, the corresponding delimited encoding scheme is not, and + * can be explicitly used in Protocol Buffers 2023 Edition. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type field_type = 3; + */ + fieldType: FieldDescriptorProto_Type; - /** - * `key_type` specifies the map key type of this field. This value is useful when traversing - * unknown fields through wire data: specifically, it allows handling the differences between - * different integer encodings. - * - * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4; - */ - keyType: FieldDescriptorProto_Type; + /** + * `key_type` specifies the map key type of this field. This value is useful when traversing + * unknown fields through wire data: specifically, it allows handling the differences between + * different integer encodings. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type key_type = 4; + */ + keyType: FieldDescriptorProto_Type; - /** - * `value_type` specifies map value type of this field. This is useful if you want to display a - * value inside unknown fields through wire data. - * - * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5; - */ - valueType: FieldDescriptorProto_Type; + /** + * `value_type` specifies map value type of this field. This is useful if you want to display a + * value inside unknown fields through wire data. + * + * @generated from field: optional google.protobuf.FieldDescriptorProto.Type value_type = 5; + */ + valueType: FieldDescriptorProto_Type; - /** - * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field. - * - * @generated from oneof buf.validate.FieldPathElement.subscript - */ - subscript: - | { - /** - * `index` specifies a 0-based index into a repeated field. - * - * @generated from field: uint64 index = 6; - */ - value: bigint; - case: 'index'; - } - | { - /** - * `bool_key` specifies a map key of type bool. - * - * @generated from field: bool bool_key = 7; - */ - value: boolean; - case: 'boolKey'; - } - | { - /** - * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64. - * - * @generated from field: int64 int_key = 8; - */ - value: bigint; - case: 'intKey'; - } - | { - /** - * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64. - * - * @generated from field: uint64 uint_key = 9; - */ - value: bigint; - case: 'uintKey'; - } - | { - /** - * `string_key` specifies a map key of type string. - * - * @generated from field: string string_key = 10; - */ - value: string; - case: 'stringKey'; - } - | { case: undefined; value?: undefined }; + /** + * `subscript` contains a repeated index or map key, if this path element nests into a repeated or map field. + * + * @generated from oneof buf.validate.FieldPathElement.subscript + */ + subscript: { + /** + * `index` specifies a 0-based index into a repeated field. + * + * @generated from field: uint64 index = 6; + */ + value: bigint; + case: "index"; + } | { + /** + * `bool_key` specifies a map key of type bool. + * + * @generated from field: bool bool_key = 7; + */ + value: boolean; + case: "boolKey"; + } | { + /** + * `int_key` specifies a map key of type int32, int64, sint32, sint64, sfixed32 or sfixed64. + * + * @generated from field: int64 int_key = 8; + */ + value: bigint; + case: "intKey"; + } | { + /** + * `uint_key` specifies a map key of type uint32, uint64, fixed32 or fixed64. + * + * @generated from field: uint64 uint_key = 9; + */ + value: bigint; + case: "uintKey"; + } | { + /** + * `string_key` specifies a map key of type string. + * + * @generated from field: string string_key = 10; + */ + value: string; + case: "stringKey"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message buf.validate.FieldPathElement. * Use `create(FieldPathElementSchema)` to create a new message. */ -export const FieldPathElementSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_buf_validate_validate, 30); +export const FieldPathElementSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_buf_validate_validate, 30); /** * Specifies how FieldRules.ignore behaves. See the documentation for @@ -4738,169 +4555,170 @@ export const FieldPathElementSchema: GenMessage = * @generated from enum buf.validate.Ignore */ export enum Ignore { - /** - * Validation is only skipped if it's an unpopulated nullable field. - * - * ```proto - * syntax="proto3"; - * - * message Request { - * // The uri rule applies to any value, including the empty string. - * string foo = 1 [ - * (buf.validate.field).string.uri = true - * ]; - * - * // The uri rule only applies if the field is set, including if it's - * // set to the empty string. - * optional string bar = 2 [ - * (buf.validate.field).string.uri = true - * ]; - * - * // The min_items rule always applies, even if the list is empty. - * repeated string baz = 3 [ - * (buf.validate.field).repeated.min_items = 3 - * ]; - * - * // The custom CEL rule applies only if the field is set, including if - * // it's the "zero" value of that message. - * SomeMessage quux = 4 [ - * (buf.validate.field).cel = {/* ... *\/} - * ]; - * } - * ``` - * - * @generated from enum value: IGNORE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * Validation is only skipped if it's an unpopulated nullable field. + * + * ```proto + * syntax="proto3"; + * + * message Request { + * // The uri rule applies to any value, including the empty string. + * string foo = 1 [ + * (buf.validate.field).string.uri = true + * ]; + * + * // The uri rule only applies if the field is set, including if it's + * // set to the empty string. + * optional string bar = 2 [ + * (buf.validate.field).string.uri = true + * ]; + * + * // The min_items rule always applies, even if the list is empty. + * repeated string baz = 3 [ + * (buf.validate.field).repeated.min_items = 3 + * ]; + * + * // The custom CEL rule applies only if the field is set, including if + * // it's the "zero" value of that message. + * SomeMessage quux = 4 [ + * (buf.validate.field).cel = {/* ... *\/} + * ]; + * } + * ``` + * + * @generated from enum value: IGNORE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * Validation is skipped if the field is unpopulated. This rule is redundant - * if the field is already nullable. - * - * ```proto - * syntax="proto3 - * - * message Request { - * // The uri rule applies only if the value is not the empty string. - * string foo = 1 [ - * (buf.validate.field).string.uri = true, - * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED - * ]; - * - * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this - * // case: the uri rule only applies if the field is set, including if - * // it's set to the empty string. - * optional string bar = 2 [ - * (buf.validate.field).string.uri = true, - * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED - * ]; - * - * // The min_items rule only applies if the list has at least one item. - * repeated string baz = 3 [ - * (buf.validate.field).repeated.min_items = 3, - * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED - * ]; - * - * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this - * // case: the custom CEL rule applies only if the field is set, including - * // if it's the "zero" value of that message. - * SomeMessage quux = 4 [ - * (buf.validate.field).cel = {/* ... *\/}, - * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED - * ]; - * } - * ``` - * - * @generated from enum value: IGNORE_IF_UNPOPULATED = 1; - */ - IF_UNPOPULATED = 1, + /** + * Validation is skipped if the field is unpopulated. This rule is redundant + * if the field is already nullable. + * + * ```proto + * syntax="proto3 + * + * message Request { + * // The uri rule applies only if the value is not the empty string. + * string foo = 1 [ + * (buf.validate.field).string.uri = true, + * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED + * ]; + * + * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this + * // case: the uri rule only applies if the field is set, including if + * // it's set to the empty string. + * optional string bar = 2 [ + * (buf.validate.field).string.uri = true, + * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED + * ]; + * + * // The min_items rule only applies if the list has at least one item. + * repeated string baz = 3 [ + * (buf.validate.field).repeated.min_items = 3, + * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED + * ]; + * + * // IGNORE_IF_UNPOPULATED is equivalent to IGNORE_UNSPECIFIED in this + * // case: the custom CEL rule applies only if the field is set, including + * // if it's the "zero" value of that message. + * SomeMessage quux = 4 [ + * (buf.validate.field).cel = {/* ... *\/}, + * (buf.validate.field).ignore = IGNORE_IF_UNPOPULATED + * ]; + * } + * ``` + * + * @generated from enum value: IGNORE_IF_UNPOPULATED = 1; + */ + IF_UNPOPULATED = 1, - /** - * Validation is skipped if the field is unpopulated or if it is a nullable - * field populated with its default value. This is typically the zero or - * empty value, but proto2 scalars support custom defaults. For messages, the - * default is a non-null message with all its fields unpopulated. - * - * ```proto - * syntax="proto3 - * - * message Request { - * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in - * // this case; the uri rule applies only if the value is not the empty - * // string. - * string foo = 1 [ - * (buf.validate.field).string.uri = true, - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE - * ]; - * - * // The uri rule only applies if the field is set to a value other than - * // the empty string. - * optional string bar = 2 [ - * (buf.validate.field).string.uri = true, - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE - * ]; - * - * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in - * // this case; the min_items rule only applies if the list has at least - * // one item. - * repeated string baz = 3 [ - * (buf.validate.field).repeated.min_items = 3, - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE - * ]; - * - * // The custom CEL rule only applies if the field is set to a value other - * // than an empty message (i.e., fields are unpopulated). - * SomeMessage quux = 4 [ - * (buf.validate.field).cel = {/* ... *\/}, - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE - * ]; - * } - * ``` - * - * This rule is affected by proto2 custom default values: - * - * ```proto - * syntax="proto2"; - * - * message Request { - * // The gt rule only applies if the field is set and it's value is not - * the default (i.e., not -42). The rule even applies if the field is set - * to zero since the default value differs. - * optional int32 value = 1 [ - * default = -42, - * (buf.validate.field).int32.gt = 0, - * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE - * ]; - * } - * - * @generated from enum value: IGNORE_IF_DEFAULT_VALUE = 2; - */ - IF_DEFAULT_VALUE = 2, + /** + * Validation is skipped if the field is unpopulated or if it is a nullable + * field populated with its default value. This is typically the zero or + * empty value, but proto2 scalars support custom defaults. For messages, the + * default is a non-null message with all its fields unpopulated. + * + * ```proto + * syntax="proto3 + * + * message Request { + * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in + * // this case; the uri rule applies only if the value is not the empty + * // string. + * string foo = 1 [ + * (buf.validate.field).string.uri = true, + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE + * ]; + * + * // The uri rule only applies if the field is set to a value other than + * // the empty string. + * optional string bar = 2 [ + * (buf.validate.field).string.uri = true, + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE + * ]; + * + * // IGNORE_IF_DEFAULT_VALUE is equivalent to IGNORE_IF_UNPOPULATED in + * // this case; the min_items rule only applies if the list has at least + * // one item. + * repeated string baz = 3 [ + * (buf.validate.field).repeated.min_items = 3, + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE + * ]; + * + * // The custom CEL rule only applies if the field is set to a value other + * // than an empty message (i.e., fields are unpopulated). + * SomeMessage quux = 4 [ + * (buf.validate.field).cel = {/* ... *\/}, + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE + * ]; + * } + * ``` + * + * This rule is affected by proto2 custom default values: + * + * ```proto + * syntax="proto2"; + * + * message Request { + * // The gt rule only applies if the field is set and it's value is not + * the default (i.e., not -42). The rule even applies if the field is set + * to zero since the default value differs. + * optional int32 value = 1 [ + * default = -42, + * (buf.validate.field).int32.gt = 0, + * (buf.validate.field).ignore = IGNORE_IF_DEFAULT_VALUE + * ]; + * } + * + * @generated from enum value: IGNORE_IF_DEFAULT_VALUE = 2; + */ + IF_DEFAULT_VALUE = 2, - /** - * The validation rules of this field will be skipped and not evaluated. This - * is useful for situations that necessitate turning off the rules of a field - * containing a message that may not make sense in the current context, or to - * temporarily disable rules during development. - * - * ```proto - * message MyMessage { - * // The field's rules will always be ignored, including any validation's - * // on value's fields. - * MyOtherMessage value = 1 [ - * (buf.validate.field).ignore = IGNORE_ALWAYS]; - * } - * ``` - * - * @generated from enum value: IGNORE_ALWAYS = 3; - */ - ALWAYS = 3 + /** + * The validation rules of this field will be skipped and not evaluated. This + * is useful for situations that necessitate turning off the rules of a field + * containing a message that may not make sense in the current context, or to + * temporarily disable rules during development. + * + * ```proto + * message MyMessage { + * // The field's rules will always be ignored, including any validation's + * // on value's fields. + * MyOtherMessage value = 1 [ + * (buf.validate.field).ignore = IGNORE_ALWAYS]; + * } + * ``` + * + * @generated from enum value: IGNORE_ALWAYS = 3; + */ + ALWAYS = 3, } /** * Describes the enum buf.validate.Ignore. */ -export const IgnoreSchema: GenEnum = /*@__PURE__*/ enumDesc(file_buf_validate_validate, 0); +export const IgnoreSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_validate_validate, 0); /** * KnownRegex contains some well-known patterns. @@ -4908,32 +4726,31 @@ export const IgnoreSchema: GenEnum = /*@__PURE__*/ enumDesc(file_buf_val * @generated from enum buf.validate.KnownRegex */ export enum KnownRegex { - /** - * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: KNOWN_REGEX_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2). - * - * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1; - */ - HTTP_HEADER_NAME = 1, + /** + * HTTP header name as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_NAME = 1; + */ + HTTP_HEADER_NAME = 1, - /** - * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4). - * - * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2; - */ - HTTP_HEADER_VALUE = 2 + /** + * HTTP header value as defined by [RFC 7230](https://datatracker.ietf.org/doc/html/rfc7230#section-3.2.4). + * + * @generated from enum value: KNOWN_REGEX_HTTP_HEADER_VALUE = 2; + */ + HTTP_HEADER_VALUE = 2, } /** * Describes the enum buf.validate.KnownRegex. */ -export const KnownRegexSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_buf_validate_validate, 1); +export const KnownRegexSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_buf_validate_validate, 1); /** * Rules specify the validations to be performed on this message. By default, @@ -4941,9 +4758,8 @@ export const KnownRegexSchema: GenEnum = * * @generated from extension: optional buf.validate.MessageRules message = 1159; */ -export const message: GenExtension = - /*@__PURE__*/ - extDesc(file_buf_validate_validate, 0); +export const message: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 0); /** * Rules specify the validations to be performed on this oneof. By default, @@ -4951,9 +4767,8 @@ export const message: GenExtension = * * @generated from extension: optional buf.validate.OneofRules oneof = 1159; */ -export const oneof: GenExtension = - /*@__PURE__*/ - extDesc(file_buf_validate_validate, 1); +export const oneof: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 1); /** * Rules specify the validations to be performed on this field. By default, @@ -4961,9 +4776,8 @@ export const oneof: GenExtension = * * @generated from extension: optional buf.validate.FieldRules field = 1159; */ -export const field: GenExtension = - /*@__PURE__*/ - extDesc(file_buf_validate_validate, 2); +export const field: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 2); /** * Specifies predefined rules. When extending a standard rule message, @@ -4985,6 +4799,6 @@ export const field: GenExtension = * * @generated from extension: optional buf.validate.PredefinedRules predefined = 1160; */ -export const predefined: GenExtension = - /*@__PURE__*/ - extDesc(file_buf_validate_validate, 3); +export const predefined: GenExtension = /*@__PURE__*/ + extDesc(file_buf_validate_validate, 3); + diff --git a/web/src/lib/gen/mantrae/v1/agent_pb.ts b/web/src/lib/gen/mantrae/v1/agent_pb.ts index 46447f8..61fbba8 100644 --- a/web/src/lib/gen/mantrae/v1/agent_pb.ts +++ b/web/src/lib/gen/mantrae/v1/agent_pb.ts @@ -2,472 +2,457 @@ // @generated from file mantrae/v1/agent.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/agent.proto. */ -export const file_mantrae_v1_agent: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChZtYW50cmFlL3YxL2FnZW50LnByb3RvEgptYW50cmFlLnYxIo0CCgVBZ2VudBIKCgJpZBgBIAEoCRISCgpwcm9maWxlX2lkGAIgASgDEhAKCGhvc3RuYW1lGAMgASgJEhEKCXB1YmxpY19pcBgEIAEoCRISCgpwcml2YXRlX2lwGAUgASgJEhEKCWFjdGl2ZV9pcBgGIAEoCRINCgV0b2tlbhgHIAEoCRIpCgpjb250YWluZXJzGAggAygLMhUubWFudHJhZS52MS5Db250YWluZXISLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiuAIKCUNvbnRhaW5lchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEjEKBmxhYmVscxgDIAMoCzIhLm1hbnRyYWUudjEuQ29udGFpbmVyLkxhYmVsc0VudHJ5Eg0KBWltYWdlGAQgASgJEjMKB3BvcnRtYXAYBSADKAsyIi5tYW50cmFlLnYxLkNvbnRhaW5lci5Qb3J0bWFwRW50cnkSDgoGc3RhdHVzGAYgASgJEisKB2NyZWF0ZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi0KC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLgoMUG9ydG1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiKQoPR2V0QWdlbnRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABIjQKEEdldEFnZW50UmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50IjQKEkNyZWF0ZUFnZW50UmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAIjcKE0NyZWF0ZUFnZW50UmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50IkYKFFVwZGF0ZUFnZW50SVBSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABEhYKAmlwGAIgASgJQgq6SAfIAQFyAhABIjkKFVVwZGF0ZUFnZW50SVBSZXNwb25zZRIgCgVhZ2VudBgBIAEoCzIRLm1hbnRyYWUudjEuQWdlbnQiLAoSRGVsZXRlQWdlbnRSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABIhUKE0RlbGV0ZUFnZW50UmVzcG9uc2Ui0gEKEUxpc3RBZ2VudHNSZXF1ZXN0Eh4KCnByb2ZpbGVfaWQYASABKANCCrpIB8gBASICIAASagoFbGltaXQYAiABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAMgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiTAoSTGlzdEFnZW50c1Jlc3BvbnNlEiEKBmFnZW50cxgBIAMoCzIRLm1hbnRyYWUudjEuQWdlbnQSEwoLdG90YWxfY291bnQYAiABKAMihQEKEkhlYWx0aENoZWNrUmVxdWVzdBIbCgptYWNoaW5lX2lkGAEgASgJQge6SARyAhABEhkKCGhvc3RuYW1lGAIgASgJQge6SARyAhABEhoKCXB1YmxpY19pcBgDIAEoCUIHukgEcgIQARIbCgpwcml2YXRlX2lwGAQgASgJQge6SARyAhABIjcKE0hlYWx0aENoZWNrUmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50IjEKF1JvdGF0ZUFnZW50VG9rZW5SZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABIjwKGFJvdGF0ZUFnZW50VG9rZW5SZXNwb25zZRIgCgVhZ2VudBgBIAEoCzIRLm1hbnRyYWUudjEuQWdlbnQy0QQKDEFnZW50U2VydmljZRJKCghHZXRBZ2VudBIbLm1hbnRyYWUudjEuR2V0QWdlbnRSZXF1ZXN0GhwubWFudHJhZS52MS5HZXRBZ2VudFJlc3BvbnNlIgOQAgESTgoLQ3JlYXRlQWdlbnQSHi5tYW50cmFlLnYxLkNyZWF0ZUFnZW50UmVxdWVzdBofLm1hbnRyYWUudjEuQ3JlYXRlQWdlbnRSZXNwb25zZRJUCg1VcGRhdGVBZ2VudElQEiAubWFudHJhZS52MS5VcGRhdGVBZ2VudElQUmVxdWVzdBohLm1hbnRyYWUudjEuVXBkYXRlQWdlbnRJUFJlc3BvbnNlEk4KC0RlbGV0ZUFnZW50Eh4ubWFudHJhZS52MS5EZWxldGVBZ2VudFJlcXVlc3QaHy5tYW50cmFlLnYxLkRlbGV0ZUFnZW50UmVzcG9uc2USUAoKTGlzdEFnZW50cxIdLm1hbnRyYWUudjEuTGlzdEFnZW50c1JlcXVlc3QaHi5tYW50cmFlLnYxLkxpc3RBZ2VudHNSZXNwb25zZSIDkAIBEk4KC0hlYWx0aENoZWNrEh4ubWFudHJhZS52MS5IZWFsdGhDaGVja1JlcXVlc3QaHy5tYW50cmFlLnYxLkhlYWx0aENoZWNrUmVzcG9uc2USXQoQUm90YXRlQWdlbnRUb2tlbhIjLm1hbnRyYWUudjEuUm90YXRlQWdlbnRUb2tlblJlcXVlc3QaJC5tYW50cmFlLnYxLlJvdGF0ZUFnZW50VG9rZW5SZXNwb25zZUKkAQoOY29tLm1hbnRyYWUudjFCCkFnZW50UHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_agent: GenFile = /*@__PURE__*/ + fileDesc("ChZtYW50cmFlL3YxL2FnZW50LnByb3RvEgptYW50cmFlLnYxIo0CCgVBZ2VudBIKCgJpZBgBIAEoCRISCgpwcm9maWxlX2lkGAIgASgDEhAKCGhvc3RuYW1lGAMgASgJEhEKCXB1YmxpY19pcBgEIAEoCRISCgpwcml2YXRlX2lwGAUgASgJEhEKCWFjdGl2ZV9pcBgGIAEoCRINCgV0b2tlbhgHIAEoCRIpCgpjb250YWluZXJzGAggAygLMhUubWFudHJhZS52MS5Db250YWluZXISLgoKY3JlYXRlZF9hdBgJIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgKIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiuAIKCUNvbnRhaW5lchIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEjEKBmxhYmVscxgDIAMoCzIhLm1hbnRyYWUudjEuQ29udGFpbmVyLkxhYmVsc0VudHJ5Eg0KBWltYWdlGAQgASgJEjMKB3BvcnRtYXAYBSADKAsyIi5tYW50cmFlLnYxLkNvbnRhaW5lci5Qb3J0bWFwRW50cnkSDgoGc3RhdHVzGAYgASgJEisKB2NyZWF0ZWQYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wGi0KC0xhYmVsc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEaLgoMUG9ydG1hcEVudHJ5EgsKA2tleRgBIAEoBRINCgV2YWx1ZRgCIAEoBToCOAEiJgoPR2V0QWdlbnRSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABIjQKEEdldEFnZW50UmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50IjEKEkNyZWF0ZUFnZW50UmVxdWVzdBIbCgpwcm9maWxlX2lkGAEgASgDQge6SAQiAiAAIjcKE0NyZWF0ZUFnZW50UmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50IkAKFFVwZGF0ZUFnZW50SVBSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABEhMKAmlwGAIgASgJQge6SARyAnABIjkKFVVwZGF0ZUFnZW50SVBSZXNwb25zZRIgCgVhZ2VudBgBIAEoCzIRLm1hbnRyYWUudjEuQWdlbnQiKQoSRGVsZXRlQWdlbnRSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABIhUKE0RlbGV0ZUFnZW50UmVzcG9uc2UizwEKEUxpc3RBZ2VudHNSZXF1ZXN0EhsKCnByb2ZpbGVfaWQYASABKANCB7pIBCICIAASagoFbGltaXQYAiABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAMgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiTAoSTGlzdEFnZW50c1Jlc3BvbnNlEiEKBmFnZW50cxgBIAMoCzIRLm1hbnRyYWUudjEuQWdlbnQSEwoLdG90YWxfY291bnQYAiABKAMihQEKEkhlYWx0aENoZWNrUmVxdWVzdBIbCgptYWNoaW5lX2lkGAEgASgJQge6SARyAhABEhkKCGhvc3RuYW1lGAIgASgJQge6SARyAhABEhoKCXB1YmxpY19pcBgDIAEoCUIHukgEcgIQARIbCgpwcml2YXRlX2lwGAQgASgJQge6SARyAhABIjcKE0hlYWx0aENoZWNrUmVzcG9uc2USIAoFYWdlbnQYASABKAsyES5tYW50cmFlLnYxLkFnZW50Ii4KF1JvdGF0ZUFnZW50VG9rZW5SZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABIjwKGFJvdGF0ZUFnZW50VG9rZW5SZXNwb25zZRIgCgVhZ2VudBgBIAEoCzIRLm1hbnRyYWUudjEuQWdlbnQy0QQKDEFnZW50U2VydmljZRJKCghHZXRBZ2VudBIbLm1hbnRyYWUudjEuR2V0QWdlbnRSZXF1ZXN0GhwubWFudHJhZS52MS5HZXRBZ2VudFJlc3BvbnNlIgOQAgESTgoLQ3JlYXRlQWdlbnQSHi5tYW50cmFlLnYxLkNyZWF0ZUFnZW50UmVxdWVzdBofLm1hbnRyYWUudjEuQ3JlYXRlQWdlbnRSZXNwb25zZRJUCg1VcGRhdGVBZ2VudElQEiAubWFudHJhZS52MS5VcGRhdGVBZ2VudElQUmVxdWVzdBohLm1hbnRyYWUudjEuVXBkYXRlQWdlbnRJUFJlc3BvbnNlEk4KC0RlbGV0ZUFnZW50Eh4ubWFudHJhZS52MS5EZWxldGVBZ2VudFJlcXVlc3QaHy5tYW50cmFlLnYxLkRlbGV0ZUFnZW50UmVzcG9uc2USUAoKTGlzdEFnZW50cxIdLm1hbnRyYWUudjEuTGlzdEFnZW50c1JlcXVlc3QaHi5tYW50cmFlLnYxLkxpc3RBZ2VudHNSZXNwb25zZSIDkAIBEk4KC0hlYWx0aENoZWNrEh4ubWFudHJhZS52MS5IZWFsdGhDaGVja1JlcXVlc3QaHy5tYW50cmFlLnYxLkhlYWx0aENoZWNrUmVzcG9uc2USXQoQUm90YXRlQWdlbnRUb2tlbhIjLm1hbnRyYWUudjEuUm90YXRlQWdlbnRUb2tlblJlcXVlc3QaJC5tYW50cmFlLnYxLlJvdGF0ZUFnZW50VG9rZW5SZXNwb25zZUKkAQoOY29tLm1hbnRyYWUudjFCCkFnZW50UHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.Agent */ -export type Agent = Message<'mantrae.v1.Agent'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type Agent = Message<"mantrae.v1.Agent"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string hostname = 3; - */ - hostname: string; + /** + * @generated from field: string hostname = 3; + */ + hostname: string; - /** - * @generated from field: string public_ip = 4; - */ - publicIp: string; + /** + * @generated from field: string public_ip = 4; + */ + publicIp: string; - /** - * @generated from field: string private_ip = 5; - */ - privateIp: string; + /** + * @generated from field: string private_ip = 5; + */ + privateIp: string; - /** - * @generated from field: string active_ip = 6; - */ - activeIp: string; + /** + * @generated from field: string active_ip = 6; + */ + activeIp: string; - /** - * @generated from field: string token = 7; - */ - token: string; + /** + * @generated from field: string token = 7; + */ + token: string; - /** - * @generated from field: repeated mantrae.v1.Container containers = 8; - */ - containers: Container[]; + /** + * @generated from field: repeated mantrae.v1.Container containers = 8; + */ + containers: Container[]; - /** - * @generated from field: google.protobuf.Timestamp created_at = 9; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 9; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 10; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 10; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Agent. * Use `create(AgentSchema)` to create a new message. */ -export const AgentSchema: GenMessage = /*@__PURE__*/ messageDesc(file_mantrae_v1_agent, 0); +export const AgentSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 0); /** * @generated from message mantrae.v1.Container */ -export type Container = Message<'mantrae.v1.Container'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type Container = Message<"mantrae.v1.Container"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: map labels = 3; - */ - labels: { [key: string]: string }; + /** + * @generated from field: map labels = 3; + */ + labels: { [key: string]: string }; - /** - * @generated from field: string image = 4; - */ - image: string; + /** + * @generated from field: string image = 4; + */ + image: string; - /** - * @generated from field: map portmap = 5; - */ - portmap: { [key: number]: number }; + /** + * @generated from field: map portmap = 5; + */ + portmap: { [key: number]: number }; - /** - * @generated from field: string status = 6; - */ - status: string; + /** + * @generated from field: string status = 6; + */ + status: string; - /** - * @generated from field: google.protobuf.Timestamp created = 7; - */ - created?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created = 7; + */ + created?: Timestamp; }; /** * Describes the message mantrae.v1.Container. * Use `create(ContainerSchema)` to create a new message. */ -export const ContainerSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 1); +export const ContainerSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 1); /** * @generated from message mantrae.v1.GetAgentRequest */ -export type GetAgentRequest = Message<'mantrae.v1.GetAgentRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type GetAgentRequest = Message<"mantrae.v1.GetAgentRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; }; /** * Describes the message mantrae.v1.GetAgentRequest. * Use `create(GetAgentRequestSchema)` to create a new message. */ -export const GetAgentRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 2); +export const GetAgentRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 2); /** * @generated from message mantrae.v1.GetAgentResponse */ -export type GetAgentResponse = Message<'mantrae.v1.GetAgentResponse'> & { - /** - * @generated from field: mantrae.v1.Agent agent = 1; - */ - agent?: Agent; +export type GetAgentResponse = Message<"mantrae.v1.GetAgentResponse"> & { + /** + * @generated from field: mantrae.v1.Agent agent = 1; + */ + agent?: Agent; }; /** * Describes the message mantrae.v1.GetAgentResponse. * Use `create(GetAgentResponseSchema)` to create a new message. */ -export const GetAgentResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 3); +export const GetAgentResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 3); /** * @generated from message mantrae.v1.CreateAgentRequest */ -export type CreateAgentRequest = Message<'mantrae.v1.CreateAgentRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type CreateAgentRequest = Message<"mantrae.v1.CreateAgentRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; }; /** * Describes the message mantrae.v1.CreateAgentRequest. * Use `create(CreateAgentRequestSchema)` to create a new message. */ -export const CreateAgentRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 4); +export const CreateAgentRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 4); /** * @generated from message mantrae.v1.CreateAgentResponse */ -export type CreateAgentResponse = Message<'mantrae.v1.CreateAgentResponse'> & { - /** - * @generated from field: mantrae.v1.Agent agent = 1; - */ - agent?: Agent; +export type CreateAgentResponse = Message<"mantrae.v1.CreateAgentResponse"> & { + /** + * @generated from field: mantrae.v1.Agent agent = 1; + */ + agent?: Agent; }; /** * Describes the message mantrae.v1.CreateAgentResponse. * Use `create(CreateAgentResponseSchema)` to create a new message. */ -export const CreateAgentResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 5); +export const CreateAgentResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 5); /** * @generated from message mantrae.v1.UpdateAgentIPRequest */ -export type UpdateAgentIPRequest = Message<'mantrae.v1.UpdateAgentIPRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type UpdateAgentIPRequest = Message<"mantrae.v1.UpdateAgentIPRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: string ip = 2; - */ - ip: string; + /** + * @generated from field: string ip = 2; + */ + ip: string; }; /** * Describes the message mantrae.v1.UpdateAgentIPRequest. * Use `create(UpdateAgentIPRequestSchema)` to create a new message. */ -export const UpdateAgentIPRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 6); +export const UpdateAgentIPRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 6); /** * @generated from message mantrae.v1.UpdateAgentIPResponse */ -export type UpdateAgentIPResponse = Message<'mantrae.v1.UpdateAgentIPResponse'> & { - /** - * @generated from field: mantrae.v1.Agent agent = 1; - */ - agent?: Agent; +export type UpdateAgentIPResponse = Message<"mantrae.v1.UpdateAgentIPResponse"> & { + /** + * @generated from field: mantrae.v1.Agent agent = 1; + */ + agent?: Agent; }; /** * Describes the message mantrae.v1.UpdateAgentIPResponse. * Use `create(UpdateAgentIPResponseSchema)` to create a new message. */ -export const UpdateAgentIPResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 7); +export const UpdateAgentIPResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 7); /** * @generated from message mantrae.v1.DeleteAgentRequest */ -export type DeleteAgentRequest = Message<'mantrae.v1.DeleteAgentRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type DeleteAgentRequest = Message<"mantrae.v1.DeleteAgentRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; }; /** * Describes the message mantrae.v1.DeleteAgentRequest. * Use `create(DeleteAgentRequestSchema)` to create a new message. */ -export const DeleteAgentRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 8); +export const DeleteAgentRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 8); /** * @generated from message mantrae.v1.DeleteAgentResponse */ -export type DeleteAgentResponse = Message<'mantrae.v1.DeleteAgentResponse'> & {}; +export type DeleteAgentResponse = Message<"mantrae.v1.DeleteAgentResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteAgentResponse. * Use `create(DeleteAgentResponseSchema)` to create a new message. */ -export const DeleteAgentResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 9); +export const DeleteAgentResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 9); /** * @generated from message mantrae.v1.ListAgentsRequest */ -export type ListAgentsRequest = Message<'mantrae.v1.ListAgentsRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ListAgentsRequest = Message<"mantrae.v1.ListAgentsRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: optional int64 limit = 2; - */ - limit?: bigint; + /** + * @generated from field: optional int64 limit = 2; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 3; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 3; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListAgentsRequest. * Use `create(ListAgentsRequestSchema)` to create a new message. */ -export const ListAgentsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 10); +export const ListAgentsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 10); /** * @generated from message mantrae.v1.ListAgentsResponse */ -export type ListAgentsResponse = Message<'mantrae.v1.ListAgentsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Agent agents = 1; - */ - agents: Agent[]; +export type ListAgentsResponse = Message<"mantrae.v1.ListAgentsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Agent agents = 1; + */ + agents: Agent[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListAgentsResponse. * Use `create(ListAgentsResponseSchema)` to create a new message. */ -export const ListAgentsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 11); +export const ListAgentsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 11); /** * @generated from message mantrae.v1.HealthCheckRequest */ -export type HealthCheckRequest = Message<'mantrae.v1.HealthCheckRequest'> & { - /** - * @generated from field: string machine_id = 1; - */ - machineId: string; +export type HealthCheckRequest = Message<"mantrae.v1.HealthCheckRequest"> & { + /** + * @generated from field: string machine_id = 1; + */ + machineId: string; - /** - * @generated from field: string hostname = 2; - */ - hostname: string; + /** + * @generated from field: string hostname = 2; + */ + hostname: string; - /** - * @generated from field: string public_ip = 3; - */ - publicIp: string; + /** + * @generated from field: string public_ip = 3; + */ + publicIp: string; - /** - * @generated from field: string private_ip = 4; - */ - privateIp: string; + /** + * @generated from field: string private_ip = 4; + */ + privateIp: string; }; /** * Describes the message mantrae.v1.HealthCheckRequest. * Use `create(HealthCheckRequestSchema)` to create a new message. */ -export const HealthCheckRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 12); +export const HealthCheckRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 12); /** * @generated from message mantrae.v1.HealthCheckResponse */ -export type HealthCheckResponse = Message<'mantrae.v1.HealthCheckResponse'> & { - /** - * @generated from field: mantrae.v1.Agent agent = 1; - */ - agent?: Agent; +export type HealthCheckResponse = Message<"mantrae.v1.HealthCheckResponse"> & { + /** + * @generated from field: mantrae.v1.Agent agent = 1; + */ + agent?: Agent; }; /** * Describes the message mantrae.v1.HealthCheckResponse. * Use `create(HealthCheckResponseSchema)` to create a new message. */ -export const HealthCheckResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 13); +export const HealthCheckResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 13); /** * @generated from message mantrae.v1.RotateAgentTokenRequest */ -export type RotateAgentTokenRequest = Message<'mantrae.v1.RotateAgentTokenRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type RotateAgentTokenRequest = Message<"mantrae.v1.RotateAgentTokenRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; }; /** * Describes the message mantrae.v1.RotateAgentTokenRequest. * Use `create(RotateAgentTokenRequestSchema)` to create a new message. */ -export const RotateAgentTokenRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 14); +export const RotateAgentTokenRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 14); /** * @generated from message mantrae.v1.RotateAgentTokenResponse */ -export type RotateAgentTokenResponse = Message<'mantrae.v1.RotateAgentTokenResponse'> & { - /** - * @generated from field: mantrae.v1.Agent agent = 1; - */ - agent?: Agent; +export type RotateAgentTokenResponse = Message<"mantrae.v1.RotateAgentTokenResponse"> & { + /** + * @generated from field: mantrae.v1.Agent agent = 1; + */ + agent?: Agent; }; /** * Describes the message mantrae.v1.RotateAgentTokenResponse. * Use `create(RotateAgentTokenResponseSchema)` to create a new message. */ -export const RotateAgentTokenResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_agent, 15); +export const RotateAgentTokenResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_agent, 15); /** * @generated from service mantrae.v1.AgentService */ export const AgentService: GenService<{ - /** - * @generated from rpc mantrae.v1.AgentService.GetAgent - */ - getAgent: { - methodKind: 'unary'; - input: typeof GetAgentRequestSchema; - output: typeof GetAgentResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.CreateAgent - */ - createAgent: { - methodKind: 'unary'; - input: typeof CreateAgentRequestSchema; - output: typeof CreateAgentResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.UpdateAgentIP - */ - updateAgentIP: { - methodKind: 'unary'; - input: typeof UpdateAgentIPRequestSchema; - output: typeof UpdateAgentIPResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.DeleteAgent - */ - deleteAgent: { - methodKind: 'unary'; - input: typeof DeleteAgentRequestSchema; - output: typeof DeleteAgentResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.ListAgents - */ - listAgents: { - methodKind: 'unary'; - input: typeof ListAgentsRequestSchema; - output: typeof ListAgentsResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.HealthCheck - */ - healthCheck: { - methodKind: 'unary'; - input: typeof HealthCheckRequestSchema; - output: typeof HealthCheckResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.AgentService.RotateAgentToken - */ - rotateAgentToken: { - methodKind: 'unary'; - input: typeof RotateAgentTokenRequestSchema; - output: typeof RotateAgentTokenResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_agent, 0); + /** + * @generated from rpc mantrae.v1.AgentService.GetAgent + */ + getAgent: { + methodKind: "unary"; + input: typeof GetAgentRequestSchema; + output: typeof GetAgentResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.CreateAgent + */ + createAgent: { + methodKind: "unary"; + input: typeof CreateAgentRequestSchema; + output: typeof CreateAgentResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.UpdateAgentIP + */ + updateAgentIP: { + methodKind: "unary"; + input: typeof UpdateAgentIPRequestSchema; + output: typeof UpdateAgentIPResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.DeleteAgent + */ + deleteAgent: { + methodKind: "unary"; + input: typeof DeleteAgentRequestSchema; + output: typeof DeleteAgentResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.ListAgents + */ + listAgents: { + methodKind: "unary"; + input: typeof ListAgentsRequestSchema; + output: typeof ListAgentsResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.HealthCheck + */ + healthCheck: { + methodKind: "unary"; + input: typeof HealthCheckRequestSchema; + output: typeof HealthCheckResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.AgentService.RotateAgentToken + */ + rotateAgentToken: { + methodKind: "unary"; + input: typeof RotateAgentTokenRequestSchema; + output: typeof RotateAgentTokenResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_agent, 0); + diff --git a/web/src/lib/gen/mantrae/v1/auditlog_pb.ts b/web/src/lib/gen/mantrae/v1/auditlog_pb.ts index 1d5daa3..77a7451 100644 --- a/web/src/lib/gen/mantrae/v1/auditlog_pb.ts +++ b/web/src/lib/gen/mantrae/v1/auditlog_pb.ts @@ -2,127 +2,122 @@ // @generated from file mantrae/v1/auditlog.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/auditlog.proto. */ -export const file_mantrae_v1_auditlog: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChltYW50cmFlL3YxL2F1ZGl0bG9nLnByb3RvEgptYW50cmFlLnYxIp0BCghBdWRpdExvZxIKCgJpZBgBIAEoAxISCgpwcm9maWxlX2lkGAIgASgDEg8KB3VzZXJfaWQYAyABKAkSEAoIYWdlbnRfaWQYBCABKAkSDQoFZXZlbnQYBSABKAkSDwoHZGV0YWlscxgGIAEoCRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK1AQoUTGlzdEF1ZGl0TG9nc1JlcXVlc3QSagoFbGltaXQYASABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAIgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiVgoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEigKCmF1ZGl0X2xvZ3MYASADKAsyFC5tYW50cmFlLnYxLkF1ZGl0TG9nEhMKC3RvdGFsX2NvdW50GAIgASgDMmwKD0F1ZGl0TG9nU2VydmljZRJZCg1MaXN0QXVkaXRMb2dzEiAubWFudHJhZS52MS5MaXN0QXVkaXRMb2dzUmVxdWVzdBohLm1hbnRyYWUudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlIgOQAgFCpwEKDmNvbS5tYW50cmFlLnYxQg1BdWRpdGxvZ1Byb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_auditlog: GenFile = /*@__PURE__*/ + fileDesc("ChltYW50cmFlL3YxL2F1ZGl0bG9nLnByb3RvEgptYW50cmFlLnYxIp0BCghBdWRpdExvZxIKCgJpZBgBIAEoAxISCgpwcm9maWxlX2lkGAIgASgDEg8KB3VzZXJfaWQYAyABKAkSEAoIYWdlbnRfaWQYBCABKAkSDQoFZXZlbnQYBSABKAkSDwoHZGV0YWlscxgGIAEoCRIuCgpjcmVhdGVkX2F0GAcgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCK1AQoUTGlzdEF1ZGl0TG9nc1JlcXVlc3QSagoFbGltaXQYASABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAIgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiVgoVTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlEigKCmF1ZGl0X2xvZ3MYASADKAsyFC5tYW50cmFlLnYxLkF1ZGl0TG9nEhMKC3RvdGFsX2NvdW50GAIgASgDMmwKD0F1ZGl0TG9nU2VydmljZRJZCg1MaXN0QXVkaXRMb2dzEiAubWFudHJhZS52MS5MaXN0QXVkaXRMb2dzUmVxdWVzdBohLm1hbnRyYWUudjEuTGlzdEF1ZGl0TG9nc1Jlc3BvbnNlIgOQAgFCpwEKDmNvbS5tYW50cmFlLnYxQg1BdWRpdGxvZ1Byb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.AuditLog */ -export type AuditLog = Message<'mantrae.v1.AuditLog'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type AuditLog = Message<"mantrae.v1.AuditLog"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string user_id = 3; - */ - userId: string; + /** + * @generated from field: string user_id = 3; + */ + userId: string; - /** - * @generated from field: string agent_id = 4; - */ - agentId: string; + /** + * @generated from field: string agent_id = 4; + */ + agentId: string; - /** - * @generated from field: string event = 5; - */ - event: string; + /** + * @generated from field: string event = 5; + */ + event: string; - /** - * @generated from field: string details = 6; - */ - details: string; + /** + * @generated from field: string details = 6; + */ + details: string; - /** - * @generated from field: google.protobuf.Timestamp created_at = 7; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 7; + */ + createdAt?: Timestamp; }; /** * Describes the message mantrae.v1.AuditLog. * Use `create(AuditLogSchema)` to create a new message. */ -export const AuditLogSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_auditlog, 0); +export const AuditLogSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_auditlog, 0); /** * @generated from message mantrae.v1.ListAuditLogsRequest */ -export type ListAuditLogsRequest = Message<'mantrae.v1.ListAuditLogsRequest'> & { - /** - * @generated from field: optional int64 limit = 1; - */ - limit?: bigint; +export type ListAuditLogsRequest = Message<"mantrae.v1.ListAuditLogsRequest"> & { + /** + * @generated from field: optional int64 limit = 1; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 2; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 2; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListAuditLogsRequest. * Use `create(ListAuditLogsRequestSchema)` to create a new message. */ -export const ListAuditLogsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_auditlog, 1); +export const ListAuditLogsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_auditlog, 1); /** * @generated from message mantrae.v1.ListAuditLogsResponse */ -export type ListAuditLogsResponse = Message<'mantrae.v1.ListAuditLogsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.AuditLog audit_logs = 1; - */ - auditLogs: AuditLog[]; +export type ListAuditLogsResponse = Message<"mantrae.v1.ListAuditLogsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.AuditLog audit_logs = 1; + */ + auditLogs: AuditLog[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListAuditLogsResponse. * Use `create(ListAuditLogsResponseSchema)` to create a new message. */ -export const ListAuditLogsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_auditlog, 2); +export const ListAuditLogsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_auditlog, 2); /** * @generated from service mantrae.v1.AuditLogService */ export const AuditLogService: GenService<{ - /** - * @generated from rpc mantrae.v1.AuditLogService.ListAuditLogs - */ - listAuditLogs: { - methodKind: 'unary'; - input: typeof ListAuditLogsRequestSchema; - output: typeof ListAuditLogsResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_auditlog, 0); + /** + * @generated from rpc mantrae.v1.AuditLogService.ListAuditLogs + */ + listAuditLogs: { + methodKind: "unary"; + input: typeof ListAuditLogsRequestSchema; + output: typeof ListAuditLogsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_auditlog, 0); + diff --git a/web/src/lib/gen/mantrae/v1/backup_pb.ts b/web/src/lib/gen/mantrae/v1/backup_pb.ts index 01daf76..af785b4 100644 --- a/web/src/lib/gen/mantrae/v1/backup_pb.ts +++ b/web/src/lib/gen/mantrae/v1/backup_pb.ts @@ -2,251 +2,243 @@ // @generated from file mantrae/v1/backup.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/backup.proto. */ -export const file_mantrae_v1_backup: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChdtYW50cmFlL3YxL2JhY2t1cC5wcm90bxIKbWFudHJhZS52MSJUCgZCYWNrdXASDAoEbmFtZRgBIAEoCRIMCgRzaXplGAIgASgDEi4KCmNyZWF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIhUKE0NyZWF0ZUJhY2t1cFJlcXVlc3QiFgoUQ3JlYXRlQmFja3VwUmVzcG9uc2UiMAoUUmVzdG9yZUJhY2t1cFJlcXVlc3QSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQASIXChVSZXN0b3JlQmFja3VwUmVzcG9uc2UiFAoSTGlzdEJhY2t1cHNSZXF1ZXN0IjoKE0xpc3RCYWNrdXBzUmVzcG9uc2USIwoHYmFja3VwcxgBIAMoCzISLm1hbnRyYWUudjEuQmFja3VwIi8KE0RlbGV0ZUJhY2t1cFJlcXVlc3QSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQASIWChREZWxldGVCYWNrdXBSZXNwb25zZSIlChVEb3dubG9hZEJhY2t1cFJlcXVlc3QSDAoEbmFtZRgBIAEoCSImChZEb3dubG9hZEJhY2t1cFJlc3BvbnNlEgwKBGRhdGEYASABKAwyuwMKDUJhY2t1cFNlcnZpY2USUQoMQ3JlYXRlQmFja3VwEh8ubWFudHJhZS52MS5DcmVhdGVCYWNrdXBSZXF1ZXN0GiAubWFudHJhZS52MS5DcmVhdGVCYWNrdXBSZXNwb25zZRJUCg1SZXN0b3JlQmFja3VwEiAubWFudHJhZS52MS5SZXN0b3JlQmFja3VwUmVxdWVzdBohLm1hbnRyYWUudjEuUmVzdG9yZUJhY2t1cFJlc3BvbnNlElMKC0xpc3RCYWNrdXBzEh4ubWFudHJhZS52MS5MaXN0QmFja3Vwc1JlcXVlc3QaHy5tYW50cmFlLnYxLkxpc3RCYWNrdXBzUmVzcG9uc2UiA5ACARJRCgxEZWxldGVCYWNrdXASHy5tYW50cmFlLnYxLkRlbGV0ZUJhY2t1cFJlcXVlc3QaIC5tYW50cmFlLnYxLkRlbGV0ZUJhY2t1cFJlc3BvbnNlElkKDkRvd25sb2FkQmFja3VwEiEubWFudHJhZS52MS5Eb3dubG9hZEJhY2t1cFJlcXVlc3QaIi5tYW50cmFlLnYxLkRvd25sb2FkQmFja3VwUmVzcG9uc2UwAUKlAQoOY29tLm1hbnRyYWUudjFCC0JhY2t1cFByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_backup: GenFile = /*@__PURE__*/ + fileDesc("ChdtYW50cmFlL3YxL2JhY2t1cC5wcm90bxIKbWFudHJhZS52MSJUCgZCYWNrdXASDAoEbmFtZRgBIAEoCRIMCgRzaXplGAIgASgDEi4KCmNyZWF0ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIhUKE0NyZWF0ZUJhY2t1cFJlcXVlc3QiFgoUQ3JlYXRlQmFja3VwUmVzcG9uc2UiLQoUUmVzdG9yZUJhY2t1cFJlcXVlc3QSFQoEbmFtZRgBIAEoCUIHukgEcgIQASIXChVSZXN0b3JlQmFja3VwUmVzcG9uc2UiFAoSTGlzdEJhY2t1cHNSZXF1ZXN0IjoKE0xpc3RCYWNrdXBzUmVzcG9uc2USIwoHYmFja3VwcxgBIAMoCzISLm1hbnRyYWUudjEuQmFja3VwIiwKE0RlbGV0ZUJhY2t1cFJlcXVlc3QSFQoEbmFtZRgBIAEoCUIHukgEcgIQASIWChREZWxldGVCYWNrdXBSZXNwb25zZSIlChVEb3dubG9hZEJhY2t1cFJlcXVlc3QSDAoEbmFtZRgBIAEoCSImChZEb3dubG9hZEJhY2t1cFJlc3BvbnNlEgwKBGRhdGEYASABKAwyuwMKDUJhY2t1cFNlcnZpY2USUQoMQ3JlYXRlQmFja3VwEh8ubWFudHJhZS52MS5DcmVhdGVCYWNrdXBSZXF1ZXN0GiAubWFudHJhZS52MS5DcmVhdGVCYWNrdXBSZXNwb25zZRJUCg1SZXN0b3JlQmFja3VwEiAubWFudHJhZS52MS5SZXN0b3JlQmFja3VwUmVxdWVzdBohLm1hbnRyYWUudjEuUmVzdG9yZUJhY2t1cFJlc3BvbnNlElMKC0xpc3RCYWNrdXBzEh4ubWFudHJhZS52MS5MaXN0QmFja3Vwc1JlcXVlc3QaHy5tYW50cmFlLnYxLkxpc3RCYWNrdXBzUmVzcG9uc2UiA5ACARJRCgxEZWxldGVCYWNrdXASHy5tYW50cmFlLnYxLkRlbGV0ZUJhY2t1cFJlcXVlc3QaIC5tYW50cmFlLnYxLkRlbGV0ZUJhY2t1cFJlc3BvbnNlElkKDkRvd25sb2FkQmFja3VwEiEubWFudHJhZS52MS5Eb3dubG9hZEJhY2t1cFJlcXVlc3QaIi5tYW50cmFlLnYxLkRvd25sb2FkQmFja3VwUmVzcG9uc2UwAUKlAQoOY29tLm1hbnRyYWUudjFCC0JhY2t1cFByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.Backup */ -export type Backup = Message<'mantrae.v1.Backup'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type Backup = Message<"mantrae.v1.Backup"> & { + /** + * @generated from field: string name = 1; + */ + name: string; - /** - * @generated from field: int64 size = 2; - */ - size: bigint; + /** + * @generated from field: int64 size = 2; + */ + size: bigint; - /** - * @generated from field: google.protobuf.Timestamp created_at = 3; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 3; + */ + createdAt?: Timestamp; }; /** * Describes the message mantrae.v1.Backup. * Use `create(BackupSchema)` to create a new message. */ -export const BackupSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 0); +export const BackupSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 0); /** * @generated from message mantrae.v1.CreateBackupRequest */ -export type CreateBackupRequest = Message<'mantrae.v1.CreateBackupRequest'> & {}; +export type CreateBackupRequest = Message<"mantrae.v1.CreateBackupRequest"> & { +}; /** * Describes the message mantrae.v1.CreateBackupRequest. * Use `create(CreateBackupRequestSchema)` to create a new message. */ -export const CreateBackupRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 1); +export const CreateBackupRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 1); /** * @generated from message mantrae.v1.CreateBackupResponse */ -export type CreateBackupResponse = Message<'mantrae.v1.CreateBackupResponse'> & {}; +export type CreateBackupResponse = Message<"mantrae.v1.CreateBackupResponse"> & { +}; /** * Describes the message mantrae.v1.CreateBackupResponse. * Use `create(CreateBackupResponseSchema)` to create a new message. */ -export const CreateBackupResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 2); +export const CreateBackupResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 2); /** * @generated from message mantrae.v1.RestoreBackupRequest */ -export type RestoreBackupRequest = Message<'mantrae.v1.RestoreBackupRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type RestoreBackupRequest = Message<"mantrae.v1.RestoreBackupRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; }; /** * Describes the message mantrae.v1.RestoreBackupRequest. * Use `create(RestoreBackupRequestSchema)` to create a new message. */ -export const RestoreBackupRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 3); +export const RestoreBackupRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 3); /** * @generated from message mantrae.v1.RestoreBackupResponse */ -export type RestoreBackupResponse = Message<'mantrae.v1.RestoreBackupResponse'> & {}; +export type RestoreBackupResponse = Message<"mantrae.v1.RestoreBackupResponse"> & { +}; /** * Describes the message mantrae.v1.RestoreBackupResponse. * Use `create(RestoreBackupResponseSchema)` to create a new message. */ -export const RestoreBackupResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 4); +export const RestoreBackupResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 4); /** * @generated from message mantrae.v1.ListBackupsRequest */ -export type ListBackupsRequest = Message<'mantrae.v1.ListBackupsRequest'> & {}; +export type ListBackupsRequest = Message<"mantrae.v1.ListBackupsRequest"> & { +}; /** * Describes the message mantrae.v1.ListBackupsRequest. * Use `create(ListBackupsRequestSchema)` to create a new message. */ -export const ListBackupsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 5); +export const ListBackupsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 5); /** * @generated from message mantrae.v1.ListBackupsResponse */ -export type ListBackupsResponse = Message<'mantrae.v1.ListBackupsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Backup backups = 1; - */ - backups: Backup[]; +export type ListBackupsResponse = Message<"mantrae.v1.ListBackupsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Backup backups = 1; + */ + backups: Backup[]; }; /** * Describes the message mantrae.v1.ListBackupsResponse. * Use `create(ListBackupsResponseSchema)` to create a new message. */ -export const ListBackupsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 6); +export const ListBackupsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 6); /** * @generated from message mantrae.v1.DeleteBackupRequest */ -export type DeleteBackupRequest = Message<'mantrae.v1.DeleteBackupRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type DeleteBackupRequest = Message<"mantrae.v1.DeleteBackupRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; }; /** * Describes the message mantrae.v1.DeleteBackupRequest. * Use `create(DeleteBackupRequestSchema)` to create a new message. */ -export const DeleteBackupRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 7); +export const DeleteBackupRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 7); /** * @generated from message mantrae.v1.DeleteBackupResponse */ -export type DeleteBackupResponse = Message<'mantrae.v1.DeleteBackupResponse'> & {}; +export type DeleteBackupResponse = Message<"mantrae.v1.DeleteBackupResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteBackupResponse. * Use `create(DeleteBackupResponseSchema)` to create a new message. */ -export const DeleteBackupResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 8); +export const DeleteBackupResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 8); /** * @generated from message mantrae.v1.DownloadBackupRequest */ -export type DownloadBackupRequest = Message<'mantrae.v1.DownloadBackupRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type DownloadBackupRequest = Message<"mantrae.v1.DownloadBackupRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; }; /** * Describes the message mantrae.v1.DownloadBackupRequest. * Use `create(DownloadBackupRequestSchema)` to create a new message. */ -export const DownloadBackupRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 9); +export const DownloadBackupRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 9); /** * @generated from message mantrae.v1.DownloadBackupResponse */ -export type DownloadBackupResponse = Message<'mantrae.v1.DownloadBackupResponse'> & { - /** - * @generated from field: bytes data = 1; - */ - data: Uint8Array; +export type DownloadBackupResponse = Message<"mantrae.v1.DownloadBackupResponse"> & { + /** + * @generated from field: bytes data = 1; + */ + data: Uint8Array; }; /** * Describes the message mantrae.v1.DownloadBackupResponse. * Use `create(DownloadBackupResponseSchema)` to create a new message. */ -export const DownloadBackupResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_backup, 10); +export const DownloadBackupResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_backup, 10); /** * @generated from service mantrae.v1.BackupService */ export const BackupService: GenService<{ - /** - * @generated from rpc mantrae.v1.BackupService.CreateBackup - */ - createBackup: { - methodKind: 'unary'; - input: typeof CreateBackupRequestSchema; - output: typeof CreateBackupResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.BackupService.RestoreBackup - */ - restoreBackup: { - methodKind: 'unary'; - input: typeof RestoreBackupRequestSchema; - output: typeof RestoreBackupResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.BackupService.ListBackups - */ - listBackups: { - methodKind: 'unary'; - input: typeof ListBackupsRequestSchema; - output: typeof ListBackupsResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.BackupService.DeleteBackup - */ - deleteBackup: { - methodKind: 'unary'; - input: typeof DeleteBackupRequestSchema; - output: typeof DeleteBackupResponseSchema; - }; - /** - * See: https://github.com/connectrpc/connect-es/issues/669 - * rpc UploadBackup(stream UploadBackupRequest) returns (UploadBackupResponse); // stream doesn't work with connect-es - * - * @generated from rpc mantrae.v1.BackupService.DownloadBackup - */ - downloadBackup: { - methodKind: 'server_streaming'; - input: typeof DownloadBackupRequestSchema; - output: typeof DownloadBackupResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_backup, 0); + /** + * @generated from rpc mantrae.v1.BackupService.CreateBackup + */ + createBackup: { + methodKind: "unary"; + input: typeof CreateBackupRequestSchema; + output: typeof CreateBackupResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.BackupService.RestoreBackup + */ + restoreBackup: { + methodKind: "unary"; + input: typeof RestoreBackupRequestSchema; + output: typeof RestoreBackupResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.BackupService.ListBackups + */ + listBackups: { + methodKind: "unary"; + input: typeof ListBackupsRequestSchema; + output: typeof ListBackupsResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.BackupService.DeleteBackup + */ + deleteBackup: { + methodKind: "unary"; + input: typeof DeleteBackupRequestSchema; + output: typeof DeleteBackupResponseSchema; + }, + /** + * See: https://github.com/connectrpc/connect-es/issues/669 + * rpc UploadBackup(stream UploadBackupRequest) returns (UploadBackupResponse); // stream doesn't work with connect-es + * + * @generated from rpc mantrae.v1.BackupService.DownloadBackup + */ + downloadBackup: { + methodKind: "server_streaming"; + input: typeof DownloadBackupRequestSchema; + output: typeof DownloadBackupResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_backup, 0); + diff --git a/web/src/lib/gen/mantrae/v1/dns_provider_pb.ts b/web/src/lib/gen/mantrae/v1/dns_provider_pb.ts index e7a03ad..ca179d2 100644 --- a/web/src/lib/gen/mantrae/v1/dns_provider_pb.ts +++ b/web/src/lib/gen/mantrae/v1/dns_provider_pb.ts @@ -2,408 +2,394 @@ // @generated from file mantrae/v1/dns_provider.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/dns_provider.proto. */ -export const file_mantrae_v1_dns_provider: GenFile = - /*@__PURE__*/ - fileDesc( - 'Ch1tYW50cmFlL3YxL2Ruc19wcm92aWRlci5wcm90bxIKbWFudHJhZS52MSL0AQoLRG5zUHJvdmlkZXISCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRIpCgR0eXBlGAMgASgOMhsubWFudHJhZS52MS5EbnNQcm92aWRlclR5cGUSLQoGY29uZmlnGAQgASgLMh0ubWFudHJhZS52MS5EbnNQcm92aWRlckNvbmZpZxIRCglpc19hY3RpdmUYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiegoRRG5zUHJvdmlkZXJDb25maWcSDwoHYXBpX2tleRgBIAEoCRIPCgdhcGlfdXJsGAIgASgJEgoKAmlwGAMgASgJEg8KB3Byb3hpZWQYBCABKAgSEwoLYXV0b191cGRhdGUYBSABKAgSEQoJem9uZV90eXBlGAYgASgJIi8KFUdldERuc1Byb3ZpZGVyUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgACJHChZHZXREbnNQcm92aWRlclJlc3BvbnNlEi0KDGRuc19wcm92aWRlchgBIAEoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXIirgEKGENyZWF0ZURuc1Byb3ZpZGVyUmVxdWVzdBIYCgRuYW1lGAEgASgJQgq6SAfIAQFyAhABEjYKBHR5cGUYAiABKA4yGy5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyVHlwZUILukgIyAEBggECEAESLQoGY29uZmlnGAMgASgLMh0ubWFudHJhZS52MS5EbnNQcm92aWRlckNvbmZpZxIRCglpc19hY3RpdmUYBCABKAgiSgoZQ3JlYXRlRG5zUHJvdmlkZXJSZXNwb25zZRItCgxkbnNfcHJvdmlkZXIYASABKAsyFy5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyIsYBChhVcGRhdGVEbnNQcm92aWRlclJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAASGAoEbmFtZRgCIAEoCUIKukgHyAEBcgIQARI2CgR0eXBlGAMgASgOMhsubWFudHJhZS52MS5EbnNQcm92aWRlclR5cGVCC7pICMgBAYIBAhABEi0KBmNvbmZpZxgEIAEoCzIdLm1hbnRyYWUudjEuRG5zUHJvdmlkZXJDb25maWcSEQoJaXNfYWN0aXZlGAUgASgIIkoKGVVwZGF0ZURuc1Byb3ZpZGVyUmVzcG9uc2USLQoMZG5zX3Byb3ZpZGVyGAEgASgLMhcubWFudHJhZS52MS5EbnNQcm92aWRlciIyChhEZWxldGVEbnNQcm92aWRlclJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAAiGwoZRGVsZXRlRG5zUHJvdmlkZXJSZXNwb25zZSK4AQoXTGlzdERuc1Byb3ZpZGVyc1JlcXVlc3QSagoFbGltaXQYASABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAIgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiXwoYTGlzdERuc1Byb3ZpZGVyc1Jlc3BvbnNlEi4KDWRuc19wcm92aWRlcnMYASADKAsyFy5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyEhMKC3RvdGFsX2NvdW50GAIgASgDKpgBCg9EbnNQcm92aWRlclR5cGUSIQodRE5TX1BST1ZJREVSX1RZUEVfVU5TUEVDSUZJRUQQABIgChxETlNfUFJPVklERVJfVFlQRV9DTE9VREZMQVJFEAESHgoaRE5TX1BST1ZJREVSX1RZUEVfUE9XRVJETlMQAhIgChxETlNfUFJPVklERVJfVFlQRV9URUNITklUSVVNEAMy/AMKEkRuc1Byb3ZpZGVyU2VydmljZRJcCg5HZXREbnNQcm92aWRlchIhLm1hbnRyYWUudjEuR2V0RG5zUHJvdmlkZXJSZXF1ZXN0GiIubWFudHJhZS52MS5HZXREbnNQcm92aWRlclJlc3BvbnNlIgOQAgESYAoRQ3JlYXRlRG5zUHJvdmlkZXISJC5tYW50cmFlLnYxLkNyZWF0ZURuc1Byb3ZpZGVyUmVxdWVzdBolLm1hbnRyYWUudjEuQ3JlYXRlRG5zUHJvdmlkZXJSZXNwb25zZRJgChFVcGRhdGVEbnNQcm92aWRlchIkLm1hbnRyYWUudjEuVXBkYXRlRG5zUHJvdmlkZXJSZXF1ZXN0GiUubWFudHJhZS52MS5VcGRhdGVEbnNQcm92aWRlclJlc3BvbnNlEmAKEURlbGV0ZURuc1Byb3ZpZGVyEiQubWFudHJhZS52MS5EZWxldGVEbnNQcm92aWRlclJlcXVlc3QaJS5tYW50cmFlLnYxLkRlbGV0ZURuc1Byb3ZpZGVyUmVzcG9uc2USYgoQTGlzdERuc1Byb3ZpZGVycxIjLm1hbnRyYWUudjEuTGlzdERuc1Byb3ZpZGVyc1JlcXVlc3QaJC5tYW50cmFlLnYxLkxpc3REbnNQcm92aWRlcnNSZXNwb25zZSIDkAIBQqoBCg5jb20ubWFudHJhZS52MUIQRG5zUHJvdmlkZXJQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_dns_provider: GenFile = /*@__PURE__*/ + fileDesc("Ch1tYW50cmFlL3YxL2Ruc19wcm92aWRlci5wcm90bxIKbWFudHJhZS52MSL0AQoLRG5zUHJvdmlkZXISCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRIpCgR0eXBlGAMgASgOMhsubWFudHJhZS52MS5EbnNQcm92aWRlclR5cGUSLQoGY29uZmlnGAQgASgLMh0ubWFudHJhZS52MS5EbnNQcm92aWRlckNvbmZpZxIRCglpc19hY3RpdmUYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAilgEKEURuc1Byb3ZpZGVyQ29uZmlnEhgKB2FwaV9rZXkYASABKAlCB7pIBHICEAESGQoHYXBpX3VybBgCIAEoCUIIukgFcgOIAQESEwoCaXAYAyABKAlCB7pIBHICcAESDwoHcHJveGllZBgEIAEoCBITCgthdXRvX3VwZGF0ZRgFIAEoCBIRCgl6b25lX3R5cGUYBiABKAkiLwoVR2V0RG5zUHJvdmlkZXJSZXF1ZXN0EhYKAmlkGAEgASgDQgq6SAfIAQEiAiAAIkcKFkdldERuc1Byb3ZpZGVyUmVzcG9uc2USLQoMZG5zX3Byb3ZpZGVyGAEgASgLMhcubWFudHJhZS52MS5EbnNQcm92aWRlciKuAQoYQ3JlYXRlRG5zUHJvdmlkZXJSZXF1ZXN0EhgKBG5hbWUYASABKAlCCrpIB8gBAXICEAESNgoEdHlwZRgCIAEoDjIbLm1hbnRyYWUudjEuRG5zUHJvdmlkZXJUeXBlQgu6SAjIAQGCAQIQARItCgZjb25maWcYAyABKAsyHS5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyQ29uZmlnEhEKCWlzX2FjdGl2ZRgEIAEoCCJKChlDcmVhdGVEbnNQcm92aWRlclJlc3BvbnNlEi0KDGRuc19wcm92aWRlchgBIAEoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXIixgEKGFVwZGF0ZURuc1Byb3ZpZGVyUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgABIYCgRuYW1lGAIgASgJQgq6SAfIAQFyAhABEjYKBHR5cGUYAyABKA4yGy5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyVHlwZUILukgIyAEBggECEAESLQoGY29uZmlnGAQgASgLMh0ubWFudHJhZS52MS5EbnNQcm92aWRlckNvbmZpZxIRCglpc19hY3RpdmUYBSABKAgiSgoZVXBkYXRlRG5zUHJvdmlkZXJSZXNwb25zZRItCgxkbnNfcHJvdmlkZXIYASABKAsyFy5tYW50cmFlLnYxLkRuc1Byb3ZpZGVyIjIKGERlbGV0ZURuc1Byb3ZpZGVyUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgACIbChlEZWxldGVEbnNQcm92aWRlclJlc3BvbnNlIrgBChdMaXN0RG5zUHJvdmlkZXJzUmVxdWVzdBJqCgVsaW1pdBgBIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAIgBARIcCgZvZmZzZXQYAiABKANCB7pIBCICKABIAYgBAUIICgZfbGltaXRCCQoHX29mZnNldCJfChhMaXN0RG5zUHJvdmlkZXJzUmVzcG9uc2USLgoNZG5zX3Byb3ZpZGVycxgBIAMoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXISEwoLdG90YWxfY291bnQYAiABKAMqmAEKD0Ruc1Byb3ZpZGVyVHlwZRIhCh1ETlNfUFJPVklERVJfVFlQRV9VTlNQRUNJRklFRBAAEiAKHEROU19QUk9WSURFUl9UWVBFX0NMT1VERkxBUkUQARIeChpETlNfUFJPVklERVJfVFlQRV9QT1dFUkROUxACEiAKHEROU19QUk9WSURFUl9UWVBFX1RFQ0hOSVRJVU0QAzL8AwoSRG5zUHJvdmlkZXJTZXJ2aWNlElwKDkdldERuc1Byb3ZpZGVyEiEubWFudHJhZS52MS5HZXREbnNQcm92aWRlclJlcXVlc3QaIi5tYW50cmFlLnYxLkdldERuc1Byb3ZpZGVyUmVzcG9uc2UiA5ACARJgChFDcmVhdGVEbnNQcm92aWRlchIkLm1hbnRyYWUudjEuQ3JlYXRlRG5zUHJvdmlkZXJSZXF1ZXN0GiUubWFudHJhZS52MS5DcmVhdGVEbnNQcm92aWRlclJlc3BvbnNlEmAKEVVwZGF0ZURuc1Byb3ZpZGVyEiQubWFudHJhZS52MS5VcGRhdGVEbnNQcm92aWRlclJlcXVlc3QaJS5tYW50cmFlLnYxLlVwZGF0ZURuc1Byb3ZpZGVyUmVzcG9uc2USYAoRRGVsZXRlRG5zUHJvdmlkZXISJC5tYW50cmFlLnYxLkRlbGV0ZURuc1Byb3ZpZGVyUmVxdWVzdBolLm1hbnRyYWUudjEuRGVsZXRlRG5zUHJvdmlkZXJSZXNwb25zZRJiChBMaXN0RG5zUHJvdmlkZXJzEiMubWFudHJhZS52MS5MaXN0RG5zUHJvdmlkZXJzUmVxdWVzdBokLm1hbnRyYWUudjEuTGlzdERuc1Byb3ZpZGVyc1Jlc3BvbnNlIgOQAgFCqgEKDmNvbS5tYW50cmFlLnYxQhBEbnNQcm92aWRlclByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.DnsProvider */ -export type DnsProvider = Message<'mantrae.v1.DnsProvider'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DnsProvider = Message<"mantrae.v1.DnsProvider"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: mantrae.v1.DnsProviderType type = 3; - */ - type: DnsProviderType; + /** + * @generated from field: mantrae.v1.DnsProviderType type = 3; + */ + type: DnsProviderType; - /** - * @generated from field: mantrae.v1.DnsProviderConfig config = 4; - */ - config?: DnsProviderConfig; + /** + * @generated from field: mantrae.v1.DnsProviderConfig config = 4; + */ + config?: DnsProviderConfig; - /** - * @generated from field: bool is_active = 5; - */ - isActive: boolean; + /** + * @generated from field: bool is_active = 5; + */ + isActive: boolean; - /** - * @generated from field: google.protobuf.Timestamp created_at = 6; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 6; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 7; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 7; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.DnsProvider. * Use `create(DnsProviderSchema)` to create a new message. */ -export const DnsProviderSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 0); +export const DnsProviderSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 0); /** * @generated from message mantrae.v1.DnsProviderConfig */ -export type DnsProviderConfig = Message<'mantrae.v1.DnsProviderConfig'> & { - /** - * @generated from field: string api_key = 1; - */ - apiKey: string; +export type DnsProviderConfig = Message<"mantrae.v1.DnsProviderConfig"> & { + /** + * @generated from field: string api_key = 1; + */ + apiKey: string; - /** - * @generated from field: string api_url = 2; - */ - apiUrl: string; + /** + * @generated from field: string api_url = 2; + */ + apiUrl: string; - /** - * @generated from field: string ip = 3; - */ - ip: string; + /** + * @generated from field: string ip = 3; + */ + ip: string; - /** - * @generated from field: bool proxied = 4; - */ - proxied: boolean; + /** + * @generated from field: bool proxied = 4; + */ + proxied: boolean; - /** - * @generated from field: bool auto_update = 5; - */ - autoUpdate: boolean; + /** + * @generated from field: bool auto_update = 5; + */ + autoUpdate: boolean; - /** - * @generated from field: string zone_type = 6; - */ - zoneType: string; + /** + * @generated from field: string zone_type = 6; + */ + zoneType: string; }; /** * Describes the message mantrae.v1.DnsProviderConfig. * Use `create(DnsProviderConfigSchema)` to create a new message. */ -export const DnsProviderConfigSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 1); +export const DnsProviderConfigSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 1); /** * @generated from message mantrae.v1.GetDnsProviderRequest */ -export type GetDnsProviderRequest = Message<'mantrae.v1.GetDnsProviderRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetDnsProviderRequest = Message<"mantrae.v1.GetDnsProviderRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.GetDnsProviderRequest. * Use `create(GetDnsProviderRequestSchema)` to create a new message. */ -export const GetDnsProviderRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 2); +export const GetDnsProviderRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 2); /** * @generated from message mantrae.v1.GetDnsProviderResponse */ -export type GetDnsProviderResponse = Message<'mantrae.v1.GetDnsProviderResponse'> & { - /** - * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; - */ - dnsProvider?: DnsProvider; +export type GetDnsProviderResponse = Message<"mantrae.v1.GetDnsProviderResponse"> & { + /** + * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; + */ + dnsProvider?: DnsProvider; }; /** * Describes the message mantrae.v1.GetDnsProviderResponse. * Use `create(GetDnsProviderResponseSchema)` to create a new message. */ -export const GetDnsProviderResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 3); +export const GetDnsProviderResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 3); /** * @generated from message mantrae.v1.CreateDnsProviderRequest */ -export type CreateDnsProviderRequest = Message<'mantrae.v1.CreateDnsProviderRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type CreateDnsProviderRequest = Message<"mantrae.v1.CreateDnsProviderRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; - /** - * @generated from field: mantrae.v1.DnsProviderType type = 2; - */ - type: DnsProviderType; + /** + * @generated from field: mantrae.v1.DnsProviderType type = 2; + */ + type: DnsProviderType; - /** - * @generated from field: mantrae.v1.DnsProviderConfig config = 3; - */ - config?: DnsProviderConfig; + /** + * @generated from field: mantrae.v1.DnsProviderConfig config = 3; + */ + config?: DnsProviderConfig; - /** - * @generated from field: bool is_active = 4; - */ - isActive: boolean; + /** + * @generated from field: bool is_active = 4; + */ + isActive: boolean; }; /** * Describes the message mantrae.v1.CreateDnsProviderRequest. * Use `create(CreateDnsProviderRequestSchema)` to create a new message. */ -export const CreateDnsProviderRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 4); +export const CreateDnsProviderRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 4); /** * @generated from message mantrae.v1.CreateDnsProviderResponse */ -export type CreateDnsProviderResponse = Message<'mantrae.v1.CreateDnsProviderResponse'> & { - /** - * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; - */ - dnsProvider?: DnsProvider; +export type CreateDnsProviderResponse = Message<"mantrae.v1.CreateDnsProviderResponse"> & { + /** + * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; + */ + dnsProvider?: DnsProvider; }; /** * Describes the message mantrae.v1.CreateDnsProviderResponse. * Use `create(CreateDnsProviderResponseSchema)` to create a new message. */ -export const CreateDnsProviderResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 5); +export const CreateDnsProviderResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 5); /** * @generated from message mantrae.v1.UpdateDnsProviderRequest */ -export type UpdateDnsProviderRequest = Message<'mantrae.v1.UpdateDnsProviderRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateDnsProviderRequest = Message<"mantrae.v1.UpdateDnsProviderRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: mantrae.v1.DnsProviderType type = 3; - */ - type: DnsProviderType; + /** + * @generated from field: mantrae.v1.DnsProviderType type = 3; + */ + type: DnsProviderType; - /** - * @generated from field: mantrae.v1.DnsProviderConfig config = 4; - */ - config?: DnsProviderConfig; + /** + * @generated from field: mantrae.v1.DnsProviderConfig config = 4; + */ + config?: DnsProviderConfig; - /** - * @generated from field: bool is_active = 5; - */ - isActive: boolean; + /** + * @generated from field: bool is_active = 5; + */ + isActive: boolean; }; /** * Describes the message mantrae.v1.UpdateDnsProviderRequest. * Use `create(UpdateDnsProviderRequestSchema)` to create a new message. */ -export const UpdateDnsProviderRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 6); +export const UpdateDnsProviderRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 6); /** * @generated from message mantrae.v1.UpdateDnsProviderResponse */ -export type UpdateDnsProviderResponse = Message<'mantrae.v1.UpdateDnsProviderResponse'> & { - /** - * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; - */ - dnsProvider?: DnsProvider; +export type UpdateDnsProviderResponse = Message<"mantrae.v1.UpdateDnsProviderResponse"> & { + /** + * @generated from field: mantrae.v1.DnsProvider dns_provider = 1; + */ + dnsProvider?: DnsProvider; }; /** * Describes the message mantrae.v1.UpdateDnsProviderResponse. * Use `create(UpdateDnsProviderResponseSchema)` to create a new message. */ -export const UpdateDnsProviderResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 7); +export const UpdateDnsProviderResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 7); /** * @generated from message mantrae.v1.DeleteDnsProviderRequest */ -export type DeleteDnsProviderRequest = Message<'mantrae.v1.DeleteDnsProviderRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteDnsProviderRequest = Message<"mantrae.v1.DeleteDnsProviderRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.DeleteDnsProviderRequest. * Use `create(DeleteDnsProviderRequestSchema)` to create a new message. */ -export const DeleteDnsProviderRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 8); +export const DeleteDnsProviderRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 8); /** * @generated from message mantrae.v1.DeleteDnsProviderResponse */ -export type DeleteDnsProviderResponse = Message<'mantrae.v1.DeleteDnsProviderResponse'> & {}; +export type DeleteDnsProviderResponse = Message<"mantrae.v1.DeleteDnsProviderResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteDnsProviderResponse. * Use `create(DeleteDnsProviderResponseSchema)` to create a new message. */ -export const DeleteDnsProviderResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 9); +export const DeleteDnsProviderResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 9); /** * @generated from message mantrae.v1.ListDnsProvidersRequest */ -export type ListDnsProvidersRequest = Message<'mantrae.v1.ListDnsProvidersRequest'> & { - /** - * @generated from field: optional int64 limit = 1; - */ - limit?: bigint; +export type ListDnsProvidersRequest = Message<"mantrae.v1.ListDnsProvidersRequest"> & { + /** + * @generated from field: optional int64 limit = 1; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 2; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 2; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListDnsProvidersRequest. * Use `create(ListDnsProvidersRequestSchema)` to create a new message. */ -export const ListDnsProvidersRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 10); +export const ListDnsProvidersRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 10); /** * @generated from message mantrae.v1.ListDnsProvidersResponse */ -export type ListDnsProvidersResponse = Message<'mantrae.v1.ListDnsProvidersResponse'> & { - /** - * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 1; - */ - dnsProviders: DnsProvider[]; +export type ListDnsProvidersResponse = Message<"mantrae.v1.ListDnsProvidersResponse"> & { + /** + * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 1; + */ + dnsProviders: DnsProvider[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListDnsProvidersResponse. * Use `create(ListDnsProvidersResponseSchema)` to create a new message. */ -export const ListDnsProvidersResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_dns_provider, 11); +export const ListDnsProvidersResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_dns_provider, 11); /** * @generated from enum mantrae.v1.DnsProviderType */ export enum DnsProviderType { - /** - * @generated from enum value: DNS_PROVIDER_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: DNS_PROVIDER_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: DNS_PROVIDER_TYPE_CLOUDFLARE = 1; - */ - CLOUDFLARE = 1, + /** + * @generated from enum value: DNS_PROVIDER_TYPE_CLOUDFLARE = 1; + */ + CLOUDFLARE = 1, - /** - * @generated from enum value: DNS_PROVIDER_TYPE_POWERDNS = 2; - */ - POWERDNS = 2, + /** + * @generated from enum value: DNS_PROVIDER_TYPE_POWERDNS = 2; + */ + POWERDNS = 2, - /** - * @generated from enum value: DNS_PROVIDER_TYPE_TECHNITIUM = 3; - */ - TECHNITIUM = 3 + /** + * @generated from enum value: DNS_PROVIDER_TYPE_TECHNITIUM = 3; + */ + TECHNITIUM = 3, } /** * Describes the enum mantrae.v1.DnsProviderType. */ -export const DnsProviderTypeSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_mantrae_v1_dns_provider, 0); +export const DnsProviderTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_dns_provider, 0); /** * @generated from service mantrae.v1.DnsProviderService */ export const DnsProviderService: GenService<{ - /** - * @generated from rpc mantrae.v1.DnsProviderService.GetDnsProvider - */ - getDnsProvider: { - methodKind: 'unary'; - input: typeof GetDnsProviderRequestSchema; - output: typeof GetDnsProviderResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.DnsProviderService.CreateDnsProvider - */ - createDnsProvider: { - methodKind: 'unary'; - input: typeof CreateDnsProviderRequestSchema; - output: typeof CreateDnsProviderResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.DnsProviderService.UpdateDnsProvider - */ - updateDnsProvider: { - methodKind: 'unary'; - input: typeof UpdateDnsProviderRequestSchema; - output: typeof UpdateDnsProviderResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.DnsProviderService.DeleteDnsProvider - */ - deleteDnsProvider: { - methodKind: 'unary'; - input: typeof DeleteDnsProviderRequestSchema; - output: typeof DeleteDnsProviderResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.DnsProviderService.ListDnsProviders - */ - listDnsProviders: { - methodKind: 'unary'; - input: typeof ListDnsProvidersRequestSchema; - output: typeof ListDnsProvidersResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_dns_provider, 0); + /** + * @generated from rpc mantrae.v1.DnsProviderService.GetDnsProvider + */ + getDnsProvider: { + methodKind: "unary"; + input: typeof GetDnsProviderRequestSchema; + output: typeof GetDnsProviderResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.DnsProviderService.CreateDnsProvider + */ + createDnsProvider: { + methodKind: "unary"; + input: typeof CreateDnsProviderRequestSchema; + output: typeof CreateDnsProviderResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.DnsProviderService.UpdateDnsProvider + */ + updateDnsProvider: { + methodKind: "unary"; + input: typeof UpdateDnsProviderRequestSchema; + output: typeof UpdateDnsProviderResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.DnsProviderService.DeleteDnsProvider + */ + deleteDnsProvider: { + methodKind: "unary"; + input: typeof DeleteDnsProviderRequestSchema; + output: typeof DeleteDnsProviderResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.DnsProviderService.ListDnsProviders + */ + listDnsProviders: { + methodKind: "unary"; + input: typeof ListDnsProvidersRequestSchema; + output: typeof ListDnsProvidersResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_dns_provider, 0); + diff --git a/web/src/lib/gen/mantrae/v1/entry_point_pb.ts b/web/src/lib/gen/mantrae/v1/entry_point_pb.ts index 9dcf4d1..da7ed2e 100644 --- a/web/src/lib/gen/mantrae/v1/entry_point_pb.ts +++ b/web/src/lib/gen/mantrae/v1/entry_point_pb.ts @@ -2,333 +2,321 @@ // @generated from file mantrae/v1/entry_point.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/entry_point.proto. */ -export const file_mantrae_v1_entry_point: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChxtYW50cmFlL3YxL2VudHJ5X3BvaW50LnByb3RvEgptYW50cmFlLnYxIr8BCgpFbnRyeVBvaW50EgoKAmlkGAEgASgDEhIKCnByb2ZpbGVfaWQYAiABKAMSDAoEbmFtZRgDIAEoCRIPCgdhZGRyZXNzGAQgASgJEhIKCmlzX2RlZmF1bHQYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLgoUR2V0RW50cnlQb2ludFJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAAiRAoVR2V0RW50cnlQb2ludFJlc3BvbnNlEisKC2VudHJ5X3BvaW50GAEgASgLMhYubWFudHJhZS52MS5FbnRyeVBvaW50IoEBChdDcmVhdGVFbnRyeVBvaW50UmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAEhgKBG5hbWUYAiABKAlCCrpIB8gBAXICEAESGAoHYWRkcmVzcxgDIAEoCUIHukgEcgIQARISCgppc19kZWZhdWx0GAQgASgIIkcKGENyZWF0ZUVudHJ5UG9pbnRSZXNwb25zZRIrCgtlbnRyeV9wb2ludBgBIAEoCzIWLm1hbnRyYWUudjEuRW50cnlQb2ludCJ5ChdVcGRhdGVFbnRyeVBvaW50UmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgABIYCgRuYW1lGAIgASgJQgq6SAfIAQFyAhABEhgKB2FkZHJlc3MYAyABKAlCB7pIBHICEAESEgoKaXNfZGVmYXVsdBgEIAEoCCJHChhVcGRhdGVFbnRyeVBvaW50UmVzcG9uc2USKwoLZW50cnlfcG9pbnQYASABKAsyFi5tYW50cmFlLnYxLkVudHJ5UG9pbnQiMQoXRGVsZXRlRW50cnlQb2ludFJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAAiGgoYRGVsZXRlRW50cnlQb2ludFJlc3BvbnNlItcBChZMaXN0RW50cnlQb2ludHNSZXF1ZXN0Eh4KCnByb2ZpbGVfaWQYASABKANCCrpIB8gBASICIAASagoFbGltaXQYAiABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSACIAQESHAoGb2Zmc2V0GAMgASgDQge6SAQiAigASAGIAQFCCAoGX2xpbWl0QgkKB19vZmZzZXQiXAoXTGlzdEVudHJ5UG9pbnRzUmVzcG9uc2USLAoMZW50cnlfcG9pbnRzGAEgAygLMhYubWFudHJhZS52MS5FbnRyeVBvaW50EhMKC3RvdGFsX2NvdW50GAIgASgDMuwDChFFbnRyeVBvaW50U2VydmljZRJZCg1HZXRFbnRyeVBvaW50EiAubWFudHJhZS52MS5HZXRFbnRyeVBvaW50UmVxdWVzdBohLm1hbnRyYWUudjEuR2V0RW50cnlQb2ludFJlc3BvbnNlIgOQAgESXQoQQ3JlYXRlRW50cnlQb2ludBIjLm1hbnRyYWUudjEuQ3JlYXRlRW50cnlQb2ludFJlcXVlc3QaJC5tYW50cmFlLnYxLkNyZWF0ZUVudHJ5UG9pbnRSZXNwb25zZRJdChBVcGRhdGVFbnRyeVBvaW50EiMubWFudHJhZS52MS5VcGRhdGVFbnRyeVBvaW50UmVxdWVzdBokLm1hbnRyYWUudjEuVXBkYXRlRW50cnlQb2ludFJlc3BvbnNlEl0KEERlbGV0ZUVudHJ5UG9pbnQSIy5tYW50cmFlLnYxLkRlbGV0ZUVudHJ5UG9pbnRSZXF1ZXN0GiQubWFudHJhZS52MS5EZWxldGVFbnRyeVBvaW50UmVzcG9uc2USXwoPTGlzdEVudHJ5UG9pbnRzEiIubWFudHJhZS52MS5MaXN0RW50cnlQb2ludHNSZXF1ZXN0GiMubWFudHJhZS52MS5MaXN0RW50cnlQb2ludHNSZXNwb25zZSIDkAIBQqkBCg5jb20ubWFudHJhZS52MUIPRW50cnlQb2ludFByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_entry_point: GenFile = /*@__PURE__*/ + fileDesc("ChxtYW50cmFlL3YxL2VudHJ5X3BvaW50LnByb3RvEgptYW50cmFlLnYxIr8BCgpFbnRyeVBvaW50EgoKAmlkGAEgASgDEhIKCnByb2ZpbGVfaWQYAiABKAMSDAoEbmFtZRgDIAEoCRIPCgdhZGRyZXNzGAQgASgJEhIKCmlzX2RlZmF1bHQYBSABKAgSLgoKY3JlYXRlZF9hdBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiKwoUR2V0RW50cnlQb2ludFJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAAiRAoVR2V0RW50cnlQb2ludFJlc3BvbnNlEisKC2VudHJ5X3BvaW50GAEgASgLMhYubWFudHJhZS52MS5FbnRyeVBvaW50InsKF0NyZWF0ZUVudHJ5UG9pbnRSZXF1ZXN0EhsKCnByb2ZpbGVfaWQYASABKANCB7pIBCICIAASFQoEbmFtZRgCIAEoCUIHukgEcgIQARIYCgdhZGRyZXNzGAMgASgJQge6SARyAhABEhIKCmlzX2RlZmF1bHQYBCABKAgiRwoYQ3JlYXRlRW50cnlQb2ludFJlc3BvbnNlEisKC2VudHJ5X3BvaW50GAEgASgLMhYubWFudHJhZS52MS5FbnRyeVBvaW50InMKF1VwZGF0ZUVudHJ5UG9pbnRSZXF1ZXN0EhMKAmlkGAEgASgDQge6SAQiAiAAEhUKBG5hbWUYAiABKAlCB7pIBHICEAESGAoHYWRkcmVzcxgDIAEoCUIHukgEcgIQARISCgppc19kZWZhdWx0GAQgASgIIkcKGFVwZGF0ZUVudHJ5UG9pbnRSZXNwb25zZRIrCgtlbnRyeV9wb2ludBgBIAEoCzIWLm1hbnRyYWUudjEuRW50cnlQb2ludCIxChdEZWxldGVFbnRyeVBvaW50UmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgACIaChhEZWxldGVFbnRyeVBvaW50UmVzcG9uc2Ui1AEKFkxpc3RFbnRyeVBvaW50c1JlcXVlc3QSGwoKcHJvZmlsZV9pZBgBIAEoA0IHukgEIgIgABJqCgVsaW1pdBgCIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAIgBARIcCgZvZmZzZXQYAyABKANCB7pIBCICKABIAYgBAUIICgZfbGltaXRCCQoHX29mZnNldCJcChdMaXN0RW50cnlQb2ludHNSZXNwb25zZRIsCgxlbnRyeV9wb2ludHMYASADKAsyFi5tYW50cmFlLnYxLkVudHJ5UG9pbnQSEwoLdG90YWxfY291bnQYAiABKAMy7AMKEUVudHJ5UG9pbnRTZXJ2aWNlElkKDUdldEVudHJ5UG9pbnQSIC5tYW50cmFlLnYxLkdldEVudHJ5UG9pbnRSZXF1ZXN0GiEubWFudHJhZS52MS5HZXRFbnRyeVBvaW50UmVzcG9uc2UiA5ACARJdChBDcmVhdGVFbnRyeVBvaW50EiMubWFudHJhZS52MS5DcmVhdGVFbnRyeVBvaW50UmVxdWVzdBokLm1hbnRyYWUudjEuQ3JlYXRlRW50cnlQb2ludFJlc3BvbnNlEl0KEFVwZGF0ZUVudHJ5UG9pbnQSIy5tYW50cmFlLnYxLlVwZGF0ZUVudHJ5UG9pbnRSZXF1ZXN0GiQubWFudHJhZS52MS5VcGRhdGVFbnRyeVBvaW50UmVzcG9uc2USXQoQRGVsZXRlRW50cnlQb2ludBIjLm1hbnRyYWUudjEuRGVsZXRlRW50cnlQb2ludFJlcXVlc3QaJC5tYW50cmFlLnYxLkRlbGV0ZUVudHJ5UG9pbnRSZXNwb25zZRJfCg9MaXN0RW50cnlQb2ludHMSIi5tYW50cmFlLnYxLkxpc3RFbnRyeVBvaW50c1JlcXVlc3QaIy5tYW50cmFlLnYxLkxpc3RFbnRyeVBvaW50c1Jlc3BvbnNlIgOQAgFCqQEKDmNvbS5tYW50cmFlLnYxQg9FbnRyeVBvaW50UHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.EntryPoint */ -export type EntryPoint = Message<'mantrae.v1.EntryPoint'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type EntryPoint = Message<"mantrae.v1.EntryPoint"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string name = 3; - */ - name: string; + /** + * @generated from field: string name = 3; + */ + name: string; - /** - * @generated from field: string address = 4; - */ - address: string; + /** + * @generated from field: string address = 4; + */ + address: string; - /** - * @generated from field: bool is_default = 5; - */ - isDefault: boolean; + /** + * @generated from field: bool is_default = 5; + */ + isDefault: boolean; - /** - * @generated from field: google.protobuf.Timestamp created_at = 6; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 6; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 7; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 7; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.EntryPoint. * Use `create(EntryPointSchema)` to create a new message. */ -export const EntryPointSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 0); +export const EntryPointSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 0); /** * @generated from message mantrae.v1.GetEntryPointRequest */ -export type GetEntryPointRequest = Message<'mantrae.v1.GetEntryPointRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetEntryPointRequest = Message<"mantrae.v1.GetEntryPointRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.GetEntryPointRequest. * Use `create(GetEntryPointRequestSchema)` to create a new message. */ -export const GetEntryPointRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 1); +export const GetEntryPointRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 1); /** * @generated from message mantrae.v1.GetEntryPointResponse */ -export type GetEntryPointResponse = Message<'mantrae.v1.GetEntryPointResponse'> & { - /** - * @generated from field: mantrae.v1.EntryPoint entry_point = 1; - */ - entryPoint?: EntryPoint; +export type GetEntryPointResponse = Message<"mantrae.v1.GetEntryPointResponse"> & { + /** + * @generated from field: mantrae.v1.EntryPoint entry_point = 1; + */ + entryPoint?: EntryPoint; }; /** * Describes the message mantrae.v1.GetEntryPointResponse. * Use `create(GetEntryPointResponseSchema)` to create a new message. */ -export const GetEntryPointResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 2); +export const GetEntryPointResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 2); /** * @generated from message mantrae.v1.CreateEntryPointRequest */ -export type CreateEntryPointRequest = Message<'mantrae.v1.CreateEntryPointRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type CreateEntryPointRequest = Message<"mantrae.v1.CreateEntryPointRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: string address = 3; - */ - address: string; + /** + * @generated from field: string address = 3; + */ + address: string; - /** - * @generated from field: bool is_default = 4; - */ - isDefault: boolean; + /** + * @generated from field: bool is_default = 4; + */ + isDefault: boolean; }; /** * Describes the message mantrae.v1.CreateEntryPointRequest. * Use `create(CreateEntryPointRequestSchema)` to create a new message. */ -export const CreateEntryPointRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 3); +export const CreateEntryPointRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 3); /** * @generated from message mantrae.v1.CreateEntryPointResponse */ -export type CreateEntryPointResponse = Message<'mantrae.v1.CreateEntryPointResponse'> & { - /** - * @generated from field: mantrae.v1.EntryPoint entry_point = 1; - */ - entryPoint?: EntryPoint; +export type CreateEntryPointResponse = Message<"mantrae.v1.CreateEntryPointResponse"> & { + /** + * @generated from field: mantrae.v1.EntryPoint entry_point = 1; + */ + entryPoint?: EntryPoint; }; /** * Describes the message mantrae.v1.CreateEntryPointResponse. * Use `create(CreateEntryPointResponseSchema)` to create a new message. */ -export const CreateEntryPointResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 4); +export const CreateEntryPointResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 4); /** * @generated from message mantrae.v1.UpdateEntryPointRequest */ -export type UpdateEntryPointRequest = Message<'mantrae.v1.UpdateEntryPointRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateEntryPointRequest = Message<"mantrae.v1.UpdateEntryPointRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: string address = 3; - */ - address: string; + /** + * @generated from field: string address = 3; + */ + address: string; - /** - * @generated from field: bool is_default = 4; - */ - isDefault: boolean; + /** + * @generated from field: bool is_default = 4; + */ + isDefault: boolean; }; /** * Describes the message mantrae.v1.UpdateEntryPointRequest. * Use `create(UpdateEntryPointRequestSchema)` to create a new message. */ -export const UpdateEntryPointRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 5); +export const UpdateEntryPointRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 5); /** * @generated from message mantrae.v1.UpdateEntryPointResponse */ -export type UpdateEntryPointResponse = Message<'mantrae.v1.UpdateEntryPointResponse'> & { - /** - * @generated from field: mantrae.v1.EntryPoint entry_point = 1; - */ - entryPoint?: EntryPoint; +export type UpdateEntryPointResponse = Message<"mantrae.v1.UpdateEntryPointResponse"> & { + /** + * @generated from field: mantrae.v1.EntryPoint entry_point = 1; + */ + entryPoint?: EntryPoint; }; /** * Describes the message mantrae.v1.UpdateEntryPointResponse. * Use `create(UpdateEntryPointResponseSchema)` to create a new message. */ -export const UpdateEntryPointResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 6); +export const UpdateEntryPointResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 6); /** * @generated from message mantrae.v1.DeleteEntryPointRequest */ -export type DeleteEntryPointRequest = Message<'mantrae.v1.DeleteEntryPointRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteEntryPointRequest = Message<"mantrae.v1.DeleteEntryPointRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.DeleteEntryPointRequest. * Use `create(DeleteEntryPointRequestSchema)` to create a new message. */ -export const DeleteEntryPointRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 7); +export const DeleteEntryPointRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 7); /** * @generated from message mantrae.v1.DeleteEntryPointResponse */ -export type DeleteEntryPointResponse = Message<'mantrae.v1.DeleteEntryPointResponse'> & {}; +export type DeleteEntryPointResponse = Message<"mantrae.v1.DeleteEntryPointResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteEntryPointResponse. * Use `create(DeleteEntryPointResponseSchema)` to create a new message. */ -export const DeleteEntryPointResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 8); +export const DeleteEntryPointResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 8); /** * @generated from message mantrae.v1.ListEntryPointsRequest */ -export type ListEntryPointsRequest = Message<'mantrae.v1.ListEntryPointsRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ListEntryPointsRequest = Message<"mantrae.v1.ListEntryPointsRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: optional int64 limit = 2; - */ - limit?: bigint; + /** + * @generated from field: optional int64 limit = 2; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 3; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 3; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListEntryPointsRequest. * Use `create(ListEntryPointsRequestSchema)` to create a new message. */ -export const ListEntryPointsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 9); +export const ListEntryPointsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 9); /** * @generated from message mantrae.v1.ListEntryPointsResponse */ -export type ListEntryPointsResponse = Message<'mantrae.v1.ListEntryPointsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.EntryPoint entry_points = 1; - */ - entryPoints: EntryPoint[]; +export type ListEntryPointsResponse = Message<"mantrae.v1.ListEntryPointsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.EntryPoint entry_points = 1; + */ + entryPoints: EntryPoint[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListEntryPointsResponse. * Use `create(ListEntryPointsResponseSchema)` to create a new message. */ -export const ListEntryPointsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_entry_point, 10); +export const ListEntryPointsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_entry_point, 10); /** * @generated from service mantrae.v1.EntryPointService */ export const EntryPointService: GenService<{ - /** - * @generated from rpc mantrae.v1.EntryPointService.GetEntryPoint - */ - getEntryPoint: { - methodKind: 'unary'; - input: typeof GetEntryPointRequestSchema; - output: typeof GetEntryPointResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.EntryPointService.CreateEntryPoint - */ - createEntryPoint: { - methodKind: 'unary'; - input: typeof CreateEntryPointRequestSchema; - output: typeof CreateEntryPointResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.EntryPointService.UpdateEntryPoint - */ - updateEntryPoint: { - methodKind: 'unary'; - input: typeof UpdateEntryPointRequestSchema; - output: typeof UpdateEntryPointResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.EntryPointService.DeleteEntryPoint - */ - deleteEntryPoint: { - methodKind: 'unary'; - input: typeof DeleteEntryPointRequestSchema; - output: typeof DeleteEntryPointResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.EntryPointService.ListEntryPoints - */ - listEntryPoints: { - methodKind: 'unary'; - input: typeof ListEntryPointsRequestSchema; - output: typeof ListEntryPointsResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_entry_point, 0); + /** + * @generated from rpc mantrae.v1.EntryPointService.GetEntryPoint + */ + getEntryPoint: { + methodKind: "unary"; + input: typeof GetEntryPointRequestSchema; + output: typeof GetEntryPointResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.EntryPointService.CreateEntryPoint + */ + createEntryPoint: { + methodKind: "unary"; + input: typeof CreateEntryPointRequestSchema; + output: typeof CreateEntryPointResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.EntryPointService.UpdateEntryPoint + */ + updateEntryPoint: { + methodKind: "unary"; + input: typeof UpdateEntryPointRequestSchema; + output: typeof UpdateEntryPointResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.EntryPointService.DeleteEntryPoint + */ + deleteEntryPoint: { + methodKind: "unary"; + input: typeof DeleteEntryPointRequestSchema; + output: typeof DeleteEntryPointResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.EntryPointService.ListEntryPoints + */ + listEntryPoints: { + methodKind: "unary"; + input: typeof ListEntryPointsRequestSchema; + output: typeof ListEntryPointsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_entry_point, 0); + diff --git a/web/src/lib/gen/mantrae/v1/event_pb.ts b/web/src/lib/gen/mantrae/v1/event_pb.ts index 92170c4..e077668 100644 --- a/web/src/lib/gen/mantrae/v1/event_pb.ts +++ b/web/src/lib/gen/mantrae/v1/event_pb.ts @@ -2,369 +2,340 @@ // @generated from file mantrae/v1/event.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Agent } from './agent_pb'; -import { file_mantrae_v1_agent } from './agent_pb'; -import type { AuditLog } from './auditlog_pb'; -import { file_mantrae_v1_auditlog } from './auditlog_pb'; -import type { DnsProvider } from './dns_provider_pb'; -import { file_mantrae_v1_dns_provider } from './dns_provider_pb'; -import type { EntryPoint } from './entry_point_pb'; -import { file_mantrae_v1_entry_point } from './entry_point_pb'; -import type { Middleware } from './middleware_pb'; -import { file_mantrae_v1_middleware } from './middleware_pb'; -import type { Router } from './router_pb'; -import { file_mantrae_v1_router } from './router_pb'; -import type { Service } from './service_pb'; -import { file_mantrae_v1_service } from './service_pb'; -import type { User } from './user_pb'; -import { file_mantrae_v1_user } from './user_pb'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Agent } from "./agent_pb"; +import { file_mantrae_v1_agent } from "./agent_pb"; +import type { AuditLog } from "./auditlog_pb"; +import { file_mantrae_v1_auditlog } from "./auditlog_pb"; +import type { DnsProvider } from "./dns_provider_pb"; +import { file_mantrae_v1_dns_provider } from "./dns_provider_pb"; +import type { EntryPoint } from "./entry_point_pb"; +import { file_mantrae_v1_entry_point } from "./entry_point_pb"; +import type { Middleware } from "./middleware_pb"; +import { file_mantrae_v1_middleware } from "./middleware_pb"; +import type { Router } from "./router_pb"; +import { file_mantrae_v1_router } from "./router_pb"; +import type { Service } from "./service_pb"; +import { file_mantrae_v1_service } from "./service_pb"; +import type { User } from "./user_pb"; +import { file_mantrae_v1_user } from "./user_pb"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/event.proto. */ -export const file_mantrae_v1_event: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChZtYW50cmFlL3YxL2V2ZW50LnByb3RvEgptYW50cmFlLnYxIrMDCgxQcm9maWxlRXZlbnQSKQoKZXZlbnRfdHlwZRgBIAEoDjIVLm1hbnRyYWUudjEuRXZlbnRUeXBlEi8KDXJlc291cmNlX3R5cGUYAiABKA4yGC5tYW50cmFlLnYxLlJlc291cmNlVHlwZRISCgpwcm9maWxlX2lkGAMgASgDEi0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJAoGcm91dGVyGAogASgLMhIubWFudHJhZS52MS5Sb3V0ZXJIABImCgdzZXJ2aWNlGAsgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlSAASLAoKbWlkZGxld2FyZRgMIAEoCzIWLm1hbnRyYWUudjEuTWlkZGxld2FyZUgAEi0KC2VudHJ5X3BvaW50GA0gASgLMhYubWFudHJhZS52MS5FbnRyeVBvaW50SAASIgoFYWdlbnQYDiABKAsyES5tYW50cmFlLnYxLkFnZW50SAASKQoJYXVkaXRfbG9nGA8gASgLMhQubWFudHJhZS52MS5BdWRpdExvZ0gAQgoKCHJlc291cmNlIvcBCgtHbG9iYWxFdmVudBIpCgpldmVudF90eXBlGAEgASgOMhUubWFudHJhZS52MS5FdmVudFR5cGUSLwoNcmVzb3VyY2VfdHlwZRgCIAEoDjIYLm1hbnRyYWUudjEuUmVzb3VyY2VUeXBlEi0KCXRpbWVzdGFtcBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIAoEdXNlchgKIAEoCzIQLm1hbnRyYWUudjEuVXNlckgAEi8KDGRuc19wcm92aWRlchgLIAEoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXJIAEIKCghyZXNvdXJjZSJoChRQcm9maWxlRXZlbnRzUmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAEjAKDnJlc291cmNlX3R5cGVzGAIgAygOMhgubWFudHJhZS52MS5SZXNvdXJjZVR5cGUiQAoVUHJvZmlsZUV2ZW50c1Jlc3BvbnNlEicKBWV2ZW50GAEgASgLMhgubWFudHJhZS52MS5Qcm9maWxlRXZlbnQiRwoTR2xvYmFsRXZlbnRzUmVxdWVzdBIwCg5yZXNvdXJjZV90eXBlcxgBIAMoDjIYLm1hbnRyYWUudjEuUmVzb3VyY2VUeXBlIj4KFEdsb2JhbEV2ZW50c1Jlc3BvbnNlEiYKBWV2ZW50GAEgASgLMhcubWFudHJhZS52MS5HbG9iYWxFdmVudCpvCglFdmVudFR5cGUSGgoWRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEhYKEkVWRU5UX1RZUEVfQ1JFQVRFRBABEhYKEkVWRU5UX1RZUEVfVVBEQVRFRBACEhYKEkVWRU5UX1RZUEVfREVMRVRFRBADKo0CCgxSZXNvdXJjZVR5cGUSHQoZUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEhgKFFJFU09VUkNFX1RZUEVfUk9VVEVSEAESGQoVUkVTT1VSQ0VfVFlQRV9TRVJWSUNFEAISHAoYUkVTT1VSQ0VfVFlQRV9NSURETEVXQVJFEAMSHQoZUkVTT1VSQ0VfVFlQRV9FTlRSWV9QT0lOVBAEEhsKF1JFU09VUkNFX1RZUEVfQVVESVRfTE9HEAUSFwoTUkVTT1VSQ0VfVFlQRV9BR0VOVBAGEhYKElJFU09VUkNFX1RZUEVfVVNFUhAHEh4KGlJFU09VUkNFX1RZUEVfRE5TX1BST1ZJREVSEAgyuwEKDEV2ZW50U2VydmljZRJWCg1Qcm9maWxlRXZlbnRzEiAubWFudHJhZS52MS5Qcm9maWxlRXZlbnRzUmVxdWVzdBohLm1hbnRyYWUudjEuUHJvZmlsZUV2ZW50c1Jlc3BvbnNlMAESUwoMR2xvYmFsRXZlbnRzEh8ubWFudHJhZS52MS5HbG9iYWxFdmVudHNSZXF1ZXN0GiAubWFudHJhZS52MS5HbG9iYWxFdmVudHNSZXNwb25zZTABQqQBCg5jb20ubWFudHJhZS52MUIKRXZlbnRQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw', - [ - file_buf_validate_validate, - file_google_protobuf_timestamp, - file_mantrae_v1_agent, - file_mantrae_v1_auditlog, - file_mantrae_v1_dns_provider, - file_mantrae_v1_entry_point, - file_mantrae_v1_middleware, - file_mantrae_v1_router, - file_mantrae_v1_service, - file_mantrae_v1_user - ] - ); +export const file_mantrae_v1_event: GenFile = /*@__PURE__*/ + fileDesc("ChZtYW50cmFlL3YxL2V2ZW50LnByb3RvEgptYW50cmFlLnYxIrMDCgxQcm9maWxlRXZlbnQSKQoKZXZlbnRfdHlwZRgBIAEoDjIVLm1hbnRyYWUudjEuRXZlbnRUeXBlEi8KDXJlc291cmNlX3R5cGUYAiABKA4yGC5tYW50cmFlLnYxLlJlc291cmNlVHlwZRISCgpwcm9maWxlX2lkGAMgASgDEi0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASJAoGcm91dGVyGAogASgLMhIubWFudHJhZS52MS5Sb3V0ZXJIABImCgdzZXJ2aWNlGAsgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlSAASLAoKbWlkZGxld2FyZRgMIAEoCzIWLm1hbnRyYWUudjEuTWlkZGxld2FyZUgAEi0KC2VudHJ5X3BvaW50GA0gASgLMhYubWFudHJhZS52MS5FbnRyeVBvaW50SAASIgoFYWdlbnQYDiABKAsyES5tYW50cmFlLnYxLkFnZW50SAASKQoJYXVkaXRfbG9nGA8gASgLMhQubWFudHJhZS52MS5BdWRpdExvZ0gAQgoKCHJlc291cmNlIvcBCgtHbG9iYWxFdmVudBIpCgpldmVudF90eXBlGAEgASgOMhUubWFudHJhZS52MS5FdmVudFR5cGUSLwoNcmVzb3VyY2VfdHlwZRgCIAEoDjIYLm1hbnRyYWUudjEuUmVzb3VyY2VUeXBlEi0KCXRpbWVzdGFtcBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASIAoEdXNlchgKIAEoCzIQLm1hbnRyYWUudjEuVXNlckgAEi8KDGRuc19wcm92aWRlchgLIAEoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXJIAEIKCghyZXNvdXJjZSJlChRQcm9maWxlRXZlbnRzUmVxdWVzdBIbCgpwcm9maWxlX2lkGAEgASgDQge6SAQiAiAAEjAKDnJlc291cmNlX3R5cGVzGAIgAygOMhgubWFudHJhZS52MS5SZXNvdXJjZVR5cGUiQAoVUHJvZmlsZUV2ZW50c1Jlc3BvbnNlEicKBWV2ZW50GAEgASgLMhgubWFudHJhZS52MS5Qcm9maWxlRXZlbnQiRwoTR2xvYmFsRXZlbnRzUmVxdWVzdBIwCg5yZXNvdXJjZV90eXBlcxgBIAMoDjIYLm1hbnRyYWUudjEuUmVzb3VyY2VUeXBlIj4KFEdsb2JhbEV2ZW50c1Jlc3BvbnNlEiYKBWV2ZW50GAEgASgLMhcubWFudHJhZS52MS5HbG9iYWxFdmVudCpvCglFdmVudFR5cGUSGgoWRVZFTlRfVFlQRV9VTlNQRUNJRklFRBAAEhYKEkVWRU5UX1RZUEVfQ1JFQVRFRBABEhYKEkVWRU5UX1RZUEVfVVBEQVRFRBACEhYKEkVWRU5UX1RZUEVfREVMRVRFRBADKo0CCgxSZXNvdXJjZVR5cGUSHQoZUkVTT1VSQ0VfVFlQRV9VTlNQRUNJRklFRBAAEhgKFFJFU09VUkNFX1RZUEVfUk9VVEVSEAESGQoVUkVTT1VSQ0VfVFlQRV9TRVJWSUNFEAISHAoYUkVTT1VSQ0VfVFlQRV9NSURETEVXQVJFEAMSHQoZUkVTT1VSQ0VfVFlQRV9FTlRSWV9QT0lOVBAEEhsKF1JFU09VUkNFX1RZUEVfQVVESVRfTE9HEAUSFwoTUkVTT1VSQ0VfVFlQRV9BR0VOVBAGEhYKElJFU09VUkNFX1RZUEVfVVNFUhAHEh4KGlJFU09VUkNFX1RZUEVfRE5TX1BST1ZJREVSEAgyuwEKDEV2ZW50U2VydmljZRJWCg1Qcm9maWxlRXZlbnRzEiAubWFudHJhZS52MS5Qcm9maWxlRXZlbnRzUmVxdWVzdBohLm1hbnRyYWUudjEuUHJvZmlsZUV2ZW50c1Jlc3BvbnNlMAESUwoMR2xvYmFsRXZlbnRzEh8ubWFudHJhZS52MS5HbG9iYWxFdmVudHNSZXF1ZXN0GiAubWFudHJhZS52MS5HbG9iYWxFdmVudHNSZXNwb25zZTABQqQBCg5jb20ubWFudHJhZS52MUIKRXZlbnRQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_timestamp, file_mantrae_v1_agent, file_mantrae_v1_auditlog, file_mantrae_v1_dns_provider, file_mantrae_v1_entry_point, file_mantrae_v1_middleware, file_mantrae_v1_router, file_mantrae_v1_service, file_mantrae_v1_user]); /** * @generated from message mantrae.v1.ProfileEvent */ -export type ProfileEvent = Message<'mantrae.v1.ProfileEvent'> & { - /** - * @generated from field: mantrae.v1.EventType event_type = 1; - */ - eventType: EventType; +export type ProfileEvent = Message<"mantrae.v1.ProfileEvent"> & { + /** + * @generated from field: mantrae.v1.EventType event_type = 1; + */ + eventType: EventType; - /** - * @generated from field: mantrae.v1.ResourceType resource_type = 2; - */ - resourceType: ResourceType; + /** + * @generated from field: mantrae.v1.ResourceType resource_type = 2; + */ + resourceType: ResourceType; - /** - * @generated from field: int64 profile_id = 3; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 3; + */ + profileId: bigint; - /** - * @generated from field: google.protobuf.Timestamp timestamp = 4; - */ - timestamp?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp timestamp = 4; + */ + timestamp?: Timestamp; - /** - * @generated from oneof mantrae.v1.ProfileEvent.resource - */ - resource: - | { - /** - * @generated from field: mantrae.v1.Router router = 10; - */ - value: Router; - case: 'router'; - } - | { - /** - * @generated from field: mantrae.v1.Service service = 11; - */ - value: Service; - case: 'service'; - } - | { - /** - * @generated from field: mantrae.v1.Middleware middleware = 12; - */ - value: Middleware; - case: 'middleware'; - } - | { - /** - * @generated from field: mantrae.v1.EntryPoint entry_point = 13; - */ - value: EntryPoint; - case: 'entryPoint'; - } - | { - /** - * @generated from field: mantrae.v1.Agent agent = 14; - */ - value: Agent; - case: 'agent'; - } - | { - /** - * @generated from field: mantrae.v1.AuditLog audit_log = 15; - */ - value: AuditLog; - case: 'auditLog'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof mantrae.v1.ProfileEvent.resource + */ + resource: { + /** + * @generated from field: mantrae.v1.Router router = 10; + */ + value: Router; + case: "router"; + } | { + /** + * @generated from field: mantrae.v1.Service service = 11; + */ + value: Service; + case: "service"; + } | { + /** + * @generated from field: mantrae.v1.Middleware middleware = 12; + */ + value: Middleware; + case: "middleware"; + } | { + /** + * @generated from field: mantrae.v1.EntryPoint entry_point = 13; + */ + value: EntryPoint; + case: "entryPoint"; + } | { + /** + * @generated from field: mantrae.v1.Agent agent = 14; + */ + value: Agent; + case: "agent"; + } | { + /** + * @generated from field: mantrae.v1.AuditLog audit_log = 15; + */ + value: AuditLog; + case: "auditLog"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message mantrae.v1.ProfileEvent. * Use `create(ProfileEventSchema)` to create a new message. */ -export const ProfileEventSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 0); +export const ProfileEventSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 0); /** * @generated from message mantrae.v1.GlobalEvent */ -export type GlobalEvent = Message<'mantrae.v1.GlobalEvent'> & { - /** - * @generated from field: mantrae.v1.EventType event_type = 1; - */ - eventType: EventType; +export type GlobalEvent = Message<"mantrae.v1.GlobalEvent"> & { + /** + * @generated from field: mantrae.v1.EventType event_type = 1; + */ + eventType: EventType; - /** - * @generated from field: mantrae.v1.ResourceType resource_type = 2; - */ - resourceType: ResourceType; + /** + * @generated from field: mantrae.v1.ResourceType resource_type = 2; + */ + resourceType: ResourceType; - /** - * @generated from field: google.protobuf.Timestamp timestamp = 3; - */ - timestamp?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp timestamp = 3; + */ + timestamp?: Timestamp; - /** - * @generated from oneof mantrae.v1.GlobalEvent.resource - */ - resource: - | { - /** - * @generated from field: mantrae.v1.User user = 10; - */ - value: User; - case: 'user'; - } - | { - /** - * @generated from field: mantrae.v1.DnsProvider dns_provider = 11; - */ - value: DnsProvider; - case: 'dnsProvider'; - } - | { case: undefined; value?: undefined }; + /** + * @generated from oneof mantrae.v1.GlobalEvent.resource + */ + resource: { + /** + * @generated from field: mantrae.v1.User user = 10; + */ + value: User; + case: "user"; + } | { + /** + * @generated from field: mantrae.v1.DnsProvider dns_provider = 11; + */ + value: DnsProvider; + case: "dnsProvider"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message mantrae.v1.GlobalEvent. * Use `create(GlobalEventSchema)` to create a new message. */ -export const GlobalEventSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 1); +export const GlobalEventSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 1); /** * @generated from message mantrae.v1.ProfileEventsRequest */ -export type ProfileEventsRequest = Message<'mantrae.v1.ProfileEventsRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ProfileEventsRequest = Message<"mantrae.v1.ProfileEventsRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * Filter by specific resource types - * - * @generated from field: repeated mantrae.v1.ResourceType resource_types = 2; - */ - resourceTypes: ResourceType[]; + /** + * Filter by specific resource types + * + * @generated from field: repeated mantrae.v1.ResourceType resource_types = 2; + */ + resourceTypes: ResourceType[]; }; /** * Describes the message mantrae.v1.ProfileEventsRequest. * Use `create(ProfileEventsRequestSchema)` to create a new message. */ -export const ProfileEventsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 2); +export const ProfileEventsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 2); /** * @generated from message mantrae.v1.ProfileEventsResponse */ -export type ProfileEventsResponse = Message<'mantrae.v1.ProfileEventsResponse'> & { - /** - * @generated from field: mantrae.v1.ProfileEvent event = 1; - */ - event?: ProfileEvent; +export type ProfileEventsResponse = Message<"mantrae.v1.ProfileEventsResponse"> & { + /** + * @generated from field: mantrae.v1.ProfileEvent event = 1; + */ + event?: ProfileEvent; }; /** * Describes the message mantrae.v1.ProfileEventsResponse. * Use `create(ProfileEventsResponseSchema)` to create a new message. */ -export const ProfileEventsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 3); +export const ProfileEventsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 3); /** * @generated from message mantrae.v1.GlobalEventsRequest */ -export type GlobalEventsRequest = Message<'mantrae.v1.GlobalEventsRequest'> & { - /** - * Filter by specific resource types - * - * @generated from field: repeated mantrae.v1.ResourceType resource_types = 1; - */ - resourceTypes: ResourceType[]; +export type GlobalEventsRequest = Message<"mantrae.v1.GlobalEventsRequest"> & { + /** + * Filter by specific resource types + * + * @generated from field: repeated mantrae.v1.ResourceType resource_types = 1; + */ + resourceTypes: ResourceType[]; }; /** * Describes the message mantrae.v1.GlobalEventsRequest. * Use `create(GlobalEventsRequestSchema)` to create a new message. */ -export const GlobalEventsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 4); +export const GlobalEventsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 4); /** * @generated from message mantrae.v1.GlobalEventsResponse */ -export type GlobalEventsResponse = Message<'mantrae.v1.GlobalEventsResponse'> & { - /** - * @generated from field: mantrae.v1.GlobalEvent event = 1; - */ - event?: GlobalEvent; +export type GlobalEventsResponse = Message<"mantrae.v1.GlobalEventsResponse"> & { + /** + * @generated from field: mantrae.v1.GlobalEvent event = 1; + */ + event?: GlobalEvent; }; /** * Describes the message mantrae.v1.GlobalEventsResponse. * Use `create(GlobalEventsResponseSchema)` to create a new message. */ -export const GlobalEventsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_event, 5); +export const GlobalEventsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_event, 5); /** * @generated from enum mantrae.v1.EventType */ export enum EventType { - /** - * @generated from enum value: EVENT_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: EVENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: EVENT_TYPE_CREATED = 1; - */ - CREATED = 1, + /** + * @generated from enum value: EVENT_TYPE_CREATED = 1; + */ + CREATED = 1, - /** - * @generated from enum value: EVENT_TYPE_UPDATED = 2; - */ - UPDATED = 2, + /** + * @generated from enum value: EVENT_TYPE_UPDATED = 2; + */ + UPDATED = 2, - /** - * @generated from enum value: EVENT_TYPE_DELETED = 3; - */ - DELETED = 3 + /** + * @generated from enum value: EVENT_TYPE_DELETED = 3; + */ + DELETED = 3, } /** * Describes the enum mantrae.v1.EventType. */ -export const EventTypeSchema: GenEnum = /*@__PURE__*/ enumDesc(file_mantrae_v1_event, 0); +export const EventTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_event, 0); /** * @generated from enum mantrae.v1.ResourceType */ export enum ResourceType { - /** - * @generated from enum value: RESOURCE_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: RESOURCE_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: RESOURCE_TYPE_ROUTER = 1; - */ - ROUTER = 1, + /** + * @generated from enum value: RESOURCE_TYPE_ROUTER = 1; + */ + ROUTER = 1, - /** - * @generated from enum value: RESOURCE_TYPE_SERVICE = 2; - */ - SERVICE = 2, + /** + * @generated from enum value: RESOURCE_TYPE_SERVICE = 2; + */ + SERVICE = 2, - /** - * @generated from enum value: RESOURCE_TYPE_MIDDLEWARE = 3; - */ - MIDDLEWARE = 3, + /** + * @generated from enum value: RESOURCE_TYPE_MIDDLEWARE = 3; + */ + MIDDLEWARE = 3, - /** - * @generated from enum value: RESOURCE_TYPE_ENTRY_POINT = 4; - */ - ENTRY_POINT = 4, + /** + * @generated from enum value: RESOURCE_TYPE_ENTRY_POINT = 4; + */ + ENTRY_POINT = 4, - /** - * @generated from enum value: RESOURCE_TYPE_AUDIT_LOG = 5; - */ - AUDIT_LOG = 5, + /** + * @generated from enum value: RESOURCE_TYPE_AUDIT_LOG = 5; + */ + AUDIT_LOG = 5, - /** - * @generated from enum value: RESOURCE_TYPE_AGENT = 6; - */ - AGENT = 6, + /** + * @generated from enum value: RESOURCE_TYPE_AGENT = 6; + */ + AGENT = 6, - /** - * @generated from enum value: RESOURCE_TYPE_USER = 7; - */ - USER = 7, + /** + * @generated from enum value: RESOURCE_TYPE_USER = 7; + */ + USER = 7, - /** - * @generated from enum value: RESOURCE_TYPE_DNS_PROVIDER = 8; - */ - DNS_PROVIDER = 8 + /** + * @generated from enum value: RESOURCE_TYPE_DNS_PROVIDER = 8; + */ + DNS_PROVIDER = 8, } /** * Describes the enum mantrae.v1.ResourceType. */ -export const ResourceTypeSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_mantrae_v1_event, 1); +export const ResourceTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_event, 1); /** * @generated from service mantrae.v1.EventService */ export const EventService: GenService<{ - /** - * Profile-scoped events (routers, services, middlewares, entrypoints) - * - * @generated from rpc mantrae.v1.EventService.ProfileEvents - */ - profileEvents: { - methodKind: 'server_streaming'; - input: typeof ProfileEventsRequestSchema; - output: typeof ProfileEventsResponseSchema; - }; - /** - * Global events (users, dns) - * - * @generated from rpc mantrae.v1.EventService.GlobalEvents - */ - globalEvents: { - methodKind: 'server_streaming'; - input: typeof GlobalEventsRequestSchema; - output: typeof GlobalEventsResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_event, 0); + /** + * Profile-scoped events (routers, services, middlewares, entrypoints) + * + * @generated from rpc mantrae.v1.EventService.ProfileEvents + */ + profileEvents: { + methodKind: "server_streaming"; + input: typeof ProfileEventsRequestSchema; + output: typeof ProfileEventsResponseSchema; + }, + /** + * Global events (users, dns) + * + * @generated from rpc mantrae.v1.EventService.GlobalEvents + */ + globalEvents: { + methodKind: "server_streaming"; + input: typeof GlobalEventsRequestSchema; + output: typeof GlobalEventsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_event, 0); + diff --git a/web/src/lib/gen/mantrae/v1/middleware_pb.ts b/web/src/lib/gen/mantrae/v1/middleware_pb.ts index ac4f91c..1e7146a 100644 --- a/web/src/lib/gen/mantrae/v1/middleware_pb.ts +++ b/web/src/lib/gen/mantrae/v1/middleware_pb.ts @@ -2,558 +2,539 @@ // @generated from file mantrae/v1/middleware.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { - file_google_protobuf_struct, - file_google_protobuf_timestamp -} from '@bufbuild/protobuf/wkt'; -import type { JsonObject, Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { JsonObject, Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/middleware.proto. */ -export const file_mantrae_v1_middleware: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChttYW50cmFlL3YxL21pZGRsZXdhcmUucHJvdG8SCm1hbnRyYWUudjEikAIKCk1pZGRsZXdhcmUSCgoCaWQYASABKAMSEgoKcHJvZmlsZV9pZBgCIAEoAxIQCghhZ2VudF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHZW5hYmxlZBgGIAEoCBIoCgR0eXBlGAcgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKmAgoGUGx1Z2luEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEg4KBmF1dGhvchgEIAEoCRIMCgR0eXBlGAUgASgJEg4KBmltcG9ydBgGIAEoCRIPCgdzdW1tYXJ5GAcgASgJEhAKCGljb25fdXJsGAggASgJEhIKCmJhbm5lcl91cmwYCSABKAkSDgoGcmVhZG1lGAogASgJEhYKDmxhdGVzdF92ZXJzaW9uGAsgASgJEhAKCHZlcnNpb25zGAwgAygJEg0KBXN0YXJzGA0gASgDEioKB3NuaXBwZXQYDiABKAsyGS5tYW50cmFlLnYxLlBsdWdpblNuaXBwZXQSEgoKY3JlYXRlZF9hdBgPIAEoCSI4Cg1QbHVnaW5TbmlwcGV0EgsKA2s4cxgBIAEoCRIMCgR5YW1sGAIgASgJEgwKBHRvbWwYAyABKAkiZQoUR2V0TWlkZGxld2FyZVJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAASNQoEdHlwZRgCIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCC7pICMgBAYIBAhABIkMKFUdldE1pZGRsZXdhcmVSZXNwb25zZRIqCgptaWRkbGV3YXJlGAEgASgLMhYubWFudHJhZS52MS5NaWRkbGV3YXJlIsUBChdDcmVhdGVNaWRkbGV3YXJlUmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAEhAKCGFnZW50X2lkGAIgASgJEhgKBG5hbWUYAyABKAlCCrpIB8gBAXICEAESNQoEdHlwZRgEIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCC7pICMgBAYIBAhABEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRgoYQ3JlYXRlTWlkZGxld2FyZVJlc3BvbnNlEioKCm1pZGRsZXdhcmUYASABKAsyFi5tYW50cmFlLnYxLk1pZGRsZXdhcmUivAEKF1VwZGF0ZU1pZGRsZXdhcmVSZXF1ZXN0EhYKAmlkGAEgASgDQgq6SAfIAQEiAiAAEhgKBG5hbWUYAiABKAlCCrpIB8gBAXICEAESNQoEdHlwZRgDIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCC7pICMgBAYIBAhABEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHZW5hYmxlZBgFIAEoCCJGChhVcGRhdGVNaWRkbGV3YXJlUmVzcG9uc2USKgoKbWlkZGxld2FyZRgBIAEoCzIWLm1hbnRyYWUudjEuTWlkZGxld2FyZSJoChdEZWxldGVNaWRkbGV3YXJlUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgABI1CgR0eXBlGAIgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZUILukgIyAEBggECEAEiGgoYRGVsZXRlTWlkZGxld2FyZVJlc3BvbnNlIsYCChZMaXN0TWlkZGxld2FyZXNSZXF1ZXN0Eh4KCnByb2ZpbGVfaWQYASABKANCCrpIB8gBASICIAASHgoIYWdlbnRfaWQYAiABKAlCB7pIBHICEAFIAIgBARI3CgR0eXBlGAMgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZUIIukgFggECEAFIAYgBARJqCgVsaW1pdBgEIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAogBARIcCgZvZmZzZXQYBSABKANCB7pIBCICKABIA4gBAUILCglfYWdlbnRfaWRCBwoFX3R5cGVCCAoGX2xpbWl0QgkKB19vZmZzZXQiWwoXTGlzdE1pZGRsZXdhcmVzUmVzcG9uc2USKwoLbWlkZGxld2FyZXMYASADKAsyFi5tYW50cmFlLnYxLk1pZGRsZXdhcmUSEwoLdG90YWxfY291bnQYAiABKAMiHQobR2V0TWlkZGxld2FyZVBsdWdpbnNSZXF1ZXN0IkMKHEdldE1pZGRsZXdhcmVQbHVnaW5zUmVzcG9uc2USIwoHcGx1Z2lucxgBIAMoCzISLm1hbnRyYWUudjEuUGx1Z2luKmQKDk1pZGRsZXdhcmVUeXBlEh8KG01JRERMRVdBUkVfVFlQRV9VTlNQRUNJRklFRBAAEhgKFE1JRERMRVdBUkVfVFlQRV9IVFRQEAESFwoTTUlERExFV0FSRV9UWVBFX1RDUBACMtwEChFNaWRkbGV3YXJlU2VydmljZRJZCg1HZXRNaWRkbGV3YXJlEiAubWFudHJhZS52MS5HZXRNaWRkbGV3YXJlUmVxdWVzdBohLm1hbnRyYWUudjEuR2V0TWlkZGxld2FyZVJlc3BvbnNlIgOQAgESXQoQQ3JlYXRlTWlkZGxld2FyZRIjLm1hbnRyYWUudjEuQ3JlYXRlTWlkZGxld2FyZVJlcXVlc3QaJC5tYW50cmFlLnYxLkNyZWF0ZU1pZGRsZXdhcmVSZXNwb25zZRJdChBVcGRhdGVNaWRkbGV3YXJlEiMubWFudHJhZS52MS5VcGRhdGVNaWRkbGV3YXJlUmVxdWVzdBokLm1hbnRyYWUudjEuVXBkYXRlTWlkZGxld2FyZVJlc3BvbnNlEl0KEERlbGV0ZU1pZGRsZXdhcmUSIy5tYW50cmFlLnYxLkRlbGV0ZU1pZGRsZXdhcmVSZXF1ZXN0GiQubWFudHJhZS52MS5EZWxldGVNaWRkbGV3YXJlUmVzcG9uc2USXwoPTGlzdE1pZGRsZXdhcmVzEiIubWFudHJhZS52MS5MaXN0TWlkZGxld2FyZXNSZXF1ZXN0GiMubWFudHJhZS52MS5MaXN0TWlkZGxld2FyZXNSZXNwb25zZSIDkAIBEm4KFEdldE1pZGRsZXdhcmVQbHVnaW5zEicubWFudHJhZS52MS5HZXRNaWRkbGV3YXJlUGx1Z2luc1JlcXVlc3QaKC5tYW50cmFlLnYxLkdldE1pZGRsZXdhcmVQbHVnaW5zUmVzcG9uc2UiA5ACAUKpAQoOY29tLm1hbnRyYWUudjFCD01pZGRsZXdhcmVQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw', - [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_middleware: GenFile = /*@__PURE__*/ + fileDesc("ChttYW50cmFlL3YxL21pZGRsZXdhcmUucHJvdG8SCm1hbnRyYWUudjEikAIKCk1pZGRsZXdhcmUSCgoCaWQYASABKAMSEgoKcHJvZmlsZV9pZBgCIAEoAxIQCghhZ2VudF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHZW5hYmxlZBgGIAEoCBIoCgR0eXBlGAcgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZRIuCgpjcmVhdGVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKmAgoGUGx1Z2luEgoKAmlkGAEgASgJEgwKBG5hbWUYAiABKAkSFAoMZGlzcGxheV9uYW1lGAMgASgJEg4KBmF1dGhvchgEIAEoCRIMCgR0eXBlGAUgASgJEg4KBmltcG9ydBgGIAEoCRIPCgdzdW1tYXJ5GAcgASgJEhAKCGljb25fdXJsGAggASgJEhIKCmJhbm5lcl91cmwYCSABKAkSDgoGcmVhZG1lGAogASgJEhYKDmxhdGVzdF92ZXJzaW9uGAsgASgJEhAKCHZlcnNpb25zGAwgAygJEg0KBXN0YXJzGA0gASgDEioKB3NuaXBwZXQYDiABKAsyGS5tYW50cmFlLnYxLlBsdWdpblNuaXBwZXQSEgoKY3JlYXRlZF9hdBgPIAEoCSI4Cg1QbHVnaW5TbmlwcGV0EgsKA2s4cxgBIAEoCRIMCgR5YW1sGAIgASgJEgwKBHRvbWwYAyABKAkiXwoUR2V0TWlkZGxld2FyZVJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAASMgoEdHlwZRgCIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCCLpIBYIBAhABIkMKFUdldE1pZGRsZXdhcmVSZXNwb25zZRIqCgptaWRkbGV3YXJlGAEgASgLMhYubWFudHJhZS52MS5NaWRkbGV3YXJlIrwBChdDcmVhdGVNaWRkbGV3YXJlUmVxdWVzdBIbCgpwcm9maWxlX2lkGAEgASgDQge6SAQiAiAAEhAKCGFnZW50X2lkGAIgASgJEhUKBG5hbWUYAyABKAlCB7pIBHICEAESMgoEdHlwZRgEIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCCLpIBYIBAhABEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QiRgoYQ3JlYXRlTWlkZGxld2FyZVJlc3BvbnNlEioKCm1pZGRsZXdhcmUYASABKAsyFi5tYW50cmFlLnYxLk1pZGRsZXdhcmUiswEKF1VwZGF0ZU1pZGRsZXdhcmVSZXF1ZXN0EhMKAmlkGAEgASgDQge6SAQiAiAAEhUKBG5hbWUYAiABKAlCB7pIBHICEAESMgoEdHlwZRgDIAEoDjIaLm1hbnRyYWUudjEuTWlkZGxld2FyZVR5cGVCCLpIBYIBAhABEicKBmNvbmZpZxgEIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSDwoHZW5hYmxlZBgFIAEoCCJGChhVcGRhdGVNaWRkbGV3YXJlUmVzcG9uc2USKgoKbWlkZGxld2FyZRgBIAEoCzIWLm1hbnRyYWUudjEuTWlkZGxld2FyZSJiChdEZWxldGVNaWRkbGV3YXJlUmVxdWVzdBITCgJpZBgBIAEoA0IHukgEIgIgABIyCgR0eXBlGAIgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZUIIukgFggECEAEiGgoYRGVsZXRlTWlkZGxld2FyZVJlc3BvbnNlIsMCChZMaXN0TWlkZGxld2FyZXNSZXF1ZXN0EhsKCnByb2ZpbGVfaWQYASABKANCB7pIBCICIAASHgoIYWdlbnRfaWQYAiABKAlCB7pIBHICEAFIAIgBARI3CgR0eXBlGAMgASgOMhoubWFudHJhZS52MS5NaWRkbGV3YXJlVHlwZUIIukgFggECEAFIAYgBARJqCgVsaW1pdBgEIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAogBARIcCgZvZmZzZXQYBSABKANCB7pIBCICKABIA4gBAUILCglfYWdlbnRfaWRCBwoFX3R5cGVCCAoGX2xpbWl0QgkKB19vZmZzZXQiWwoXTGlzdE1pZGRsZXdhcmVzUmVzcG9uc2USKwoLbWlkZGxld2FyZXMYASADKAsyFi5tYW50cmFlLnYxLk1pZGRsZXdhcmUSEwoLdG90YWxfY291bnQYAiABKAMiHQobR2V0TWlkZGxld2FyZVBsdWdpbnNSZXF1ZXN0IkMKHEdldE1pZGRsZXdhcmVQbHVnaW5zUmVzcG9uc2USIwoHcGx1Z2lucxgBIAMoCzISLm1hbnRyYWUudjEuUGx1Z2luKmQKDk1pZGRsZXdhcmVUeXBlEh8KG01JRERMRVdBUkVfVFlQRV9VTlNQRUNJRklFRBAAEhgKFE1JRERMRVdBUkVfVFlQRV9IVFRQEAESFwoTTUlERExFV0FSRV9UWVBFX1RDUBACMtwEChFNaWRkbGV3YXJlU2VydmljZRJZCg1HZXRNaWRkbGV3YXJlEiAubWFudHJhZS52MS5HZXRNaWRkbGV3YXJlUmVxdWVzdBohLm1hbnRyYWUudjEuR2V0TWlkZGxld2FyZVJlc3BvbnNlIgOQAgESXQoQQ3JlYXRlTWlkZGxld2FyZRIjLm1hbnRyYWUudjEuQ3JlYXRlTWlkZGxld2FyZVJlcXVlc3QaJC5tYW50cmFlLnYxLkNyZWF0ZU1pZGRsZXdhcmVSZXNwb25zZRJdChBVcGRhdGVNaWRkbGV3YXJlEiMubWFudHJhZS52MS5VcGRhdGVNaWRkbGV3YXJlUmVxdWVzdBokLm1hbnRyYWUudjEuVXBkYXRlTWlkZGxld2FyZVJlc3BvbnNlEl0KEERlbGV0ZU1pZGRsZXdhcmUSIy5tYW50cmFlLnYxLkRlbGV0ZU1pZGRsZXdhcmVSZXF1ZXN0GiQubWFudHJhZS52MS5EZWxldGVNaWRkbGV3YXJlUmVzcG9uc2USXwoPTGlzdE1pZGRsZXdhcmVzEiIubWFudHJhZS52MS5MaXN0TWlkZGxld2FyZXNSZXF1ZXN0GiMubWFudHJhZS52MS5MaXN0TWlkZGxld2FyZXNSZXNwb25zZSIDkAIBEm4KFEdldE1pZGRsZXdhcmVQbHVnaW5zEicubWFudHJhZS52MS5HZXRNaWRkbGV3YXJlUGx1Z2luc1JlcXVlc3QaKC5tYW50cmFlLnYxLkdldE1pZGRsZXdhcmVQbHVnaW5zUmVzcG9uc2UiA5ACAUKpAQoOY29tLm1hbnRyYWUudjFCD01pZGRsZXdhcmVQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.Middleware */ -export type Middleware = Message<'mantrae.v1.Middleware'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type Middleware = Message<"mantrae.v1.Middleware"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 3; - */ - agentId: string; + /** + * @generated from field: string agent_id = 3; + */ + agentId: string; - /** - * @generated from field: string name = 4; - */ - name: string; + /** + * @generated from field: string name = 4; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 5; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 5; + */ + config?: JsonObject; - /** - * @generated from field: bool enabled = 6; - */ - enabled: boolean; + /** + * @generated from field: bool enabled = 6; + */ + enabled: boolean; - /** - * @generated from field: mantrae.v1.MiddlewareType type = 7; - */ - type: MiddlewareType; + /** + * @generated from field: mantrae.v1.MiddlewareType type = 7; + */ + type: MiddlewareType; - /** - * @generated from field: google.protobuf.Timestamp created_at = 8; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 8; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 9; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 9; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Middleware. * Use `create(MiddlewareSchema)` to create a new message. */ -export const MiddlewareSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 0); +export const MiddlewareSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 0); /** * @generated from message mantrae.v1.Plugin */ -export type Plugin = Message<'mantrae.v1.Plugin'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type Plugin = Message<"mantrae.v1.Plugin"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: string display_name = 3; - */ - displayName: string; + /** + * @generated from field: string display_name = 3; + */ + displayName: string; - /** - * @generated from field: string author = 4; - */ - author: string; + /** + * @generated from field: string author = 4; + */ + author: string; - /** - * @generated from field: string type = 5; - */ - type: string; + /** + * @generated from field: string type = 5; + */ + type: string; - /** - * @generated from field: string import = 6; - */ - import: string; + /** + * @generated from field: string import = 6; + */ + import: string; - /** - * @generated from field: string summary = 7; - */ - summary: string; + /** + * @generated from field: string summary = 7; + */ + summary: string; - /** - * @generated from field: string icon_url = 8; - */ - iconUrl: string; + /** + * @generated from field: string icon_url = 8; + */ + iconUrl: string; - /** - * @generated from field: string banner_url = 9; - */ - bannerUrl: string; + /** + * @generated from field: string banner_url = 9; + */ + bannerUrl: string; - /** - * @generated from field: string readme = 10; - */ - readme: string; + /** + * @generated from field: string readme = 10; + */ + readme: string; - /** - * @generated from field: string latest_version = 11; - */ - latestVersion: string; + /** + * @generated from field: string latest_version = 11; + */ + latestVersion: string; - /** - * @generated from field: repeated string versions = 12; - */ - versions: string[]; + /** + * @generated from field: repeated string versions = 12; + */ + versions: string[]; - /** - * @generated from field: int64 stars = 13; - */ - stars: bigint; + /** + * @generated from field: int64 stars = 13; + */ + stars: bigint; - /** - * @generated from field: mantrae.v1.PluginSnippet snippet = 14; - */ - snippet?: PluginSnippet; + /** + * @generated from field: mantrae.v1.PluginSnippet snippet = 14; + */ + snippet?: PluginSnippet; - /** - * @generated from field: string created_at = 15; - */ - createdAt: string; + /** + * @generated from field: string created_at = 15; + */ + createdAt: string; }; /** * Describes the message mantrae.v1.Plugin. * Use `create(PluginSchema)` to create a new message. */ -export const PluginSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 1); +export const PluginSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 1); /** * @generated from message mantrae.v1.PluginSnippet */ -export type PluginSnippet = Message<'mantrae.v1.PluginSnippet'> & { - /** - * @generated from field: string k8s = 1; - */ - k8s: string; +export type PluginSnippet = Message<"mantrae.v1.PluginSnippet"> & { + /** + * @generated from field: string k8s = 1; + */ + k8s: string; - /** - * @generated from field: string yaml = 2; - */ - yaml: string; + /** + * @generated from field: string yaml = 2; + */ + yaml: string; - /** - * @generated from field: string toml = 3; - */ - toml: string; + /** + * @generated from field: string toml = 3; + */ + toml: string; }; /** * Describes the message mantrae.v1.PluginSnippet. * Use `create(PluginSnippetSchema)` to create a new message. */ -export const PluginSnippetSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 2); +export const PluginSnippetSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 2); /** * @generated from message mantrae.v1.GetMiddlewareRequest */ -export type GetMiddlewareRequest = Message<'mantrae.v1.GetMiddlewareRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetMiddlewareRequest = Message<"mantrae.v1.GetMiddlewareRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.MiddlewareType type = 2; - */ - type: MiddlewareType; + /** + * @generated from field: mantrae.v1.MiddlewareType type = 2; + */ + type: MiddlewareType; }; /** * Describes the message mantrae.v1.GetMiddlewareRequest. * Use `create(GetMiddlewareRequestSchema)` to create a new message. */ -export const GetMiddlewareRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 3); +export const GetMiddlewareRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 3); /** * @generated from message mantrae.v1.GetMiddlewareResponse */ -export type GetMiddlewareResponse = Message<'mantrae.v1.GetMiddlewareResponse'> & { - /** - * @generated from field: mantrae.v1.Middleware middleware = 1; - */ - middleware?: Middleware; +export type GetMiddlewareResponse = Message<"mantrae.v1.GetMiddlewareResponse"> & { + /** + * @generated from field: mantrae.v1.Middleware middleware = 1; + */ + middleware?: Middleware; }; /** * Describes the message mantrae.v1.GetMiddlewareResponse. * Use `create(GetMiddlewareResponseSchema)` to create a new message. */ -export const GetMiddlewareResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 4); +export const GetMiddlewareResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 4); /** * @generated from message mantrae.v1.CreateMiddlewareRequest */ -export type CreateMiddlewareRequest = Message<'mantrae.v1.CreateMiddlewareRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type CreateMiddlewareRequest = Message<"mantrae.v1.CreateMiddlewareRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 2; - */ - agentId: string; + /** + * @generated from field: string agent_id = 2; + */ + agentId: string; - /** - * @generated from field: string name = 3; - */ - name: string; + /** + * @generated from field: string name = 3; + */ + name: string; - /** - * @generated from field: mantrae.v1.MiddlewareType type = 4; - */ - type: MiddlewareType; + /** + * @generated from field: mantrae.v1.MiddlewareType type = 4; + */ + type: MiddlewareType; - /** - * @generated from field: google.protobuf.Struct config = 5; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 5; + */ + config?: JsonObject; }; /** * Describes the message mantrae.v1.CreateMiddlewareRequest. * Use `create(CreateMiddlewareRequestSchema)` to create a new message. */ -export const CreateMiddlewareRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 5); +export const CreateMiddlewareRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 5); /** * @generated from message mantrae.v1.CreateMiddlewareResponse */ -export type CreateMiddlewareResponse = Message<'mantrae.v1.CreateMiddlewareResponse'> & { - /** - * @generated from field: mantrae.v1.Middleware middleware = 1; - */ - middleware?: Middleware; +export type CreateMiddlewareResponse = Message<"mantrae.v1.CreateMiddlewareResponse"> & { + /** + * @generated from field: mantrae.v1.Middleware middleware = 1; + */ + middleware?: Middleware; }; /** * Describes the message mantrae.v1.CreateMiddlewareResponse. * Use `create(CreateMiddlewareResponseSchema)` to create a new message. */ -export const CreateMiddlewareResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 6); +export const CreateMiddlewareResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 6); /** * @generated from message mantrae.v1.UpdateMiddlewareRequest */ -export type UpdateMiddlewareRequest = Message<'mantrae.v1.UpdateMiddlewareRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateMiddlewareRequest = Message<"mantrae.v1.UpdateMiddlewareRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: mantrae.v1.MiddlewareType type = 3; - */ - type: MiddlewareType; + /** + * @generated from field: mantrae.v1.MiddlewareType type = 3; + */ + type: MiddlewareType; - /** - * @generated from field: google.protobuf.Struct config = 4; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 4; + */ + config?: JsonObject; - /** - * @generated from field: bool enabled = 5; - */ - enabled: boolean; + /** + * @generated from field: bool enabled = 5; + */ + enabled: boolean; }; /** * Describes the message mantrae.v1.UpdateMiddlewareRequest. * Use `create(UpdateMiddlewareRequestSchema)` to create a new message. */ -export const UpdateMiddlewareRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 7); +export const UpdateMiddlewareRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 7); /** * @generated from message mantrae.v1.UpdateMiddlewareResponse */ -export type UpdateMiddlewareResponse = Message<'mantrae.v1.UpdateMiddlewareResponse'> & { - /** - * @generated from field: mantrae.v1.Middleware middleware = 1; - */ - middleware?: Middleware; +export type UpdateMiddlewareResponse = Message<"mantrae.v1.UpdateMiddlewareResponse"> & { + /** + * @generated from field: mantrae.v1.Middleware middleware = 1; + */ + middleware?: Middleware; }; /** * Describes the message mantrae.v1.UpdateMiddlewareResponse. * Use `create(UpdateMiddlewareResponseSchema)` to create a new message. */ -export const UpdateMiddlewareResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 8); +export const UpdateMiddlewareResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 8); /** * @generated from message mantrae.v1.DeleteMiddlewareRequest */ -export type DeleteMiddlewareRequest = Message<'mantrae.v1.DeleteMiddlewareRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteMiddlewareRequest = Message<"mantrae.v1.DeleteMiddlewareRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.MiddlewareType type = 2; - */ - type: MiddlewareType; + /** + * @generated from field: mantrae.v1.MiddlewareType type = 2; + */ + type: MiddlewareType; }; /** * Describes the message mantrae.v1.DeleteMiddlewareRequest. * Use `create(DeleteMiddlewareRequestSchema)` to create a new message. */ -export const DeleteMiddlewareRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 9); +export const DeleteMiddlewareRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 9); /** * @generated from message mantrae.v1.DeleteMiddlewareResponse */ -export type DeleteMiddlewareResponse = Message<'mantrae.v1.DeleteMiddlewareResponse'> & {}; +export type DeleteMiddlewareResponse = Message<"mantrae.v1.DeleteMiddlewareResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteMiddlewareResponse. * Use `create(DeleteMiddlewareResponseSchema)` to create a new message. */ -export const DeleteMiddlewareResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 10); +export const DeleteMiddlewareResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 10); /** * @generated from message mantrae.v1.ListMiddlewaresRequest */ -export type ListMiddlewaresRequest = Message<'mantrae.v1.ListMiddlewaresRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ListMiddlewaresRequest = Message<"mantrae.v1.ListMiddlewaresRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: optional string agent_id = 2; - */ - agentId?: string; + /** + * @generated from field: optional string agent_id = 2; + */ + agentId?: string; - /** - * @generated from field: optional mantrae.v1.MiddlewareType type = 3; - */ - type?: MiddlewareType; + /** + * @generated from field: optional mantrae.v1.MiddlewareType type = 3; + */ + type?: MiddlewareType; - /** - * @generated from field: optional int64 limit = 4; - */ - limit?: bigint; + /** + * @generated from field: optional int64 limit = 4; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 5; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 5; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListMiddlewaresRequest. * Use `create(ListMiddlewaresRequestSchema)` to create a new message. */ -export const ListMiddlewaresRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 11); +export const ListMiddlewaresRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 11); /** * @generated from message mantrae.v1.ListMiddlewaresResponse */ -export type ListMiddlewaresResponse = Message<'mantrae.v1.ListMiddlewaresResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Middleware middlewares = 1; - */ - middlewares: Middleware[]; +export type ListMiddlewaresResponse = Message<"mantrae.v1.ListMiddlewaresResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Middleware middlewares = 1; + */ + middlewares: Middleware[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListMiddlewaresResponse. * Use `create(ListMiddlewaresResponseSchema)` to create a new message. */ -export const ListMiddlewaresResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 12); +export const ListMiddlewaresResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 12); /** * @generated from message mantrae.v1.GetMiddlewarePluginsRequest */ -export type GetMiddlewarePluginsRequest = Message<'mantrae.v1.GetMiddlewarePluginsRequest'> & {}; +export type GetMiddlewarePluginsRequest = Message<"mantrae.v1.GetMiddlewarePluginsRequest"> & { +}; /** * Describes the message mantrae.v1.GetMiddlewarePluginsRequest. * Use `create(GetMiddlewarePluginsRequestSchema)` to create a new message. */ -export const GetMiddlewarePluginsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 13); +export const GetMiddlewarePluginsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 13); /** * @generated from message mantrae.v1.GetMiddlewarePluginsResponse */ -export type GetMiddlewarePluginsResponse = Message<'mantrae.v1.GetMiddlewarePluginsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Plugin plugins = 1; - */ - plugins: Plugin[]; +export type GetMiddlewarePluginsResponse = Message<"mantrae.v1.GetMiddlewarePluginsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Plugin plugins = 1; + */ + plugins: Plugin[]; }; /** * Describes the message mantrae.v1.GetMiddlewarePluginsResponse. * Use `create(GetMiddlewarePluginsResponseSchema)` to create a new message. */ -export const GetMiddlewarePluginsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_middleware, 14); +export const GetMiddlewarePluginsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_middleware, 14); /** * @generated from enum mantrae.v1.MiddlewareType */ export enum MiddlewareType { - /** - * @generated from enum value: MIDDLEWARE_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: MIDDLEWARE_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: MIDDLEWARE_TYPE_HTTP = 1; - */ - HTTP = 1, + /** + * @generated from enum value: MIDDLEWARE_TYPE_HTTP = 1; + */ + HTTP = 1, - /** - * @generated from enum value: MIDDLEWARE_TYPE_TCP = 2; - */ - TCP = 2 + /** + * @generated from enum value: MIDDLEWARE_TYPE_TCP = 2; + */ + TCP = 2, } /** * Describes the enum mantrae.v1.MiddlewareType. */ -export const MiddlewareTypeSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_mantrae_v1_middleware, 0); +export const MiddlewareTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_middleware, 0); /** * @generated from service mantrae.v1.MiddlewareService */ export const MiddlewareService: GenService<{ - /** - * @generated from rpc mantrae.v1.MiddlewareService.GetMiddleware - */ - getMiddleware: { - methodKind: 'unary'; - input: typeof GetMiddlewareRequestSchema; - output: typeof GetMiddlewareResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.MiddlewareService.CreateMiddleware - */ - createMiddleware: { - methodKind: 'unary'; - input: typeof CreateMiddlewareRequestSchema; - output: typeof CreateMiddlewareResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.MiddlewareService.UpdateMiddleware - */ - updateMiddleware: { - methodKind: 'unary'; - input: typeof UpdateMiddlewareRequestSchema; - output: typeof UpdateMiddlewareResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.MiddlewareService.DeleteMiddleware - */ - deleteMiddleware: { - methodKind: 'unary'; - input: typeof DeleteMiddlewareRequestSchema; - output: typeof DeleteMiddlewareResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.MiddlewareService.ListMiddlewares - */ - listMiddlewares: { - methodKind: 'unary'; - input: typeof ListMiddlewaresRequestSchema; - output: typeof ListMiddlewaresResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.MiddlewareService.GetMiddlewarePlugins - */ - getMiddlewarePlugins: { - methodKind: 'unary'; - input: typeof GetMiddlewarePluginsRequestSchema; - output: typeof GetMiddlewarePluginsResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_middleware, 0); + /** + * @generated from rpc mantrae.v1.MiddlewareService.GetMiddleware + */ + getMiddleware: { + methodKind: "unary"; + input: typeof GetMiddlewareRequestSchema; + output: typeof GetMiddlewareResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.MiddlewareService.CreateMiddleware + */ + createMiddleware: { + methodKind: "unary"; + input: typeof CreateMiddlewareRequestSchema; + output: typeof CreateMiddlewareResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.MiddlewareService.UpdateMiddleware + */ + updateMiddleware: { + methodKind: "unary"; + input: typeof UpdateMiddlewareRequestSchema; + output: typeof UpdateMiddlewareResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.MiddlewareService.DeleteMiddleware + */ + deleteMiddleware: { + methodKind: "unary"; + input: typeof DeleteMiddlewareRequestSchema; + output: typeof DeleteMiddlewareResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.MiddlewareService.ListMiddlewares + */ + listMiddlewares: { + methodKind: "unary"; + input: typeof ListMiddlewaresRequestSchema; + output: typeof ListMiddlewaresResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.MiddlewareService.GetMiddlewarePlugins + */ + getMiddlewarePlugins: { + methodKind: "unary"; + input: typeof GetMiddlewarePluginsRequestSchema; + output: typeof GetMiddlewarePluginsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_middleware, 0); + diff --git a/web/src/lib/gen/mantrae/v1/profile_pb.ts b/web/src/lib/gen/mantrae/v1/profile_pb.ts index a431955..58a1885 100644 --- a/web/src/lib/gen/mantrae/v1/profile_pb.ts +++ b/web/src/lib/gen/mantrae/v1/profile_pb.ts @@ -2,303 +2,291 @@ // @generated from file mantrae/v1/profile.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/profile.proto. */ -export const file_mantrae_v1_profile: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChhtYW50cmFlL3YxL3Byb2ZpbGUucHJvdG8SCm1hbnRyYWUudjEimAEKB1Byb2ZpbGUSCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIrChFHZXRQcm9maWxlUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgACI6ChJHZXRQcm9maWxlUmVzcG9uc2USJAoHcHJvZmlsZRgBIAEoCzITLm1hbnRyYWUudjEuUHJvZmlsZSJaChRDcmVhdGVQcm9maWxlUmVxdWVzdBIYCgRuYW1lGAEgASgJQgq6SAfIAQFyAhABEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIj0KFUNyZWF0ZVByb2ZpbGVSZXNwb25zZRIkCgdwcm9maWxlGAEgASgLMhMubWFudHJhZS52MS5Qcm9maWxlInIKFFVwZGF0ZVByb2ZpbGVSZXF1ZXN0EhYKAmlkGAEgASgDQgq6SAfIAQEiAiAAEhgKBG5hbWUYAiABKAlCCrpIB8gBAXICEAESGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iPQoVVXBkYXRlUHJvZmlsZVJlc3BvbnNlEiQKB3Byb2ZpbGUYASABKAsyEy5tYW50cmFlLnYxLlByb2ZpbGUiLgoURGVsZXRlUHJvZmlsZVJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAAiFwoVRGVsZXRlUHJvZmlsZVJlc3BvbnNlIrQBChNMaXN0UHJvZmlsZXNSZXF1ZXN0EmoKBWxpbWl0GAEgASgDQla6SFO6AVAKC2xpbWl0LnZhbGlkEilsaW1pdCBtdXN0IGJlIGVpdGhlciAtMSBvciBncmVhdGVyIHRoYW4gMBoWdGhpcyA9PSAtMSB8fCB0aGlzID4gMEgAiAEBEhwKBm9mZnNldBgCIAEoA0IHukgEIgIoAEgBiAEBQggKBl9saW1pdEIJCgdfb2Zmc2V0IlIKFExpc3RQcm9maWxlc1Jlc3BvbnNlEiUKCHByb2ZpbGVzGAEgAygLMhMubWFudHJhZS52MS5Qcm9maWxlEhMKC3RvdGFsX2NvdW50GAIgASgDMrwDCg5Qcm9maWxlU2VydmljZRJQCgpHZXRQcm9maWxlEh0ubWFudHJhZS52MS5HZXRQcm9maWxlUmVxdWVzdBoeLm1hbnRyYWUudjEuR2V0UHJvZmlsZVJlc3BvbnNlIgOQAgESVAoNQ3JlYXRlUHJvZmlsZRIgLm1hbnRyYWUudjEuQ3JlYXRlUHJvZmlsZVJlcXVlc3QaIS5tYW50cmFlLnYxLkNyZWF0ZVByb2ZpbGVSZXNwb25zZRJUCg1VcGRhdGVQcm9maWxlEiAubWFudHJhZS52MS5VcGRhdGVQcm9maWxlUmVxdWVzdBohLm1hbnRyYWUudjEuVXBkYXRlUHJvZmlsZVJlc3BvbnNlElQKDURlbGV0ZVByb2ZpbGUSIC5tYW50cmFlLnYxLkRlbGV0ZVByb2ZpbGVSZXF1ZXN0GiEubWFudHJhZS52MS5EZWxldGVQcm9maWxlUmVzcG9uc2USVgoMTGlzdFByb2ZpbGVzEh8ubWFudHJhZS52MS5MaXN0UHJvZmlsZXNSZXF1ZXN0GiAubWFudHJhZS52MS5MaXN0UHJvZmlsZXNSZXNwb25zZSIDkAIBQqYBCg5jb20ubWFudHJhZS52MUIMUHJvZmlsZVByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_profile: GenFile = /*@__PURE__*/ + fileDesc("ChhtYW50cmFlL3YxL3Byb2ZpbGUucHJvdG8SCm1hbnRyYWUudjEimAEKB1Byb2ZpbGUSCgoCaWQYASABKAMSDAoEbmFtZRgCIAEoCRITCgtkZXNjcmlwdGlvbhgDIAEoCRIuCgpjcmVhdGVkX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIoChFHZXRQcm9maWxlUmVxdWVzdBITCgJpZBgBIAEoA0IHukgEIgIgACI6ChJHZXRQcm9maWxlUmVzcG9uc2USJAoHcHJvZmlsZRgBIAEoCzITLm1hbnRyYWUudjEuUHJvZmlsZSJXChRDcmVhdGVQcm9maWxlUmVxdWVzdBIVCgRuYW1lGAEgASgJQge6SARyAhABEhgKC2Rlc2NyaXB0aW9uGAIgASgJSACIAQFCDgoMX2Rlc2NyaXB0aW9uIj0KFUNyZWF0ZVByb2ZpbGVSZXNwb25zZRIkCgdwcm9maWxlGAEgASgLMhMubWFudHJhZS52MS5Qcm9maWxlImwKFFVwZGF0ZVByb2ZpbGVSZXF1ZXN0EhMKAmlkGAEgASgDQge6SAQiAiAAEhUKBG5hbWUYAiABKAlCB7pIBHICEAESGAoLZGVzY3JpcHRpb24YAyABKAlIAIgBAUIOCgxfZGVzY3JpcHRpb24iPQoVVXBkYXRlUHJvZmlsZVJlc3BvbnNlEiQKB3Byb2ZpbGUYASABKAsyEy5tYW50cmFlLnYxLlByb2ZpbGUiKwoURGVsZXRlUHJvZmlsZVJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAAiFwoVRGVsZXRlUHJvZmlsZVJlc3BvbnNlIrQBChNMaXN0UHJvZmlsZXNSZXF1ZXN0EmoKBWxpbWl0GAEgASgDQla6SFO6AVAKC2xpbWl0LnZhbGlkEilsaW1pdCBtdXN0IGJlIGVpdGhlciAtMSBvciBncmVhdGVyIHRoYW4gMBoWdGhpcyA9PSAtMSB8fCB0aGlzID4gMEgAiAEBEhwKBm9mZnNldBgCIAEoA0IHukgEIgIoAEgBiAEBQggKBl9saW1pdEIJCgdfb2Zmc2V0IlIKFExpc3RQcm9maWxlc1Jlc3BvbnNlEiUKCHByb2ZpbGVzGAEgAygLMhMubWFudHJhZS52MS5Qcm9maWxlEhMKC3RvdGFsX2NvdW50GAIgASgDMrwDCg5Qcm9maWxlU2VydmljZRJQCgpHZXRQcm9maWxlEh0ubWFudHJhZS52MS5HZXRQcm9maWxlUmVxdWVzdBoeLm1hbnRyYWUudjEuR2V0UHJvZmlsZVJlc3BvbnNlIgOQAgESVAoNQ3JlYXRlUHJvZmlsZRIgLm1hbnRyYWUudjEuQ3JlYXRlUHJvZmlsZVJlcXVlc3QaIS5tYW50cmFlLnYxLkNyZWF0ZVByb2ZpbGVSZXNwb25zZRJUCg1VcGRhdGVQcm9maWxlEiAubWFudHJhZS52MS5VcGRhdGVQcm9maWxlUmVxdWVzdBohLm1hbnRyYWUudjEuVXBkYXRlUHJvZmlsZVJlc3BvbnNlElQKDURlbGV0ZVByb2ZpbGUSIC5tYW50cmFlLnYxLkRlbGV0ZVByb2ZpbGVSZXF1ZXN0GiEubWFudHJhZS52MS5EZWxldGVQcm9maWxlUmVzcG9uc2USVgoMTGlzdFByb2ZpbGVzEh8ubWFudHJhZS52MS5MaXN0UHJvZmlsZXNSZXF1ZXN0GiAubWFudHJhZS52MS5MaXN0UHJvZmlsZXNSZXNwb25zZSIDkAIBQqYBCg5jb20ubWFudHJhZS52MUIMUHJvZmlsZVByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.Profile */ -export type Profile = Message<'mantrae.v1.Profile'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type Profile = Message<"mantrae.v1.Profile"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: string description = 3; - */ - description: string; + /** + * @generated from field: string description = 3; + */ + description: string; - /** - * @generated from field: google.protobuf.Timestamp created_at = 4; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 4; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 5; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 5; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Profile. * Use `create(ProfileSchema)` to create a new message. */ -export const ProfileSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 0); +export const ProfileSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 0); /** * @generated from message mantrae.v1.GetProfileRequest */ -export type GetProfileRequest = Message<'mantrae.v1.GetProfileRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetProfileRequest = Message<"mantrae.v1.GetProfileRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.GetProfileRequest. * Use `create(GetProfileRequestSchema)` to create a new message. */ -export const GetProfileRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 1); +export const GetProfileRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 1); /** * @generated from message mantrae.v1.GetProfileResponse */ -export type GetProfileResponse = Message<'mantrae.v1.GetProfileResponse'> & { - /** - * @generated from field: mantrae.v1.Profile profile = 1; - */ - profile?: Profile; +export type GetProfileResponse = Message<"mantrae.v1.GetProfileResponse"> & { + /** + * @generated from field: mantrae.v1.Profile profile = 1; + */ + profile?: Profile; }; /** * Describes the message mantrae.v1.GetProfileResponse. * Use `create(GetProfileResponseSchema)` to create a new message. */ -export const GetProfileResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 2); +export const GetProfileResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 2); /** * @generated from message mantrae.v1.CreateProfileRequest */ -export type CreateProfileRequest = Message<'mantrae.v1.CreateProfileRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type CreateProfileRequest = Message<"mantrae.v1.CreateProfileRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; - /** - * @generated from field: optional string description = 2; - */ - description?: string; + /** + * @generated from field: optional string description = 2; + */ + description?: string; }; /** * Describes the message mantrae.v1.CreateProfileRequest. * Use `create(CreateProfileRequestSchema)` to create a new message. */ -export const CreateProfileRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 3); +export const CreateProfileRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 3); /** * @generated from message mantrae.v1.CreateProfileResponse */ -export type CreateProfileResponse = Message<'mantrae.v1.CreateProfileResponse'> & { - /** - * @generated from field: mantrae.v1.Profile profile = 1; - */ - profile?: Profile; +export type CreateProfileResponse = Message<"mantrae.v1.CreateProfileResponse"> & { + /** + * @generated from field: mantrae.v1.Profile profile = 1; + */ + profile?: Profile; }; /** * Describes the message mantrae.v1.CreateProfileResponse. * Use `create(CreateProfileResponseSchema)` to create a new message. */ -export const CreateProfileResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 4); +export const CreateProfileResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 4); /** * @generated from message mantrae.v1.UpdateProfileRequest */ -export type UpdateProfileRequest = Message<'mantrae.v1.UpdateProfileRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateProfileRequest = Message<"mantrae.v1.UpdateProfileRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: optional string description = 3; - */ - description?: string; + /** + * @generated from field: optional string description = 3; + */ + description?: string; }; /** * Describes the message mantrae.v1.UpdateProfileRequest. * Use `create(UpdateProfileRequestSchema)` to create a new message. */ -export const UpdateProfileRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 5); +export const UpdateProfileRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 5); /** * @generated from message mantrae.v1.UpdateProfileResponse */ -export type UpdateProfileResponse = Message<'mantrae.v1.UpdateProfileResponse'> & { - /** - * @generated from field: mantrae.v1.Profile profile = 1; - */ - profile?: Profile; +export type UpdateProfileResponse = Message<"mantrae.v1.UpdateProfileResponse"> & { + /** + * @generated from field: mantrae.v1.Profile profile = 1; + */ + profile?: Profile; }; /** * Describes the message mantrae.v1.UpdateProfileResponse. * Use `create(UpdateProfileResponseSchema)` to create a new message. */ -export const UpdateProfileResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 6); +export const UpdateProfileResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 6); /** * @generated from message mantrae.v1.DeleteProfileRequest */ -export type DeleteProfileRequest = Message<'mantrae.v1.DeleteProfileRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteProfileRequest = Message<"mantrae.v1.DeleteProfileRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; }; /** * Describes the message mantrae.v1.DeleteProfileRequest. * Use `create(DeleteProfileRequestSchema)` to create a new message. */ -export const DeleteProfileRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 7); +export const DeleteProfileRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 7); /** * @generated from message mantrae.v1.DeleteProfileResponse */ -export type DeleteProfileResponse = Message<'mantrae.v1.DeleteProfileResponse'> & {}; +export type DeleteProfileResponse = Message<"mantrae.v1.DeleteProfileResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteProfileResponse. * Use `create(DeleteProfileResponseSchema)` to create a new message. */ -export const DeleteProfileResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 8); +export const DeleteProfileResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 8); /** * @generated from message mantrae.v1.ListProfilesRequest */ -export type ListProfilesRequest = Message<'mantrae.v1.ListProfilesRequest'> & { - /** - * @generated from field: optional int64 limit = 1; - */ - limit?: bigint; +export type ListProfilesRequest = Message<"mantrae.v1.ListProfilesRequest"> & { + /** + * @generated from field: optional int64 limit = 1; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 2; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 2; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListProfilesRequest. * Use `create(ListProfilesRequestSchema)` to create a new message. */ -export const ListProfilesRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 9); +export const ListProfilesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 9); /** * @generated from message mantrae.v1.ListProfilesResponse */ -export type ListProfilesResponse = Message<'mantrae.v1.ListProfilesResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Profile profiles = 1; - */ - profiles: Profile[]; +export type ListProfilesResponse = Message<"mantrae.v1.ListProfilesResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Profile profiles = 1; + */ + profiles: Profile[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListProfilesResponse. * Use `create(ListProfilesResponseSchema)` to create a new message. */ -export const ListProfilesResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_profile, 10); +export const ListProfilesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_profile, 10); /** * @generated from service mantrae.v1.ProfileService */ export const ProfileService: GenService<{ - /** - * @generated from rpc mantrae.v1.ProfileService.GetProfile - */ - getProfile: { - methodKind: 'unary'; - input: typeof GetProfileRequestSchema; - output: typeof GetProfileResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ProfileService.CreateProfile - */ - createProfile: { - methodKind: 'unary'; - input: typeof CreateProfileRequestSchema; - output: typeof CreateProfileResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ProfileService.UpdateProfile - */ - updateProfile: { - methodKind: 'unary'; - input: typeof UpdateProfileRequestSchema; - output: typeof UpdateProfileResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ProfileService.DeleteProfile - */ - deleteProfile: { - methodKind: 'unary'; - input: typeof DeleteProfileRequestSchema; - output: typeof DeleteProfileResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ProfileService.ListProfiles - */ - listProfiles: { - methodKind: 'unary'; - input: typeof ListProfilesRequestSchema; - output: typeof ListProfilesResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_profile, 0); + /** + * @generated from rpc mantrae.v1.ProfileService.GetProfile + */ + getProfile: { + methodKind: "unary"; + input: typeof GetProfileRequestSchema; + output: typeof GetProfileResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ProfileService.CreateProfile + */ + createProfile: { + methodKind: "unary"; + input: typeof CreateProfileRequestSchema; + output: typeof CreateProfileResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ProfileService.UpdateProfile + */ + updateProfile: { + methodKind: "unary"; + input: typeof UpdateProfileRequestSchema; + output: typeof UpdateProfileResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ProfileService.DeleteProfile + */ + deleteProfile: { + methodKind: "unary"; + input: typeof DeleteProfileRequestSchema; + output: typeof DeleteProfileResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ProfileService.ListProfiles + */ + listProfiles: { + methodKind: "unary"; + input: typeof ListProfilesRequestSchema; + output: typeof ListProfilesResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_profile, 0); + diff --git a/web/src/lib/gen/mantrae/v1/router_pb.ts b/web/src/lib/gen/mantrae/v1/router_pb.ts index 03f622d..6927b84 100644 --- a/web/src/lib/gen/mantrae/v1/router_pb.ts +++ b/web/src/lib/gen/mantrae/v1/router_pb.ts @@ -2,430 +2,409 @@ // @generated from file mantrae/v1/router.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { - file_google_protobuf_struct, - file_google_protobuf_timestamp -} from '@bufbuild/protobuf/wkt'; -import type { DnsProvider } from './dns_provider_pb'; -import { file_mantrae_v1_dns_provider } from './dns_provider_pb'; -import type { JsonObject, Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { DnsProvider } from "./dns_provider_pb"; +import { file_mantrae_v1_dns_provider } from "./dns_provider_pb"; +import type { JsonObject, Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/router.proto. */ -export const file_mantrae_v1_router: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChdtYW50cmFlL3YxL3JvdXRlci5wcm90bxIKbWFudHJhZS52MSK4AgoGUm91dGVyEgoKAmlkGAEgASgDEhIKCnByb2ZpbGVfaWQYAiABKAMSEAoIYWdlbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRInCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBiABKAgSJAoEdHlwZRgHIAEoDjIWLm1hbnRyYWUudjEuUm91dGVyVHlwZRIuCg1kbnNfcHJvdmlkZXJzGAggAygLMhcubWFudHJhZS52MS5EbnNQcm92aWRlchIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJdChBHZXRSb3V0ZXJSZXF1ZXN0EhYKAmlkGAEgASgDQgq6SAfIAQEiAiAAEjEKBHR5cGUYAiABKA4yFi5tYW50cmFlLnYxLlJvdXRlclR5cGVCC7pICMgBAYIBAhABIjcKEUdldFJvdXRlclJlc3BvbnNlEiIKBnJvdXRlchgBIAEoCzISLm1hbnRyYWUudjEuUm91dGVyIs4BChNDcmVhdGVSb3V0ZXJSZXF1ZXN0Eh4KCnByb2ZpbGVfaWQYASABKANCCrpIB8gBASICIAASEAoIYWdlbnRfaWQYAiABKAkSGAoEbmFtZRgDIAEoCUIKukgHyAEBcgIQARInCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBSABKAgSMQoEdHlwZRgGIAEoDjIWLm1hbnRyYWUudjEuUm91dGVyVHlwZUILukgIyAEBggECEAEiOgoUQ3JlYXRlUm91dGVyUmVzcG9uc2USIgoGcm91dGVyGAEgASgLMhIubWFudHJhZS52MS5Sb3V0ZXIi5AEKE1VwZGF0ZVJvdXRlclJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAASGAoEbmFtZRgCIAEoCUIKukgHyAEBcgIQARIxCgR0eXBlGAMgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgu6SAjIAQGCAQIQARInCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBSABKAgSLgoNZG5zX3Byb3ZpZGVycxgGIAMoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXIiOgoUVXBkYXRlUm91dGVyUmVzcG9uc2USIgoGcm91dGVyGAEgASgLMhIubWFudHJhZS52MS5Sb3V0ZXIiYAoTRGVsZXRlUm91dGVyUmVxdWVzdBIWCgJpZBgBIAEoA0IKukgHyAEBIgIgABIxCgR0eXBlGAIgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgu6SAjIAQGCAQIQASIWChREZWxldGVSb3V0ZXJSZXNwb25zZSK+AgoSTGlzdFJvdXRlcnNSZXF1ZXN0Eh4KCnByb2ZpbGVfaWQYASABKANCCrpIB8gBASICIAASHgoIYWdlbnRfaWQYAiABKAlCB7pIBHICEAFIAIgBARIzCgR0eXBlGAMgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgi6SAWCAQIQAUgBiAEBEmoKBWxpbWl0GAQgASgDQla6SFO6AVAKC2xpbWl0LnZhbGlkEilsaW1pdCBtdXN0IGJlIGVpdGhlciAtMSBvciBncmVhdGVyIHRoYW4gMBoWdGhpcyA9PSAtMSB8fCB0aGlzID4gMEgCiAEBEhwKBm9mZnNldBgFIAEoA0IHukgEIgIoAEgDiAEBQgsKCV9hZ2VudF9pZEIHCgVfdHlwZUIICgZfbGltaXRCCQoHX29mZnNldCJPChNMaXN0Um91dGVyc1Jlc3BvbnNlEiMKB3JvdXRlcnMYASADKAsyEi5tYW50cmFlLnYxLlJvdXRlchITCgt0b3RhbF9jb3VudBgCIAEoAyppCgpSb3V0ZXJUeXBlEhsKF1JPVVRFUl9UWVBFX1VOU1BFQ0lGSUVEEAASFAoQUk9VVEVSX1RZUEVfSFRUUBABEhMKD1JPVVRFUl9UWVBFX1RDUBACEhMKD1JPVVRFUl9UWVBFX1VEUBADMqwDCg1Sb3V0ZXJTZXJ2aWNlEk0KCUdldFJvdXRlchIcLm1hbnRyYWUudjEuR2V0Um91dGVyUmVxdWVzdBodLm1hbnRyYWUudjEuR2V0Um91dGVyUmVzcG9uc2UiA5ACARJRCgxDcmVhdGVSb3V0ZXISHy5tYW50cmFlLnYxLkNyZWF0ZVJvdXRlclJlcXVlc3QaIC5tYW50cmFlLnYxLkNyZWF0ZVJvdXRlclJlc3BvbnNlElEKDFVwZGF0ZVJvdXRlchIfLm1hbnRyYWUudjEuVXBkYXRlUm91dGVyUmVxdWVzdBogLm1hbnRyYWUudjEuVXBkYXRlUm91dGVyUmVzcG9uc2USUQoMRGVsZXRlUm91dGVyEh8ubWFudHJhZS52MS5EZWxldGVSb3V0ZXJSZXF1ZXN0GiAubWFudHJhZS52MS5EZWxldGVSb3V0ZXJSZXNwb25zZRJTCgtMaXN0Um91dGVycxIeLm1hbnRyYWUudjEuTGlzdFJvdXRlcnNSZXF1ZXN0Gh8ubWFudHJhZS52MS5MaXN0Um91dGVyc1Jlc3BvbnNlIgOQAgFCpQEKDmNvbS5tYW50cmFlLnYxQgtSb3V0ZXJQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw', - [ - file_buf_validate_validate, - file_google_protobuf_struct, - file_google_protobuf_timestamp, - file_mantrae_v1_dns_provider - ] - ); +export const file_mantrae_v1_router: GenFile = /*@__PURE__*/ + fileDesc("ChdtYW50cmFlL3YxL3JvdXRlci5wcm90bxIKbWFudHJhZS52MSK4AgoGUm91dGVyEgoKAmlkGAEgASgDEhIKCnByb2ZpbGVfaWQYAiABKAMSEAoIYWdlbnRfaWQYAyABKAkSDAoEbmFtZRgEIAEoCRInCgZjb25maWcYBSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBiABKAgSJAoEdHlwZRgHIAEoDjIWLm1hbnRyYWUudjEuUm91dGVyVHlwZRIuCg1kbnNfcHJvdmlkZXJzGAggAygLMhcubWFudHJhZS52MS5EbnNQcm92aWRlchIuCgpjcmVhdGVkX2F0GAkgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJXChBHZXRSb3V0ZXJSZXF1ZXN0EhMKAmlkGAEgASgDQge6SAQiAiAAEi4KBHR5cGUYAiABKA4yFi5tYW50cmFlLnYxLlJvdXRlclR5cGVCCLpIBYIBAhABIjcKEUdldFJvdXRlclJlc3BvbnNlEiIKBnJvdXRlchgBIAEoCzISLm1hbnRyYWUudjEuUm91dGVyIsgBChNDcmVhdGVSb3V0ZXJSZXF1ZXN0EhsKCnByb2ZpbGVfaWQYASABKANCB7pIBCICIAASEAoIYWdlbnRfaWQYAiABKAkSFQoEbmFtZRgDIAEoCUIHukgEcgIQARInCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBSABKAgSMQoEdHlwZRgGIAEoDjIWLm1hbnRyYWUudjEuUm91dGVyVHlwZUILukgIyAEBggECEAEiOgoUQ3JlYXRlUm91dGVyUmVzcG9uc2USIgoGcm91dGVyGAEgASgLMhIubWFudHJhZS52MS5Sb3V0ZXIi2wEKE1VwZGF0ZVJvdXRlclJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAASFQoEbmFtZRgCIAEoCUIHukgEcgIQARIuCgR0eXBlGAMgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgi6SAWCAQIQARInCgZjb25maWcYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYBSABKAgSLgoNZG5zX3Byb3ZpZGVycxgGIAMoCzIXLm1hbnRyYWUudjEuRG5zUHJvdmlkZXIiOgoUVXBkYXRlUm91dGVyUmVzcG9uc2USIgoGcm91dGVyGAEgASgLMhIubWFudHJhZS52MS5Sb3V0ZXIiWgoTRGVsZXRlUm91dGVyUmVxdWVzdBITCgJpZBgBIAEoA0IHukgEIgIgABIuCgR0eXBlGAIgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgi6SAWCAQIQASIWChREZWxldGVSb3V0ZXJSZXNwb25zZSK7AgoSTGlzdFJvdXRlcnNSZXF1ZXN0EhsKCnByb2ZpbGVfaWQYASABKANCB7pIBCICIAASHgoIYWdlbnRfaWQYAiABKAlCB7pIBHICEAFIAIgBARIzCgR0eXBlGAMgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgi6SAWCAQIQAUgBiAEBEmoKBWxpbWl0GAQgASgDQla6SFO6AVAKC2xpbWl0LnZhbGlkEilsaW1pdCBtdXN0IGJlIGVpdGhlciAtMSBvciBncmVhdGVyIHRoYW4gMBoWdGhpcyA9PSAtMSB8fCB0aGlzID4gMEgCiAEBEhwKBm9mZnNldBgFIAEoA0IHukgEIgIoAEgDiAEBQgsKCV9hZ2VudF9pZEIHCgVfdHlwZUIICgZfbGltaXRCCQoHX29mZnNldCJPChNMaXN0Um91dGVyc1Jlc3BvbnNlEiMKB3JvdXRlcnMYASADKAsyEi5tYW50cmFlLnYxLlJvdXRlchITCgt0b3RhbF9jb3VudBgCIAEoAyppCgpSb3V0ZXJUeXBlEhsKF1JPVVRFUl9UWVBFX1VOU1BFQ0lGSUVEEAASFAoQUk9VVEVSX1RZUEVfSFRUUBABEhMKD1JPVVRFUl9UWVBFX1RDUBACEhMKD1JPVVRFUl9UWVBFX1VEUBADMqwDCg1Sb3V0ZXJTZXJ2aWNlEk0KCUdldFJvdXRlchIcLm1hbnRyYWUudjEuR2V0Um91dGVyUmVxdWVzdBodLm1hbnRyYWUudjEuR2V0Um91dGVyUmVzcG9uc2UiA5ACARJRCgxDcmVhdGVSb3V0ZXISHy5tYW50cmFlLnYxLkNyZWF0ZVJvdXRlclJlcXVlc3QaIC5tYW50cmFlLnYxLkNyZWF0ZVJvdXRlclJlc3BvbnNlElEKDFVwZGF0ZVJvdXRlchIfLm1hbnRyYWUudjEuVXBkYXRlUm91dGVyUmVxdWVzdBogLm1hbnRyYWUudjEuVXBkYXRlUm91dGVyUmVzcG9uc2USUQoMRGVsZXRlUm91dGVyEh8ubWFudHJhZS52MS5EZWxldGVSb3V0ZXJSZXF1ZXN0GiAubWFudHJhZS52MS5EZWxldGVSb3V0ZXJSZXNwb25zZRJTCgtMaXN0Um91dGVycxIeLm1hbnRyYWUudjEuTGlzdFJvdXRlcnNSZXF1ZXN0Gh8ubWFudHJhZS52MS5MaXN0Um91dGVyc1Jlc3BvbnNlIgOQAgFCpQEKDmNvbS5tYW50cmFlLnYxQgtSb3V0ZXJQcm90b1ABWj1naXRodWIuY29tL21penVjaGlsYWJzL21hbnRyYWUvcHJvdG8vZ2VuL21hbnRyYWUvdjE7bWFudHJhZXYxogIDTVhYqgIKTWFudHJhZS5WMcoCCk1hbnRyYWVcVjHiAhZNYW50cmFlXFYxXEdQQk1ldGFkYXRh6gILTWFudHJhZTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp, file_mantrae_v1_dns_provider]); /** * @generated from message mantrae.v1.Router */ -export type Router = Message<'mantrae.v1.Router'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type Router = Message<"mantrae.v1.Router"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 3; - */ - agentId: string; + /** + * @generated from field: string agent_id = 3; + */ + agentId: string; - /** - * @generated from field: string name = 4; - */ - name: string; + /** + * @generated from field: string name = 4; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 5; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 5; + */ + config?: JsonObject; - /** - * @generated from field: bool enabled = 6; - */ - enabled: boolean; + /** + * @generated from field: bool enabled = 6; + */ + enabled: boolean; - /** - * @generated from field: mantrae.v1.RouterType type = 7; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 7; + */ + type: RouterType; - /** - * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 8; - */ - dnsProviders: DnsProvider[]; + /** + * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 8; + */ + dnsProviders: DnsProvider[]; - /** - * @generated from field: google.protobuf.Timestamp created_at = 9; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 9; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 10; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 10; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Router. * Use `create(RouterSchema)` to create a new message. */ -export const RouterSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 0); +export const RouterSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 0); /** * @generated from message mantrae.v1.GetRouterRequest */ -export type GetRouterRequest = Message<'mantrae.v1.GetRouterRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetRouterRequest = Message<"mantrae.v1.GetRouterRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.RouterType type = 2; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 2; + */ + type: RouterType; }; /** * Describes the message mantrae.v1.GetRouterRequest. * Use `create(GetRouterRequestSchema)` to create a new message. */ -export const GetRouterRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 1); +export const GetRouterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 1); /** * @generated from message mantrae.v1.GetRouterResponse */ -export type GetRouterResponse = Message<'mantrae.v1.GetRouterResponse'> & { - /** - * @generated from field: mantrae.v1.Router router = 1; - */ - router?: Router; +export type GetRouterResponse = Message<"mantrae.v1.GetRouterResponse"> & { + /** + * @generated from field: mantrae.v1.Router router = 1; + */ + router?: Router; }; /** * Describes the message mantrae.v1.GetRouterResponse. * Use `create(GetRouterResponseSchema)` to create a new message. */ -export const GetRouterResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 2); +export const GetRouterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 2); /** * @generated from message mantrae.v1.CreateRouterRequest */ -export type CreateRouterRequest = Message<'mantrae.v1.CreateRouterRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type CreateRouterRequest = Message<"mantrae.v1.CreateRouterRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 2; - */ - agentId: string; + /** + * @generated from field: string agent_id = 2; + */ + agentId: string; - /** - * @generated from field: string name = 3; - */ - name: string; + /** + * @generated from field: string name = 3; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 4; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 4; + */ + config?: JsonObject; - /** - * @generated from field: bool enabled = 5; - */ - enabled: boolean; + /** + * @generated from field: bool enabled = 5; + */ + enabled: boolean; - /** - * @generated from field: mantrae.v1.RouterType type = 6; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 6; + */ + type: RouterType; }; /** * Describes the message mantrae.v1.CreateRouterRequest. * Use `create(CreateRouterRequestSchema)` to create a new message. */ -export const CreateRouterRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 3); +export const CreateRouterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 3); /** * @generated from message mantrae.v1.CreateRouterResponse */ -export type CreateRouterResponse = Message<'mantrae.v1.CreateRouterResponse'> & { - /** - * @generated from field: mantrae.v1.Router router = 1; - */ - router?: Router; +export type CreateRouterResponse = Message<"mantrae.v1.CreateRouterResponse"> & { + /** + * @generated from field: mantrae.v1.Router router = 1; + */ + router?: Router; }; /** * Describes the message mantrae.v1.CreateRouterResponse. * Use `create(CreateRouterResponseSchema)` to create a new message. */ -export const CreateRouterResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 4); +export const CreateRouterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 4); /** * @generated from message mantrae.v1.UpdateRouterRequest */ -export type UpdateRouterRequest = Message<'mantrae.v1.UpdateRouterRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateRouterRequest = Message<"mantrae.v1.UpdateRouterRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: mantrae.v1.RouterType type = 3; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 3; + */ + type: RouterType; - /** - * @generated from field: google.protobuf.Struct config = 4; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 4; + */ + config?: JsonObject; - /** - * @generated from field: bool enabled = 5; - */ - enabled: boolean; + /** + * @generated from field: bool enabled = 5; + */ + enabled: boolean; - /** - * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 6; - */ - dnsProviders: DnsProvider[]; + /** + * @generated from field: repeated mantrae.v1.DnsProvider dns_providers = 6; + */ + dnsProviders: DnsProvider[]; }; /** * Describes the message mantrae.v1.UpdateRouterRequest. * Use `create(UpdateRouterRequestSchema)` to create a new message. */ -export const UpdateRouterRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 5); +export const UpdateRouterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 5); /** * @generated from message mantrae.v1.UpdateRouterResponse */ -export type UpdateRouterResponse = Message<'mantrae.v1.UpdateRouterResponse'> & { - /** - * @generated from field: mantrae.v1.Router router = 1; - */ - router?: Router; +export type UpdateRouterResponse = Message<"mantrae.v1.UpdateRouterResponse"> & { + /** + * @generated from field: mantrae.v1.Router router = 1; + */ + router?: Router; }; /** * Describes the message mantrae.v1.UpdateRouterResponse. * Use `create(UpdateRouterResponseSchema)` to create a new message. */ -export const UpdateRouterResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 6); +export const UpdateRouterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 6); /** * @generated from message mantrae.v1.DeleteRouterRequest */ -export type DeleteRouterRequest = Message<'mantrae.v1.DeleteRouterRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteRouterRequest = Message<"mantrae.v1.DeleteRouterRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.RouterType type = 2; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 2; + */ + type: RouterType; }; /** * Describes the message mantrae.v1.DeleteRouterRequest. * Use `create(DeleteRouterRequestSchema)` to create a new message. */ -export const DeleteRouterRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 7); +export const DeleteRouterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 7); /** * @generated from message mantrae.v1.DeleteRouterResponse */ -export type DeleteRouterResponse = Message<'mantrae.v1.DeleteRouterResponse'> & {}; +export type DeleteRouterResponse = Message<"mantrae.v1.DeleteRouterResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteRouterResponse. * Use `create(DeleteRouterResponseSchema)` to create a new message. */ -export const DeleteRouterResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 8); +export const DeleteRouterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 8); /** * @generated from message mantrae.v1.ListRoutersRequest */ -export type ListRoutersRequest = Message<'mantrae.v1.ListRoutersRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ListRoutersRequest = Message<"mantrae.v1.ListRoutersRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: optional string agent_id = 2; - */ - agentId?: string; + /** + * @generated from field: optional string agent_id = 2; + */ + agentId?: string; - /** - * @generated from field: optional mantrae.v1.RouterType type = 3; - */ - type?: RouterType; + /** + * @generated from field: optional mantrae.v1.RouterType type = 3; + */ + type?: RouterType; - /** - * @generated from field: optional int64 limit = 4; - */ - limit?: bigint; + /** + * @generated from field: optional int64 limit = 4; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 5; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 5; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListRoutersRequest. * Use `create(ListRoutersRequestSchema)` to create a new message. */ -export const ListRoutersRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 9); +export const ListRoutersRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 9); /** * @generated from message mantrae.v1.ListRoutersResponse */ -export type ListRoutersResponse = Message<'mantrae.v1.ListRoutersResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Router routers = 1; - */ - routers: Router[]; +export type ListRoutersResponse = Message<"mantrae.v1.ListRoutersResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Router routers = 1; + */ + routers: Router[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListRoutersResponse. * Use `create(ListRoutersResponseSchema)` to create a new message. */ -export const ListRoutersResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_router, 10); +export const ListRoutersResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_router, 10); /** * @generated from enum mantrae.v1.RouterType */ export enum RouterType { - /** - * @generated from enum value: ROUTER_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: ROUTER_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: ROUTER_TYPE_HTTP = 1; - */ - HTTP = 1, + /** + * @generated from enum value: ROUTER_TYPE_HTTP = 1; + */ + HTTP = 1, - /** - * @generated from enum value: ROUTER_TYPE_TCP = 2; - */ - TCP = 2, + /** + * @generated from enum value: ROUTER_TYPE_TCP = 2; + */ + TCP = 2, - /** - * @generated from enum value: ROUTER_TYPE_UDP = 3; - */ - UDP = 3 + /** + * @generated from enum value: ROUTER_TYPE_UDP = 3; + */ + UDP = 3, } /** * Describes the enum mantrae.v1.RouterType. */ -export const RouterTypeSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_mantrae_v1_router, 0); +export const RouterTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_router, 0); /** * @generated from service mantrae.v1.RouterService */ export const RouterService: GenService<{ - /** - * @generated from rpc mantrae.v1.RouterService.GetRouter - */ - getRouter: { - methodKind: 'unary'; - input: typeof GetRouterRequestSchema; - output: typeof GetRouterResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.RouterService.CreateRouter - */ - createRouter: { - methodKind: 'unary'; - input: typeof CreateRouterRequestSchema; - output: typeof CreateRouterResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.RouterService.UpdateRouter - */ - updateRouter: { - methodKind: 'unary'; - input: typeof UpdateRouterRequestSchema; - output: typeof UpdateRouterResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.RouterService.DeleteRouter - */ - deleteRouter: { - methodKind: 'unary'; - input: typeof DeleteRouterRequestSchema; - output: typeof DeleteRouterResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.RouterService.ListRouters - */ - listRouters: { - methodKind: 'unary'; - input: typeof ListRoutersRequestSchema; - output: typeof ListRoutersResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_router, 0); + /** + * @generated from rpc mantrae.v1.RouterService.GetRouter + */ + getRouter: { + methodKind: "unary"; + input: typeof GetRouterRequestSchema; + output: typeof GetRouterResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.RouterService.CreateRouter + */ + createRouter: { + methodKind: "unary"; + input: typeof CreateRouterRequestSchema; + output: typeof CreateRouterResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.RouterService.UpdateRouter + */ + updateRouter: { + methodKind: "unary"; + input: typeof UpdateRouterRequestSchema; + output: typeof UpdateRouterResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.RouterService.DeleteRouter + */ + deleteRouter: { + methodKind: "unary"; + input: typeof DeleteRouterRequestSchema; + output: typeof DeleteRouterResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.RouterService.ListRouters + */ + listRouters: { + methodKind: "unary"; + input: typeof ListRoutersRequestSchema; + output: typeof ListRoutersResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_router, 0); + diff --git a/web/src/lib/gen/mantrae/v1/service_pb.ts b/web/src/lib/gen/mantrae/v1/service_pb.ts index 75ec16a..de75a19 100644 --- a/web/src/lib/gen/mantrae/v1/service_pb.ts +++ b/web/src/lib/gen/mantrae/v1/service_pb.ts @@ -2,454 +2,431 @@ // @generated from file mantrae/v1/service.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenEnum, GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { enumDesc, fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { - file_google_protobuf_struct, - file_google_protobuf_timestamp -} from '@bufbuild/protobuf/wkt'; -import type { RouterType } from './router_pb'; -import { file_mantrae_v1_router } from './router_pb'; -import type { JsonObject, Message } from '@bufbuild/protobuf'; +import type { GenEnum, GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { enumDesc, fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { RouterType } from "./router_pb"; +import { file_mantrae_v1_router } from "./router_pb"; +import type { JsonObject, Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/service.proto. */ -export const file_mantrae_v1_service: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChhtYW50cmFlL3YxL3NlcnZpY2UucHJvdG8SCm1hbnRyYWUudjEi+QEKB1NlcnZpY2USCgoCaWQYASABKAMSEgoKcHJvZmlsZV9pZBgCIAEoAxIQCghhZ2VudF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJQoEdHlwZRgGIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGUSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiXwoRR2V0U2VydmljZVJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAASMgoEdHlwZRgCIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCC7pICMgBAYIBAhABIjoKEkdldFNlcnZpY2VSZXNwb25zZRIkCgdzZXJ2aWNlGAEgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlIr8BChRDcmVhdGVTZXJ2aWNlUmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAEhAKCGFnZW50X2lkGAIgASgJEhgKBG5hbWUYAyABKAlCCrpIB8gBAXICEAESJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIyCgR0eXBlGAUgASgOMhcubWFudHJhZS52MS5TZXJ2aWNlVHlwZUILukgIyAEBggECEAEiPQoVQ3JlYXRlU2VydmljZVJlc3BvbnNlEiQKB3NlcnZpY2UYASABKAsyEy5tYW50cmFlLnYxLlNlcnZpY2UipQEKFFVwZGF0ZVNlcnZpY2VSZXF1ZXN0EhYKAmlkGAEgASgDQgq6SAfIAQEiAiAAEhgKBG5hbWUYAiABKAlCCrpIB8gBAXICEAESJwoGY29uZmlnGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIyCgR0eXBlGAQgASgOMhcubWFudHJhZS52MS5TZXJ2aWNlVHlwZUILukgIyAEBggECEAEiPQoVVXBkYXRlU2VydmljZVJlc3BvbnNlEiQKB3NlcnZpY2UYASABKAsyEy5tYW50cmFlLnYxLlNlcnZpY2UiYgoURGVsZXRlU2VydmljZVJlcXVlc3QSFgoCaWQYASABKANCCrpIB8gBASICIAASMgoEdHlwZRgCIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCC7pICMgBAYIBAhABIhcKFURlbGV0ZVNlcnZpY2VSZXNwb25zZSLAAgoTTGlzdFNlcnZpY2VzUmVxdWVzdBIeCgpwcm9maWxlX2lkGAEgASgDQgq6SAfIAQEiAiAAEh4KCGFnZW50X2lkGAIgASgJQge6SARyAhABSACIAQESNAoEdHlwZRgDIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCCLpIBYIBAhABSAGIAQESagoFbGltaXQYBCABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSAKIAQESHAoGb2Zmc2V0GAUgASgDQge6SAQiAigASAOIAQFCCwoJX2FnZW50X2lkQgcKBV90eXBlQggKBl9saW1pdEIJCgdfb2Zmc2V0IlIKFExpc3RTZXJ2aWNlc1Jlc3BvbnNlEiUKCHNlcnZpY2VzGAEgAygLMhMubWFudHJhZS52MS5TZXJ2aWNlEhMKC3RvdGFsX2NvdW50GAIgASgDImgKGUdldFNlcnZpY2VCeVJvdXRlclJlcXVlc3QSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARIxCgR0eXBlGAIgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgu6SAjIAQGCAQIQASJCChpHZXRTZXJ2aWNlQnlSb3V0ZXJSZXNwb25zZRIkCgdzZXJ2aWNlGAEgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlKm4KC1NlcnZpY2VUeXBlEhwKGFNFUlZJQ0VfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVNFUlZJQ0VfVFlQRV9IVFRQEAESFAoQU0VSVklDRV9UWVBFX1RDUBACEhQKEFNFUlZJQ0VfVFlQRV9VRFAQAzKmBAoOU2VydmljZVNlcnZpY2USUAoKR2V0U2VydmljZRIdLm1hbnRyYWUudjEuR2V0U2VydmljZVJlcXVlc3QaHi5tYW50cmFlLnYxLkdldFNlcnZpY2VSZXNwb25zZSIDkAIBElQKDUNyZWF0ZVNlcnZpY2USIC5tYW50cmFlLnYxLkNyZWF0ZVNlcnZpY2VSZXF1ZXN0GiEubWFudHJhZS52MS5DcmVhdGVTZXJ2aWNlUmVzcG9uc2USVAoNVXBkYXRlU2VydmljZRIgLm1hbnRyYWUudjEuVXBkYXRlU2VydmljZVJlcXVlc3QaIS5tYW50cmFlLnYxLlVwZGF0ZVNlcnZpY2VSZXNwb25zZRJUCg1EZWxldGVTZXJ2aWNlEiAubWFudHJhZS52MS5EZWxldGVTZXJ2aWNlUmVxdWVzdBohLm1hbnRyYWUudjEuRGVsZXRlU2VydmljZVJlc3BvbnNlElYKDExpc3RTZXJ2aWNlcxIfLm1hbnRyYWUudjEuTGlzdFNlcnZpY2VzUmVxdWVzdBogLm1hbnRyYWUudjEuTGlzdFNlcnZpY2VzUmVzcG9uc2UiA5ACARJoChJHZXRTZXJ2aWNlQnlSb3V0ZXISJS5tYW50cmFlLnYxLkdldFNlcnZpY2VCeVJvdXRlclJlcXVlc3QaJi5tYW50cmFlLnYxLkdldFNlcnZpY2VCeVJvdXRlclJlc3BvbnNlIgOQAgFCpgEKDmNvbS5tYW50cmFlLnYxQgxTZXJ2aWNlUHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM', - [ - file_buf_validate_validate, - file_google_protobuf_struct, - file_google_protobuf_timestamp, - file_mantrae_v1_router - ] - ); +export const file_mantrae_v1_service: GenFile = /*@__PURE__*/ + fileDesc("ChhtYW50cmFlL3YxL3NlcnZpY2UucHJvdG8SCm1hbnRyYWUudjEi+QEKB1NlcnZpY2USCgoCaWQYASABKAMSEgoKcHJvZmlsZV9pZBgCIAEoAxIQCghhZ2VudF9pZBgDIAEoCRIMCgRuYW1lGAQgASgJEicKBmNvbmZpZxgFIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSJQoEdHlwZRgGIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGUSLgoKY3JlYXRlZF9hdBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASLgoKdXBkYXRlZF9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiWQoRR2V0U2VydmljZVJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAASLwoEdHlwZRgCIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCCLpIBYIBAhABIjoKEkdldFNlcnZpY2VSZXNwb25zZRIkCgdzZXJ2aWNlGAEgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlIrYBChRDcmVhdGVTZXJ2aWNlUmVxdWVzdBIbCgpwcm9maWxlX2lkGAEgASgDQge6SAQiAiAAEhAKCGFnZW50X2lkGAIgASgJEhUKBG5hbWUYAyABKAlCB7pIBHICEAESJwoGY29uZmlnGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIvCgR0eXBlGAUgASgOMhcubWFudHJhZS52MS5TZXJ2aWNlVHlwZUIIukgFggECEAEiPQoVQ3JlYXRlU2VydmljZVJlc3BvbnNlEiQKB3NlcnZpY2UYASABKAsyEy5tYW50cmFlLnYxLlNlcnZpY2UinAEKFFVwZGF0ZVNlcnZpY2VSZXF1ZXN0EhMKAmlkGAEgASgDQge6SAQiAiAAEhUKBG5hbWUYAiABKAlCB7pIBHICEAESJwoGY29uZmlnGAMgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIvCgR0eXBlGAQgASgOMhcubWFudHJhZS52MS5TZXJ2aWNlVHlwZUIIukgFggECEAEiPQoVVXBkYXRlU2VydmljZVJlc3BvbnNlEiQKB3NlcnZpY2UYASABKAsyEy5tYW50cmFlLnYxLlNlcnZpY2UiXAoURGVsZXRlU2VydmljZVJlcXVlc3QSEwoCaWQYASABKANCB7pIBCICIAASLwoEdHlwZRgCIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCCLpIBYIBAhABIhcKFURlbGV0ZVNlcnZpY2VSZXNwb25zZSK9AgoTTGlzdFNlcnZpY2VzUmVxdWVzdBIbCgpwcm9maWxlX2lkGAEgASgDQge6SAQiAiAAEh4KCGFnZW50X2lkGAIgASgJQge6SARyAhABSACIAQESNAoEdHlwZRgDIAEoDjIXLm1hbnRyYWUudjEuU2VydmljZVR5cGVCCLpIBYIBAhABSAGIAQESagoFbGltaXQYBCABKANCVrpIU7oBUAoLbGltaXQudmFsaWQSKWxpbWl0IG11c3QgYmUgZWl0aGVyIC0xIG9yIGdyZWF0ZXIgdGhhbiAwGhZ0aGlzID09IC0xIHx8IHRoaXMgPiAwSAKIAQESHAoGb2Zmc2V0GAUgASgDQge6SAQiAigASAOIAQFCCwoJX2FnZW50X2lkQgcKBV90eXBlQggKBl9saW1pdEIJCgdfb2Zmc2V0IlIKFExpc3RTZXJ2aWNlc1Jlc3BvbnNlEiUKCHNlcnZpY2VzGAEgAygLMhMubWFudHJhZS52MS5TZXJ2aWNlEhMKC3RvdGFsX2NvdW50GAIgASgDImgKGUdldFNlcnZpY2VCeVJvdXRlclJlcXVlc3QSGAoEbmFtZRgBIAEoCUIKukgHyAEBcgIQARIxCgR0eXBlGAIgASgOMhYubWFudHJhZS52MS5Sb3V0ZXJUeXBlQgu6SAjIAQGCAQIQASJCChpHZXRTZXJ2aWNlQnlSb3V0ZXJSZXNwb25zZRIkCgdzZXJ2aWNlGAEgASgLMhMubWFudHJhZS52MS5TZXJ2aWNlKm4KC1NlcnZpY2VUeXBlEhwKGFNFUlZJQ0VfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVNFUlZJQ0VfVFlQRV9IVFRQEAESFAoQU0VSVklDRV9UWVBFX1RDUBACEhQKEFNFUlZJQ0VfVFlQRV9VRFAQAzKmBAoOU2VydmljZVNlcnZpY2USUAoKR2V0U2VydmljZRIdLm1hbnRyYWUudjEuR2V0U2VydmljZVJlcXVlc3QaHi5tYW50cmFlLnYxLkdldFNlcnZpY2VSZXNwb25zZSIDkAIBElQKDUNyZWF0ZVNlcnZpY2USIC5tYW50cmFlLnYxLkNyZWF0ZVNlcnZpY2VSZXF1ZXN0GiEubWFudHJhZS52MS5DcmVhdGVTZXJ2aWNlUmVzcG9uc2USVAoNVXBkYXRlU2VydmljZRIgLm1hbnRyYWUudjEuVXBkYXRlU2VydmljZVJlcXVlc3QaIS5tYW50cmFlLnYxLlVwZGF0ZVNlcnZpY2VSZXNwb25zZRJUCg1EZWxldGVTZXJ2aWNlEiAubWFudHJhZS52MS5EZWxldGVTZXJ2aWNlUmVxdWVzdBohLm1hbnRyYWUudjEuRGVsZXRlU2VydmljZVJlc3BvbnNlElYKDExpc3RTZXJ2aWNlcxIfLm1hbnRyYWUudjEuTGlzdFNlcnZpY2VzUmVxdWVzdBogLm1hbnRyYWUudjEuTGlzdFNlcnZpY2VzUmVzcG9uc2UiA5ACARJoChJHZXRTZXJ2aWNlQnlSb3V0ZXISJS5tYW50cmFlLnYxLkdldFNlcnZpY2VCeVJvdXRlclJlcXVlc3QaJi5tYW50cmFlLnYxLkdldFNlcnZpY2VCeVJvdXRlclJlc3BvbnNlIgOQAgFCpgEKDmNvbS5tYW50cmFlLnYxQgxTZXJ2aWNlUHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_protobuf_struct, file_google_protobuf_timestamp, file_mantrae_v1_router]); /** * @generated from message mantrae.v1.Service */ -export type Service = Message<'mantrae.v1.Service'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type Service = Message<"mantrae.v1.Service"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: int64 profile_id = 2; - */ - profileId: bigint; + /** + * @generated from field: int64 profile_id = 2; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 3; - */ - agentId: string; + /** + * @generated from field: string agent_id = 3; + */ + agentId: string; - /** - * @generated from field: string name = 4; - */ - name: string; + /** + * @generated from field: string name = 4; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 5; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 5; + */ + config?: JsonObject; - /** - * @generated from field: mantrae.v1.ServiceType type = 6; - */ - type: ServiceType; + /** + * @generated from field: mantrae.v1.ServiceType type = 6; + */ + type: ServiceType; - /** - * @generated from field: google.protobuf.Timestamp created_at = 7; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 7; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 8; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 8; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Service. * Use `create(ServiceSchema)` to create a new message. */ -export const ServiceSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 0); +export const ServiceSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 0); /** * @generated from message mantrae.v1.GetServiceRequest */ -export type GetServiceRequest = Message<'mantrae.v1.GetServiceRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type GetServiceRequest = Message<"mantrae.v1.GetServiceRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.ServiceType type = 2; - */ - type: ServiceType; + /** + * @generated from field: mantrae.v1.ServiceType type = 2; + */ + type: ServiceType; }; /** * Describes the message mantrae.v1.GetServiceRequest. * Use `create(GetServiceRequestSchema)` to create a new message. */ -export const GetServiceRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 1); +export const GetServiceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 1); /** * @generated from message mantrae.v1.GetServiceResponse */ -export type GetServiceResponse = Message<'mantrae.v1.GetServiceResponse'> & { - /** - * @generated from field: mantrae.v1.Service service = 1; - */ - service?: Service; +export type GetServiceResponse = Message<"mantrae.v1.GetServiceResponse"> & { + /** + * @generated from field: mantrae.v1.Service service = 1; + */ + service?: Service; }; /** * Describes the message mantrae.v1.GetServiceResponse. * Use `create(GetServiceResponseSchema)` to create a new message. */ -export const GetServiceResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 2); +export const GetServiceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 2); /** * @generated from message mantrae.v1.CreateServiceRequest */ -export type CreateServiceRequest = Message<'mantrae.v1.CreateServiceRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type CreateServiceRequest = Message<"mantrae.v1.CreateServiceRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: string agent_id = 2; - */ - agentId: string; + /** + * @generated from field: string agent_id = 2; + */ + agentId: string; - /** - * @generated from field: string name = 3; - */ - name: string; + /** + * @generated from field: string name = 3; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 4; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 4; + */ + config?: JsonObject; - /** - * @generated from field: mantrae.v1.ServiceType type = 5; - */ - type: ServiceType; + /** + * @generated from field: mantrae.v1.ServiceType type = 5; + */ + type: ServiceType; }; /** * Describes the message mantrae.v1.CreateServiceRequest. * Use `create(CreateServiceRequestSchema)` to create a new message. */ -export const CreateServiceRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 3); +export const CreateServiceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 3); /** * @generated from message mantrae.v1.CreateServiceResponse */ -export type CreateServiceResponse = Message<'mantrae.v1.CreateServiceResponse'> & { - /** - * @generated from field: mantrae.v1.Service service = 1; - */ - service?: Service; +export type CreateServiceResponse = Message<"mantrae.v1.CreateServiceResponse"> & { + /** + * @generated from field: mantrae.v1.Service service = 1; + */ + service?: Service; }; /** * Describes the message mantrae.v1.CreateServiceResponse. * Use `create(CreateServiceResponseSchema)` to create a new message. */ -export const CreateServiceResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 4); +export const CreateServiceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 4); /** * @generated from message mantrae.v1.UpdateServiceRequest */ -export type UpdateServiceRequest = Message<'mantrae.v1.UpdateServiceRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type UpdateServiceRequest = Message<"mantrae.v1.UpdateServiceRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: string name = 2; - */ - name: string; + /** + * @generated from field: string name = 2; + */ + name: string; - /** - * @generated from field: google.protobuf.Struct config = 3; - */ - config?: JsonObject; + /** + * @generated from field: google.protobuf.Struct config = 3; + */ + config?: JsonObject; - /** - * @generated from field: mantrae.v1.ServiceType type = 4; - */ - type: ServiceType; + /** + * @generated from field: mantrae.v1.ServiceType type = 4; + */ + type: ServiceType; }; /** * Describes the message mantrae.v1.UpdateServiceRequest. * Use `create(UpdateServiceRequestSchema)` to create a new message. */ -export const UpdateServiceRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 5); +export const UpdateServiceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 5); /** * @generated from message mantrae.v1.UpdateServiceResponse */ -export type UpdateServiceResponse = Message<'mantrae.v1.UpdateServiceResponse'> & { - /** - * @generated from field: mantrae.v1.Service service = 1; - */ - service?: Service; +export type UpdateServiceResponse = Message<"mantrae.v1.UpdateServiceResponse"> & { + /** + * @generated from field: mantrae.v1.Service service = 1; + */ + service?: Service; }; /** * Describes the message mantrae.v1.UpdateServiceResponse. * Use `create(UpdateServiceResponseSchema)` to create a new message. */ -export const UpdateServiceResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 6); +export const UpdateServiceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 6); /** * @generated from message mantrae.v1.DeleteServiceRequest */ -export type DeleteServiceRequest = Message<'mantrae.v1.DeleteServiceRequest'> & { - /** - * @generated from field: int64 id = 1; - */ - id: bigint; +export type DeleteServiceRequest = Message<"mantrae.v1.DeleteServiceRequest"> & { + /** + * @generated from field: int64 id = 1; + */ + id: bigint; - /** - * @generated from field: mantrae.v1.ServiceType type = 2; - */ - type: ServiceType; + /** + * @generated from field: mantrae.v1.ServiceType type = 2; + */ + type: ServiceType; }; /** * Describes the message mantrae.v1.DeleteServiceRequest. * Use `create(DeleteServiceRequestSchema)` to create a new message. */ -export const DeleteServiceRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 7); +export const DeleteServiceRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 7); /** * @generated from message mantrae.v1.DeleteServiceResponse */ -export type DeleteServiceResponse = Message<'mantrae.v1.DeleteServiceResponse'> & {}; +export type DeleteServiceResponse = Message<"mantrae.v1.DeleteServiceResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteServiceResponse. * Use `create(DeleteServiceResponseSchema)` to create a new message. */ -export const DeleteServiceResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 8); +export const DeleteServiceResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 8); /** * @generated from message mantrae.v1.ListServicesRequest */ -export type ListServicesRequest = Message<'mantrae.v1.ListServicesRequest'> & { - /** - * @generated from field: int64 profile_id = 1; - */ - profileId: bigint; +export type ListServicesRequest = Message<"mantrae.v1.ListServicesRequest"> & { + /** + * @generated from field: int64 profile_id = 1; + */ + profileId: bigint; - /** - * @generated from field: optional string agent_id = 2; - */ - agentId?: string; + /** + * @generated from field: optional string agent_id = 2; + */ + agentId?: string; - /** - * @generated from field: optional mantrae.v1.ServiceType type = 3; - */ - type?: ServiceType; + /** + * @generated from field: optional mantrae.v1.ServiceType type = 3; + */ + type?: ServiceType; - /** - * @generated from field: optional int64 limit = 4; - */ - limit?: bigint; + /** + * @generated from field: optional int64 limit = 4; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 5; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 5; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListServicesRequest. * Use `create(ListServicesRequestSchema)` to create a new message. */ -export const ListServicesRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 9); +export const ListServicesRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 9); /** * @generated from message mantrae.v1.ListServicesResponse */ -export type ListServicesResponse = Message<'mantrae.v1.ListServicesResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Service services = 1; - */ - services: Service[]; +export type ListServicesResponse = Message<"mantrae.v1.ListServicesResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Service services = 1; + */ + services: Service[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListServicesResponse. * Use `create(ListServicesResponseSchema)` to create a new message. */ -export const ListServicesResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 10); +export const ListServicesResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 10); /** * @generated from message mantrae.v1.GetServiceByRouterRequest */ -export type GetServiceByRouterRequest = Message<'mantrae.v1.GetServiceByRouterRequest'> & { - /** - * @generated from field: string name = 1; - */ - name: string; +export type GetServiceByRouterRequest = Message<"mantrae.v1.GetServiceByRouterRequest"> & { + /** + * @generated from field: string name = 1; + */ + name: string; - /** - * @generated from field: mantrae.v1.RouterType type = 2; - */ - type: RouterType; + /** + * @generated from field: mantrae.v1.RouterType type = 2; + */ + type: RouterType; }; /** * Describes the message mantrae.v1.GetServiceByRouterRequest. * Use `create(GetServiceByRouterRequestSchema)` to create a new message. */ -export const GetServiceByRouterRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 11); +export const GetServiceByRouterRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 11); /** * @generated from message mantrae.v1.GetServiceByRouterResponse */ -export type GetServiceByRouterResponse = Message<'mantrae.v1.GetServiceByRouterResponse'> & { - /** - * @generated from field: mantrae.v1.Service service = 1; - */ - service?: Service; +export type GetServiceByRouterResponse = Message<"mantrae.v1.GetServiceByRouterResponse"> & { + /** + * @generated from field: mantrae.v1.Service service = 1; + */ + service?: Service; }; /** * Describes the message mantrae.v1.GetServiceByRouterResponse. * Use `create(GetServiceByRouterResponseSchema)` to create a new message. */ -export const GetServiceByRouterResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_service, 12); +export const GetServiceByRouterResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_service, 12); /** * @generated from enum mantrae.v1.ServiceType */ export enum ServiceType { - /** - * @generated from enum value: SERVICE_TYPE_UNSPECIFIED = 0; - */ - UNSPECIFIED = 0, + /** + * @generated from enum value: SERVICE_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, - /** - * @generated from enum value: SERVICE_TYPE_HTTP = 1; - */ - HTTP = 1, + /** + * @generated from enum value: SERVICE_TYPE_HTTP = 1; + */ + HTTP = 1, - /** - * @generated from enum value: SERVICE_TYPE_TCP = 2; - */ - TCP = 2, + /** + * @generated from enum value: SERVICE_TYPE_TCP = 2; + */ + TCP = 2, - /** - * @generated from enum value: SERVICE_TYPE_UDP = 3; - */ - UDP = 3 + /** + * @generated from enum value: SERVICE_TYPE_UDP = 3; + */ + UDP = 3, } /** * Describes the enum mantrae.v1.ServiceType. */ -export const ServiceTypeSchema: GenEnum = - /*@__PURE__*/ - enumDesc(file_mantrae_v1_service, 0); +export const ServiceTypeSchema: GenEnum = /*@__PURE__*/ + enumDesc(file_mantrae_v1_service, 0); /** * @generated from service mantrae.v1.ServiceService */ export const ServiceService: GenService<{ - /** - * @generated from rpc mantrae.v1.ServiceService.GetService - */ - getService: { - methodKind: 'unary'; - input: typeof GetServiceRequestSchema; - output: typeof GetServiceResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ServiceService.CreateService - */ - createService: { - methodKind: 'unary'; - input: typeof CreateServiceRequestSchema; - output: typeof CreateServiceResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ServiceService.UpdateService - */ - updateService: { - methodKind: 'unary'; - input: typeof UpdateServiceRequestSchema; - output: typeof UpdateServiceResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ServiceService.DeleteService - */ - deleteService: { - methodKind: 'unary'; - input: typeof DeleteServiceRequestSchema; - output: typeof DeleteServiceResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ServiceService.ListServices - */ - listServices: { - methodKind: 'unary'; - input: typeof ListServicesRequestSchema; - output: typeof ListServicesResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.ServiceService.GetServiceByRouter - */ - getServiceByRouter: { - methodKind: 'unary'; - input: typeof GetServiceByRouterRequestSchema; - output: typeof GetServiceByRouterResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_service, 0); + /** + * @generated from rpc mantrae.v1.ServiceService.GetService + */ + getService: { + methodKind: "unary"; + input: typeof GetServiceRequestSchema; + output: typeof GetServiceResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ServiceService.CreateService + */ + createService: { + methodKind: "unary"; + input: typeof CreateServiceRequestSchema; + output: typeof CreateServiceResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ServiceService.UpdateService + */ + updateService: { + methodKind: "unary"; + input: typeof UpdateServiceRequestSchema; + output: typeof UpdateServiceResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ServiceService.DeleteService + */ + deleteService: { + methodKind: "unary"; + input: typeof DeleteServiceRequestSchema; + output: typeof DeleteServiceResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ServiceService.ListServices + */ + listServices: { + methodKind: "unary"; + input: typeof ListServicesRequestSchema; + output: typeof ListServicesResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.ServiceService.GetServiceByRouter + */ + getServiceByRouter: { + methodKind: "unary"; + input: typeof GetServiceByRouterRequestSchema; + output: typeof GetServiceByRouterResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_service, 0); + diff --git a/web/src/lib/gen/mantrae/v1/setting_pb.ts b/web/src/lib/gen/mantrae/v1/setting_pb.ts index ad569c1..deb4d85 100644 --- a/web/src/lib/gen/mantrae/v1/setting_pb.ts +++ b/web/src/lib/gen/mantrae/v1/setting_pb.ts @@ -2,185 +2,177 @@ // @generated from file mantrae/v1/setting.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/setting.proto. */ -export const file_mantrae_v1_setting: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChhtYW50cmFlL3YxL3NldHRpbmcucHJvdG8SCm1hbnRyYWUudjEiVQoHU2V0dGluZxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLAoRR2V0U2V0dGluZ1JlcXVlc3QSFwoDa2V5GAEgASgJQgq6SAfIAQFyAhABIiMKEkdldFNldHRpbmdSZXNwb25zZRINCgV2YWx1ZRgBIAEoCSI+ChRVcGRhdGVTZXR0aW5nUmVxdWVzdBIXCgNrZXkYASABKAlCCrpIB8gBAXICEAESDQoFdmFsdWUYAiABKAkiPQoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiQKB3NldHRpbmcYASABKAsyEy5tYW50cmFlLnYxLlNldHRpbmciFQoTTGlzdFNldHRpbmdzUmVxdWVzdCI9ChRMaXN0U2V0dGluZ3NSZXNwb25zZRIlCghzZXR0aW5ncxgBIAMoCzITLm1hbnRyYWUudjEuU2V0dGluZzKQAgoOU2V0dGluZ1NlcnZpY2USUAoKR2V0U2V0dGluZxIdLm1hbnRyYWUudjEuR2V0U2V0dGluZ1JlcXVlc3QaHi5tYW50cmFlLnYxLkdldFNldHRpbmdSZXNwb25zZSIDkAIBElQKDVVwZGF0ZVNldHRpbmcSIC5tYW50cmFlLnYxLlVwZGF0ZVNldHRpbmdSZXF1ZXN0GiEubWFudHJhZS52MS5VcGRhdGVTZXR0aW5nUmVzcG9uc2USVgoMTGlzdFNldHRpbmdzEh8ubWFudHJhZS52MS5MaXN0U2V0dGluZ3NSZXF1ZXN0GiAubWFudHJhZS52MS5MaXN0U2V0dGluZ3NSZXNwb25zZSIDkAIBQqYBCg5jb20ubWFudHJhZS52MUIMU2V0dGluZ1Byb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_setting: GenFile = /*@__PURE__*/ + fileDesc("ChhtYW50cmFlL3YxL3NldHRpbmcucHJvdG8SCm1hbnRyYWUudjEiVQoHU2V0dGluZxILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkSLgoKdXBkYXRlZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiKQoRR2V0U2V0dGluZ1JlcXVlc3QSFAoDa2V5GAEgASgJQge6SARyAhABIiMKEkdldFNldHRpbmdSZXNwb25zZRINCgV2YWx1ZRgBIAEoCSI7ChRVcGRhdGVTZXR0aW5nUmVxdWVzdBIUCgNrZXkYASABKAlCB7pIBHICEAESDQoFdmFsdWUYAiABKAkiPQoVVXBkYXRlU2V0dGluZ1Jlc3BvbnNlEiQKB3NldHRpbmcYASABKAsyEy5tYW50cmFlLnYxLlNldHRpbmciFQoTTGlzdFNldHRpbmdzUmVxdWVzdCI9ChRMaXN0U2V0dGluZ3NSZXNwb25zZRIlCghzZXR0aW5ncxgBIAMoCzITLm1hbnRyYWUudjEuU2V0dGluZzKQAgoOU2V0dGluZ1NlcnZpY2USUAoKR2V0U2V0dGluZxIdLm1hbnRyYWUudjEuR2V0U2V0dGluZ1JlcXVlc3QaHi5tYW50cmFlLnYxLkdldFNldHRpbmdSZXNwb25zZSIDkAIBElQKDVVwZGF0ZVNldHRpbmcSIC5tYW50cmFlLnYxLlVwZGF0ZVNldHRpbmdSZXF1ZXN0GiEubWFudHJhZS52MS5VcGRhdGVTZXR0aW5nUmVzcG9uc2USVgoMTGlzdFNldHRpbmdzEh8ubWFudHJhZS52MS5MaXN0U2V0dGluZ3NSZXF1ZXN0GiAubWFudHJhZS52MS5MaXN0U2V0dGluZ3NSZXNwb25zZSIDkAIBQqYBCg5jb20ubWFudHJhZS52MUIMU2V0dGluZ1Byb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.Setting */ -export type Setting = Message<'mantrae.v1.Setting'> & { - /** - * @generated from field: string key = 1; - */ - key: string; +export type Setting = Message<"mantrae.v1.Setting"> & { + /** + * @generated from field: string key = 1; + */ + key: string; - /** - * @generated from field: string value = 2; - */ - value: string; + /** + * @generated from field: string value = 2; + */ + value: string; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 3; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 3; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.Setting. * Use `create(SettingSchema)` to create a new message. */ -export const SettingSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 0); +export const SettingSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 0); /** * @generated from message mantrae.v1.GetSettingRequest */ -export type GetSettingRequest = Message<'mantrae.v1.GetSettingRequest'> & { - /** - * @generated from field: string key = 1; - */ - key: string; +export type GetSettingRequest = Message<"mantrae.v1.GetSettingRequest"> & { + /** + * @generated from field: string key = 1; + */ + key: string; }; /** * Describes the message mantrae.v1.GetSettingRequest. * Use `create(GetSettingRequestSchema)` to create a new message. */ -export const GetSettingRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 1); +export const GetSettingRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 1); /** * @generated from message mantrae.v1.GetSettingResponse */ -export type GetSettingResponse = Message<'mantrae.v1.GetSettingResponse'> & { - /** - * @generated from field: string value = 1; - */ - value: string; +export type GetSettingResponse = Message<"mantrae.v1.GetSettingResponse"> & { + /** + * @generated from field: string value = 1; + */ + value: string; }; /** * Describes the message mantrae.v1.GetSettingResponse. * Use `create(GetSettingResponseSchema)` to create a new message. */ -export const GetSettingResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 2); +export const GetSettingResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 2); /** * @generated from message mantrae.v1.UpdateSettingRequest */ -export type UpdateSettingRequest = Message<'mantrae.v1.UpdateSettingRequest'> & { - /** - * @generated from field: string key = 1; - */ - key: string; +export type UpdateSettingRequest = Message<"mantrae.v1.UpdateSettingRequest"> & { + /** + * @generated from field: string key = 1; + */ + key: string; - /** - * @generated from field: string value = 2; - */ - value: string; + /** + * @generated from field: string value = 2; + */ + value: string; }; /** * Describes the message mantrae.v1.UpdateSettingRequest. * Use `create(UpdateSettingRequestSchema)` to create a new message. */ -export const UpdateSettingRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 3); +export const UpdateSettingRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 3); /** * @generated from message mantrae.v1.UpdateSettingResponse */ -export type UpdateSettingResponse = Message<'mantrae.v1.UpdateSettingResponse'> & { - /** - * @generated from field: mantrae.v1.Setting setting = 1; - */ - setting?: Setting; +export type UpdateSettingResponse = Message<"mantrae.v1.UpdateSettingResponse"> & { + /** + * @generated from field: mantrae.v1.Setting setting = 1; + */ + setting?: Setting; }; /** * Describes the message mantrae.v1.UpdateSettingResponse. * Use `create(UpdateSettingResponseSchema)` to create a new message. */ -export const UpdateSettingResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 4); +export const UpdateSettingResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 4); /** * @generated from message mantrae.v1.ListSettingsRequest */ -export type ListSettingsRequest = Message<'mantrae.v1.ListSettingsRequest'> & {}; +export type ListSettingsRequest = Message<"mantrae.v1.ListSettingsRequest"> & { +}; /** * Describes the message mantrae.v1.ListSettingsRequest. * Use `create(ListSettingsRequestSchema)` to create a new message. */ -export const ListSettingsRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 5); +export const ListSettingsRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 5); /** * @generated from message mantrae.v1.ListSettingsResponse */ -export type ListSettingsResponse = Message<'mantrae.v1.ListSettingsResponse'> & { - /** - * @generated from field: repeated mantrae.v1.Setting settings = 1; - */ - settings: Setting[]; +export type ListSettingsResponse = Message<"mantrae.v1.ListSettingsResponse"> & { + /** + * @generated from field: repeated mantrae.v1.Setting settings = 1; + */ + settings: Setting[]; }; /** * Describes the message mantrae.v1.ListSettingsResponse. * Use `create(ListSettingsResponseSchema)` to create a new message. */ -export const ListSettingsResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_setting, 6); +export const ListSettingsResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_setting, 6); /** * @generated from service mantrae.v1.SettingService */ export const SettingService: GenService<{ - /** - * @generated from rpc mantrae.v1.SettingService.GetSetting - */ - getSetting: { - methodKind: 'unary'; - input: typeof GetSettingRequestSchema; - output: typeof GetSettingResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.SettingService.UpdateSetting - */ - updateSetting: { - methodKind: 'unary'; - input: typeof UpdateSettingRequestSchema; - output: typeof UpdateSettingResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.SettingService.ListSettings - */ - listSettings: { - methodKind: 'unary'; - input: typeof ListSettingsRequestSchema; - output: typeof ListSettingsResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_setting, 0); + /** + * @generated from rpc mantrae.v1.SettingService.GetSetting + */ + getSetting: { + methodKind: "unary"; + input: typeof GetSettingRequestSchema; + output: typeof GetSettingResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.SettingService.UpdateSetting + */ + updateSetting: { + methodKind: "unary"; + input: typeof UpdateSettingRequestSchema; + output: typeof UpdateSettingResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.SettingService.ListSettings + */ + listSettings: { + methodKind: "unary"; + input: typeof ListSettingsRequestSchema; + output: typeof ListSettingsResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_setting, 0); + diff --git a/web/src/lib/gen/mantrae/v1/user_pb.ts b/web/src/lib/gen/mantrae/v1/user_pb.ts index 1bb473c..a255f11 100644 --- a/web/src/lib/gen/mantrae/v1/user_pb.ts +++ b/web/src/lib/gen/mantrae/v1/user_pb.ts @@ -2,672 +2,604 @@ // @generated from file mantrae/v1/user.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import { file_buf_validate_validate } from '../../buf/validate/validate_pb'; -import type { Timestamp } from '@bufbuild/protobuf/wkt'; -import { file_google_protobuf_timestamp } from '@bufbuild/protobuf/wkt'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import { file_buf_validate_validate } from "../../buf/validate/validate_pb"; +import type { Timestamp } from "@bufbuild/protobuf/wkt"; +import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/user.proto. */ -export const file_mantrae_v1_user: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChVtYW50cmFlL3YxL3VzZXIucHJvdG8SCm1hbnRyYWUudjEipAIKBFVzZXISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIcGFzc3dvcmQYAyABKAkSDQoFZW1haWwYBCABKAkSEAoIaXNfYWRtaW4YBSABKAgSCwoDb3RwGAYgASgJEi4KCm90cF9leHBpcnkYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmxhc3RfbG9naW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInwKEExvZ2luVXNlclJlcXVlc3QSGwoIdXNlcm5hbWUYASABKAlCB7pIBHICEANIABIYCgVlbWFpbBgCIAEoCUIHukgEcgJgAUgAEhwKCHBhc3N3b3JkGAMgASgJQgq6SAfIAQFyAhAIQhMKCmlkZW50aWZpZXISBbpIAggBIiIKEUxvZ2luVXNlclJlc3BvbnNlEg0KBXRva2VuGAEgASgJIhMKEUxvZ291dFVzZXJSZXF1ZXN0IhQKEkxvZ291dFVzZXJSZXNwb25zZSISChBWZXJpZnlKV1RSZXF1ZXN0IjMKEVZlcmlmeUpXVFJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIidwoQVmVyaWZ5T1RQUmVxdWVzdBIbCgh1c2VybmFtZRgBIAEoCUIHukgEcgIQA0gAEhgKBWVtYWlsGAIgASgJQge6SARyAmABSAASFwoDb3RwGAMgASgJQgq6SAfIAQFyAhAGQhMKCmlkZW50aWZpZXISBbpIAggBIiIKEVZlcmlmeU9UUFJlc3BvbnNlEg0KBXRva2VuGAEgASgJIlwKDlNlbmRPVFBSZXF1ZXN0EhsKCHVzZXJuYW1lGAEgASgJQge6SARyAhADSAASGAoFZW1haWwYAiABKAlCB7pIBHICYAFIAEITCgppZGVudGlmaWVyEgW6SAIIASIRCg9TZW5kT1RQUmVzcG9uc2UicwoOR2V0VXNlclJlcXVlc3QSFQoCaWQYASABKAlCB7pIBHICEAFIABIbCgh1c2VybmFtZRgCIAEoCUIHukgEcgIQA0gAEhgKBWVtYWlsGAMgASgJQge6SARyAmABSABCEwoKaWRlbnRpZmllchIFukgCCAEiMQoPR2V0VXNlclJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIieQoRQ3JlYXRlVXNlclJlcXVlc3QSHAoIdXNlcm5hbWUYASABKAlCCrpIB8gBAXICEAMSHAoIcGFzc3dvcmQYAiABKAlCCrpIB8gBAXICEAgSFgoFZW1haWwYAyABKAlCB7pIBHICYAESEAoIaXNfYWRtaW4YBCABKAgiNAoSQ3JlYXRlVXNlclJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIioAEKEVVwZGF0ZVVzZXJSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABEhwKCHVzZXJuYW1lGAIgASgJQgq6SAfIAQFyAhADEhYKBWVtYWlsGAMgASgJQge6SARyAmABEhAKCGlzX2FkbWluGAQgASgIEh4KCHBhc3N3b3JkGAUgASgJQge6SARyAhAISACIAQFCCwoJX3Bhc3N3b3JkIjQKElVwZGF0ZVVzZXJSZXNwb25zZRIeCgR1c2VyGAEgASgLMhAubWFudHJhZS52MS5Vc2VyIisKEURlbGV0ZVVzZXJSZXF1ZXN0EhYKAmlkGAEgASgJQgq6SAfIAQFyAhABIhQKEkRlbGV0ZVVzZXJSZXNwb25zZSKxAQoQTGlzdFVzZXJzUmVxdWVzdBJqCgVsaW1pdBgBIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAIgBARIcCgZvZmZzZXQYAiABKANCB7pIBCICKABIAYgBAUIICgZfbGltaXRCCQoHX29mZnNldCJJChFMaXN0VXNlcnNSZXNwb25zZRIfCgV1c2VycxgBIAMoCzIQLm1hbnRyYWUudjEuVXNlchITCgt0b3RhbF9jb3VudBgCIAEoAyIWChRHZXRPSURDU3RhdHVzUmVxdWVzdCJWChVHZXRPSURDU3RhdHVzUmVzcG9uc2USFAoMb2lkY19lbmFibGVkGAEgASgIEhUKDWxvZ2luX2VuYWJsZWQYAiABKAgSEAoIcHJvdmlkZXIYAyABKAky0QYKC1VzZXJTZXJ2aWNlEkgKCUxvZ2luVXNlchIcLm1hbnRyYWUudjEuTG9naW5Vc2VyUmVxdWVzdBodLm1hbnRyYWUudjEuTG9naW5Vc2VyUmVzcG9uc2USSwoKTG9nb3V0VXNlchIdLm1hbnRyYWUudjEuTG9nb3V0VXNlclJlcXVlc3QaHi5tYW50cmFlLnYxLkxvZ291dFVzZXJSZXNwb25zZRJICglWZXJpZnlKV1QSHC5tYW50cmFlLnYxLlZlcmlmeUpXVFJlcXVlc3QaHS5tYW50cmFlLnYxLlZlcmlmeUpXVFJlc3BvbnNlEkgKCVZlcmlmeU9UUBIcLm1hbnRyYWUudjEuVmVyaWZ5T1RQUmVxdWVzdBodLm1hbnRyYWUudjEuVmVyaWZ5T1RQUmVzcG9uc2USQgoHU2VuZE9UUBIaLm1hbnRyYWUudjEuU2VuZE9UUFJlcXVlc3QaGy5tYW50cmFlLnYxLlNlbmRPVFBSZXNwb25zZRJHCgdHZXRVc2VyEhoubWFudHJhZS52MS5HZXRVc2VyUmVxdWVzdBobLm1hbnRyYWUudjEuR2V0VXNlclJlc3BvbnNlIgOQAgESSwoKQ3JlYXRlVXNlchIdLm1hbnRyYWUudjEuQ3JlYXRlVXNlclJlcXVlc3QaHi5tYW50cmFlLnYxLkNyZWF0ZVVzZXJSZXNwb25zZRJLCgpVcGRhdGVVc2VyEh0ubWFudHJhZS52MS5VcGRhdGVVc2VyUmVxdWVzdBoeLm1hbnRyYWUudjEuVXBkYXRlVXNlclJlc3BvbnNlEksKCkRlbGV0ZVVzZXISHS5tYW50cmFlLnYxLkRlbGV0ZVVzZXJSZXF1ZXN0Gh4ubWFudHJhZS52MS5EZWxldGVVc2VyUmVzcG9uc2USTQoJTGlzdFVzZXJzEhwubWFudHJhZS52MS5MaXN0VXNlcnNSZXF1ZXN0Gh0ubWFudHJhZS52MS5MaXN0VXNlcnNSZXNwb25zZSIDkAIBElQKDUdldE9JRENTdGF0dXMSIC5tYW50cmFlLnYxLkdldE9JRENTdGF0dXNSZXF1ZXN0GiEubWFudHJhZS52MS5HZXRPSURDU3RhdHVzUmVzcG9uc2VCowEKDmNvbS5tYW50cmFlLnYxQglVc2VyUHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM', - [file_buf_validate_validate, file_google_protobuf_timestamp] - ); +export const file_mantrae_v1_user: GenFile = /*@__PURE__*/ + fileDesc("ChVtYW50cmFlL3YxL3VzZXIucHJvdG8SCm1hbnRyYWUudjEipAIKBFVzZXISCgoCaWQYASABKAkSEAoIdXNlcm5hbWUYAiABKAkSEAoIcGFzc3dvcmQYAyABKAkSDQoFZW1haWwYBCABKAkSEAoIaXNfYWRtaW4YBSABKAgSCwoDb3RwGAYgASgJEi4KCm90cF9leHBpcnkYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmxhc3RfbG9naW4YCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCmNyZWF0ZWRfYXQYCSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wInwKEExvZ2luVXNlclJlcXVlc3QSGwoIdXNlcm5hbWUYASABKAlCB7pIBHICEANIABIYCgVlbWFpbBgCIAEoCUIHukgEcgJgAUgAEhwKCHBhc3N3b3JkGAMgASgJQgq6SAfIAQFyAhAIQhMKCmlkZW50aWZpZXISBbpIAggBIjMKEUxvZ2luVXNlclJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIiEwoRTG9nb3V0VXNlclJlcXVlc3QiFAoSTG9nb3V0VXNlclJlc3BvbnNlInUKEFZlcmlmeU9UUFJlcXVlc3QSGwoIdXNlcm5hbWUYASABKAlCB7pIBHICEANIABIYCgVlbWFpbBgCIAEoCUIHukgEcgJgAUgAEhUKA290cBgDIAEoCUIIukgFcgOYAQZCEwoKaWRlbnRpZmllchIFukgCCAEiMwoRVmVyaWZ5T1RQUmVzcG9uc2USHgoEdXNlchgBIAEoCzIQLm1hbnRyYWUudjEuVXNlciJcCg5TZW5kT1RQUmVxdWVzdBIbCgh1c2VybmFtZRgBIAEoCUIHukgEcgIQA0gAEhgKBWVtYWlsGAIgASgJQge6SARyAmABSABCEwoKaWRlbnRpZmllchIFukgCCAEiEQoPU2VuZE9UUFJlc3BvbnNlImwKDkdldFVzZXJSZXF1ZXN0EhUKAmlkGAEgASgJQge6SARyAhABSAASGwoIdXNlcm5hbWUYAiABKAlCB7pIBHICEANIABIYCgVlbWFpbBgDIAEoCUIHukgEcgJgAUgAQgwKCmlkZW50aWZpZXIiMQoPR2V0VXNlclJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIicwoRQ3JlYXRlVXNlclJlcXVlc3QSGQoIdXNlcm5hbWUYASABKAlCB7pIBHICEAMSGQoIcGFzc3dvcmQYAiABKAlCB7pIBHICEAgSFgoFZW1haWwYAyABKAlCB7pIBHICYAESEAoIaXNfYWRtaW4YBCABKAgiNAoSQ3JlYXRlVXNlclJlc3BvbnNlEh4KBHVzZXIYASABKAsyEC5tYW50cmFlLnYxLlVzZXIinQEKEVVwZGF0ZVVzZXJSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABEhkKCHVzZXJuYW1lGAIgASgJQge6SARyAhADEhYKBWVtYWlsGAMgASgJQge6SARyAmABEhAKCGlzX2FkbWluGAQgASgIEiEKCHBhc3N3b3JkGAUgASgJQgq6SAfYAQFyAhAISACIAQFCCwoJX3Bhc3N3b3JkIjQKElVwZGF0ZVVzZXJSZXNwb25zZRIeCgR1c2VyGAEgASgLMhAubWFudHJhZS52MS5Vc2VyIigKEURlbGV0ZVVzZXJSZXF1ZXN0EhMKAmlkGAEgASgJQge6SARyAhABIhQKEkRlbGV0ZVVzZXJSZXNwb25zZSKxAQoQTGlzdFVzZXJzUmVxdWVzdBJqCgVsaW1pdBgBIAEoA0JWukhTugFQCgtsaW1pdC52YWxpZBIpbGltaXQgbXVzdCBiZSBlaXRoZXIgLTEgb3IgZ3JlYXRlciB0aGFuIDAaFnRoaXMgPT0gLTEgfHwgdGhpcyA+IDBIAIgBARIcCgZvZmZzZXQYAiABKANCB7pIBCICKABIAYgBAUIICgZfbGltaXRCCQoHX29mZnNldCJJChFMaXN0VXNlcnNSZXNwb25zZRIfCgV1c2VycxgBIAMoCzIQLm1hbnRyYWUudjEuVXNlchITCgt0b3RhbF9jb3VudBgCIAEoAyIWChRHZXRPSURDU3RhdHVzUmVxdWVzdCJWChVHZXRPSURDU3RhdHVzUmVzcG9uc2USFAoMb2lkY19lbmFibGVkGAEgASgIEhUKDWxvZ2luX2VuYWJsZWQYAiABKAgSEAoIcHJvdmlkZXIYAyABKAkyhwYKC1VzZXJTZXJ2aWNlEkgKCUxvZ2luVXNlchIcLm1hbnRyYWUudjEuTG9naW5Vc2VyUmVxdWVzdBodLm1hbnRyYWUudjEuTG9naW5Vc2VyUmVzcG9uc2USSwoKTG9nb3V0VXNlchIdLm1hbnRyYWUudjEuTG9nb3V0VXNlclJlcXVlc3QaHi5tYW50cmFlLnYxLkxvZ291dFVzZXJSZXNwb25zZRJICglWZXJpZnlPVFASHC5tYW50cmFlLnYxLlZlcmlmeU9UUFJlcXVlc3QaHS5tYW50cmFlLnYxLlZlcmlmeU9UUFJlc3BvbnNlEkIKB1NlbmRPVFASGi5tYW50cmFlLnYxLlNlbmRPVFBSZXF1ZXN0GhsubWFudHJhZS52MS5TZW5kT1RQUmVzcG9uc2USRwoHR2V0VXNlchIaLm1hbnRyYWUudjEuR2V0VXNlclJlcXVlc3QaGy5tYW50cmFlLnYxLkdldFVzZXJSZXNwb25zZSIDkAIBEksKCkNyZWF0ZVVzZXISHS5tYW50cmFlLnYxLkNyZWF0ZVVzZXJSZXF1ZXN0Gh4ubWFudHJhZS52MS5DcmVhdGVVc2VyUmVzcG9uc2USSwoKVXBkYXRlVXNlchIdLm1hbnRyYWUudjEuVXBkYXRlVXNlclJlcXVlc3QaHi5tYW50cmFlLnYxLlVwZGF0ZVVzZXJSZXNwb25zZRJLCgpEZWxldGVVc2VyEh0ubWFudHJhZS52MS5EZWxldGVVc2VyUmVxdWVzdBoeLm1hbnRyYWUudjEuRGVsZXRlVXNlclJlc3BvbnNlEk0KCUxpc3RVc2VycxIcLm1hbnRyYWUudjEuTGlzdFVzZXJzUmVxdWVzdBodLm1hbnRyYWUudjEuTGlzdFVzZXJzUmVzcG9uc2UiA5ACARJUCg1HZXRPSURDU3RhdHVzEiAubWFudHJhZS52MS5HZXRPSURDU3RhdHVzUmVxdWVzdBohLm1hbnRyYWUudjEuR2V0T0lEQ1N0YXR1c1Jlc3BvbnNlQqMBCg5jb20ubWFudHJhZS52MUIJVXNlclByb3RvUAFaPWdpdGh1Yi5jb20vbWl6dWNoaWxhYnMvbWFudHJhZS9wcm90by9nZW4vbWFudHJhZS92MTttYW50cmFldjGiAgNNWFiqAgpNYW50cmFlLlYxygIKTWFudHJhZVxWMeICFk1hbnRyYWVcVjFcR1BCTWV0YWRhdGHqAgtNYW50cmFlOjpWMWIGcHJvdG8z", [file_buf_validate_validate, file_google_protobuf_timestamp]); /** * @generated from message mantrae.v1.User */ -export type User = Message<'mantrae.v1.User'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type User = Message<"mantrae.v1.User"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: string username = 2; - */ - username: string; + /** + * @generated from field: string username = 2; + */ + username: string; - /** - * @generated from field: string password = 3; - */ - password: string; + /** + * @generated from field: string password = 3; + */ + password: string; - /** - * @generated from field: string email = 4; - */ - email: string; + /** + * @generated from field: string email = 4; + */ + email: string; - /** - * @generated from field: bool is_admin = 5; - */ - isAdmin: boolean; + /** + * @generated from field: bool is_admin = 5; + */ + isAdmin: boolean; - /** - * @generated from field: string otp = 6; - */ - otp: string; + /** + * @generated from field: string otp = 6; + */ + otp: string; - /** - * @generated from field: google.protobuf.Timestamp otp_expiry = 7; - */ - otpExpiry?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp otp_expiry = 7; + */ + otpExpiry?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp last_login = 8; - */ - lastLogin?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp last_login = 8; + */ + lastLogin?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp created_at = 9; - */ - createdAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp created_at = 9; + */ + createdAt?: Timestamp; - /** - * @generated from field: google.protobuf.Timestamp updated_at = 10; - */ - updatedAt?: Timestamp; + /** + * @generated from field: google.protobuf.Timestamp updated_at = 10; + */ + updatedAt?: Timestamp; }; /** * Describes the message mantrae.v1.User. * Use `create(UserSchema)` to create a new message. */ -export const UserSchema: GenMessage = /*@__PURE__*/ messageDesc(file_mantrae_v1_user, 0); +export const UserSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 0); /** * @generated from message mantrae.v1.LoginUserRequest */ -export type LoginUserRequest = Message<'mantrae.v1.LoginUserRequest'> & { - /** - * @generated from oneof mantrae.v1.LoginUserRequest.identifier - */ - identifier: - | { - /** - * @generated from field: string username = 1; - */ - value: string; - case: 'username'; - } - | { - /** - * @generated from field: string email = 2; - */ - value: string; - case: 'email'; - } - | { case: undefined; value?: undefined }; +export type LoginUserRequest = Message<"mantrae.v1.LoginUserRequest"> & { + /** + * @generated from oneof mantrae.v1.LoginUserRequest.identifier + */ + identifier: { + /** + * @generated from field: string username = 1; + */ + value: string; + case: "username"; + } | { + /** + * @generated from field: string email = 2; + */ + value: string; + case: "email"; + } | { case: undefined; value?: undefined }; - /** - * @generated from field: string password = 3; - */ - password: string; + /** + * @generated from field: string password = 3; + */ + password: string; }; /** * Describes the message mantrae.v1.LoginUserRequest. * Use `create(LoginUserRequestSchema)` to create a new message. */ -export const LoginUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 1); +export const LoginUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 1); /** * @generated from message mantrae.v1.LoginUserResponse */ -export type LoginUserResponse = Message<'mantrae.v1.LoginUserResponse'> & { - /** - * @generated from field: string token = 1; - */ - token: string; +export type LoginUserResponse = Message<"mantrae.v1.LoginUserResponse"> & { + /** + * @generated from field: mantrae.v1.User user = 1; + */ + user?: User; }; /** * Describes the message mantrae.v1.LoginUserResponse. * Use `create(LoginUserResponseSchema)` to create a new message. */ -export const LoginUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 2); +export const LoginUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 2); /** * @generated from message mantrae.v1.LogoutUserRequest */ -export type LogoutUserRequest = Message<'mantrae.v1.LogoutUserRequest'> & {}; +export type LogoutUserRequest = Message<"mantrae.v1.LogoutUserRequest"> & { +}; /** * Describes the message mantrae.v1.LogoutUserRequest. * Use `create(LogoutUserRequestSchema)` to create a new message. */ -export const LogoutUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 3); +export const LogoutUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 3); /** * @generated from message mantrae.v1.LogoutUserResponse */ -export type LogoutUserResponse = Message<'mantrae.v1.LogoutUserResponse'> & {}; +export type LogoutUserResponse = Message<"mantrae.v1.LogoutUserResponse"> & { +}; /** * Describes the message mantrae.v1.LogoutUserResponse. * Use `create(LogoutUserResponseSchema)` to create a new message. */ -export const LogoutUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 4); - -/** - * @generated from message mantrae.v1.VerifyJWTRequest - */ -export type VerifyJWTRequest = Message<'mantrae.v1.VerifyJWTRequest'> & {}; - -/** - * Describes the message mantrae.v1.VerifyJWTRequest. - * Use `create(VerifyJWTRequestSchema)` to create a new message. - */ -export const VerifyJWTRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 5); - -/** - * @generated from message mantrae.v1.VerifyJWTResponse - */ -export type VerifyJWTResponse = Message<'mantrae.v1.VerifyJWTResponse'> & { - /** - * @generated from field: mantrae.v1.User user = 1; - */ - user?: User; -}; - -/** - * Describes the message mantrae.v1.VerifyJWTResponse. - * Use `create(VerifyJWTResponseSchema)` to create a new message. - */ -export const VerifyJWTResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 6); +export const LogoutUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 4); /** * @generated from message mantrae.v1.VerifyOTPRequest */ -export type VerifyOTPRequest = Message<'mantrae.v1.VerifyOTPRequest'> & { - /** - * @generated from oneof mantrae.v1.VerifyOTPRequest.identifier - */ - identifier: - | { - /** - * @generated from field: string username = 1; - */ - value: string; - case: 'username'; - } - | { - /** - * @generated from field: string email = 2; - */ - value: string; - case: 'email'; - } - | { case: undefined; value?: undefined }; +export type VerifyOTPRequest = Message<"mantrae.v1.VerifyOTPRequest"> & { + /** + * @generated from oneof mantrae.v1.VerifyOTPRequest.identifier + */ + identifier: { + /** + * @generated from field: string username = 1; + */ + value: string; + case: "username"; + } | { + /** + * @generated from field: string email = 2; + */ + value: string; + case: "email"; + } | { case: undefined; value?: undefined }; - /** - * @generated from field: string otp = 3; - */ - otp: string; + /** + * @generated from field: string otp = 3; + */ + otp: string; }; /** * Describes the message mantrae.v1.VerifyOTPRequest. * Use `create(VerifyOTPRequestSchema)` to create a new message. */ -export const VerifyOTPRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 7); +export const VerifyOTPRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 5); /** * @generated from message mantrae.v1.VerifyOTPResponse */ -export type VerifyOTPResponse = Message<'mantrae.v1.VerifyOTPResponse'> & { - /** - * @generated from field: string token = 1; - */ - token: string; +export type VerifyOTPResponse = Message<"mantrae.v1.VerifyOTPResponse"> & { + /** + * @generated from field: mantrae.v1.User user = 1; + */ + user?: User; }; /** * Describes the message mantrae.v1.VerifyOTPResponse. * Use `create(VerifyOTPResponseSchema)` to create a new message. */ -export const VerifyOTPResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 8); +export const VerifyOTPResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 6); /** * @generated from message mantrae.v1.SendOTPRequest */ -export type SendOTPRequest = Message<'mantrae.v1.SendOTPRequest'> & { - /** - * @generated from oneof mantrae.v1.SendOTPRequest.identifier - */ - identifier: - | { - /** - * @generated from field: string username = 1; - */ - value: string; - case: 'username'; - } - | { - /** - * @generated from field: string email = 2; - */ - value: string; - case: 'email'; - } - | { case: undefined; value?: undefined }; +export type SendOTPRequest = Message<"mantrae.v1.SendOTPRequest"> & { + /** + * @generated from oneof mantrae.v1.SendOTPRequest.identifier + */ + identifier: { + /** + * @generated from field: string username = 1; + */ + value: string; + case: "username"; + } | { + /** + * @generated from field: string email = 2; + */ + value: string; + case: "email"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message mantrae.v1.SendOTPRequest. * Use `create(SendOTPRequestSchema)` to create a new message. */ -export const SendOTPRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 9); +export const SendOTPRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 7); /** * @generated from message mantrae.v1.SendOTPResponse */ -export type SendOTPResponse = Message<'mantrae.v1.SendOTPResponse'> & {}; +export type SendOTPResponse = Message<"mantrae.v1.SendOTPResponse"> & { +}; /** * Describes the message mantrae.v1.SendOTPResponse. * Use `create(SendOTPResponseSchema)` to create a new message. */ -export const SendOTPResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 10); +export const SendOTPResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 8); /** * @generated from message mantrae.v1.GetUserRequest */ -export type GetUserRequest = Message<'mantrae.v1.GetUserRequest'> & { - /** - * @generated from oneof mantrae.v1.GetUserRequest.identifier - */ - identifier: - | { - /** - * @generated from field: string id = 1; - */ - value: string; - case: 'id'; - } - | { - /** - * @generated from field: string username = 2; - */ - value: string; - case: 'username'; - } - | { - /** - * @generated from field: string email = 3; - */ - value: string; - case: 'email'; - } - | { case: undefined; value?: undefined }; +export type GetUserRequest = Message<"mantrae.v1.GetUserRequest"> & { + /** + * @generated from oneof mantrae.v1.GetUserRequest.identifier + */ + identifier: { + /** + * @generated from field: string id = 1; + */ + value: string; + case: "id"; + } | { + /** + * @generated from field: string username = 2; + */ + value: string; + case: "username"; + } | { + /** + * @generated from field: string email = 3; + */ + value: string; + case: "email"; + } | { case: undefined; value?: undefined }; }; /** * Describes the message mantrae.v1.GetUserRequest. * Use `create(GetUserRequestSchema)` to create a new message. */ -export const GetUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 11); +export const GetUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 9); /** * @generated from message mantrae.v1.GetUserResponse */ -export type GetUserResponse = Message<'mantrae.v1.GetUserResponse'> & { - /** - * @generated from field: mantrae.v1.User user = 1; - */ - user?: User; +export type GetUserResponse = Message<"mantrae.v1.GetUserResponse"> & { + /** + * @generated from field: mantrae.v1.User user = 1; + */ + user?: User; }; /** * Describes the message mantrae.v1.GetUserResponse. * Use `create(GetUserResponseSchema)` to create a new message. */ -export const GetUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 12); +export const GetUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 10); /** * @generated from message mantrae.v1.CreateUserRequest */ -export type CreateUserRequest = Message<'mantrae.v1.CreateUserRequest'> & { - /** - * @generated from field: string username = 1; - */ - username: string; +export type CreateUserRequest = Message<"mantrae.v1.CreateUserRequest"> & { + /** + * @generated from field: string username = 1; + */ + username: string; - /** - * @generated from field: string password = 2; - */ - password: string; + /** + * @generated from field: string password = 2; + */ + password: string; - /** - * @generated from field: string email = 3; - */ - email: string; + /** + * @generated from field: string email = 3; + */ + email: string; - /** - * @generated from field: bool is_admin = 4; - */ - isAdmin: boolean; + /** + * @generated from field: bool is_admin = 4; + */ + isAdmin: boolean; }; /** * Describes the message mantrae.v1.CreateUserRequest. * Use `create(CreateUserRequestSchema)` to create a new message. */ -export const CreateUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 13); +export const CreateUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 11); /** * @generated from message mantrae.v1.CreateUserResponse */ -export type CreateUserResponse = Message<'mantrae.v1.CreateUserResponse'> & { - /** - * @generated from field: mantrae.v1.User user = 1; - */ - user?: User; +export type CreateUserResponse = Message<"mantrae.v1.CreateUserResponse"> & { + /** + * @generated from field: mantrae.v1.User user = 1; + */ + user?: User; }; /** * Describes the message mantrae.v1.CreateUserResponse. * Use `create(CreateUserResponseSchema)` to create a new message. */ -export const CreateUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 14); +export const CreateUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 12); /** * @generated from message mantrae.v1.UpdateUserRequest */ -export type UpdateUserRequest = Message<'mantrae.v1.UpdateUserRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type UpdateUserRequest = Message<"mantrae.v1.UpdateUserRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; - /** - * @generated from field: string username = 2; - */ - username: string; + /** + * @generated from field: string username = 2; + */ + username: string; - /** - * @generated from field: string email = 3; - */ - email: string; + /** + * @generated from field: string email = 3; + */ + email: string; - /** - * @generated from field: bool is_admin = 4; - */ - isAdmin: boolean; + /** + * @generated from field: bool is_admin = 4; + */ + isAdmin: boolean; - /** - * @generated from field: optional string password = 5; - */ - password?: string; + /** + * @generated from field: optional string password = 5; + */ + password?: string; }; /** * Describes the message mantrae.v1.UpdateUserRequest. * Use `create(UpdateUserRequestSchema)` to create a new message. */ -export const UpdateUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 15); +export const UpdateUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 13); /** * @generated from message mantrae.v1.UpdateUserResponse */ -export type UpdateUserResponse = Message<'mantrae.v1.UpdateUserResponse'> & { - /** - * @generated from field: mantrae.v1.User user = 1; - */ - user?: User; +export type UpdateUserResponse = Message<"mantrae.v1.UpdateUserResponse"> & { + /** + * @generated from field: mantrae.v1.User user = 1; + */ + user?: User; }; /** * Describes the message mantrae.v1.UpdateUserResponse. * Use `create(UpdateUserResponseSchema)` to create a new message. */ -export const UpdateUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 16); +export const UpdateUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 14); /** * @generated from message mantrae.v1.DeleteUserRequest */ -export type DeleteUserRequest = Message<'mantrae.v1.DeleteUserRequest'> & { - /** - * @generated from field: string id = 1; - */ - id: string; +export type DeleteUserRequest = Message<"mantrae.v1.DeleteUserRequest"> & { + /** + * @generated from field: string id = 1; + */ + id: string; }; /** * Describes the message mantrae.v1.DeleteUserRequest. * Use `create(DeleteUserRequestSchema)` to create a new message. */ -export const DeleteUserRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 17); +export const DeleteUserRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 15); /** * @generated from message mantrae.v1.DeleteUserResponse */ -export type DeleteUserResponse = Message<'mantrae.v1.DeleteUserResponse'> & {}; +export type DeleteUserResponse = Message<"mantrae.v1.DeleteUserResponse"> & { +}; /** * Describes the message mantrae.v1.DeleteUserResponse. * Use `create(DeleteUserResponseSchema)` to create a new message. */ -export const DeleteUserResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 18); +export const DeleteUserResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 16); /** * @generated from message mantrae.v1.ListUsersRequest */ -export type ListUsersRequest = Message<'mantrae.v1.ListUsersRequest'> & { - /** - * @generated from field: optional int64 limit = 1; - */ - limit?: bigint; +export type ListUsersRequest = Message<"mantrae.v1.ListUsersRequest"> & { + /** + * @generated from field: optional int64 limit = 1; + */ + limit?: bigint; - /** - * @generated from field: optional int64 offset = 2; - */ - offset?: bigint; + /** + * @generated from field: optional int64 offset = 2; + */ + offset?: bigint; }; /** * Describes the message mantrae.v1.ListUsersRequest. * Use `create(ListUsersRequestSchema)` to create a new message. */ -export const ListUsersRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 19); +export const ListUsersRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 17); /** * @generated from message mantrae.v1.ListUsersResponse */ -export type ListUsersResponse = Message<'mantrae.v1.ListUsersResponse'> & { - /** - * @generated from field: repeated mantrae.v1.User users = 1; - */ - users: User[]; +export type ListUsersResponse = Message<"mantrae.v1.ListUsersResponse"> & { + /** + * @generated from field: repeated mantrae.v1.User users = 1; + */ + users: User[]; - /** - * @generated from field: int64 total_count = 2; - */ - totalCount: bigint; + /** + * @generated from field: int64 total_count = 2; + */ + totalCount: bigint; }; /** * Describes the message mantrae.v1.ListUsersResponse. * Use `create(ListUsersResponseSchema)` to create a new message. */ -export const ListUsersResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 20); +export const ListUsersResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 18); /** * @generated from message mantrae.v1.GetOIDCStatusRequest */ -export type GetOIDCStatusRequest = Message<'mantrae.v1.GetOIDCStatusRequest'> & {}; +export type GetOIDCStatusRequest = Message<"mantrae.v1.GetOIDCStatusRequest"> & { +}; /** * Describes the message mantrae.v1.GetOIDCStatusRequest. * Use `create(GetOIDCStatusRequestSchema)` to create a new message. */ -export const GetOIDCStatusRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 21); +export const GetOIDCStatusRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 19); /** * @generated from message mantrae.v1.GetOIDCStatusResponse */ -export type GetOIDCStatusResponse = Message<'mantrae.v1.GetOIDCStatusResponse'> & { - /** - * @generated from field: bool oidc_enabled = 1; - */ - oidcEnabled: boolean; +export type GetOIDCStatusResponse = Message<"mantrae.v1.GetOIDCStatusResponse"> & { + /** + * @generated from field: bool oidc_enabled = 1; + */ + oidcEnabled: boolean; - /** - * @generated from field: bool login_enabled = 2; - */ - loginEnabled: boolean; + /** + * @generated from field: bool login_enabled = 2; + */ + loginEnabled: boolean; - /** - * @generated from field: string provider = 3; - */ - provider: string; + /** + * @generated from field: string provider = 3; + */ + provider: string; }; /** * Describes the message mantrae.v1.GetOIDCStatusResponse. * Use `create(GetOIDCStatusResponseSchema)` to create a new message. */ -export const GetOIDCStatusResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_user, 22); +export const GetOIDCStatusResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_user, 20); /** * @generated from service mantrae.v1.UserService */ export const UserService: GenService<{ - /** - * @generated from rpc mantrae.v1.UserService.LoginUser - */ - loginUser: { - methodKind: 'unary'; - input: typeof LoginUserRequestSchema; - output: typeof LoginUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.LogoutUser - */ - logoutUser: { - methodKind: 'unary'; - input: typeof LogoutUserRequestSchema; - output: typeof LogoutUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.VerifyJWT - */ - verifyJWT: { - methodKind: 'unary'; - input: typeof VerifyJWTRequestSchema; - output: typeof VerifyJWTResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.VerifyOTP - */ - verifyOTP: { - methodKind: 'unary'; - input: typeof VerifyOTPRequestSchema; - output: typeof VerifyOTPResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.SendOTP - */ - sendOTP: { - methodKind: 'unary'; - input: typeof SendOTPRequestSchema; - output: typeof SendOTPResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.GetUser - */ - getUser: { - methodKind: 'unary'; - input: typeof GetUserRequestSchema; - output: typeof GetUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.CreateUser - */ - createUser: { - methodKind: 'unary'; - input: typeof CreateUserRequestSchema; - output: typeof CreateUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.UpdateUser - */ - updateUser: { - methodKind: 'unary'; - input: typeof UpdateUserRequestSchema; - output: typeof UpdateUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.DeleteUser - */ - deleteUser: { - methodKind: 'unary'; - input: typeof DeleteUserRequestSchema; - output: typeof DeleteUserResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.ListUsers - */ - listUsers: { - methodKind: 'unary'; - input: typeof ListUsersRequestSchema; - output: typeof ListUsersResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UserService.GetOIDCStatus - */ - getOIDCStatus: { - methodKind: 'unary'; - input: typeof GetOIDCStatusRequestSchema; - output: typeof GetOIDCStatusResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_user, 0); + /** + * @generated from rpc mantrae.v1.UserService.LoginUser + */ + loginUser: { + methodKind: "unary"; + input: typeof LoginUserRequestSchema; + output: typeof LoginUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.LogoutUser + */ + logoutUser: { + methodKind: "unary"; + input: typeof LogoutUserRequestSchema; + output: typeof LogoutUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.VerifyOTP + */ + verifyOTP: { + methodKind: "unary"; + input: typeof VerifyOTPRequestSchema; + output: typeof VerifyOTPResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.SendOTP + */ + sendOTP: { + methodKind: "unary"; + input: typeof SendOTPRequestSchema; + output: typeof SendOTPResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.GetUser + */ + getUser: { + methodKind: "unary"; + input: typeof GetUserRequestSchema; + output: typeof GetUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.CreateUser + */ + createUser: { + methodKind: "unary"; + input: typeof CreateUserRequestSchema; + output: typeof CreateUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.UpdateUser + */ + updateUser: { + methodKind: "unary"; + input: typeof UpdateUserRequestSchema; + output: typeof UpdateUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.DeleteUser + */ + deleteUser: { + methodKind: "unary"; + input: typeof DeleteUserRequestSchema; + output: typeof DeleteUserResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.ListUsers + */ + listUsers: { + methodKind: "unary"; + input: typeof ListUsersRequestSchema; + output: typeof ListUsersResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UserService.GetOIDCStatus + */ + getOIDCStatus: { + methodKind: "unary"; + input: typeof GetOIDCStatusRequestSchema; + output: typeof GetOIDCStatusResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_user, 0); + diff --git a/web/src/lib/gen/mantrae/v1/util_pb.ts b/web/src/lib/gen/mantrae/v1/util_pb.ts index 68daedb..b7ce8db 100644 --- a/web/src/lib/gen/mantrae/v1/util_pb.ts +++ b/web/src/lib/gen/mantrae/v1/util_pb.ts @@ -2,104 +2,101 @@ // @generated from file mantrae/v1/util.proto (package mantrae.v1, syntax proto3) /* eslint-disable */ -import type { GenFile, GenMessage, GenService } from '@bufbuild/protobuf/codegenv2'; -import { fileDesc, messageDesc, serviceDesc } from '@bufbuild/protobuf/codegenv2'; -import type { Message } from '@bufbuild/protobuf'; +import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2"; +import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2"; +import type { Message } from "@bufbuild/protobuf"; /** * Describes the file mantrae/v1/util.proto. */ -export const file_mantrae_v1_util: GenFile = - /*@__PURE__*/ - fileDesc( - 'ChVtYW50cmFlL3YxL3V0aWwucHJvdG8SCm1hbnRyYWUudjEiEwoRR2V0VmVyc2lvblJlcXVlc3QiJQoSR2V0VmVyc2lvblJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiFAoSR2V0UHVibGljSVBSZXF1ZXN0IjEKE0dldFB1YmxpY0lQUmVzcG9uc2USDAoEaXB2NBgBIAEoCRIMCgRpcHY2GAIgASgJMqoBCgtVdGlsU2VydmljZRJLCgpHZXRWZXJzaW9uEh0ubWFudHJhZS52MS5HZXRWZXJzaW9uUmVxdWVzdBoeLm1hbnRyYWUudjEuR2V0VmVyc2lvblJlc3BvbnNlEk4KC0dldFB1YmxpY0lQEh4ubWFudHJhZS52MS5HZXRQdWJsaWNJUFJlcXVlc3QaHy5tYW50cmFlLnYxLkdldFB1YmxpY0lQUmVzcG9uc2VCowEKDmNvbS5tYW50cmFlLnYxQglVdGlsUHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM' - ); +export const file_mantrae_v1_util: GenFile = /*@__PURE__*/ + fileDesc("ChVtYW50cmFlL3YxL3V0aWwucHJvdG8SCm1hbnRyYWUudjEiEwoRR2V0VmVyc2lvblJlcXVlc3QiJQoSR2V0VmVyc2lvblJlc3BvbnNlEg8KB3ZlcnNpb24YASABKAkiFAoSR2V0UHVibGljSVBSZXF1ZXN0IjEKE0dldFB1YmxpY0lQUmVzcG9uc2USDAoEaXB2NBgBIAEoCRIMCgRpcHY2GAIgASgJMqoBCgtVdGlsU2VydmljZRJLCgpHZXRWZXJzaW9uEh0ubWFudHJhZS52MS5HZXRWZXJzaW9uUmVxdWVzdBoeLm1hbnRyYWUudjEuR2V0VmVyc2lvblJlc3BvbnNlEk4KC0dldFB1YmxpY0lQEh4ubWFudHJhZS52MS5HZXRQdWJsaWNJUFJlcXVlc3QaHy5tYW50cmFlLnYxLkdldFB1YmxpY0lQUmVzcG9uc2VCowEKDmNvbS5tYW50cmFlLnYxQglVdGlsUHJvdG9QAVo9Z2l0aHViLmNvbS9taXp1Y2hpbGFicy9tYW50cmFlL3Byb3RvL2dlbi9tYW50cmFlL3YxO21hbnRyYWV2MaICA01YWKoCCk1hbnRyYWUuVjHKAgpNYW50cmFlXFYx4gIWTWFudHJhZVxWMVxHUEJNZXRhZGF0YeoCC01hbnRyYWU6OlYxYgZwcm90bzM"); /** * @generated from message mantrae.v1.GetVersionRequest */ -export type GetVersionRequest = Message<'mantrae.v1.GetVersionRequest'> & {}; +export type GetVersionRequest = Message<"mantrae.v1.GetVersionRequest"> & { +}; /** * Describes the message mantrae.v1.GetVersionRequest. * Use `create(GetVersionRequestSchema)` to create a new message. */ -export const GetVersionRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_util, 0); +export const GetVersionRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_util, 0); /** * @generated from message mantrae.v1.GetVersionResponse */ -export type GetVersionResponse = Message<'mantrae.v1.GetVersionResponse'> & { - /** - * @generated from field: string version = 1; - */ - version: string; +export type GetVersionResponse = Message<"mantrae.v1.GetVersionResponse"> & { + /** + * @generated from field: string version = 1; + */ + version: string; }; /** * Describes the message mantrae.v1.GetVersionResponse. * Use `create(GetVersionResponseSchema)` to create a new message. */ -export const GetVersionResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_util, 1); +export const GetVersionResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_util, 1); /** * @generated from message mantrae.v1.GetPublicIPRequest */ -export type GetPublicIPRequest = Message<'mantrae.v1.GetPublicIPRequest'> & {}; +export type GetPublicIPRequest = Message<"mantrae.v1.GetPublicIPRequest"> & { +}; /** * Describes the message mantrae.v1.GetPublicIPRequest. * Use `create(GetPublicIPRequestSchema)` to create a new message. */ -export const GetPublicIPRequestSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_util, 2); +export const GetPublicIPRequestSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_util, 2); /** * @generated from message mantrae.v1.GetPublicIPResponse */ -export type GetPublicIPResponse = Message<'mantrae.v1.GetPublicIPResponse'> & { - /** - * @generated from field: string ipv4 = 1; - */ - ipv4: string; +export type GetPublicIPResponse = Message<"mantrae.v1.GetPublicIPResponse"> & { + /** + * @generated from field: string ipv4 = 1; + */ + ipv4: string; - /** - * @generated from field: string ipv6 = 2; - */ - ipv6: string; + /** + * @generated from field: string ipv6 = 2; + */ + ipv6: string; }; /** * Describes the message mantrae.v1.GetPublicIPResponse. * Use `create(GetPublicIPResponseSchema)` to create a new message. */ -export const GetPublicIPResponseSchema: GenMessage = - /*@__PURE__*/ - messageDesc(file_mantrae_v1_util, 3); +export const GetPublicIPResponseSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_mantrae_v1_util, 3); /** * @generated from service mantrae.v1.UtilService */ export const UtilService: GenService<{ - /** - * @generated from rpc mantrae.v1.UtilService.GetVersion - */ - getVersion: { - methodKind: 'unary'; - input: typeof GetVersionRequestSchema; - output: typeof GetVersionResponseSchema; - }; - /** - * @generated from rpc mantrae.v1.UtilService.GetPublicIP - */ - getPublicIP: { - methodKind: 'unary'; - input: typeof GetPublicIPRequestSchema; - output: typeof GetPublicIPResponseSchema; - }; -}> = /*@__PURE__*/ serviceDesc(file_mantrae_v1_util, 0); + /** + * @generated from rpc mantrae.v1.UtilService.GetVersion + */ + getVersion: { + methodKind: "unary"; + input: typeof GetVersionRequestSchema; + output: typeof GetVersionResponseSchema; + }, + /** + * @generated from rpc mantrae.v1.UtilService.GetPublicIP + */ + getPublicIP: { + methodKind: "unary"; + input: typeof GetPublicIPRequestSchema; + output: typeof GetPublicIPResponseSchema; + }, +}> = /*@__PURE__*/ + serviceDesc(file_mantrae_v1_util, 0); + diff --git a/web/src/routes/+layout.ts b/web/src/routes/+layout.ts index 7532bb4..47f718c 100644 --- a/web/src/routes/+layout.ts +++ b/web/src/routes/+layout.ts @@ -1,51 +1,34 @@ -import type { LayoutLoad } from './$types'; -import { goto } from '$app/navigation'; -import { useClient } from '$lib/api'; -import { profile } from '$lib/stores/profile'; -import { user } from '$lib/stores/user'; -import { UserService } from '$lib/gen/mantrae/v1/user_pb'; -import { ProfileService } from '$lib/gen/mantrae/v1/profile_pb'; +import type { LayoutLoad } from "./$types"; +import { goto } from "$app/navigation"; +import { useClient } from "$lib/api"; +import { profile } from "$lib/stores/profile"; +import { user } from "$lib/stores/user"; +import { UserService } from "$lib/gen/mantrae/v1/user_pb"; +import { ProfileService } from "$lib/gen/mantrae/v1/profile_pb"; export const ssr = false; -export const prerender = false; -export const trailingSlash = 'always'; - -const isPublicRoute = (path: string) => { - return path.startsWith('/login') || path === '/login'; -}; +export const prerender = true; +export const trailingSlash = "always"; export const load: LayoutLoad = async ({ url, fetch }) => { const currentPath = url.pathname; - const isPublic = isPublicRoute(currentPath); - // Check if cookie is set + const isPublic = currentPath.startsWith("/login"); try { const userClient = useClient(UserService, fetch); - const resUser = await userClient.verifyJWT({}); + const resUser = await userClient.getUser({}); + if (!resUser.user) throw new Error("Authentication failed"); + user.value = resUser.user; - if (resUser.user) { - user.value = resUser.user; - - // Update profile if not set - if (!profile.id) { - const profileClient = useClient(ProfileService, fetch); - const resProfile = await profileClient.listProfiles({}); - profile.value = resProfile.profiles[0]; - } - if (isPublic) { - // Authenticated user trying to access login page - redirect to home - await goto('/'); - return; - } - return; - } else { - throw new Error('Authentication failed'); + if (!profile.id) { + const profileClient = useClient(ProfileService, fetch); + const resProfile = await profileClient.listProfiles({}); + profile.value = resProfile.profiles[0]; } + + if (isPublic) await goto("/"); } catch (_) { user.clear(); - if (!isPublic) { - await goto('/login'); - } - return; + if (!isPublic) await goto("/login"); } }; diff --git a/web/src/routes/login/+page.svelte b/web/src/routes/login/+page.svelte index 85ae0d2..36225c4 100644 --- a/web/src/routes/login/+page.svelte +++ b/web/src/routes/login/+page.svelte @@ -41,23 +41,21 @@ const isEmail = username.includes('@'); try { - await userClient.loginUser({ + const response = await userClient.loginUser({ identifier: { case: isEmail ? 'email' : 'username', value: username }, password: password }); + if (!response.user) throw new Error('Authentication failed'); + user.value = response.user; - const verified = await userClient.verifyJWT({}); - if (verified.user) { - user.value = verified.user; - if (!profile.id) { - const response = await profileClient.listProfiles({}); - profile.value = response.profiles[0]; - } - await goto('/'); + if (!profile.id) { + const response = await profileClient.listProfiles({}); + profile.value = response.profiles[0]; } + await goto('/'); toast.success('Logged in successfully!'); } catch (err) { const e = ConnectError.from(err); @@ -73,7 +71,7 @@ Login to your account -
+ {#await userClient.getOIDCStatus({}) then value} {#if value.loginEnabled}
diff --git a/web/src/routes/settings/+page.svelte b/web/src/routes/settings/+page.svelte index 17c2f9b..581c47e 100644 --- a/web/src/routes/settings/+page.svelte +++ b/web/src/routes/settings/+page.svelte @@ -33,6 +33,34 @@ let originalSettings: Record = {}; let changedSettings = $state>({}); + // Helper function to check if an entire group should be visible + function shouldShowGroup(groupKey: string): boolean { + // Hide S3 group when storage is local + if (groupKey === 's3' && settingsMap['storage_select'] === 'local') { + return false; + } + return true; + } + + // Helper function to check if a setting should be visible + function shouldShowSetting(settingKey: string): boolean { + // Hide client secret when PKCE is enabled + if (settingKey === 'oidc_client_secret' && settingsMap['oidc_pkce'] === 'true') { + return false; + } + + // Hide OIDC-related settings when OIDC is disabled (except the enable toggle itself) + if ( + (settingKey.startsWith('oidc_') || settingKey === 'password_login_enabled') && + settingKey !== 'oidc_enabled' && + settingsMap['oidc_enabled'] === 'false' + ) { + return false; + } + + return true; + } + function handleKeydown(e: KeyboardEvent, key: string) { if (e.key === 'Enter') { let input = e.currentTarget as HTMLInputElement; @@ -145,6 +173,7 @@ onMount(async () => { const response = await settingClient.listSettings({}); settingsMap = Object.fromEntries(response.settings.map((s) => [s.key, s.value])); + console.log(settingsMap); originalSettings = { ...settingsMap }; changedSettings = {}; @@ -304,99 +333,105 @@ {#each Object.entries(settingGroups) as [groupKey, group] (groupKey)} -
-

{group.title}

-

{group.description}

- - - - {#each group.keys as setting (setting.key)} -
-
- -
- -
- {#if setting.type === 'text'} - updateSetting(setting.key, e.currentTarget.value)} - onblur={saveSettings} - onkeydown={(e) => handleKeydown(e, setting.key)} - /> - {/if} - {#if setting.type === 'number'} - updateSetting(setting.key, e.currentTarget.value)} - onblur={saveSettings} - onkeydown={(e) => handleKeydown(e, setting.key)} - /> - {/if} - {#if setting.type === 'boolean'} - { - updateSetting(setting.key, checked ? 'true' : 'false'); - saveSettings(); - }} - /> - {/if} - {#if setting.type === 'password'} - updateSetting(setting.key, e.currentTarget.value)} - onkeydown={(e) => handleKeydown(e, setting.key)} - /> - {/if} - {#if setting.type === 'duration'} - - updateSetting(setting.key, parseDuration(e.currentTarget.value))} - onkeydown={(e) => handleKeydown(e, setting.key)} - /> - {/if} - {#if setting.type === 'select'} - { - updateSetting(setting.key, value); - saveSettings(); - }} - > - - {settingsMap[setting.key] || 'Select...'} - - - {#if setting.key === 'storage_select'} - {#each storageTypes as option (option.value)} - {option.label} - {/each} - {/if} - - - {/if} -
-
+ {#if shouldShowGroup(groupKey)} +
+

{group.title}

+

{group.description}

- {/each} -
+ + + {#each group.keys as setting (setting.key)} + {#if shouldShowSetting(setting.key)} +
+
+ +
+ +
+ {#if setting.type === 'text'} + updateSetting(setting.key, e.currentTarget.value)} + onblur={saveSettings} + onkeydown={(e) => handleKeydown(e, setting.key)} + /> + {/if} + {#if setting.type === 'number'} + updateSetting(setting.key, e.currentTarget.value)} + onblur={saveSettings} + onkeydown={(e) => handleKeydown(e, setting.key)} + /> + {/if} + {#if setting.type === 'boolean'} + { + updateSetting(setting.key, checked ? 'true' : 'false'); + saveSettings(); + }} + /> + {/if} + {#if setting.type === 'password'} + updateSetting(setting.key, e.currentTarget.value)} + onkeydown={(e) => handleKeydown(e, setting.key)} + /> + {/if} + {#if setting.type === 'duration'} + + updateSetting(setting.key, parseDuration(e.currentTarget.value))} + onkeydown={(e) => handleKeydown(e, setting.key)} + /> + {/if} + {#if setting.type === 'select'} + { + updateSetting(setting.key, value); + saveSettings(); + }} + > + + {settingsMap[setting.key] || 'Select...'} + + + {#if setting.key === 'storage_select'} + {#each storageTypes as option (option.value)} + {option.label} + {/each} + {/if} + + + {/if} +
+
+ + {/if} + {/each} +
+ {/if} {/each}