diff --git a/README.md b/README.md index 80c3ca9c14..1b2403ba4a 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ **The fastest way to build AI applications that never go down.** -Bifrost is a high-performance AI gateway that connects you to 8+ providers (OpenAI, Anthropic, Bedrock, and more) through a single API. Get automatic failover, load balancing, and zero-downtime deployments in under 30 seconds. +Bifrost is a high-performance AI gateway that connects you to 10+ providers (OpenAI, Anthropic, Bedrock, and more) through a single API. Get automatic failover, load balancing, and zero-downtime deployments in under 30 seconds. ![Bifrost](./docs/media/cover.png) @@ -260,7 +260,7 @@ Choose higher settings (like the t3.xlarge profile above) for raw speed, or lowe
🎯 I want to understand what Bifrost can do -- **[🔗 Multi-Provider Support](./docs/usage/providers.md)** - Connect to 8+ AI providers with one API +- **[🔗 Multi-Provider Support](./docs/usage/providers.md)** - Connect to 10+ AI providers with one API - **[🛡️ Fallback & Reliability](./docs/usage/providers.md#fallback-mechanisms)** - Never lose a request with automatic failover - **[🛠️ MCP Tool Integration](./docs/usage/http-transport/configuration/mcp.md)** - Give your AI external capabilities - **[🔌 Plugin Ecosystem](./docs/usage/http-transport/configuration/plugins.md)** - Extend Bifrost with custom middleware diff --git a/core/bifrost.go b/core/bifrost.go index 2d0552b789..3a6ccf5244 100644 --- a/core/bifrost.go +++ b/core/bifrost.go @@ -21,9 +21,10 @@ import ( type RequestType string const ( - TextCompletionRequest RequestType = "text_completion" - ChatCompletionRequest RequestType = "chat_completion" - EmbeddingRequest RequestType = "embedding" + TextCompletionRequest RequestType = "text_completion" + ChatCompletionRequest RequestType = "chat_completion" + ChatCompletionStreamRequest RequestType = "chat_completion_stream" + EmbeddingRequest RequestType = "embedding" ) // executor is a function type that handles specific request types. @@ -40,10 +41,11 @@ var messageExecutors = map[RequestType]executor{ // It contains the request, response and error channels, and the request type. type ChannelMessage struct { schemas.BifrostRequest - Context context.Context - Response chan *schemas.BifrostResponse - Err chan schemas.BifrostError - Type RequestType + Context context.Context + Response chan *schemas.BifrostResponse + ResponseStream chan chan *schemas.BifrostStream + Err chan schemas.BifrostError + Type RequestType } // Bifrost manages providers and maintains sepcified open channels for concurrent processing. @@ -315,6 +317,70 @@ func (bifrost *Bifrost) ChatCompletionRequest(ctx context.Context, req *schemas. return nil, primaryErr } +// ChatCompletionStreamRequest sends a chat completion stream request to the specified provider. +// It handles plugin hooks, request validation, response processing, and fallback providers. +// If the primary provider fails, it will try each fallback provider in order until one succeeds. +func (bifrost *Bifrost) ChatCompletionStreamRequest(ctx context.Context, req *schemas.BifrostRequest) (chan *schemas.BifrostStream, *schemas.BifrostError) { + if err := validateRequest(req); err != nil { + err.Provider = req.Provider + return nil, err + } + + // Try the primary provider first + primaryResult, primaryErr := bifrost.tryStreamRequest(req, ctx, ChatCompletionStreamRequest) + if primaryErr == nil { + return primaryResult, nil + } + + if primaryErr.Error.Type != nil && *primaryErr.Error.Type == schemas.RequestCancelled { + primaryErr.Provider = req.Provider + return nil, primaryErr + } + + // Check if this is a short-circuit error that doesn't allow fallbacks + // Note: AllowFallbacks = nil is treated as true (allow fallbacks by default) + if primaryErr.AllowFallbacks != nil && !*primaryErr.AllowFallbacks { + primaryErr.Provider = req.Provider + return nil, primaryErr + } + + // If primary provider failed and we have fallbacks, try them in order + // This includes both regular provider errors and plugin short-circuit errors with AllowFallbacks=true/nil + if len(req.Fallbacks) > 0 { + for _, fallback := range req.Fallbacks { + // Check if we have config for this fallback provider + _, err := bifrost.account.GetConfigForProvider(fallback.Provider) + if err != nil { + bifrost.logger.Warn(fmt.Sprintf("Config not found for provider %s, skipping fallback: %v", fallback.Provider, err)) + continue + } + + // Create a new request with the fallback provider and model + fallbackReq := *req + fallbackReq.Provider = fallback.Provider + fallbackReq.Model = fallback.Model + + // Try the fallback provider + result, fallbackErr := bifrost.tryStreamRequest(&fallbackReq, ctx, ChatCompletionStreamRequest) + if fallbackErr == nil { + bifrost.logger.Info(fmt.Sprintf("Successfully used fallback provider %s with model %s", fallback.Provider, fallback.Model)) + return result, nil + } + if fallbackErr.Error.Type != nil && *fallbackErr.Error.Type == schemas.RequestCancelled { + fallbackErr.Provider = fallback.Provider + return nil, fallbackErr + } + + bifrost.logger.Warn(fmt.Sprintf("Fallback provider %s failed: %s", fallback.Provider, fallbackErr.Error.Message)) + } + } + + primaryErr.Provider = req.Provider + + // All providers failed, return the original error + return nil, primaryErr +} + // EmbeddingRequest sends an embedding request to the specified provider. // It handles plugin hooks, request validation, response processing, and fallback providers. // If the primary provider fails, it will try each fallback provider in order until one succeeds. @@ -752,6 +818,10 @@ func (bifrost *Bifrost) createProviderFromProviderKey(providerKey schemas.ModelP return providers.NewMistralProvider(config, bifrost.logger), nil case schemas.Ollama: return providers.NewOllamaProvider(config, bifrost.logger) + case schemas.Groq: + return providers.NewGroqProvider(config, bifrost.logger) + case schemas.SGL: + return providers.NewSGLProvider(config, bifrost.logger) default: return nil, fmt.Errorf("unsupported provider: %s", providerKey) } @@ -930,6 +1000,82 @@ func (bifrost *Bifrost) tryRequest(req *schemas.BifrostRequest, ctx context.Cont } } +// tryStreamRequest is a generic function that handles common request processing logic +// It consolidates queue setup, plugin pipeline execution, enqueue logic, and response handling +func (bifrost *Bifrost) tryStreamRequest(req *schemas.BifrostRequest, ctx context.Context, requestType RequestType) (chan *schemas.BifrostStream, *schemas.BifrostError) { + queue, err := bifrost.getProviderQueue(req.Provider) + if err != nil { + return nil, newBifrostError(err) + } + + // Add MCP tools to request if MCP is configured and requested + if requestType != EmbeddingRequest && bifrost.mcpManager != nil { + req = bifrost.mcpManager.addMCPToolsToBifrostRequest(ctx, req) + } + + pipeline := bifrost.getPluginPipeline() + defer bifrost.releasePluginPipeline(pipeline) + + preReq, shortCircuit, preCount := pipeline.RunPreHooks(&ctx, req) + if shortCircuit != nil { + // Handle short-circuit with response (success case) + if shortCircuit.Response != nil { + resp, bifrostErr := pipeline.RunPostHooks(&ctx, shortCircuit.Response, nil, preCount) + if bifrostErr != nil { + return nil, bifrostErr + } + return newBifrostMessageChan(resp), nil + } + // Handle short-circuit with error + if shortCircuit.Error != nil { + resp, bifrostErr := pipeline.RunPostHooks(&ctx, nil, shortCircuit.Error, preCount) + if bifrostErr != nil { + return nil, bifrostErr + } + return newBifrostMessageChan(resp), nil + } + } + if preReq == nil { + return nil, newBifrostErrorFromMsg("bifrost request after plugin hooks cannot be nil") + } + + msg := bifrost.getChannelMessage(*preReq, requestType) + msg.Context = ctx + + select { + case queue <- *msg: + // Message was sent successfully + case <-ctx.Done(): + bifrost.releaseChannelMessage(msg) + return nil, newBifrostErrorFromMsg("request cancelled while waiting for queue space") + default: + if bifrost.dropExcessRequests.Load() { + bifrost.releaseChannelMessage(msg) + bifrost.logger.Warn("Request dropped: queue is full, please increase the queue size or set dropExcessRequests to false") + return nil, newBifrostErrorFromMsg("request dropped: queue is full") + } + if ctx == nil { + ctx = bifrost.backgroundCtx + } + select { + case queue <- *msg: + // Message was sent successfully + case <-ctx.Done(): + bifrost.releaseChannelMessage(msg) + return nil, newBifrostErrorFromMsg("request cancelled while waiting for queue space") + } + } + + select { + case stream := <-msg.ResponseStream: + bifrost.releaseChannelMessage(msg) + return stream, nil + case bifrostErrVal := <-msg.Err: + bifrost.releaseChannelMessage(msg) + return nil, &bifrostErrVal + } +} + // requestWorker handles incoming requests from the queue for a specific provider. // It manages retries, error handling, and response processing. func (bifrost *Bifrost) requestWorker(provider schemas.Provider, queue chan ChannelMessage) { @@ -942,6 +1088,7 @@ func (bifrost *Bifrost) requestWorker(provider schemas.Provider, queue chan Chan for req := range queue { var result *schemas.BifrostResponse + var stream chan *schemas.BifrostStream var bifrostError *schemas.BifrostError var err error @@ -994,21 +1141,38 @@ func (bifrost *Bifrost) requestWorker(provider schemas.Provider, queue chan Chan bifrost.logger.Debug(fmt.Sprintf("Attempting request for provider %s", provider.GetProviderKey())) - // Attempt the request using factory pattern - executor := messageExecutors[req.Type] - if executor == nil { - bifrostError = &schemas.BifrostError{ - IsBifrostError: false, - Error: schemas.ErrorField{ - Message: fmt.Sprintf("unsupported request type: %s", req.Type), - }, + // Attempt the request + if req.Type == ChatCompletionStreamRequest { + pipeline := bifrost.getPluginPipeline() + defer bifrost.releasePluginPipeline(pipeline) + + postHookRunner := func(ctx *context.Context, result *schemas.BifrostResponse, err *schemas.BifrostError) (*schemas.BifrostResponse, *schemas.BifrostError) { + resp, bifrostErr := pipeline.RunPostHooks(ctx, result, err, len(bifrost.plugins)) + if bifrostErr != nil { + return nil, bifrostErr + } + return resp, nil + } + stream, bifrostError = handleChatCompletionStream(provider, &req, key, postHookRunner) + if bifrostError != nil && !bifrostError.IsBifrostError { + break // Don't retry client errors + } + } else { + executor := messageExecutors[req.Type] + if executor == nil { + bifrostError = &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("unsupported request type: %s", req.Type), + }, + } + break } - break - } - result, bifrostError = executor(provider, &req, key) - if bifrostError != nil && !bifrostError.IsBifrostError { - break // Don't retry client errors + result, bifrostError = executor(provider, &req, key) + if bifrostError != nil && !bifrostError.IsBifrostError { + break // Don't retry client errors + } } bifrost.logger.Debug(fmt.Sprintf("Request for provider %s completed", provider.GetProviderKey())) @@ -1031,7 +1195,11 @@ func (bifrost *Bifrost) requestWorker(provider schemas.Provider, queue chan Chan } req.Err <- *bifrostError } else { - req.Response <- result + if req.Type == ChatCompletionStreamRequest { + req.ResponseStream <- stream + } else { + req.Response <- result + } } } @@ -1077,6 +1245,20 @@ func handleEmbedding(provider schemas.Provider, req *ChannelMessage, key string) return provider.Embedding(req.Context, req.Model, key, req.Input.EmbeddingInput, req.Params) } +// handleChatCompletionStream executes a chat completion stream request +func handleChatCompletionStream(provider schemas.Provider, req *ChannelMessage, key string, postHookRunner schemas.PostHookRunner) (chan *schemas.BifrostStream, *schemas.BifrostError) { + if req.Input.ChatCompletionInput == nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "chats not provided for chat completion request", + }, + } + } + + return provider.ChatCompletionStream(req.Context, postHookRunner, req.Model, key, *req.Input.ChatCompletionInput, req.Params) +} + // PLUGIN MANAGEMENT // RunPreHooks executes PreHooks in order, tracks how many ran, and returns the final request, any short-circuit decision, and the count. @@ -1176,6 +1358,7 @@ func (bifrost *Bifrost) getChannelMessage(req schemas.BifrostRequest, reqType Re msg := bifrost.channelMessagePool.Get().(*ChannelMessage) msg.BifrostRequest = req msg.Response = responseChan + msg.ResponseStream = make(chan chan *schemas.BifrostStream, 1) // Initialize the ResponseStream channel msg.Err = errorChan msg.Type = reqType @@ -1190,6 +1373,7 @@ func (bifrost *Bifrost) releaseChannelMessage(msg *ChannelMessage) { // Clear references and return to pool msg.Response = nil + msg.ResponseStream = nil msg.Err = nil bifrost.channelMessagePool.Put(msg) } diff --git a/core/providers/anthropic.go b/core/providers/anthropic.go index 794a9fbbea..02ab13bd87 100644 --- a/core/providers/anthropic.go +++ b/core/providers/anthropic.go @@ -3,8 +3,10 @@ package providers import ( + "bufio" "context" "fmt" + "net/http" "strings" "sync" "time" @@ -59,6 +61,72 @@ type AnthropicChatResponse struct { } `json:"usage"` // Token usage statistics } +// AnthropicStreamEvent represents a single event in the Anthropic streaming response. +// It corresponds to the various event types defined in Anthropic's Messages API streaming documentation. +type AnthropicStreamEvent struct { + Type string `json:"type"` + Message *AnthropicStreamMessage `json:"message,omitempty"` + Index *int `json:"index,omitempty"` + ContentBlock *AnthropicContentBlock `json:"content_block,omitempty"` + Delta *AnthropicDelta `json:"delta,omitempty"` + Usage *schemas.LLMUsage `json:"usage,omitempty"` + Error *AnthropicStreamError `json:"error,omitempty"` +} + +// AnthropicStreamMessage represents the message structure in streaming events. +// This appears in message_start events and contains the initial message structure. +type AnthropicStreamMessage struct { + ID string `json:"id"` + Type string `json:"type"` + Role string `json:"role"` + Content []AnthropicContentBlock `json:"content"` + Model string `json:"model"` + StopReason *string `json:"stop_reason"` + StopSequence *string `json:"stop_sequence"` + Usage *schemas.LLMUsage `json:"usage"` +} + +// AnthropicContentBlock represents a content block in Anthropic responses. +// This includes text, tool_use, thinking, and web_search_tool_result blocks. +type AnthropicContentBlock struct { + Type string `json:"type"` + Text string `json:"text,omitempty"` + ID string `json:"id,omitempty"` + Name string `json:"name,omitempty"` + Input map[string]interface{} `json:"input,omitempty"` + Thinking string `json:"thinking,omitempty"` + // Web search tool result specific fields + ToolUseID string `json:"tool_use_id,omitempty"` + Content []AnthropicToolContent `json:"content,omitempty"` +} + +// AnthropicToolContent represents content within tool result blocks +type AnthropicToolContent struct { + Type string `json:"type"` + Title string `json:"title,omitempty"` + URL string `json:"url,omitempty"` + EncryptedContent string `json:"encrypted_content,omitempty"` + PageAge *string `json:"page_age,omitempty"` +} + +// AnthropicDelta represents incremental updates to content blocks during streaming. +// This includes all delta types: text_delta, input_json_delta, thinking_delta, and signature_delta. +type AnthropicDelta struct { + Type string `json:"type"` + Text string `json:"text,omitempty"` + PartialJSON string `json:"partial_json,omitempty"` + Thinking string `json:"thinking,omitempty"` + Signature string `json:"signature,omitempty"` + StopReason *string `json:"stop_reason,omitempty"` + StopSequence *string `json:"stop_sequence,omitempty"` +} + +// AnthropicStreamError represents error events in the streaming response. +type AnthropicStreamError struct { + Type string `json:"type"` + Message string `json:"message"` +} + // AnthropicError represents the error response structure from Anthropic's API. // It includes error type and message information. type AnthropicError struct { @@ -79,6 +147,7 @@ type AnthropicImageContent struct { type AnthropicProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests apiVersion string // API version for the provider networkConfig schemas.NetworkConfig // Network configuration including extra headers } @@ -137,6 +206,11 @@ func NewAnthropicProvider(config *schemas.ProviderConfig, logger schemas.Logger) MaxConnsPerHost: config.ConcurrencyAndBufferSize.Concurrency, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { anthropicTextResponsePool.Put(&AnthropicTextResponse{}) @@ -156,6 +230,7 @@ func NewAnthropicProvider(config *schemas.ProviderConfig, logger schemas.Logger) return &AnthropicProvider{ logger: logger, client: client, + streamClient: streamClient, apiVersion: "2023-06-01", networkConfig: config.NetworkConfig, } @@ -272,15 +347,17 @@ func (provider *AnthropicProvider) TextCompletion(ctx context.Context, model, ke Choices: []schemas.BifrostResponseChoice{ { Index: 0, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentStr: &response.Completion, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentStr: &response.Completion, + }, }, }, }, }, - Usage: schemas.LLMUsage{ + Usage: &schemas.LLMUsage{ PromptTokens: response.Usage.InputTokens, CompletionTokens: response.Usage.OutputTokens, TotalTokens: response.Usage.InputTokens + response.Usage.OutputTokens, @@ -674,18 +751,20 @@ func parseAnthropicResponse(response *AnthropicChatResponse, bifrostResponse *sc bifrostResponse.Choices = []schemas.BifrostResponseChoice{ { Index: 0, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentBlocks: &contentBlocks, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentBlocks: &contentBlocks, + }, + AssistantMessage: assistantMessage, }, - AssistantMessage: assistantMessage, + StopString: response.StopSequence, }, FinishReason: &response.StopReason, - StopString: response.StopSequence, }, } - bifrostResponse.Usage = schemas.LLMUsage{ + bifrostResponse.Usage = &schemas.LLMUsage{ PromptTokens: response.Usage.InputTokens, CompletionTokens: response.Usage.OutputTokens, TotalTokens: response.Usage.InputTokens + response.Usage.OutputTokens, @@ -699,3 +778,515 @@ func parseAnthropicResponse(response *AnthropicChatResponse, bifrostResponse *sc func (provider *AnthropicProvider) Embedding(ctx context.Context, model, key string, input *schemas.EmbeddingInput, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { return nil, newUnsupportedOperationError("embedding", "anthropic") } + +// ChatCompletionStream performs a streaming chat completion request to the Anthropic API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *AnthropicProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareAnthropicChatRequest(messages, params) + + // Merge additional parameters and set stream to true + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare Anthropic headers + headers := map[string]string{ + "Content-Type": "application/json", + "x-api-key": key, + "anthropic-version": provider.apiVersion, + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Use shared Anthropic streaming logic + return handleAnthropicStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/messages", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Anthropic, + params, + postHookRunner, + provider.logger, + ) +} + +// handleAnthropicStreaming handles streaming for Anthropic-compatible APIs (Anthropic, Vertex Claude models). +// This shared function reduces code duplication between providers that use the same SSE event format. +func handleAnthropicStreaming( + ctx context.Context, + httpClient *http.Client, + url string, + requestBody map[string]interface{}, + headers map[string]string, + extraHeaders map[string]string, + providerType schemas.ModelProvider, + params *schemas.ModelParameters, + postHookRunner schemas.PostHookRunner, + logger schemas.Logger, +) (chan *schemas.BifrostStream, *schemas.BifrostError) { + + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create HTTP request for streaming + req, err := http.NewRequestWithContext(ctx, "POST", url, strings.NewReader(string(jsonBody))) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "failed to create HTTP request", + Error: err, + }, + } + } + + // Set headers + for key, value := range headers { + req.Header.Set(key, value) + } + + // Set any extra headers from network config + setExtraHeadersHTTP(req, extraHeaders, nil) + + // Make the request + resp, err := httpClient.Do(req) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderRequest, + Error: err, + }, + } + } + + // Check for HTTP errors + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + return nil, &schemas.BifrostError{ + IsBifrostError: false, + StatusCode: &resp.StatusCode, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("HTTP error from %s: %d", providerType, resp.StatusCode), + }, + } + } + + // Create response channel + responseChan := make(chan *schemas.BifrostStream, schemas.DefaultStreamBufferSize) + + // Start streaming in a goroutine + go func() { + defer close(responseChan) + defer resp.Body.Close() + + scanner := bufio.NewScanner(resp.Body) + + // Track minimal state needed for response format + var messageID string + var modelName string + + // Track SSE event parsing state + var eventType string + var eventData string + + for scanner.Scan() { + line := scanner.Text() + + // Skip empty lines and comments + if line == "" || strings.HasPrefix(line, ":") { + continue + } + + // Parse SSE event - track event type and data separately + if strings.HasPrefix(line, "event: ") { + eventType = strings.TrimPrefix(line, "event: ") + continue + } else if strings.HasPrefix(line, "data: ") { + eventData = strings.TrimPrefix(line, "data: ") + } else { + continue + } + + // Skip if we don't have both event type and data + if eventType == "" || eventData == "" { + continue + } + + // Handle different event types + switch eventType { + case "message_start": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse message_start event: %v", err)) + continue + } + if event.Message != nil { + messageID = event.Message.ID + modelName = event.Message.Model + } + + case "content_block_start": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse content_block_start event: %v", err)) + continue + } + + if event.Index != nil && event.ContentBlock != nil { + // Handle different content block types + switch event.ContentBlock.Type { + case "tool_use": + // Tool use content block initialization + if event.ContentBlock.Name != "" && event.ContentBlock.ID != "" { + // Create streaming response for tool start + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: *event.Index, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + ToolCalls: []schemas.ToolCall{ + { + Type: func() *string { s := "function"; return &s }(), + ID: &event.ContentBlock.ID, + Function: schemas.FunctionCall{ + Name: &event.ContentBlock.Name, + }, + }, + }, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + default: + thought := "" + if event.ContentBlock.Thinking != "" { + thought = event.ContentBlock.Thinking + } + content := "" + if event.ContentBlock.Text != "" { + content = event.ContentBlock.Text + } + + // Send empty message for other content block types + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: *event.Index, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Thought: &thought, + Content: &content, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + } + + case "content_block_delta": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse content_block_delta event: %v", err)) + continue + } + + if event.Index != nil && event.Delta != nil { + // Handle different delta types + switch event.Delta.Type { + case "text_delta": + if event.Delta.Text != "" { + // Create streaming response for this delta + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: *event.Index, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Content: &event.Delta.Text, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case "input_json_delta": + // Handle tool use streaming - accumulate partial JSON + if event.Delta.PartialJSON != "" { + // Create streaming response for tool input delta + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: *event.Index, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + ToolCalls: []schemas.ToolCall{ + { + Type: func() *string { s := "function"; return &s }(), + Function: schemas.FunctionCall{ + Arguments: event.Delta.PartialJSON, + }, + }, + }, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case "thinking_delta": + // Handle thinking content streaming + if event.Delta.Thinking != "" { + // Create streaming response for thinking delta + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: *event.Index, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Thought: &event.Delta.Thinking, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case "signature_delta": + // Handle signature verification for thinking content + // This is used to verify the integrity of thinking content + + } + } + + case "content_block_stop": + // Content block is complete, no specific action needed for streaming + continue + + case "message_delta": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse message_delta event: %v", err)) + continue + } + + // Handle delta changes to the top-level message + + // Send usage information immediately if present + if event.Usage != nil { + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Usage: event.Usage, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{}, // Empty delta for usage update + }, + FinishReason: event.Delta.StopReason, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case "message_stop": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse message_stop event: %v", err)) + continue + } + + stopReason := "" + if event.Delta != nil { + stopReason = *event.Delta.StopReason + } + + // Send final message with stop reason + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: modelName, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + FinishReason: &stopReason, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{}, // Empty delta for final message + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: providerType, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + return + + case "ping": + // Ping events are just keepalive, no action needed + continue + + case "error": + var event AnthropicStreamEvent + if err := json.Unmarshal([]byte(eventData), &event); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse error event: %v", err)) + continue + } + if event.Error != nil { + + // Send error through channel before closing + errorResponse := &schemas.BifrostStream{ + BifrostError: &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Type: &event.Error.Type, + Message: event.Error.Message, + }, + }, + } + + select { + case responseChan <- errorResponse: + case <-ctx.Done(): + } + } + return + + default: + // Unknown event type - handle gracefully as per Anthropic's versioning policy + // New event types may be added, so we should not error but log and continue + logger.Debug(fmt.Sprintf("Unknown %s stream event type: %s, data: %s", providerType, eventType, eventData)) + continue + } + + // Reset for next event + eventType = "" + eventData = "" + } + + if err := scanner.Err(); err != nil { + logger.Warn(fmt.Sprintf("Error reading %s stream: %v", providerType, err)) + + // Send scanner error through channel + errorResponse := &schemas.BifrostStream{ + BifrostError: &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "Error reading stream", + Error: err, + }, + }, + } + + select { + case responseChan <- errorResponse: + case <-ctx.Done(): + } + } + }() + + return responseChan, nil +} diff --git a/core/providers/azure.go b/core/providers/azure.go index be4ec44b17..8637ccf05e 100644 --- a/core/providers/azure.go +++ b/core/providers/azure.go @@ -5,6 +5,7 @@ package providers import ( "context" "fmt" + "net/http" "sync" "time" @@ -115,6 +116,7 @@ func releaseAzureTextResponse(resp *AzureTextResponse) { type AzureProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests meta schemas.MetaConfig // Azure-specific configuration networkConfig schemas.NetworkConfig // Network configuration including extra headers } @@ -135,6 +137,11 @@ func NewAzureProvider(config *schemas.ProviderConfig, logger schemas.Logger) (*A MaxConnsPerHost: config.ConcurrencyAndBufferSize.Concurrency, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { azureChatResponsePool.Put(&AzureChatResponse{}) @@ -148,6 +155,7 @@ func NewAzureProvider(config *schemas.ProviderConfig, logger schemas.Logger) (*A return &AzureProvider{ logger: logger, client: client, + streamClient: streamClient, meta: config.MetaConfig, networkConfig: config.NetworkConfig, }, nil @@ -290,16 +298,18 @@ func (provider *AzureProvider) TextCompletion(ctx context.Context, model, key, t if len(response.Choices) > 0 { choices = append(choices, schemas.BifrostResponseChoice{ Index: 0, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentStr: &response.Choices[0].Text, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentStr: &response.Choices[0].Text, + }, + }, + LogProbs: &schemas.LogProbs{ + Text: response.Choices[0].LogProbs, }, }, FinishReason: response.Choices[0].FinishReason, - LogProbs: &schemas.LogProbs{ - Text: response.Choices[0].LogProbs, - }, }) } @@ -310,7 +320,7 @@ func (provider *AzureProvider) TextCompletion(ctx context.Context, model, key, t Model: response.Model, Created: response.Created, SystemFingerprint: response.SystemFingerprint, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Azure, RawResponse: rawResponse, @@ -357,7 +367,7 @@ func (provider *AzureProvider) ChatCompletion(ctx context.Context, model, key st Model: response.Model, Created: response.Created, SystemFingerprint: response.SystemFingerprint, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Azure, RawResponse: rawResponse, @@ -422,7 +432,7 @@ func (provider *AzureProvider) Embedding(ctx context.Context, model string, key ID: response.ID, Object: response.Object, Model: response.Model, - Usage: response.Usage, + Usage: &response.Usage, SystemFingerprint: response.SystemFingerprint, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Azure, @@ -478,3 +488,84 @@ func (provider *AzureProvider) Embedding(ctx context.Context, model string, key return bifrostResponse, nil } + +// ChatCompletionStream performs a streaming chat completion request to Azure's OpenAI API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Uses Azure-specific URL construction with deployments and supports both api-key and Bearer token authentication. +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *AzureProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + // Merge additional parameters and set stream to true + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Construct Azure-specific URL with deployment + if provider.meta.GetEndpoint() == nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "endpoint not set", + }, + } + } + + baseURL := *provider.meta.GetEndpoint() + var fullURL string + + if provider.meta.GetDeployments() != nil { + deployment := provider.meta.GetDeployments()[model] + if deployment == "" { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("deployment not found for model %s", model), + }, + } + } + + apiVersion := provider.meta.GetAPIVersion() + if apiVersion == nil { + apiVersion = StrPtr("2024-02-01") + } + + fullURL = fmt.Sprintf("%s/openai/deployments/%s/chat/completions?api-version=%s", baseURL, deployment, *apiVersion) + } else { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "deployments not set", + }, + } + } + + // Prepare Azure-specific headers + headers := make(map[string]string) + headers["Content-Type"] = "application/json" + headers["Accept"] = "text/event-stream" + headers["Cache-Control"] = "no-cache" + + // Set Azure authentication - either Bearer token or api-key + if authToken, ok := ctx.Value(AzureAuthorizationTokenKey).(string); ok { + headers["Authorization"] = fmt.Sprintf("Bearer %s", authToken) + } else { + headers["api-key"] = key + } + + // Use shared streaming logic from OpenAI + return handleOpenAIStreaming( + ctx, + provider.streamClient, + fullURL, + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Azure, // Provider type + params, + postHookRunner, + provider.logger, + ) +} diff --git a/core/providers/bedrock.go b/core/providers/bedrock.go index bba35da713..1727ef8b4d 100644 --- a/core/providers/bedrock.go +++ b/core/providers/bedrock.go @@ -19,6 +19,8 @@ import ( "github.com/goccy/go-json" + "bufio" + "github.com/aws/aws-sdk-go-v2/aws" v4 "github.com/aws/aws-sdk-go-v2/aws/signer/v4" "github.com/aws/aws-sdk-go-v2/config" @@ -142,6 +144,53 @@ type BedrockError struct { Message string `json:"message"` // Error message } +// BedrockStreamMessageStartEvent is emitted when the assistant message starts. +type BedrockStreamMessageStartEvent struct { + MessageStart struct { + Role string `json:"role"` // e.g. "assistant" + } `json:"messageStart"` +} + +// BedrockStreamContentBlockDeltaEvent is sent for each content delta chunk (text, reasoning, tool use). +type BedrockStreamContentBlockDeltaEvent struct { + ContentBlockDelta struct { + Delta struct { + Text string `json:"text,omitempty"` + ReasoningContent json.RawMessage `json:"reasoningContent,omitempty"` + ToolUse json.RawMessage `json:"toolUse,omitempty"` + } `json:"delta"` + ContentBlockIndex int `json:"contentBlockIndex"` + } `json:"contentBlockDelta"` +} + +// BedrockStreamContentBlockStopEvent indicates the end of a content block. +type BedrockStreamContentBlockStopEvent struct { + ContentBlockStop struct { + ContentBlockIndex int `json:"contentBlockIndex"` + } `json:"contentBlockStop"` +} + +// BedrockStreamMessageStopEvent marks the end of the assistant message. +type BedrockStreamMessageStopEvent struct { + MessageStop struct { + StopReason string `json:"stopReason"` // e.g. "stop", "max_tokens", "tool_use" + } `json:"messageStop"` +} + +// BedrockStreamMetadataEvent contains metadata after streaming ends. +type BedrockStreamMetadataEvent struct { + Metadata struct { + Usage struct { + InputTokens int `json:"inputTokens"` + OutputTokens int `json:"outputTokens"` + TotalTokens int `json:"totalTokens"` + } `json:"usage"` + Metrics struct { + LatencyMs float64 `json:"latencyMs"` + } `json:"metrics"` + } `json:"metadata"` +} + // BedrockProvider implements the Provider interface for AWS Bedrock. type BedrockProvider struct { logger schemas.Logger // Logger for provider operations @@ -344,14 +393,16 @@ func (provider *BedrockProvider) getTextCompletionResult(result []byte, model st Choices: []schemas.BifrostResponseChoice{ { Index: 0, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentStr: &response.Completion, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentStr: &response.Completion, + }, }, + StopString: &response.Stop, }, FinishReason: &response.StopReason, - StopString: &response.Stop, }, }, Model: model, @@ -384,10 +435,12 @@ func (provider *BedrockProvider) getTextCompletionResult(result []byte, model st for i, output := range response.Outputs { choices = append(choices, schemas.BifrostResponseChoice{ Index: i, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentStr: &output.Text, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentStr: &output.Text, + }, }, }, FinishReason: &output.StopReason, @@ -971,12 +1024,14 @@ func (provider *BedrockProvider) ChatCompletion(ctx context.Context, model, key choices := []schemas.BifrostResponseChoice{ { Index: 0, - Message: schemas.BifrostMessage{ - Role: schemas.ModelChatMessageRoleAssistant, - Content: schemas.MessageContent{ - ContentBlocks: &contentBlocks, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{ + ContentBlocks: &contentBlocks, + }, + AssistantMessage: assistantMessage, }, - AssistantMessage: assistantMessage, }, FinishReason: &response.StopReason, }, @@ -987,7 +1042,7 @@ func (provider *BedrockProvider) ChatCompletion(ctx context.Context, model, key // Create final response bifrostResponse := &schemas.BifrostResponse{ Choices: choices, - Usage: schemas.LLMUsage{ + Usage: &schemas.LLMUsage{ PromptTokens: response.Usage.InputTokens, CompletionTokens: response.Usage.OutputTokens, TotalTokens: response.Usage.TotalTokens, @@ -1169,7 +1224,7 @@ func (provider *BedrockProvider) handleTitanEmbedding(ctx context.Context, model bifrostResponse := &schemas.BifrostResponse{ Embedding: [][]float32{titanResp.Embedding}, Model: model, - Usage: schemas.LLMUsage{ + Usage: &schemas.LLMUsage{ PromptTokens: titanResp.InputTextTokenCount, TotalTokens: titanResp.InputTextTokenCount, }, @@ -1233,7 +1288,7 @@ func (provider *BedrockProvider) handleCohereEmbedding(ctx context.Context, mode Embedding: cohereResp.Embeddings, ID: cohereResp.ID, Model: model, - Usage: schemas.LLMUsage{ + Usage: &schemas.LLMUsage{ PromptTokens: totalInputTokens, TotalTokens: totalInputTokens, }, @@ -1249,3 +1304,415 @@ func (provider *BedrockProvider) handleCohereEmbedding(ctx context.Context, mode return bifrostResponse, nil } + +// ChatCompletionStream performs a streaming chat completion request to Bedrock's API. +// It formats the request, sends it to Bedrock, and processes the streaming response. +// Returns a channel for streaming BifrostResponse objects or an error if the request fails. +func (provider *BedrockProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + messageBody, err := provider.prepareChatCompletionMessages(messages, model) + if err != nil { + return nil, err + } + + preparedParams := prepareParams(params) + + // Transform tools if present + if params != nil && params.Tools != nil && len(*params.Tools) > 0 { + preparedParams["toolConfig"] = map[string]interface{}{ + "tools": provider.getChatCompletionTools(params, model), + } + } else { + // Check if conversation history contains tool use/result blocks + // Bedrock requires toolConfig when such blocks are present + hasToolContent, toolsFromHistory := provider.extractToolsFromHistory(messages) + + // If conversation contains tool content but no tools provided in current request, + // include the extracted tools to satisfy Bedrock's toolConfig requirement + if hasToolContent && len(toolsFromHistory) > 0 { + preparedParams["toolConfig"] = map[string]interface{}{ + "tools": toolsFromHistory, + } + } + } + + requestBody := mergeConfig(messageBody, preparedParams) + + // Format the path with proper model identifier for streaming + path := fmt.Sprintf("%s/converse-stream", model) + + if provider.meta != nil && provider.meta.GetInferenceProfiles() != nil { + if inferenceProfileId, ok := provider.meta.GetInferenceProfiles()[model]; ok { + if provider.meta.GetARN() != nil { + encodedModelIdentifier := url.PathEscape(fmt.Sprintf("%s/%s", *provider.meta.GetARN(), inferenceProfileId)) + path = fmt.Sprintf("%s/converse-stream", encodedModelIdentifier) + } + } + } + + if provider.meta == nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "meta config for bedrock is not provided", + }, + } + } + + region := "us-east-1" + if provider.meta.GetRegion() != nil { + region = *provider.meta.GetRegion() + } + + // Create the streaming request + jsonBody, jsonErr := json.Marshal(requestBody) + if jsonErr != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: jsonErr, + }, + } + } + + // Create HTTP request for streaming + req, reqErr := http.NewRequestWithContext(ctx, "POST", fmt.Sprintf("https://bedrock-runtime.%s.amazonaws.com/model/%s", region, path), strings.NewReader(string(jsonBody))) + if reqErr != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "error creating request", + Error: reqErr, + }, + } + } + + // Set any extra headers from network config + setExtraHeadersHTTP(req, provider.networkConfig.ExtraHeaders, nil) + + // Sign the request for AWS + if provider.meta.GetSecretAccessKey() != nil { + if signErr := signAWSRequest(req, key, *provider.meta.GetSecretAccessKey(), provider.meta.GetSessionToken(), region, "bedrock"); signErr != nil { + return nil, signErr + } + } else { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "secret access key not set", + }, + } + } + + // Make the request + resp, respErr := provider.client.Do(req) + if respErr != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderRequest, + Error: respErr, + }, + } + } + + // Check for HTTP errors + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + return nil, &schemas.BifrostError{ + IsBifrostError: false, + StatusCode: &resp.StatusCode, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("HTTP error from Bedrock: %d", resp.StatusCode), + }, + } + } + + // Create response channel + responseChan := make(chan *schemas.BifrostStream, schemas.DefaultStreamBufferSize) + + // Start streaming in a goroutine + go func() { + defer close(responseChan) + defer resp.Body.Close() + + // Create a buffer scanner to process the AWS Event Stream format + scanner := bufio.NewScanner(resp.Body) + var messageID string + + // AWS Event Streaming can have large buffers + buf := make([]byte, 0, 64*1024) + scanner.Buffer(buf, 1024*1024) + + for scanner.Scan() { + line := scanner.Text() + + // Skip empty lines + if line == "" { + continue + } + + // AWS Event Stream format embeds JSON within binary data + // Look for JSON objects in the stream data + jsonStart := strings.Index(line, "{") + if jsonStart == -1 { + continue + } + + // Extract the JSON part from the line + jsonData := line[jsonStart:] + + // Find the end of the JSON object by counting braces + braceCount := 0 + jsonEnd := -1 + for i, char := range jsonData { + if char == '{' { + braceCount++ + } else if char == '}' { + braceCount-- + if braceCount == 0 { + jsonEnd = i + 1 + break + } + } + } + + if jsonEnd == -1 { + continue + } + + // Extract the complete JSON object + jsonStr := jsonData[:jsonEnd] + + // Parse the JSON event + var event map[string]interface{} + if err := json.Unmarshal([]byte(jsonStr), &event); err != nil { + provider.logger.Debug(fmt.Sprintf("Failed to parse JSON from stream: %v, data: %s", err, jsonStr)) + continue + } + + // Determine event type and handle accordingly + switch { + case event["contentBlockIndex"] != nil && event["delta"] != nil: + // This is a contentBlockDelta event + contentBlockIndex := 0 + if idx, ok := event["contentBlockIndex"].(float64); ok { + contentBlockIndex = int(idx) + } + + delta, ok := event["delta"].(map[string]interface{}) + if !ok { + continue + } + + switch { + case delta["text"] != nil: + // Handle text delta + if text, ok := delta["text"].(string); ok && text != "" { + // Create streaming response for this delta + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: model, + Choices: []schemas.BifrostResponseChoice{ + { + Index: contentBlockIndex, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Content: &text, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Bedrock, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case delta["toolUse"] != nil: + // Handle tool use delta + if toolUse, ok := delta["toolUse"].(map[string]interface{}); ok { + // Parse the tool use structure properly + var toolCall schemas.ToolCall + toolCall.Type = func() *string { s := "function"; return &s }() + + // Extract toolUseId + if toolUseID, hasID := toolUse["toolUseId"].(string); hasID { + toolCall.ID = &toolUseID + } + + // Extract name + if name, hasName := toolUse["name"].(string); hasName { + toolCall.Function.Name = &name + } + + // Extract and marshal input as arguments + if input, hasInput := toolUse["input"].(map[string]interface{}); hasInput { + inputBytes, err := json.Marshal(input) + if err != nil { + toolCall.Function.Arguments = "{}" + } else { + toolCall.Function.Arguments = string(inputBytes) + } + } else { + toolCall.Function.Arguments = "{}" + } + + // Create streaming response for tool delta + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: model, + Choices: []schemas.BifrostResponseChoice{ + { + Index: contentBlockIndex, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + ToolCalls: []schemas.ToolCall{toolCall}, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Bedrock, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + } + + case event["role"] != nil: + // This is a messageStart event + if role, ok := event["role"].(string); ok { + messageID = fmt.Sprintf("bedrock-%d", time.Now().UnixNano()) + + // Send empty response to signal start + streamResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: model, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Role: &role, + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Bedrock, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + } + + case event["stopReason"] != nil: + // This is a messageStop event + if stopReason, ok := event["stopReason"].(string); ok { + // Send a final streaming response with finish reason + finalResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: model, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + FinishReason: &stopReason, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{}, // Empty delta for final chunk + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Bedrock, + }, + } + + if params != nil { + finalResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, finalResponse, responseChan) + return + } + + case event["usage"] != nil: + // This is a metadata event with usage information + if usage, ok := event["usage"].(map[string]interface{}); ok { + inputTokens := 0 + outputTokens := 0 + totalTokens := 0 + + if val, exists := usage["inputTokens"].(float64); exists { + inputTokens = int(val) + } + if val, exists := usage["outputTokens"].(float64); exists { + outputTokens = int(val) + } + if val, exists := usage["totalTokens"].(float64); exists { + totalTokens = int(val) + } + + // Send usage information + usageResponse := &schemas.BifrostResponse{ + ID: messageID, + Object: "chat.completion.chunk", + Model: model, + Usage: &schemas.LLMUsage{ + PromptTokens: inputTokens, + CompletionTokens: outputTokens, + TotalTokens: totalTokens, + }, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{}, // Empty delta for usage update + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Bedrock, + }, + } + + if params != nil { + usageResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, usageResponse, responseChan) + } + } + } + + if err := scanner.Err(); err != nil { + provider.logger.Warn(fmt.Sprintf("Error reading Bedrock stream: %v", err)) + } + }() + + return responseChan, nil +} diff --git a/core/providers/cohere.go b/core/providers/cohere.go index 89e83e056e..4be00be190 100644 --- a/core/providers/cohere.go +++ b/core/providers/cohere.go @@ -3,6 +3,7 @@ package providers import ( + "bufio" "context" "fmt" "slices" @@ -12,6 +13,8 @@ import ( "github.com/goccy/go-json" + "net/http" + schemas "github.com/maximhq/bifrost/core/schemas" "github.com/valyala/fasthttp" ) @@ -63,9 +66,8 @@ type CohereToolCall struct { // CohereChatResponse represents the response from Cohere's chat API. // It includes the response ID, generated text, chat history, and usage statistics. type CohereChatResponse struct { - ResponseID string `json:"response_id"` // Unique identifier for the response - Text string `json:"text"` // Generated text response GenerationID string `json:"generation_id"` // ID of the generation + Text string `json:"text"` // Generated text response ChatHistory []struct { Role schemas.ModelChatMessageRole `json:"role"` // Role of the message sender Message string `json:"message"` // Content of the message @@ -105,9 +107,38 @@ type CohereEmbeddingResponse struct { type CohereProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests networkConfig schemas.NetworkConfig // Network configuration including extra headers } +// CohereStreamStartEvent represents the start of a stream event. +type CohereStreamStartEvent struct { + EventType string `json:"event_type"` // stream-start + GenerationID string `json:"generation_id"` // ID of the generation +} + +// CohereStreamTextEvent represents the text generation event. +type CohereStreamTextEvent struct { + EventType string `json:"event_type"` // text-generation + Text string `json:"text"` // Text content being generated +} + +// CohereStreamToolEvent represents the tool use event. +type CohereStreamToolCallEvent struct { + EventType string `json:"event_type"` // tool-use + ToolCall struct { + ID string `json:"id"` // ID of the tool call + Parameters string `json:"parameters"` // Parameters of the tool being called + } `json:"tool_call"` // Tool call information + Text *string `json:"text"` // Text content being generated +} + +// CohereStreamStopEvent represents the end of a stream event. +type CohereStreamStopEvent struct { + EventType string `json:"event_type"` // stream-end + Response CohereChatResponse `json:"response"` // Response information +} + // NewCohereProvider creates a new Cohere provider instance. // It initializes the HTTP client with the provided configuration and sets up response pools. // The client is configured with timeouts and connection limits. @@ -120,6 +151,11 @@ func NewCohereProvider(config *schemas.ProviderConfig, logger schemas.Logger) *C MaxConnsPerHost: config.ConcurrencyAndBufferSize.Concurrency, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { cohereResponsePool.Put(&CohereChatResponse{}) @@ -135,6 +171,7 @@ func NewCohereProvider(config *schemas.ProviderConfig, logger schemas.Logger) *C return &CohereProvider{ logger: logger, client: client, + streamClient: streamClient, networkConfig: config.NetworkConfig, } } @@ -154,6 +191,156 @@ func (provider *CohereProvider) TextCompletion(ctx context.Context, model, key, // It formats the request, sends it to Cohere, and processes the response. // Returns a BifrostResponse containing the completion results or an error if the request fails. func (provider *CohereProvider) ChatCompletion(ctx context.Context, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + // Prepare request body using shared function + requestBody, err := prepareCohereChatRequest(messages, params, model, false) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "failed to prepare Cohere chat request", + Error: err, + }, + } + } + + // Marshal request body + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create request + req := fasthttp.AcquireRequest() + resp := fasthttp.AcquireResponse() + defer fasthttp.ReleaseRequest(req) + defer fasthttp.ReleaseResponse(resp) + + // Set any extra headers from network config + setExtraHeaders(req, provider.networkConfig.ExtraHeaders, nil) + + req.SetRequestURI(provider.networkConfig.BaseURL + "/v1/chat") + req.Header.SetMethod("POST") + req.Header.SetContentType("application/json") + req.Header.Set("Authorization", "Bearer "+key) + + req.SetBody(jsonBody) + + // Make request + bifrostErr := makeRequestWithContext(ctx, provider.client, req, resp) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Handle error response + if resp.StatusCode() != fasthttp.StatusOK { + provider.logger.Debug(fmt.Sprintf("error from cohere provider: %s", string(resp.Body()))) + + var errorResp CohereError + + bifrostErr := handleProviderAPIError(resp, &errorResp) + bifrostErr.Error.Message = errorResp.Message + + return nil, bifrostErr + } + + // Read response body + responseBody := resp.Body() + + // Create response object from pool + response := acquireCohereResponse() + defer releaseCohereResponse(response) + + rawResponse, bifrostErr := handleProviderResponse(responseBody, response) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Transform tool calls if present + var toolCalls []schemas.ToolCall + if response.ToolCalls != nil { + for _, tool := range response.ToolCalls { + function := schemas.FunctionCall{ + Name: &tool.Name, + } + + args, err := json.Marshal(tool.Parameters) + if err != nil { + function.Arguments = fmt.Sprintf("%v", tool.Parameters) + } else { + function.Arguments = string(args) + } + + toolCalls = append(toolCalls, schemas.ToolCall{ + Function: function, + }) + } + } + + // Get role and content from the last message in chat history + var role schemas.ModelChatMessageRole + var content string + if len(response.ChatHistory) > 0 { + lastMsg := response.ChatHistory[len(response.ChatHistory)-1] + role = lastMsg.Role + content = lastMsg.Message + } else { + role = schemas.ModelChatMessageRoleChatbot + content = response.Text + } + + // Create final response + bifrostResponse := &schemas.BifrostResponse{ + ID: response.GenerationID, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostNonStreamResponseChoice: &schemas.BifrostNonStreamResponseChoice{ + Message: schemas.BifrostMessage{ + Role: role, + Content: schemas.MessageContent{ + ContentStr: &content, + }, + AssistantMessage: &schemas.AssistantMessage{ + ToolCalls: &toolCalls, + }, + }, + }, + FinishReason: &response.FinishReason, + }, + }, + Usage: &schemas.LLMUsage{ + PromptTokens: int(response.Meta.Tokens.InputTokens), + CompletionTokens: int(response.Meta.Tokens.OutputTokens), + TotalTokens: int(response.Meta.Tokens.InputTokens + response.Meta.Tokens.OutputTokens), + }, + Model: model, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Cohere, + BilledUsage: &schemas.BilledLLMUsage{ + PromptTokens: float64Ptr(response.Meta.BilledUnits.InputTokens), + CompletionTokens: float64Ptr(response.Meta.BilledUnits.OutputTokens), + }, + ChatHistory: convertChatHistory(response.ChatHistory), + RawResponse: rawResponse, + }, + } + + if params != nil { + bifrostResponse.ExtraFields.Params = *params + } + + return bifrostResponse, nil +} + +// prepareCohereChatRequest prepares the request body for Cohere chat completion requests. +// It transforms the messages into Cohere format and handles tools, parameters, and content formatting. +func prepareCohereChatRequest(messages []schemas.BifrostMessage, params *schemas.ModelParameters, model string, stream bool) (map[string]interface{}, error) { // Get the last message and chat history lastMessage := messages[len(messages)-1] chatHistory := messages[:len(messages)-1] @@ -281,7 +468,11 @@ func (provider *CohereProvider) ChatCompletion(ctx context.Context, model, key s "model": model, }, preparedParams) - // Handle the last message content based on whether it supports vision + // Add stream parameter if streaming + if stream { + requestBody["stream"] = true + } + if lastMessage.Content.ContentStr != nil { requestBody["message"] = *lastMessage.Content.ContentStr } else if lastMessage.Content.ContentBlocks != nil { @@ -327,6 +518,7 @@ func (provider *CohereProvider) ChatCompletion(ctx context.Context, model, key s } requestBody["tools"] = tools } + // Add tool choice if present if params != nil && params.ToolChoice != nil { if params.ToolChoice.ToolChoiceStr != nil { @@ -338,165 +530,20 @@ func (provider *CohereProvider) ChatCompletion(ctx context.Context, model, key s } } - // Marshal request body - jsonBody, err := json.Marshal(requestBody) - if err != nil { - return nil, &schemas.BifrostError{ - IsBifrostError: true, - Error: schemas.ErrorField{ - Message: schemas.ErrProviderJSONMarshaling, - Error: err, - }, - } - } - - // Create request - req := fasthttp.AcquireRequest() - resp := fasthttp.AcquireResponse() - defer fasthttp.ReleaseRequest(req) - defer fasthttp.ReleaseResponse(resp) - - // Set any extra headers from network config - setExtraHeaders(req, provider.networkConfig.ExtraHeaders, nil) - - req.SetRequestURI(provider.networkConfig.BaseURL + "/v1/chat") - req.Header.SetMethod("POST") - req.Header.SetContentType("application/json") - req.Header.Set("Authorization", "Bearer "+key) - - req.SetBody(jsonBody) - - // Make request - bifrostErr := makeRequestWithContext(ctx, provider.client, req, resp) - if bifrostErr != nil { - return nil, bifrostErr - } - - // Handle error response - if resp.StatusCode() != fasthttp.StatusOK { - provider.logger.Debug(fmt.Sprintf("error from cohere provider: %s", string(resp.Body()))) - - var errorResp CohereError - - bifrostErr := handleProviderAPIError(resp, &errorResp) - bifrostErr.Error.Message = errorResp.Message - - return nil, bifrostErr - } - - // Read response body - responseBody := resp.Body() - - // Create response object from pool - response := acquireCohereResponse() - defer releaseCohereResponse(response) - - rawResponse, bifrostErr := handleProviderResponse(responseBody, response) - if bifrostErr != nil { - return nil, bifrostErr - } - - // Transform tool calls if present - var toolCalls []schemas.ToolCall - if response.ToolCalls != nil { - for _, tool := range response.ToolCalls { - function := schemas.FunctionCall{ - Name: &tool.Name, - } - - args, err := json.Marshal(tool.Parameters) - if err != nil { - function.Arguments = fmt.Sprintf("%v", tool.Parameters) - } else { - function.Arguments = string(args) - } - - toolCalls = append(toolCalls, schemas.ToolCall{ - Function: function, - }) - } - } - - // Get role and content from the last message in chat history - var role schemas.ModelChatMessageRole - var content string - if len(response.ChatHistory) > 0 { - lastMsg := response.ChatHistory[len(response.ChatHistory)-1] - role = lastMsg.Role - content = lastMsg.Message - } else { - role = schemas.ModelChatMessageRoleChatbot - content = response.Text - } - - // Create final response - bifrostResponse := &schemas.BifrostResponse{ - ID: response.ResponseID, - Choices: []schemas.BifrostResponseChoice{ - { - Index: 0, - Message: schemas.BifrostMessage{ - Role: role, - Content: schemas.MessageContent{ - ContentStr: &content, - }, - AssistantMessage: &schemas.AssistantMessage{ - ToolCalls: &toolCalls, - }, - }, - FinishReason: &response.FinishReason, - }, - }, - Usage: schemas.LLMUsage{ - PromptTokens: int(response.Meta.Tokens.InputTokens), - CompletionTokens: int(response.Meta.Tokens.OutputTokens), - TotalTokens: int(response.Meta.Tokens.InputTokens + response.Meta.Tokens.OutputTokens), - }, - Model: model, - ExtraFields: schemas.BifrostResponseExtraFields{ - Provider: schemas.Cohere, - BilledUsage: &schemas.BilledLLMUsage{ - PromptTokens: float64Ptr(response.Meta.BilledUnits.InputTokens), - CompletionTokens: float64Ptr(response.Meta.BilledUnits.OutputTokens), - }, - ChatHistory: convertChatHistory(response.ChatHistory), - RawResponse: rawResponse, - }, - } - - if params != nil { - bifrostResponse.ExtraFields.Params = *params - } - - return bifrostResponse, nil + return requestBody, nil } // processImageContent processes image content for Cohere API format. -// It creates a copy of the image content, normalizes and formats it, then returns the properly formatted map. -// This prevents unintended mutations to the original image content. +// NOTE: Cohere v1 does not support image content, so this function is a placeholder. +// It returns nil since image processing is not available. func processImageContent(imageContent *schemas.ImageURLStruct) map[string]interface{} { if imageContent == nil { return nil } - sanitizedURL, _ := SanitizeImageURL(imageContent.URL) - urlTypeInfo := ExtractURLTypeInfo(sanitizedURL) - - formattedImgContent := AnthropicImageContent{ - Type: urlTypeInfo.Type, - URL: sanitizedURL, - } - - if urlTypeInfo.MediaType != nil { - formattedImgContent.MediaType = *urlTypeInfo.MediaType - } - - return map[string]interface{}{ - "type": "image_url", - "image_url": map[string]interface{}{ - "url": formattedImgContent.URL, - }, - } + // Cohere v1 does not support image content + // Return nil to skip image processing + return nil } // convertChatHistory converts Cohere's chat history format to Bifrost's format for standardization. @@ -553,10 +600,10 @@ func (provider *CohereProvider) Embedding(ctx context.Context, model string, key // Prepare request body with default values requestBody := map[string]interface{}{ - "texts": input.Texts, - "model": model, - "input_type": "search_document", // Default input type - can be overridden via ExtraParams - "embedding_types": []string{"float"}, // Default to float embeddings + "texts": input.Texts, + "model": model, + "input_type": "search_document", // Default input type - can be overridden via ExtraParams + "embedding_types": []string{"float"}, // Default to float embeddings } // Apply additional parameters if provided @@ -660,7 +707,7 @@ func (provider *CohereProvider) Embedding(ctx context.Context, model string, key ID: cohereResp.ID, Embedding: cohereResp.Embeddings.Float, Model: model, - Usage: schemas.LLMUsage{ + Usage: &schemas.LLMUsage{ PromptTokens: totalInputTokens, TotalTokens: totalInputTokens, }, @@ -676,3 +723,300 @@ func (provider *CohereProvider) Embedding(ctx context.Context, model string, key return bifrostResponse, nil } + +// ChatCompletionStream performs a streaming chat completion request to the Cohere API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *CohereProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + // Prepare request body using shared function + requestBody, err := prepareCohereChatRequest(messages, params, model, true) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "failed to prepare Cohere chat request", + Error: err, + }, + } + } + + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create HTTP request for streaming + req, err := http.NewRequestWithContext(ctx, "POST", provider.networkConfig.BaseURL+"/v1/chat", strings.NewReader(string(jsonBody))) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "failed to create HTTP request", + Error: err, + }, + } + } + + // Set headers + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", "Bearer "+key) + req.Header.Set("Accept", "text/event-stream") + req.Header.Set("Cache-Control", "no-cache") + + // Set any extra headers from network config + setExtraHeadersHTTP(req, provider.networkConfig.ExtraHeaders, nil) + + // Make the request + resp, err := provider.streamClient.Do(req) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderRequest, + Error: err, + }, + } + } + + // Check for HTTP errors + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + return nil, &schemas.BifrostError{ + IsBifrostError: false, + StatusCode: &resp.StatusCode, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("HTTP error from Cohere: %d", resp.StatusCode), + }, + } + } + + // Create response channel + responseChan := make(chan *schemas.BifrostStream, schemas.DefaultStreamBufferSize) + + // Start streaming in a goroutine + go func() { + defer close(responseChan) + defer resp.Body.Close() + + scanner := bufio.NewScanner(resp.Body) + var responseID string + + for scanner.Scan() { + line := scanner.Text() + + // Skip empty lines and comments + if line == "" || strings.HasPrefix(line, ":") { + continue + } + + // Parse SSE data + if strings.HasPrefix(line, "data: ") { + jsonData := strings.TrimPrefix(line, "data: ") + + // Parse the streaming event + var streamEvent map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &streamEvent); err != nil { + provider.logger.Warn(fmt.Sprintf("Failed to parse Cohere stream event: %v", err)) + continue + } + + eventType, exists := streamEvent["event_type"].(string) + if !exists { + continue + } + + switch eventType { + case "stream-start": + var startEvent CohereStreamStartEvent + if err := json.Unmarshal([]byte(jsonData), &startEvent); err != nil { + provider.logger.Warn(fmt.Sprintf("Failed to parse Cohere stream-start event: %v", err)) + continue + } + + responseID = startEvent.GenerationID + + // Send empty message to signal stream start + streamResponse := &schemas.BifrostResponse{ + ID: responseID, + Object: "chat.completion.chunk", + Model: model, + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Role: StrPtr(string(schemas.ModelChatMessageRoleAssistant)), + }, + }, + }, + }, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Cohere, + }, + } + + if params != nil { + streamResponse.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, streamResponse, responseChan) + + case "text-generation": + var textEvent CohereStreamTextEvent + if err := json.Unmarshal([]byte(jsonData), &textEvent); err != nil { + provider.logger.Warn(fmt.Sprintf("Failed to parse Cohere text-generation event: %v", err)) + continue + } + + // Create response for this text chunk + response := &schemas.BifrostResponse{ + ID: responseID, + Object: "chat.completion.chunk", + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Content: &textEvent.Text, + }, + }, + FinishReason: nil, // Not finished yet + }, + }, + Model: model, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Cohere, + }, + } + + if params != nil { + response.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, response, responseChan) + + case "tool-calls-chunk": + var toolEvent CohereStreamToolCallEvent + if err := json.Unmarshal([]byte(jsonData), &toolEvent); err != nil { + provider.logger.Warn(fmt.Sprintf("Failed to parse Cohere tool-use event: %v", err)) + continue + } + + toolCall := schemas.ToolCall{ + ID: &toolEvent.ToolCall.ID, + Function: schemas.FunctionCall{ + Name: &toolEvent.ToolCall.ID, + Arguments: toolEvent.ToolCall.Parameters, + }, + } + + // Create response for tool calls + response := &schemas.BifrostResponse{ + ID: responseID, + Object: "chat.completion.chunk", + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + ToolCalls: []schemas.ToolCall{toolCall}, + Content: toolEvent.Text, + }, + }, + FinishReason: nil, + }, + }, + Model: model, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Cohere, + }, + } + + if params != nil { + response.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, response, responseChan) + + case "stream-end": + var stopEvent CohereStreamStopEvent + if err := json.Unmarshal([]byte(jsonData), &stopEvent); err != nil { + provider.logger.Warn(fmt.Sprintf("Failed to parse Cohere stream-end event: %v", err)) + continue + } + + // Convert tool calls from the final response + var toolCalls []schemas.ToolCall + for _, toolCall := range stopEvent.Response.ToolCalls { + function := schemas.FunctionCall{ + Name: &toolCall.Name, + } + + args, err := json.Marshal(toolCall.Parameters) + if err != nil { + function.Arguments = fmt.Sprintf("%v", toolCall.Parameters) + } else { + function.Arguments = string(args) + } + + toolCalls = append(toolCalls, schemas.ToolCall{ + Function: function, + }) + } + + // Send final response with complete content from the stopEvent + response := &schemas.BifrostResponse{ + ID: responseID, + Object: "chat.completion.chunk", + Choices: []schemas.BifrostResponseChoice{ + { + Index: 0, + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{ + Role: StrPtr(string(schemas.ModelChatMessageRoleAssistant)), + Content: &stopEvent.Response.Text, + ToolCalls: toolCalls, + }, + }, + FinishReason: &stopEvent.Response.FinishReason, + }, + }, + Model: model, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Cohere, + }, + } + + if params != nil { + response.ExtraFields.Params = *params + } + + // Use utility function to process and send response + ProcessAndSendResponse(ctx, postHookRunner, response, responseChan) + + return // End of stream + + default: + // Unknown event type, log and continue + provider.logger.Debug(fmt.Sprintf("Unknown Cohere stream event type: %s", eventType)) + } + } + } + + if err := scanner.Err(); err != nil { + provider.logger.Warn(fmt.Sprintf("Error reading Cohere stream: %v", err)) + } + }() + + return responseChan, nil +} diff --git a/core/providers/groq.go b/core/providers/groq.go new file mode 100644 index 0000000000..04a28a6e85 --- /dev/null +++ b/core/providers/groq.go @@ -0,0 +1,237 @@ +// Package providers implements various LLM providers and their utility functions. +// This file contains the Groq provider implementation. +package providers + +import ( + "context" + "fmt" + "net/http" + "strings" + "sync" + "time" + + "github.com/goccy/go-json" + + schemas "github.com/maximhq/bifrost/core/schemas" + "github.com/valyala/fasthttp" +) + +// GroqResponse represents the response structure from the Groq API. +type GroqResponse struct { + ID string `json:"id"` + Object string `json:"object"` + Choices []schemas.BifrostResponseChoice `json:"choices"` + Model string `json:"model"` + Created int `json:"created"` + Usage schemas.LLMUsage `json:"usage"` +} + +// groqResponsePool provides a pool for Groq response objects. +var groqResponsePool = sync.Pool{ + New: func() interface{} { + return &GroqResponse{} + }, +} + +// acquireGroqResponse gets a Groq response from the pool and resets it. +func acquireGroqResponse() *GroqResponse { + resp := groqResponsePool.Get().(*GroqResponse) + *resp = GroqResponse{} // Reset the struct + return resp +} + +// releaseGroqResponse returns a Groq response to the pool. +func releaseGroqResponse(resp *GroqResponse) { + if resp != nil { + groqResponsePool.Put(resp) + } +} + +// GroqProvider implements the Provider interface for Groq's API. +type GroqProvider struct { + logger schemas.Logger // Logger for provider operations + client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests + networkConfig schemas.NetworkConfig // Network configuration including extra headers +} + +// NewGroqProvider creates a new Groq provider instance. +// It initializes the HTTP client with the provided configuration and sets up response pools. +// The client is configured with timeouts, concurrency limits, and optional proxy settings. +func NewGroqProvider(config *schemas.ProviderConfig, logger schemas.Logger) (*GroqProvider, error) { + config.CheckAndSetDefaults() + + client := &fasthttp.Client{ + ReadTimeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + WriteTimeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + MaxConnsPerHost: config.ConcurrencyAndBufferSize.BufferSize, + } + + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + + // Pre-warm response pools + for range config.ConcurrencyAndBufferSize.Concurrency { + groqResponsePool.Put(&GroqResponse{}) + } + + // Configure proxy if provided + client = configureProxy(client, config.ProxyConfig, logger) + + // Set default BaseURL if not provided + if config.NetworkConfig.BaseURL == "" { + config.NetworkConfig.BaseURL = "https://api.groq.com/openai" + } + config.NetworkConfig.BaseURL = strings.TrimRight(config.NetworkConfig.BaseURL, "/") + + return &GroqProvider{ + logger: logger, + client: client, + streamClient: streamClient, + networkConfig: config.NetworkConfig, + }, nil +} + +// GetProviderKey returns the provider identifier for Groq. +func (provider *GroqProvider) GetProviderKey() schemas.ModelProvider { + return schemas.Groq +} + +// TextCompletion is not supported by the Groq provider. +func (provider *GroqProvider) TextCompletion(ctx context.Context, model, key, text string, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + return nil, newUnsupportedOperationError("text completion", "groq") +} + +// ChatCompletion performs a chat completion request to the Groq API. +func (provider *GroqProvider) ChatCompletion(ctx context.Context, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + }, preparedParams) + + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create request + req := fasthttp.AcquireRequest() + resp := fasthttp.AcquireResponse() + defer fasthttp.ReleaseRequest(req) + defer fasthttp.ReleaseResponse(resp) + + // Set any extra headers from network config + setExtraHeaders(req, provider.networkConfig.ExtraHeaders, nil) + + req.SetRequestURI(provider.networkConfig.BaseURL + "/v1/chat/completions") + req.Header.SetMethod("POST") + req.Header.SetContentType("application/json") + if key != "" { + req.Header.Set("Authorization", "Bearer "+key) + } + + req.SetBody(jsonBody) + + // Make request + bifrostErr := makeRequestWithContext(ctx, provider.client, req, resp) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Handle error response + if resp.StatusCode() != fasthttp.StatusOK { + provider.logger.Debug(fmt.Sprintf("error from groq provider: %s", string(resp.Body()))) + + var errorResp map[string]interface{} + bifrostErr := handleProviderAPIError(resp, &errorResp) + bifrostErr.Error.Message = fmt.Sprintf("Groq error: %v", errorResp) + return nil, bifrostErr + } + + responseBody := resp.Body() + + // Pre-allocate response structs from pools + response := acquireGroqResponse() + defer releaseGroqResponse(response) + + // Use enhanced response handler with pre-allocated response + rawResponse, bifrostErr := handleProviderResponse(responseBody, response) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Create final response + bifrostResponse := &schemas.BifrostResponse{ + ID: response.ID, + Object: response.Object, + Choices: response.Choices, + Model: response.Model, + Created: response.Created, + Usage: &response.Usage, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.Groq, + RawResponse: rawResponse, + }, + } + + if params != nil { + bifrostResponse.ExtraFields.Params = *params + } + + return bifrostResponse, nil +} + +// Embedding is not supported by the Groq provider. +func (provider *GroqProvider) Embedding(ctx context.Context, model string, key string, input *schemas.EmbeddingInput, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + return nil, newUnsupportedOperationError("embedding", "groq") +} + +// ChatCompletionStream performs a streaming chat completion request to the Groq API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Uses Groq's OpenAI-compatible streaming format. +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *GroqProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare Groq headers (Groq typically doesn't require authorization, but we include it if provided) + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Only add Authorization header if key is provided (Groq can run without auth) + if key != "" { + headers["Authorization"] = "Bearer " + key + } + + // Use shared OpenAI-compatible streaming logic + return handleOpenAIStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/chat/completions", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Groq, + params, + postHookRunner, + provider.logger, + ) +} diff --git a/core/providers/mistral.go b/core/providers/mistral.go index 26b645ece5..27377ffe37 100644 --- a/core/providers/mistral.go +++ b/core/providers/mistral.go @@ -5,6 +5,7 @@ package providers import ( "context" "fmt" + "net/http" "strings" "sync" "time" @@ -64,6 +65,7 @@ func releaseMistralResponse(resp *MistralResponse) { type MistralProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests networkConfig schemas.NetworkConfig // Network configuration including extra headers } @@ -79,6 +81,11 @@ func NewMistralProvider(config *schemas.ProviderConfig, logger schemas.Logger) * MaxConnsPerHost: config.ConcurrencyAndBufferSize.Concurrency, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { mistralResponsePool.Put(&MistralResponse{}) @@ -96,6 +103,7 @@ func NewMistralProvider(config *schemas.ProviderConfig, logger schemas.Logger) * return &MistralProvider{ logger: logger, client: client, + streamClient: streamClient, networkConfig: config.NetworkConfig, } } @@ -181,7 +189,7 @@ func (provider *MistralProvider) ChatCompletion(ctx context.Context, model, key Choices: response.Choices, Model: response.Model, Created: response.Created, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Mistral, RawResponse: rawResponse, @@ -226,7 +234,7 @@ func (provider *MistralProvider) Embedding(ctx context.Context, model string, ke // Map to Mistral's parameter name requestBody["output_dtype"] = *params.EncodingFormat } - + // Map dimensions to Mistral's parameter name if params.Dimensions != nil { requestBody["output_dimension"] = *params.Dimensions @@ -322,7 +330,7 @@ func (provider *MistralProvider) Embedding(ctx context.Context, model string, ke Object: mistralResp.Object, Embedding: embeddings, Model: mistralResp.Model, - Usage: mistralResp.Usage, + Usage: &mistralResp.Usage, SystemFingerprint: mistralResp.SystemFingerprint, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Mistral, @@ -336,3 +344,39 @@ func (provider *MistralProvider) Embedding(ctx context.Context, model string, ke return bifrostResponse, nil } + +// ChatCompletionStream performs a streaming chat completion request to the Mistral API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Uses Mistral's OpenAI-compatible streaming format. +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *MistralProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare Mistral headers + headers := map[string]string{ + "Content-Type": "application/json", + "Authorization": "Bearer " + key, + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Use shared OpenAI-compatible streaming logic + return handleOpenAIStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/chat/completions", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Mistral, + params, + postHookRunner, + provider.logger, + ) +} diff --git a/core/providers/ollama.go b/core/providers/ollama.go index f00f764e6f..4412459df6 100644 --- a/core/providers/ollama.go +++ b/core/providers/ollama.go @@ -5,6 +5,7 @@ package providers import ( "context" "fmt" + "net/http" "strings" "sync" "time" @@ -50,6 +51,7 @@ func releaseOllamaResponse(resp *OllamaResponse) { type OllamaProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests networkConfig schemas.NetworkConfig // Network configuration including extra headers } @@ -65,6 +67,11 @@ func NewOllamaProvider(config *schemas.ProviderConfig, logger schemas.Logger) (* MaxConnsPerHost: config.ConcurrencyAndBufferSize.BufferSize, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { ollamaResponsePool.Put(&OllamaResponse{}) @@ -83,6 +90,7 @@ func NewOllamaProvider(config *schemas.ProviderConfig, logger schemas.Logger) (* return &OllamaProvider{ logger: logger, client: client, + streamClient: streamClient, networkConfig: config.NetworkConfig, }, nil } @@ -170,7 +178,7 @@ func (provider *OllamaProvider) ChatCompletion(ctx context.Context, model, key s Choices: response.Choices, Model: response.Model, Created: response.Created, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Ollama, RawResponse: rawResponse, @@ -188,3 +196,43 @@ func (provider *OllamaProvider) ChatCompletion(ctx context.Context, model, key s func (provider *OllamaProvider) Embedding(ctx context.Context, model string, key string, input *schemas.EmbeddingInput, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { return nil, newUnsupportedOperationError("embedding", "ollama") } + +// ChatCompletionStream performs a streaming chat completion request to the Ollama API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Uses Ollama's OpenAI-compatible streaming format. +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *OllamaProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare Ollama headers (Ollama typically doesn't require authorization, but we include it if provided) + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Only add Authorization header if key is provided (Ollama can run without auth) + if key != "" { + headers["Authorization"] = "Bearer " + key + } + + // Use shared OpenAI-compatible streaming logic + return handleOpenAIStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/chat/completions", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Ollama, + params, + postHookRunner, + provider.logger, + ) +} diff --git a/core/providers/openai.go b/core/providers/openai.go index 9577d8c72f..91451aec3f 100644 --- a/core/providers/openai.go +++ b/core/providers/openai.go @@ -3,11 +3,13 @@ package providers import ( + "bufio" "context" "encoding/base64" "encoding/binary" "fmt" "math" + "net/http" "strings" "sync" "time" @@ -75,6 +77,7 @@ func releaseOpenAIResponse(resp *OpenAIResponse) { type OpenAIProvider struct { logger schemas.Logger // Logger for provider operations client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests networkConfig schemas.NetworkConfig // Network configuration including extra headers } @@ -90,6 +93,11 @@ func NewOpenAIProvider(config *schemas.ProviderConfig, logger schemas.Logger) *O MaxConnsPerHost: config.ConcurrencyAndBufferSize.Concurrency, } + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + // Pre-warm response pools for range config.ConcurrencyAndBufferSize.Concurrency { openAIResponsePool.Put(&OpenAIResponse{}) @@ -107,6 +115,7 @@ func NewOpenAIProvider(config *schemas.ProviderConfig, logger schemas.Logger) *O return &OpenAIProvider{ logger: logger, client: client, + streamClient: streamClient, networkConfig: config.NetworkConfig, } } @@ -209,7 +218,7 @@ func (provider *OpenAIProvider) ChatCompletion(ctx context.Context, model, key s Created: response.Created, ServiceTier: response.ServiceTier, SystemFingerprint: response.SystemFingerprint, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.OpenAI, RawResponse: rawResponse, @@ -378,7 +387,7 @@ func (provider *OpenAIProvider) Embedding(ctx context.Context, model string, key Object: response.Object, Model: response.Model, Created: response.Created, - Usage: response.Usage, + Usage: &response.Usage, ServiceTier: response.ServiceTier, SystemFingerprint: response.SystemFingerprint, ExtraFields: schemas.BifrostResponseExtraFields{ @@ -456,3 +465,269 @@ func (provider *OpenAIProvider) Embedding(ctx context.Context, model string, key return bifrostResponse, nil } + +func (provider *OpenAIProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare OpenAI headers + headers := map[string]string{ + "Content-Type": "application/json", + "Authorization": "Bearer " + key, + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Use shared streaming logic + return handleOpenAIStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/chat/completions", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.OpenAI, + params, + postHookRunner, + provider.logger, + ) +} + +// performOpenAICompatibleStreaming handles streaming for OpenAI-compatible APIs (OpenAI, Azure). +// This shared function reduces code duplication between providers that use the same SSE format. +func handleOpenAIStreaming( + ctx context.Context, + httpClient *http.Client, + url string, + requestBody map[string]interface{}, + headers map[string]string, + extraHeaders map[string]string, + providerType schemas.ModelProvider, + params *schemas.ModelParameters, + postHookRunner schemas.PostHookRunner, + logger schemas.Logger, +) (chan *schemas.BifrostStream, *schemas.BifrostError) { + + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create HTTP request for streaming + req, err := http.NewRequestWithContext(ctx, "POST", url, strings.NewReader(string(jsonBody))) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "failed to create HTTP request", + Error: err, + }, + } + } + + // Set headers + for key, value := range headers { + req.Header.Set(key, value) + } + + // Set any extra headers from network config + setExtraHeadersHTTP(req, extraHeaders, nil) + + // Make the request + resp, err := httpClient.Do(req) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderRequest, + Error: err, + }, + } + } + + // Check for HTTP errors + if resp.StatusCode != http.StatusOK { + resp.Body.Close() + return nil, &schemas.BifrostError{ + IsBifrostError: false, + StatusCode: &resp.StatusCode, + Error: schemas.ErrorField{ + Message: fmt.Sprintf("HTTP error from %s: %d", providerType, resp.StatusCode), + }, + } + } + + // Create response channel + responseChan := make(chan *schemas.BifrostStream, schemas.DefaultStreamBufferSize) + + // Start streaming in a goroutine + go func() { + defer close(responseChan) + defer resp.Body.Close() + + scanner := bufio.NewScanner(resp.Body) + + for scanner.Scan() { + line := scanner.Text() + + // Skip empty lines and comments + if line == "" || strings.HasPrefix(line, ":") { + continue + } + + // Check for end of stream + if line == "data: [DONE]" { + break + } + + var jsonData string + var isDataLine bool + + // Parse SSE data + if strings.HasPrefix(line, "data: ") { + jsonData = strings.TrimPrefix(line, "data: ") + isDataLine = true + } else { + // Handle raw JSON errors (without "data: " prefix) + jsonData = line + isDataLine = false + } + + // Skip empty data + if strings.TrimSpace(jsonData) == "" { + continue + } + + // First, check if this is an error response + var errorCheck map[string]interface{} + if err := json.Unmarshal([]byte(jsonData), &errorCheck); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse stream data as JSON: %v", err)) + continue + } + + // Handle error responses + if _, hasError := errorCheck["error"]; hasError { + var openAIError OpenAIError + if err := json.Unmarshal([]byte(jsonData), &openAIError); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse error response: %v", err)) + continue + } + + // Send error through channel + errorResponse := &schemas.BifrostStream{ + BifrostError: &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Type: &openAIError.Error.Type, + Code: &openAIError.Error.Code, + Message: openAIError.Error.Message, + Param: openAIError.Error.Param, + }, + }, + } + + if openAIError.EventID != "" { + errorResponse.BifrostError.EventID = &openAIError.EventID + } + if openAIError.Error.EventID != "" { + errorResponse.BifrostError.Error.EventID = &openAIError.Error.EventID + } + + select { + case responseChan <- errorResponse: + case <-ctx.Done(): + } + return // Stop processing on error + } + + // Only process as regular response if it's a proper data line + if !isDataLine { + logger.Warn(fmt.Sprintf("Received non-data line that's not an error: %s", line)) + continue + } + + // Parse into bifrost response + var response schemas.BifrostResponse + if err := json.Unmarshal([]byte(jsonData), &response); err != nil { + logger.Warn(fmt.Sprintf("Failed to parse stream response: %v", err)) + continue + } + + // Handle usage-only chunks (when stream_options include_usage is true) + if len(response.Choices) == 0 && response.Usage != nil { + // This is a usage information chunk at the end of stream + if params != nil { + response.ExtraFields.Params = *params + } + response.ExtraFields.Provider = providerType + + ProcessAndSendResponse(ctx, postHookRunner, &response, responseChan) + continue + } + + // Skip empty responses or responses without choices + if len(response.Choices) == 0 { + continue + } + + // Handle finish reason in the final chunk + choice := response.Choices[0] + if choice.FinishReason != nil && *choice.FinishReason != "" { + // This is the final chunk with finish reason + if params != nil { + response.ExtraFields.Params = *params + } + response.ExtraFields.Provider = providerType + + ProcessAndSendResponse(ctx, postHookRunner, &response, responseChan) + + // End stream processing after finish reason + break + } + + // Handle regular content chunks + if choice.Delta.Content != nil || len(choice.Delta.ToolCalls) > 0 { + if params != nil { + response.ExtraFields.Params = *params + } + response.ExtraFields.Provider = providerType + + ProcessAndSendResponse(ctx, postHookRunner, &response, responseChan) + } + } + + // Handle scanner errors + if err := scanner.Err(); err != nil { + logger.Warn(fmt.Sprintf("Error reading stream: %v", err)) + + // Send scanner error through channel + errorResponse := &schemas.BifrostStream{ + BifrostError: &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: "Error reading stream", + Error: err, + }, + }, + } + + select { + case responseChan <- errorResponse: + case <-ctx.Done(): + } + } + }() + + return responseChan, nil +} diff --git a/core/providers/sgl.go b/core/providers/sgl.go new file mode 100644 index 0000000000..74479cce8a --- /dev/null +++ b/core/providers/sgl.go @@ -0,0 +1,238 @@ +// Package providers implements various LLM providers and their utility functions. +// This file contains the SGL provider implementation. +package providers + +import ( + "context" + "fmt" + "net/http" + "strings" + "sync" + "time" + + "github.com/goccy/go-json" + + schemas "github.com/maximhq/bifrost/core/schemas" + "github.com/valyala/fasthttp" +) + +// SGLResponse represents the response structure from the SGL API. +type SGLResponse struct { + ID string `json:"id"` + Object string `json:"object"` + Choices []schemas.BifrostResponseChoice `json:"choices"` + Model string `json:"model"` + Created int `json:"created"` + Usage schemas.LLMUsage `json:"usage"` +} + +// sglResponsePool provides a pool for SGL response objects. +var sglResponsePool = sync.Pool{ + New: func() interface{} { + return &SGLResponse{} + }, +} + +// acquireSGLResponse gets a SGL response from the pool and resets it. +func acquireSGLResponse() *SGLResponse { + resp := sglResponsePool.Get().(*SGLResponse) + *resp = SGLResponse{} // Reset the struct + return resp +} + +// releaseSGLResponse returns a SGL response to the pool. +func releaseSGLResponse(resp *SGLResponse) { + if resp != nil { + sglResponsePool.Put(resp) + } +} + +// SGLProvider implements the Provider interface for SGL's API. +type SGLProvider struct { + logger schemas.Logger // Logger for provider operations + client *fasthttp.Client // HTTP client for API requests + streamClient *http.Client // HTTP client for streaming requests + networkConfig schemas.NetworkConfig // Network configuration including extra headers +} + +// NewSGLProvider creates a new SGL provider instance. +// It initializes the HTTP client with the provided configuration and sets up response pools. +// The client is configured with timeouts, concurrency limits, and optional proxy settings. +func NewSGLProvider(config *schemas.ProviderConfig, logger schemas.Logger) (*SGLProvider, error) { + config.CheckAndSetDefaults() + + client := &fasthttp.Client{ + ReadTimeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + WriteTimeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + MaxConnsPerHost: config.ConcurrencyAndBufferSize.BufferSize, + } + + // Initialize streaming HTTP client + streamClient := &http.Client{ + Timeout: time.Second * time.Duration(config.NetworkConfig.DefaultRequestTimeoutInSeconds), + } + + // Pre-warm response pools + for range config.ConcurrencyAndBufferSize.Concurrency { + sglResponsePool.Put(&SGLResponse{}) + } + + // Configure proxy if provided + client = configureProxy(client, config.ProxyConfig, logger) + + config.NetworkConfig.BaseURL = strings.TrimRight(config.NetworkConfig.BaseURL, "/") + + // BaseURL is required for SGLang + if config.NetworkConfig.BaseURL == "" { + return nil, fmt.Errorf("base_url is required for sgl provider") + } + + return &SGLProvider{ + logger: logger, + client: client, + streamClient: streamClient, + networkConfig: config.NetworkConfig, + }, nil +} + +// GetProviderKey returns the provider identifier for SGL. +func (provider *SGLProvider) GetProviderKey() schemas.ModelProvider { + return schemas.SGL +} + +// TextCompletion is not supported by the SGL provider. +func (provider *SGLProvider) TextCompletion(ctx context.Context, model, key, text string, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + return nil, newUnsupportedOperationError("text completion", "sgl") +} + +// ChatCompletion performs a chat completion request to the SGL API. +func (provider *SGLProvider) ChatCompletion(ctx context.Context, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + }, preparedParams) + + jsonBody, err := json.Marshal(requestBody) + if err != nil { + return nil, &schemas.BifrostError{ + IsBifrostError: true, + Error: schemas.ErrorField{ + Message: schemas.ErrProviderJSONMarshaling, + Error: err, + }, + } + } + + // Create request + req := fasthttp.AcquireRequest() + resp := fasthttp.AcquireResponse() + defer fasthttp.ReleaseRequest(req) + defer fasthttp.ReleaseResponse(resp) + + // Set any extra headers from network config + setExtraHeaders(req, provider.networkConfig.ExtraHeaders, nil) + + req.SetRequestURI(provider.networkConfig.BaseURL + "/v1/chat/completions") + req.Header.SetMethod("POST") + req.Header.SetContentType("application/json") + if key != "" { + req.Header.Set("Authorization", "Bearer "+key) + } + + req.SetBody(jsonBody) + + // Make request + bifrostErr := makeRequestWithContext(ctx, provider.client, req, resp) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Handle error response + if resp.StatusCode() != fasthttp.StatusOK { + provider.logger.Debug(fmt.Sprintf("error from sgl provider: %s", string(resp.Body()))) + + var errorResp map[string]interface{} + bifrostErr := handleProviderAPIError(resp, &errorResp) + bifrostErr.Error.Message = fmt.Sprintf("SGL error: %v", errorResp) + return nil, bifrostErr + } + + responseBody := resp.Body() + + // Pre-allocate response structs from pools + response := acquireSGLResponse() + defer releaseSGLResponse(response) + + // Use enhanced response handler with pre-allocated response + rawResponse, bifrostErr := handleProviderResponse(responseBody, response) + if bifrostErr != nil { + return nil, bifrostErr + } + + // Create final response + bifrostResponse := &schemas.BifrostResponse{ + ID: response.ID, + Object: response.Object, + Choices: response.Choices, + Model: response.Model, + Created: response.Created, + Usage: &response.Usage, + ExtraFields: schemas.BifrostResponseExtraFields{ + Provider: schemas.SGL, + RawResponse: rawResponse, + }, + } + + if params != nil { + bifrostResponse.ExtraFields.Params = *params + } + + return bifrostResponse, nil +} + +// Embedding is not supported by the SGL provider. +func (provider *SGLProvider) Embedding(ctx context.Context, model string, key string, input *schemas.EmbeddingInput, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { + return nil, newUnsupportedOperationError("embedding", "sgl") +} + +// ChatCompletionStream performs a streaming chat completion request to the SGL API. +// It supports real-time streaming of responses using Server-Sent Events (SSE). +// Uses SGL's OpenAI-compatible streaming format. +// Returns a channel containing BifrostResponse objects representing the stream or an error if the request fails. +func (provider *SGLProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + // Prepare SGL headers (SGL typically doesn't require authorization, but we include it if provided) + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Only add Authorization header if key is provided (SGL can run without auth) + if key != "" { + headers["Authorization"] = "Bearer " + key + } + + // Use shared OpenAI-compatible streaming logic + return handleOpenAIStreaming( + ctx, + provider.streamClient, + provider.networkConfig.BaseURL+"/v1/chat/completions", + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.SGL, + params, + postHookRunner, + provider.logger, + ) +} diff --git a/core/providers/utils.go b/core/providers/utils.go index 9899755f60..856233139b 100644 --- a/core/providers/utils.go +++ b/core/providers/utils.go @@ -560,7 +560,7 @@ func newUnsupportedOperationError(operation string, providerName string) *schema // - Short texts // - Different languages and tokenization methods // - Various model-specific tokenizers -// +// // The actual token count may vary significantly based on tokenization method, // language, and text structure. Consider omitting token metrics when precise // counts are unavailable to avoid misleading usage information. @@ -575,3 +575,39 @@ func approximateTokenCount(texts []string) int { } return totalInputTokens } + +// processAndSendResponse handles post-hook processing and sends the response to the channel. +// This utility reduces code duplication across streaming implementations by encapsulating +// the common pattern of running post hooks, handling errors, and sending responses with +// proper context cancellation handling. +func ProcessAndSendResponse( + ctx context.Context, + postHookRunner schemas.PostHookRunner, + response *schemas.BifrostResponse, + responseChan chan *schemas.BifrostStream, +) { + // Run post hooks on the response + processedResponse, bifrostErr := postHookRunner(&ctx, response, nil) + if bifrostErr != nil { + // Send error response and close channel + errorResponse := &schemas.BifrostStream{ + BifrostError: bifrostErr, + } + + // Try to send error response before closing + select { + case responseChan <- errorResponse: + case <-ctx.Done(): + } + return + } + + // Send the response + select { + case responseChan <- &schemas.BifrostStream{ + BifrostResponse: processedResponse, + }: + case <-ctx.Done(): + return + } +} diff --git a/core/providers/vertex.go b/core/providers/vertex.go index c739f00c38..71c5c937cc 100644 --- a/core/providers/vertex.go +++ b/core/providers/vertex.go @@ -288,7 +288,7 @@ func (provider *VertexProvider) ChatCompletion(ctx context.Context, model, key s Created: response.Created, ServiceTier: response.ServiceTier, SystemFingerprint: response.SystemFingerprint, - Usage: response.Usage, + Usage: &response.Usage, ExtraFields: schemas.BifrostResponseExtraFields{ Provider: schemas.Vertex, RawResponse: rawResponse, @@ -307,3 +307,102 @@ func (provider *VertexProvider) ChatCompletion(ctx context.Context, model, key s func (provider *VertexProvider) Embedding(ctx context.Context, model string, key string, input *schemas.EmbeddingInput, params *schemas.ModelParameters) (*schemas.BifrostResponse, *schemas.BifrostError) { return nil, newUnsupportedOperationError("embedding", "vertex") } + +// ChatCompletionStream performs a streaming chat completion request to the Vertex API. +// It supports both OpenAI-style streaming (for non-Claude models) and Anthropic-style streaming (for Claude models). +// Returns a channel of BifrostResponse objects for streaming results or an error if the request fails. +func (provider *VertexProvider) ChatCompletionStream(ctx context.Context, postHookRunner schemas.PostHookRunner, model, key string, messages []schemas.BifrostMessage, params *schemas.ModelParameters) (chan *schemas.BifrostStream, *schemas.BifrostError) { + projectID := provider.meta.GetProjectID() + if projectID == nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "project ID is not set", + }, + } + } + + region := provider.meta.GetRegion() + if region == nil { + return nil, &schemas.BifrostError{ + IsBifrostError: false, + Error: schemas.ErrorField{ + Message: "region is not set in meta config", + }, + } + } + + if strings.Contains(model, "claude") { + // Use Anthropic-style streaming for Claude models + formattedMessages, preparedParams := prepareAnthropicChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + if _, exists := requestBody["anthropic_version"]; !exists { + requestBody["anthropic_version"] = "vertex-2023-10-16" + } + + delete(requestBody, "model") + delete(requestBody, "region") + + url := fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1/projects/%s/locations/%s/publishers/anthropic/models/%s:streamRawPredict", *region, *projectID, *region, model) + + // Prepare headers for Vertex Anthropic + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Use shared Anthropic streaming logic + return handleAnthropicStreaming( + ctx, + provider.client, + url, + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Vertex, + params, + postHookRunner, + provider.logger, + ) + } else { + // Use OpenAI-style streaming for non-Claude models + formattedMessages, preparedParams := prepareOpenAIChatRequest(messages, params) + + requestBody := mergeConfig(map[string]interface{}{ + "model": model, + "messages": formattedMessages, + "stream": true, + }, preparedParams) + + delete(requestBody, "region") + + url := fmt.Sprintf("https://%s-aiplatform.googleapis.com/v1beta1/projects/%s/locations/%s/endpoints/openapi/chat/completions", *region, *projectID, *region) + + // Prepare headers for Vertex OpenAI-compatible + headers := map[string]string{ + "Content-Type": "application/json", + "Accept": "text/event-stream", + "Cache-Control": "no-cache", + } + + // Use shared OpenAI streaming logic + return handleOpenAIStreaming( + ctx, + provider.client, + url, + requestBody, + headers, + provider.networkConfig.ExtraHeaders, + schemas.Vertex, + params, + postHookRunner, + provider.logger, + ) + } +} diff --git a/core/schemas/bifrost.go b/core/schemas/bifrost.go index 33d12afde4..c75e039dbc 100644 --- a/core/schemas/bifrost.go +++ b/core/schemas/bifrost.go @@ -45,6 +45,8 @@ const ( Vertex ModelProvider = "vertex" Mistral ModelProvider = "mistral" Ollama ModelProvider = "ollama" + Groq ModelProvider = "groq" + SGL ModelProvider = "sgl" ) //* Request Structs @@ -87,8 +89,8 @@ type Fallback struct { // your request to the model. Bifrost follows a standard set of parameters which // mapped to the provider's parameters. type ModelParameters struct { - ToolChoice *ToolChoice `json:"tool_choice,omitempty"` - Tools *[]Tool `json:"tools,omitempty"` + ToolChoice *ToolChoice `json:"tool_choice,omitempty"` // Whether to call a tool + Tools *[]Tool `json:"tools,omitempty"` // Tools to use Temperature *float64 `json:"temperature,omitempty"` // Controls randomness in the output TopP *float64 `json:"top_p,omitempty"` // Controls diversity via nucleus sampling TopK *int `json:"top_k,omitempty"` // Controls diversity via top-k sampling @@ -300,13 +302,13 @@ type BifrostResponse struct { ID string `json:"id,omitempty"` Object string `json:"object,omitempty"` // text.completion, chat.completion, or embedding Choices []BifrostResponseChoice `json:"choices,omitempty"` + Embedding [][]float32 `json:"data,omitempty"` // Maps to "data" field in provider responses (e.g., OpenAI embedding format) Model string `json:"model,omitempty"` Created int `json:"created,omitempty"` // The Unix timestamp (in seconds). ServiceTier *string `json:"service_tier,omitempty"` SystemFingerprint *string `json:"system_fingerprint,omitempty"` - Usage LLMUsage `json:"usage,omitempty"` + Usage *LLMUsage `json:"usage,omitempty"` ExtraFields BifrostResponseExtraFields `json:"extra_fields"` - Embedding [][]float32 `json:"data,omitempty"` // Maps to "data" field in provider responses (e.g., OpenAI embedding format) } // LLMUsage represents token usage information @@ -401,13 +403,37 @@ type Annotation struct { Citation Citation `json:"url_citation"` } -// BifrostResponseChoice represents a choice in the completion result +// BifrostResponseChoice represents a choice in the completion result. +// This struct can represent either a streaming or non-streaming response choice. +// IMPORTANT: Only one of BifrostNonStreamResponseChoice or BifrostStreamResponseChoice +// should be non-nil at a time. type BifrostResponseChoice struct { - Index int `json:"index"` - Message BifrostMessage `json:"message"` - FinishReason *string `json:"finish_reason,omitempty"` - StopString *string `json:"stop,omitempty"` - LogProbs *LogProbs `json:"log_probs,omitempty"` + Index int `json:"index"` + FinishReason *string `json:"finish_reason,omitempty"` + + *BifrostNonStreamResponseChoice + *BifrostStreamResponseChoice +} + +// BifrostNonStreamResponseChoice represents a choice in the non-stream response +type BifrostNonStreamResponseChoice struct { + Message BifrostMessage `json:"message"` + StopString *string `json:"stop,omitempty"` + LogProbs *LogProbs `json:"log_probs,omitempty"` +} + +// BifrostStreamResponseChoice represents a choice in the stream response +type BifrostStreamResponseChoice struct { + Delta BifrostStreamDelta `json:"delta"` // Partial message info +} + +// BifrostStreamDelta represents a delta in the stream response +type BifrostStreamDelta struct { + Role *string `json:"role,omitempty"` // Only in the first chunk + Content *string `json:"content,omitempty"` // May be empty string or null + Thought *string `json:"thought,omitempty"` // May be empty string or null + Refusal *string `json:"refusal,omitempty"` // Refusal content if any + ToolCalls []ToolCall `json:"tool_calls,omitempty"` // If tool calls used (supports incremental updates) } // BifrostResponseExtraFields contains additional fields in a response. @@ -424,6 +450,11 @@ const ( RequestCancelled = "request_cancelled" ) +type BifrostStream struct { + *BifrostResponse + *BifrostError +} + // BifrostError represents an error from the Bifrost system. // // PLUGIN DEVELOPERS: When creating BifrostError in PreHook or PostHook, you can set AllowFallbacks: diff --git a/core/schemas/provider.go b/core/schemas/provider.go index 53fcc3bba5..8b13b3c259 100644 --- a/core/schemas/provider.go +++ b/core/schemas/provider.go @@ -14,6 +14,7 @@ const ( DefaultRequestTimeoutInSeconds = 30 DefaultBufferSize = 100 DefaultConcurrency = 10 + DefaultStreamBufferSize = 100 ) // Pre-defined errors for provider operations @@ -150,6 +151,8 @@ func (config *ProviderConfig) CheckAndSetDefaults() { } } +type PostHookRunner func(ctx *context.Context, result *BifrostResponse, err *BifrostError) (*BifrostResponse, *BifrostError) + // Provider defines the interface for AI model providers. type Provider interface { // GetProviderKey returns the provider's identifier @@ -158,6 +161,8 @@ type Provider interface { TextCompletion(ctx context.Context, model, key, text string, params *ModelParameters) (*BifrostResponse, *BifrostError) // ChatCompletion performs a chat completion request ChatCompletion(ctx context.Context, model, key string, messages []BifrostMessage, params *ModelParameters) (*BifrostResponse, *BifrostError) + // ChatCompletionStream performs a chat completion stream request + ChatCompletionStream(ctx context.Context, postHookRunner PostHookRunner, model, key string, messages []BifrostMessage, params *ModelParameters) (chan *BifrostStream, *BifrostError) // Embedding performs an embedding request Embedding(ctx context.Context, model string, key string, input *EmbeddingInput, params *ModelParameters) (*BifrostResponse, *BifrostError) } diff --git a/core/utils.go b/core/utils.go index 6e649b12bf..8aa329d5c5 100644 --- a/core/utils.go +++ b/core/utils.go @@ -14,7 +14,7 @@ func Ptr[T any](v T) *T { // providerRequiresKey returns true if the given provider requires an API key for authentication. // Some providers like Vertex and Ollama are keyless and don't require API keys. func providerRequiresKey(providerKey schemas.ModelProvider) bool { - return providerKey != schemas.Vertex && providerKey != schemas.Ollama + return providerKey != schemas.Vertex && providerKey != schemas.Ollama && providerKey != schemas.SGL } // calculateBackoff implements exponential backoff with jitter for retry attempts. @@ -66,3 +66,18 @@ func newBifrostErrorFromMsg(message string) *schemas.BifrostError { }, } } + +// newBifrostMessageChan creates a channel that sends a bifrost response. +// It is used to send a bifrost response to the client. +func newBifrostMessageChan(message *schemas.BifrostResponse) chan *schemas.BifrostStream { + ch := make(chan *schemas.BifrostStream) + + go func() { + defer close(ch) + ch <- &schemas.BifrostStream{ + BifrostResponse: message, + } + }() + + return ch +} diff --git a/docs/architecture/plugins.md b/docs/architecture/plugins.md index f692eef6d0..ac47268d88 100644 --- a/docs/architecture/plugins.md +++ b/docs/architecture/plugins.md @@ -190,6 +190,74 @@ sequenceDiagram Bifrost-->>Client: Cached Response ``` +#### **Streaming Response Flow** + +For streaming responses, the plugin pipeline executes post-hooks for every delta/chunk received from the provider: + +```mermaid +sequenceDiagram + participant Client + participant Bifrost + participant Plugin1 + participant Plugin2 + participant Provider + + Client->>Bifrost: Stream Request + Bifrost->>Plugin1: PreHook(request) + Plugin1-->>Bifrost: modified request + Bifrost->>Plugin2: PreHook(request) + Plugin2-->>Bifrost: modified request + Bifrost->>Provider: Stream API Call + + loop For Each Delta + Provider-->>Bifrost: stream delta + Bifrost->>Plugin2: PostHook(delta) + Plugin2-->>Bifrost: modified delta + Bifrost->>Plugin1: PostHook(delta) + Plugin1-->>Bifrost: modified delta + Bifrost-->>Client: Send Delta + end + + Provider-->>Bifrost: final chunk (finish reason) + Bifrost->>Plugin2: PostHook(final) + Plugin2-->>Bifrost: modified final + Bifrost->>Plugin1: PostHook(final) + Plugin1-->>Bifrost: modified final + Bifrost-->>Client: Final Chunk +``` + +**Streaming Execution Characteristics:** + +1. **Delta Processing:** + - Each stream delta (chunk) goes through all post-hooks + - Plugins can modify/transform each delta before it reaches the client + - Deltas can contain: text content, tool calls, role changes, or usage info + +2. **Special Delta Types:** + - **Start Event:** Initial delta with role information + - **Content Delta:** Regular text or tool call content + - **Usage Update:** Token usage statistics (if enabled) + - **Final Chunk:** Contains finish reason and any final metadata + +3. **Plugin Considerations:** + - Plugins must handle streaming responses efficiently + - Each delta should be processed quickly to maintain stream responsiveness + - Plugins can track state across deltas using context + - Heavy processing should be done asynchronously + +4. **Error Handling:** + - If a post-hook returns an error, it's sent as an error stream chunk + - Stream is terminated after error chunks + - Plugins can recover from errors by providing valid responses + +5. **Performance Optimization:** + - Lightweight delta processing to minimize latency + - Object pooling for common data structures + - Non-blocking operations for logging and metrics + - Efficient memory management for stream processing + +> **📖 Streaming Details:** [HTTP Transport →](../usage/http-transport/endpoints.md#streaming-responses) + **Short-Circuit Rules:** - **Provider Skipped:** When plugin returns short-circuit response/error diff --git a/docs/contributing/plugin.md b/docs/contributing/plugin.md index 08af108ee5..523cb221d0 100644 --- a/docs/contributing/plugin.md +++ b/docs/contributing/plugin.md @@ -805,6 +805,253 @@ func (p *AsyncPlugin) PostHook( } ``` +### **Handling Streaming Responses** + +When implementing plugins, it's crucial to handle both streaming and non-streaming responses correctly. The PostHook method will be called differently depending on the response type: + +```go +func (p *YourPlugin) PostHook( + ctx *context.Context, + result *schemas.BifrostResponse, + err *schemas.BifrostError, +) (*schemas.BifrostResponse, *schemas.BifrostError, error) { + // First check if this is a streaming response + isStreaming := false + if result != nil && len(result.Choices) > 0 { + // Check if any choice has BifrostStreamResponseChoice + for _, choice := range result.Choices { + if choice.BifrostStreamResponseChoice != nil { + isStreaming = true + break + } + } + } + + if isStreaming { + // Handle streaming response - this will be called for EACH delta + // Each delta can contain: + // 1. Role changes (initial delta) + // 2. Content chunks + // 3. Tool call chunks + // 4. Usage information + // 5. Finish reason (final delta) + + if result != nil && len(result.Choices) > 0 { + choice := result.Choices[0] + if choice.BifrostStreamResponseChoice != nil { + delta := choice.BifrostStreamResponseChoice.Delta + + // Handle different delta types + switch { + case delta.Role != nil: + // Initial delta with role + p.handleRoleDelta(delta.Role) + + case delta.Content != nil: + // Content delta + p.handleContentDelta(delta.Content) + + case len(delta.ToolCalls) > 0: + // Tool call delta + p.handleToolCallDelta(delta.ToolCalls) + + case choice.FinishReason != nil: + // Final delta with finish reason + p.handleFinishDelta(choice.FinishReason) + } + } + } + } else { + // Handle regular non-streaming response + // This is called once with the complete response + if result != nil { + p.handleCompleteResponse(result) + } + } + + return result, err, nil +} + +// Example delta handlers +func (p *YourPlugin) handleRoleDelta(role *string) { + // Handle initial role delta + // This is the first delta in a stream, indicating the start + if role != nil { + // Initialize any stream-specific state + p.streamState = NewStreamState(*role) + } +} + +func (p *YourPlugin) handleContentDelta(content *string) { + // Handle content delta + // This contains the actual streamed text + if content != nil { + // Process the content chunk + // Remember: each chunk is a small piece of the full response + p.streamState.AppendContent(*content) + } +} + +func (p *YourPlugin) handleToolCallDelta(toolCalls []schemas.ToolCall) { + // Handle tool call delta + // This contains function call information + for _, call := range toolCalls { + if call.Function.Name != nil { + // Process function name + p.streamState.AddToolCall(*call.Function.Name) + } + if call.Function.Arguments != "" { + // Process function arguments + // Note: Arguments might come in multiple chunks + p.streamState.AppendToolCallArgs(call.Function.Arguments) + } + } +} + +func (p *YourPlugin) handleFinishDelta(reason *string) { + // Handle finish reason delta + // This is the last delta in a stream + if reason != nil { + // Finalize any stream processing + p.streamState.Complete(*reason) + } +} +``` + +**Key Considerations for Streaming Plugins:** + +1. **Performance Critical:** + - PostHook runs for EVERY delta in streaming responses + - Keep processing lightweight and efficient + - Use object pooling for frequently allocated structures + - Avoid blocking operations + +2. **State Management:** + - Use context to maintain state across deltas + - Consider using sync.Pool for stream state objects + - Clean up state when finish reason is received + - Handle unexpected stream termination + +3. **Error Handling:** + - Return errors only for critical failures + - Consider recovering from non-critical errors + - Maintain stream integrity during error recovery + - Document error handling behavior + +4. **Testing:** + + ```go + func TestStreamingPlugin(t *testing.T) { + plugin := NewYourPlugin() + ctx := context.Background() + + // Test role delta + roleDelta := createStreamResponse("assistant", nil, nil) + result, err, _ := plugin.PostHook(&ctx, roleDelta, nil) + assert.NotNil(t, result) + assert.Nil(t, err) + + // Test content delta + contentDelta := createStreamResponse("", stringPtr("Hello"), nil) + result, err, _ = plugin.PostHook(&ctx, contentDelta, nil) + assert.NotNil(t, result) + assert.Nil(t, err) + + // Test finish delta + finishDelta := createStreamResponse("", nil, stringPtr("stop")) + result, err, _ = plugin.PostHook(&ctx, finishDelta, nil) + assert.NotNil(t, result) + assert.Nil(t, err) + } + + func createStreamResponse(role string, content *string, finish *string) *schemas.BifrostResponse { + resp := &schemas.BifrostResponse{ + Choices: []schemas.BifrostResponseChoice{ + { + BifrostStreamResponseChoice: &schemas.BifrostStreamResponseChoice{ + Delta: schemas.BifrostStreamDelta{}, + }, + }, + }, + } + + if role != "" { + resp.Choices[0].BifrostStreamResponseChoice.Delta.Role = &role + } + if content != nil { + resp.Choices[0].BifrostStreamResponseChoice.Delta.Content = content + } + if finish != nil { + resp.Choices[0].FinishReason = finish + } + + return resp + } + ``` + +5. **Documentation:** + - Document streaming behavior in plugin README + - Explain state management approach + - List supported delta types + - Provide streaming-specific examples + +> **💡 Tip**: Use the `isStreamingResponse` helper to reliably detect streaming responses: + +> ```go +> func isStreamingResponse(result *schemas.BifrostResponse) bool { +> if result == nil || len(result.Choices) == 0 { +> return false +> } +> for _, choice := range result.Choices { +> if choice.BifrostStreamResponseChoice != nil { +> return true +> } +> } +> return false +> } +> ``` + +--- + +## 🔒 **Security Best Practices** + +### **1. Input Validation** + +- **Request Validation** - Ensure all incoming requests are valid and contain necessary fields. +- **API Key Management** - Securely manage and validate API keys. +- **Rate Limiting** - Implement robust rate limiting to prevent abuse. + +### **2. Output Protection** + +- **Sensitive Data** - Do not log or expose sensitive data in plugin logs. +- **Error Messages** - Return generic error messages to the user, not detailed technical errors. +- **Response Integrity** - Ensure responses are not tampered with and are in the expected format. + +### **3. Resource Management** + +- **Memory** - Be mindful of memory usage. Use object pooling for frequently allocated structures. +- **Connections** - Manage open connections to providers and external services. +- **Cleanup** - Properly clean up resources in the `Cleanup()` method. + +### **4. Error Handling** + +- **Graceful Degradation** - Implement graceful degradation for critical errors. +- **Recovery** - Use fallback mechanisms and retry strategies for transient failures. +- **Documentation** - Clearly document error handling patterns and recovery mechanisms. + +### **5. Logging** + +- **Contextual Information** - Log relevant information (request ID, user ID, etc.) for debugging. +- **Sensitive Data** - Do not log sensitive data (API keys, tokens, etc.). +- **Performance** - Log performance metrics and latency. + +### **6. Testing** + +- **Unit Tests** - Comprehensive test coverage for error scenarios. +- **Integration Tests** - Tests with real Bifrost instance to verify error handling. +- **Error Scenarios** - Tests for various error conditions and recovery paths. + + --- ## ✅ **Plugin Submission Checklist** diff --git a/docs/quickstart/go-package.md b/docs/quickstart/go-package.md index 5af064102c..61c987859b 100644 --- a/docs/quickstart/go-package.md +++ b/docs/quickstart/go-package.md @@ -202,7 +202,7 @@ response, err := client.ChatCompletionRequest(context.Background(), schemas.Chat | What You Want | Where to Go | Time | | ---------------------------- | ------------------------------------------------------- | --------- | | **Complete setup guide** | [📖 Go Package Usage](../usage/go-package/) | 10 min | -| **Add all 8+ providers** | [🔗 Providers](../providers.md) | 5 min | +| **Add all 10+ providers** | [🔗 Providers](../providers.md) | 5 min | | **Production configuration** | [👤 Account Management](../usage/go-package/account.md) | 15 min | | **Custom plugins** | [🔌 Plugins](../usage/go-package/plugins.md) | 20 min | | **MCP integration** | [🛠️ MCP](../usage/go-package/mcp.md) | 15 min | diff --git a/docs/usage/go-package/README.md b/docs/usage/go-package/README.md index 3beb4175e9..ee0614bb24 100644 --- a/docs/usage/go-package/README.md +++ b/docs/usage/go-package/README.md @@ -161,7 +161,7 @@ If you need to use Bifrost from non-Go languages (Python, Node.js, etc.) or in m ### **Production Setup** - [Error Handling](../errors.md) - Error types and recovery patterns -- [Provider Configuration](../providers.md) - All 8+ providers setup +- [Provider Configuration](../providers.md) - All 10+ providers setup ### **Development** diff --git a/docs/usage/go-package/account.md b/docs/usage/go-package/account.md index 8e8c4e1d44..a8d2e28118 100644 --- a/docs/usage/go-package/account.md +++ b/docs/usage/go-package/account.md @@ -479,7 +479,7 @@ func TestAccountWithBifrost(t *testing.T) { ## 📚 Related Documentation - **[🤖 Bifrost Client](./bifrost-client.md)** - Using your Account with the client -- **[🔗 Provider Configuration](../providers.md)** - Settings for all 8+ providers +- **[🔗 Provider Configuration](../providers.md)** - Settings for all 10+ providers - **[🔑 Key Management](../key-management.md)** - Advanced key rotation and distribution - **[🌐 HTTP Transport](../../quickstart/http-transport.md)** - JSON-based configuration alternative diff --git a/docs/usage/go-package/schemas.md b/docs/usage/go-package/schemas.md index 0039b48940..1089dc2537 100644 --- a/docs/usage/go-package/schemas.md +++ b/docs/usage/go-package/schemas.md @@ -559,6 +559,7 @@ providers := []schemas.ModelProvider{ schemas.Cohere, // Cohere models schemas.Mistral, // Mistral models schemas.Ollama, // Local Ollama + schemas.Groq, // Groq models } // Popular model choices diff --git a/docs/usage/http-transport/endpoints.md b/docs/usage/http-transport/endpoints.md index 2d1ae5c3f3..5219f1edaf 100644 --- a/docs/usage/http-transport/endpoints.md +++ b/docs/usage/http-transport/endpoints.md @@ -84,6 +84,40 @@ curl -X POST http://localhost:8080/v1/chat/completions \ }' ``` +### **Streaming Responses** + +To receive a stream of partial responses, set `"stream": true` in your request. The response will be a `text/event-stream` of Server-Sent Events (SSE). + +**Request with Streaming:** + +```json +{ + "model": "openai/gpt-4o-mini", + "messages": [{"role": "user", "content": "Write a short story."}], + "stream": true +} +``` + +**SSE Event Stream:** + +Each event in the stream is a JSON object prefixed with `data: `. The stream is terminated by a `[DONE]` message. + +``` +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]} + +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":"Once"},"finish_reason":null}]} + +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":" upon"},"finish_reason":null}]} + +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}]} + +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{"content":" time"},"finish_reason":null}]} + +data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"gpt-4o-mini","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]} + +data: [DONE] +``` + ### **POST /v1/text/completions** Text completion endpoint for simple text generation. diff --git a/docs/usage/providers.md b/docs/usage/providers.md index 55559315bf..cdae51ed5f 100644 --- a/docs/usage/providers.md +++ b/docs/usage/providers.md @@ -6,14 +6,16 @@ Multi-provider support with unified API across all AI providers. Switch between | Provider | Models | Features | Enterprise | | --------------------- | -------------------------------------- | ----------------------------------- | ---------- | -| **🤖 OpenAI** | GPT-4o, GPT-4 Turbo, GPT-4, GPT-3.5 | Function calling, streaming, vision | ✅ | -| **🧠 Anthropic** | Claude 3.5 Sonnet, Claude 3 Opus/Haiku | Tool use, vision, 200K context | ✅ | -| **☁️ Azure OpenAI** | Enterprise GPT deployment | Private networks, compliance | ✅ | -| **🏛️ Amazon Bedrock** | Claude, Titan, Cohere, Meta | Multi-model platform, VPC | ✅ | -| **🔍 Google Vertex** | Gemini Pro, PaLM, Codey | Enterprise AI platform | ✅ | -| **💬 Cohere** | Command, Embed, Rerank | Enterprise NLP, multilingual | ✅ | -| **🌟 Mistral** | Mistral Large, Medium, Small | European AI, cost-effective | ✅ | -| **🏠 Ollama** | Llama, Mistral, CodeLlama | Local deployment, privacy | ✅ | +| **OpenAI** | GPT-4o, GPT-4 Turbo, GPT-4, GPT-3.5 | Function calling, streaming, vision | ✅ | +| **Anthropic** | Claude 3.5 Sonnet, Claude 3 Opus/Haiku | Tool use, vision, 200K context | ✅ | +| **Azure OpenAI** | Enterprise GPT deployment | Private networks, compliance | ✅ | +| **Amazon Bedrock** | Claude, Titan, Cohere, Meta | Multi-model platform, VPC | ✅ | +| **Google Vertex** | Gemini Pro, PaLM, Codey | Enterprise AI platform | ✅ | +| **Cohere** | Command, Embed, Rerank | Enterprise NLP, multilingual | ✅ | +| **Mistral** | Mistral Large, Medium, Small | European AI, cost-effective | ✅ | +| **Ollama** | Llama, Mistral, CodeLlama | Local deployment, privacy | ✅ | +| **Groq** | Mixtral, Llama, Gemma | Enterprise AI platform | ✅ | +| **SGLang** | Qwen | Enterprise AI platform | ✅ | --- @@ -457,15 +459,15 @@ func (a *MyAccount) GetKeysForProvider(provider schemas.ModelProvider) ([]schema ## 📋 Provider Features Matrix -| Feature | OpenAI | Anthropic | Azure | Bedrock | Vertex | Cohere | Mistral | Ollama | -| -------------------- | ------ | --------- | ----- | ------- | ------ | ------ | ------- | ------ | -| **Chat Completion** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| **Function Calling** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | -| **Streaming** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | -| **Vision** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | -| **JSON Mode** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | -| **Custom Base URL** | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | -| **Proxy Support** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| Feature | OpenAI | Anthropic | Azure | Bedrock | Vertex | Cohere | Mistral | Ollama | Groq | +| -------------------- | ------ | --------- | ----- | ------- | ------ | ------ | ------- | ------ | ------ | +| **Chat Completion** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **Function Calling** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | +| **Streaming** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | +| **Vision** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ❌ | +| **JSON Mode** | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | +| **Custom Base URL** | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | +| **Proxy Support** | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | --- diff --git a/tests/core-providers/README.md b/tests/core-providers/README.md index 85d3556e39..d74bfeca2b 100644 --- a/tests/core-providers/README.md +++ b/tests/core-providers/README.md @@ -12,6 +12,7 @@ This directory contains comprehensive tests for all Bifrost AI providers, ensuri - **Google Vertex AI** - Google Cloud's AI platform - **Mistral** - Mistral AI models with vision capabilities - **Ollama** - Local LLM serving platform +- **Groq** - Groq models ## 🏃‍♂️ Running Tests diff --git a/tests/core-providers/anthropic_test.go b/tests/core-providers/anthropic_test.go index d4760255ce..0a735b7561 100644 --- a/tests/core-providers/anthropic_test.go +++ b/tests/core-providers/anthropic_test.go @@ -23,6 +23,7 @@ func TestAnthropic(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/core-providers/azure_test.go b/tests/core-providers/azure_test.go index a574703e8f..4072c48577 100644 --- a/tests/core-providers/azure_test.go +++ b/tests/core-providers/azure_test.go @@ -23,6 +23,7 @@ func TestAzure(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -34,9 +35,6 @@ func TestAzure(t *testing.T) { CompleteEnd2End: true, ProviderSpecific: true, }, - Fallbacks: []schemas.Fallback{ - {Provider: schemas.OpenAI, Model: "gpt-4o-mini"}, - }, } runAllComprehensiveTests(t, client, ctx, testConfig) diff --git a/tests/core-providers/bedrock_test.go b/tests/core-providers/bedrock_test.go index f20c50ebe6..78ddd82883 100644 --- a/tests/core-providers/bedrock_test.go +++ b/tests/core-providers/bedrock_test.go @@ -23,6 +23,7 @@ func TestBedrock(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported for Claude SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -34,9 +35,6 @@ func TestBedrock(t *testing.T) { CompleteEnd2End: true, ProviderSpecific: true, }, - Fallbacks: []schemas.Fallback{ - {Provider: schemas.OpenAI, Model: "gpt-4o-mini"}, - }, } runAllComprehensiveTests(t, client, ctx, testConfig) diff --git a/tests/core-providers/cohere_test.go b/tests/core-providers/cohere_test.go index a1dc284f17..3bc275a605 100644 --- a/tests/core-providers/cohere_test.go +++ b/tests/core-providers/cohere_test.go @@ -23,6 +23,7 @@ func TestCohere(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not typical for Cohere SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/core-providers/config/account.go b/tests/core-providers/config/account.go index 8957d2ae77..f8bbf414cb 100644 --- a/tests/core-providers/config/account.go +++ b/tests/core-providers/config/account.go @@ -17,6 +17,7 @@ import ( type TestScenarios struct { TextCompletion bool SimpleChat bool + ChatCompletionStream bool MultiTurnConversation bool ToolCalls bool MultipleToolCalls bool @@ -62,6 +63,8 @@ func (account *ComprehensiveTestAccount) GetConfiguredProviders() ([]schemas.Mod schemas.Vertex, schemas.Ollama, schemas.Mistral, + schemas.Groq, + schemas.SGL, }, nil } @@ -124,6 +127,14 @@ func (account *ComprehensiveTestAccount) GetKeysForProvider(providerKey schemas. Weight: 1.0, }, }, nil + case schemas.Groq: + return []schemas.Key{ + { + Value: os.Getenv("GROQ_API_KEY"), + Models: []string{"llama-3.3-70b-versatile"}, + Weight: 1.0, + }, + }, nil default: return nil, fmt.Errorf("unsupported provider: %s", providerKey) } @@ -229,6 +240,22 @@ func (account *ComprehensiveTestAccount) GetConfigForProvider(providerKey schema NetworkConfig: schemas.DefaultNetworkConfig, ConcurrencyAndBufferSize: schemas.DefaultConcurrencyAndBufferSize, }, nil + case schemas.Groq: + return &schemas.ProviderConfig{ + NetworkConfig: schemas.DefaultNetworkConfig, + ConcurrencyAndBufferSize: schemas.DefaultConcurrencyAndBufferSize, + }, nil + case schemas.SGL: + return &schemas.ProviderConfig{ + NetworkConfig: schemas.NetworkConfig{ + BaseURL: os.Getenv("SGL_BASE_URL"), + DefaultRequestTimeoutInSeconds: 30, + MaxRetries: 1, + RetryBackoffInitial: 100 * time.Millisecond, + RetryBackoffMax: 2 * time.Second, + }, + ConcurrencyAndBufferSize: schemas.DefaultConcurrencyAndBufferSize, + }, nil default: return nil, fmt.Errorf("unsupported provider: %s", providerKey) } @@ -243,6 +270,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -265,6 +293,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -287,6 +316,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not supported for Claude SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -309,6 +339,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not typical for Cohere SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -331,6 +362,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -353,6 +385,7 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not typical SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, @@ -397,14 +430,38 @@ var AllProviderConfigs = []ComprehensiveTestConfig{ Scenarios: TestScenarios{ TextCompletion: false, // Not typical SimpleChat: true, + ChatCompletionStream: true, + MultiTurnConversation: true, + ToolCalls: true, + MultipleToolCalls: true, + End2EndToolCalling: true, + AutomaticFunctionCall: true, + ImageURL: true, + ImageBase64: true, + MultipleImages: true, + CompleteEnd2End: true, + ProviderSpecific: true, + }, + Fallbacks: []schemas.Fallback{ + {Provider: schemas.OpenAI, Model: "gpt-4o-mini"}, + }, + }, + { + Provider: schemas.Groq, + ChatModel: "llama-3.3-70b-versatile", + TextModel: "", // Groq doesn't support text completion + Scenarios: TestScenarios{ + TextCompletion: false, // Not supported + SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, End2EndToolCalling: true, AutomaticFunctionCall: true, - ImageURL: false, - ImageBase64: false, - MultipleImages: false, + ImageURL: true, + ImageBase64: true, + MultipleImages: true, CompleteEnd2End: true, ProviderSpecific: true, }, diff --git a/tests/core-providers/go.mod b/tests/core-providers/go.mod index 1ed870d853..3931f907c9 100644 --- a/tests/core-providers/go.mod +++ b/tests/core-providers/go.mod @@ -39,4 +39,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -// replace github.com/maximhq/bifrost/core => ../../core +replace github.com/maximhq/bifrost/core => ../../core diff --git a/tests/core-providers/groq_test.go b/tests/core-providers/groq_test.go new file mode 100644 index 0000000000..954e6c7b3d --- /dev/null +++ b/tests/core-providers/groq_test.go @@ -0,0 +1,41 @@ +package tests + +import ( + "testing" + + "github.com/maximhq/bifrost/tests/core-providers/config" + + "github.com/maximhq/bifrost/core/schemas" +) + +func TestGroq(t *testing.T) { + client, ctx, cancel, err := config.SetupTest() + if err != nil { + t.Fatalf("Error initializing test setup: %v", err) + } + defer cancel() + defer client.Cleanup() + + testConfig := config.ComprehensiveTestConfig{ + Provider: schemas.Groq, + ChatModel: "llama-3.3-70b-versatile", + TextModel: "", // Groq doesn't support text completion + Scenarios: config.TestScenarios{ + TextCompletion: false, // Not supported + SimpleChat: true, + ChatCompletionStream: true, + MultiTurnConversation: true, + ToolCalls: true, + MultipleToolCalls: true, + End2EndToolCalling: true, + AutomaticFunctionCall: true, + ImageURL: false, + ImageBase64: false, + MultipleImages: false, + CompleteEnd2End: true, + ProviderSpecific: true, + }, + } + + runAllComprehensiveTests(t, client, ctx, testConfig) +} diff --git a/tests/core-providers/mistral_test.go b/tests/core-providers/mistral_test.go index 57a7acb637..050918a5d0 100644 --- a/tests/core-providers/mistral_test.go +++ b/tests/core-providers/mistral_test.go @@ -23,6 +23,7 @@ func TestMistral(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/core-providers/ollama_test.go b/tests/core-providers/ollama_test.go index 2d69dd3dae..bfb29d54fd 100644 --- a/tests/core-providers/ollama_test.go +++ b/tests/core-providers/ollama_test.go @@ -23,6 +23,7 @@ func TestOllama(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/core-providers/openai_test.go b/tests/core-providers/openai_test.go index e944a748df..5321f0ef27 100644 --- a/tests/core-providers/openai_test.go +++ b/tests/core-providers/openai_test.go @@ -23,6 +23,7 @@ func TestOpenAI(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/core-providers/scenarios/chat_completion_stream.go b/tests/core-providers/scenarios/chat_completion_stream.go new file mode 100644 index 0000000000..2de09b1417 --- /dev/null +++ b/tests/core-providers/scenarios/chat_completion_stream.go @@ -0,0 +1,217 @@ +package scenarios + +import ( + "context" + "strings" + "testing" + "time" + + "github.com/maximhq/bifrost/tests/core-providers/config" + + bifrost "github.com/maximhq/bifrost/core" + "github.com/maximhq/bifrost/core/schemas" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +// RunChatCompletionStreamTest executes the chat completion stream test scenario +func RunChatCompletionStreamTest(t *testing.T, client *bifrost.Bifrost, ctx context.Context, testConfig config.ComprehensiveTestConfig) { + if !testConfig.Scenarios.ChatCompletionStream { + t.Logf("Chat completion stream not supported for provider %s", testConfig.Provider) + return + } + + t.Run("ChatCompletionStream", func(t *testing.T) { + messages := []schemas.BifrostMessage{ + CreateBasicChatMessage("Tell me a short story about a robot learning to paint. Keep it under 200 words."), + } + + request := &schemas.BifrostRequest{ + Provider: testConfig.Provider, + Model: testConfig.ChatModel, + Input: schemas.RequestInput{ + ChatCompletionInput: &messages, + }, + Params: MergeModelParameters(&schemas.ModelParameters{ + MaxTokens: bifrost.Ptr(250), + }, testConfig.CustomParams), + Fallbacks: testConfig.Fallbacks, + } + + // Test streaming response + responseChannel, err := client.ChatCompletionStreamRequest(ctx, request) + require.Nilf(t, err, "Chat completion stream failed: %v", err) + require.NotNil(t, responseChannel, "Response channel should not be nil") + + var fullContent strings.Builder + var responseCount int + var lastResponse *schemas.BifrostStream + + // Create a timeout context for the stream reading + streamCtx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + + t.Logf("📡 Starting to read streaming response...") + + // Read streaming responses + for { + select { + case response, ok := <-responseChannel: + if !ok { + // Channel closed, streaming completed + t.Logf("✅ Streaming completed. Total chunks received: %d", responseCount) + goto streamComplete + } + + require.NotNil(t, response, "Streaming response should not be nil") + lastResponse = response + + // Validate response structure + assert.Equal(t, testConfig.Provider, response.ExtraFields.Provider, "Provider should match") + assert.NotEmpty(t, response.ID, "Response ID should not be empty") + assert.Equal(t, "chat.completion.chunk", response.Object, "Object type should be chat.completion.chunk") + assert.NotEmpty(t, response.Choices, "Choices should not be empty") + + // Process each choice in the response + for _, choice := range response.Choices { + // Validate that this is a stream response + assert.NotNil(t, choice.BifrostStreamResponseChoice, "Stream response choice should not be nil") + assert.Nil(t, choice.BifrostNonStreamResponseChoice, "Non-stream response choice should be nil") + + // Get content from delta + if choice.BifrostStreamResponseChoice != nil { + delta := choice.BifrostStreamResponseChoice.Delta + if delta.Content != nil { + fullContent.WriteString(*delta.Content) + } + + // Log role if present (usually in first chunk) + if delta.Role != nil { + t.Logf("🤖 Role: %s", *delta.Role) + } + + // Check finish reason if present + if choice.FinishReason != nil { + t.Logf("🏁 Finish reason: %s", *choice.FinishReason) + } + } + } + + responseCount++ + + // Safety check to prevent infinite loops in case of issues + if responseCount > 500 { + t.Fatal("Received too many streaming chunks, something might be wrong") + } + + case <-streamCtx.Done(): + t.Fatal("Timeout waiting for streaming response") + } + } + + streamComplete: + // Validate the complete response + assert.Greater(t, responseCount, 0, "Should receive at least one streaming response") + + finalContent := strings.TrimSpace(fullContent.String()) + assert.NotEmpty(t, finalContent, "Final content should not be empty") + assert.Greater(t, len(finalContent), 10, "Final content should be substantial") + + if lastResponse.BifrostResponse != nil { + // Validate the last response has usage information + if lastResponse != nil { + if lastResponse.Usage != nil { + assert.Greater(t, lastResponse.Usage.TotalTokens, 0, "Total tokens should be greater than 0") + assert.Greater(t, lastResponse.Usage.PromptTokens, 0, "Prompt tokens should be greater than 0") + assert.Greater(t, lastResponse.Usage.CompletionTokens, 0, "Completion tokens should be greater than 0") + t.Logf("📊 Token usage - Prompt: %d, Completion: %d, Total: %d", + lastResponse.Usage.PromptTokens, + lastResponse.Usage.CompletionTokens, + lastResponse.Usage.TotalTokens) + } + } + } + + t.Logf("✅ Streaming test completed successfully") + t.Logf("📝 Final content (%d chars)", len(finalContent)) + }) + + // Test streaming with tool calls if supported + if testConfig.Scenarios.ToolCalls { + t.Run("ChatCompletionStreamWithTools", func(t *testing.T) { + messages := []schemas.BifrostMessage{ + CreateBasicChatMessage("What's the weather like in San Francisco? Please use the get_weather function."), + } + + request := &schemas.BifrostRequest{ + Provider: testConfig.Provider, + Model: testConfig.ChatModel, + Input: schemas.RequestInput{ + ChatCompletionInput: &messages, + }, + Params: MergeModelParameters(&schemas.ModelParameters{ + MaxTokens: bifrost.Ptr(150), + Tools: &[]schemas.Tool{WeatherToolDefinition}, + }, testConfig.CustomParams), + Fallbacks: testConfig.Fallbacks, + } + + responseChannel, err := client.ChatCompletionStreamRequest(ctx, request) + require.Nilf(t, err, "Chat completion stream with tools failed: %v", err) + require.NotNil(t, responseChannel, "Response channel should not be nil") + + var toolCallDetected bool + var responseCount int + + streamCtx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + + t.Logf("🔧 Testing streaming with tool calls...") + + for { + select { + case response, ok := <-responseChannel: + if !ok { + goto toolStreamComplete + } + + require.NotNil(t, response, "Streaming response should not be nil") + responseCount++ + + for _, choice := range response.Choices { + if choice.BifrostStreamResponseChoice != nil { + delta := choice.BifrostStreamResponseChoice.Delta + + // Check for tool calls in delta + if len(delta.ToolCalls) > 0 { + toolCallDetected = true + t.Logf("🔧 Tool call detected in streaming response") + + for _, toolCall := range delta.ToolCalls { + if toolCall.Function.Name != nil { + t.Logf("🔧 Tool: %s", *toolCall.Function.Name) + if toolCall.Function.Arguments != "" { + t.Logf("🔧 Args: %s", toolCall.Function.Arguments) + } + } + } + } + } + } + + if responseCount > 100 { + goto toolStreamComplete + } + + case <-streamCtx.Done(): + t.Fatal("Timeout waiting for streaming response with tools") + } + } + + toolStreamComplete: + assert.Greater(t, responseCount, 0, "Should receive at least one streaming response") + assert.True(t, toolCallDetected, "Should detect tool calls in streaming response") + t.Logf("✅ Streaming with tools test completed successfully") + }) + } +} diff --git a/tests/core-providers/sgl_test.go b/tests/core-providers/sgl_test.go new file mode 100644 index 0000000000..38e3646edb --- /dev/null +++ b/tests/core-providers/sgl_test.go @@ -0,0 +1,41 @@ +package tests + +import ( + "testing" + + "github.com/maximhq/bifrost/tests/core-providers/config" + + "github.com/maximhq/bifrost/core/schemas" +) + +func TestSGL(t *testing.T) { + client, ctx, cancel, err := config.SetupTest() + if err != nil { + t.Fatalf("Error initializing test setup: %v", err) + } + defer cancel() + defer client.Cleanup() + + testConfig := config.ComprehensiveTestConfig{ + Provider: schemas.SGL, + ChatModel: "Qwen2.5-VL-7B-Instruct", + TextModel: "", // SGL doesn't support text completion + Scenarios: config.TestScenarios{ + TextCompletion: false, // Not supported + SimpleChat: true, + ChatCompletionStream: true, + MultiTurnConversation: true, + ToolCalls: true, + MultipleToolCalls: true, + End2EndToolCalling: true, + AutomaticFunctionCall: true, + ImageURL: true, + ImageBase64: true, + MultipleImages: true, + CompleteEnd2End: true, + ProviderSpecific: true, + }, + } + + runAllComprehensiveTests(t, client, ctx, testConfig) +} diff --git a/tests/core-providers/tests.go b/tests/core-providers/tests.go index e229c0b583..9c4a3f482b 100644 --- a/tests/core-providers/tests.go +++ b/tests/core-providers/tests.go @@ -27,6 +27,7 @@ func runAllComprehensiveTests(t *testing.T, client *bifrost.Bifrost, ctx context testScenarios := []TestScenarioFunc{ scenarios.RunTextCompletionTest, scenarios.RunSimpleChatTest, + scenarios.RunChatCompletionStreamTest, scenarios.RunMultiTurnConversationTest, scenarios.RunToolCallsTest, scenarios.RunMultipleToolCallsTest, @@ -56,6 +57,7 @@ func printTestSummary(t *testing.T, testConfig config.ComprehensiveTestConfig) { }{ {"TextCompletion", testConfig.Scenarios.TextCompletion && testConfig.TextModel != ""}, {"SimpleChat", testConfig.Scenarios.SimpleChat}, + {"ChatCompletionStream", testConfig.Scenarios.ChatCompletionStream}, {"MultiTurnConversation", testConfig.Scenarios.MultiTurnConversation}, {"ToolCalls", testConfig.Scenarios.ToolCalls}, {"MultipleToolCalls", testConfig.Scenarios.MultipleToolCalls}, diff --git a/tests/core-providers/vertex_test.go b/tests/core-providers/vertex_test.go index c1907522d6..b2698381b3 100644 --- a/tests/core-providers/vertex_test.go +++ b/tests/core-providers/vertex_test.go @@ -23,6 +23,7 @@ func TestVertex(t *testing.T) { Scenarios: config.TestScenarios{ TextCompletion: false, // Not supported SimpleChat: true, + ChatCompletionStream: true, MultiTurnConversation: true, ToolCalls: true, MultipleToolCalls: true, diff --git a/tests/transports-integrations/README.md b/tests/transports-integrations/README.md index 0d1be2511e..810a37cce6 100644 --- a/tests/transports-integrations/README.md +++ b/tests/transports-integrations/README.md @@ -27,14 +27,14 @@ The Bifrost integration tests use a centralized configuration system that routes - **🌉 Bifrost Gateway Integration**: All integrations route through Bifrost proxy - **🤖 Centralized Configuration**: YAML-based configuration with environment variable support - **🔧 Integration-Specific Clients**: Type-safe, integration-optimized implementations -- **📋 Comprehensive Test Coverage**: 11 categories covering all major AI functionality +- **📋 Comprehensive Test Coverage**: 13 categories covering all major AI functionality - **⚙️ Flexible Execution**: Selective test running with command-line flags - **🛡️ Robust Error Handling**: Graceful error handling and detailed error reporting - **🎯 Production-Ready**: Async support, timeouts, retries, and logging ## 📋 Test Categories -Our test suite covers 12 comprehensive scenarios for each integration: +Our test suite covers 13 comprehensive scenarios for each integration: 1. **Simple Chat** - Basic single-message conversations 2. **Multi-turn Conversation** - Conversation history and context retention @@ -48,6 +48,7 @@ Our test suite covers 12 comprehensive scenarios for each integration: 10. **Complex End-to-End** - Comprehensive multimodal workflows 11. **Integration-Specific Features** - Integration-unique capabilities 12. **Error Handling** - Invalid request error processing and propagation +13. **Streaming** - Real-time streaming responses and tool calls ## 📁 Directory Structure diff --git a/tests/transports-integrations/config.yml b/tests/transports-integrations/config.yml index 2de74ff9f2..53f468c1ce 100644 --- a/tests/transports-integrations/config.yml +++ b/tests/transports-integrations/config.yml @@ -73,6 +73,7 @@ model_capabilities: chat: true tools: true vision: false + streaming: true max_tokens: 4096 context_window: 4096 @@ -80,6 +81,7 @@ model_capabilities: chat: true tools: true vision: false + streaming: true max_tokens: 8192 context_window: 8192 @@ -87,6 +89,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 4096 context_window: 128000 @@ -94,6 +97,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 4096 context_window: 128000 @@ -102,6 +106,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 4096 context_window: 200000 @@ -109,6 +114,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 4096 context_window: 200000 @@ -116,6 +122,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 4096 context_window: 200000 @@ -124,6 +131,7 @@ model_capabilities: chat: true tools: true vision: false + streaming: true max_tokens: 8192 context_window: 32768 @@ -131,6 +139,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 8192 context_window: 32768 @@ -138,6 +147,7 @@ model_capabilities: chat: true tools: true vision: true + streaming: true max_tokens: 8192 context_window: 1000000 diff --git a/tests/transports-integrations/tests/integrations/test_anthropic.py b/tests/transports-integrations/tests/integrations/test_anthropic.py index 5e5f4fc66b..83f351b99b 100644 --- a/tests/transports-integrations/tests/integrations/test_anthropic.py +++ b/tests/transports-integrations/tests/integrations/test_anthropic.py @@ -36,6 +36,8 @@ IMAGE_URL, BASE64_IMAGE, INVALID_ROLE_MESSAGES, + STREAMING_CHAT_MESSAGES, + STREAMING_TOOL_CALL_MESSAGES, WEATHER_TOOL, CALCULATOR_TOOL, ALL_TOOLS, @@ -45,6 +47,8 @@ assert_valid_image_response, assert_valid_error_response, assert_error_propagation, + assert_valid_streaming_response, + collect_streaming_content, extract_tool_calls, get_api_key, skip_if_no_api_key, @@ -563,6 +567,43 @@ def test_12_error_handling_invalid_roles(self, anthropic_client, test_config): assert_valid_error_response(error, "tester") assert_error_propagation(error, "anthropic") + @skip_if_no_api_key("anthropic") + def test_13_streaming(self, anthropic_client, test_config): + """Test Case 13: Streaming chat completion""" + # Test basic streaming + stream = anthropic_client.messages.create( + model=get_model("anthropic", "chat"), + messages=STREAMING_CHAT_MESSAGES, + max_tokens=200, + stream=True, + ) + + content, chunk_count, tool_calls_detected = collect_streaming_content( + stream, "anthropic", timeout=30 + ) + + # Validate streaming results + assert chunk_count > 0, "Should receive at least one chunk" + assert len(content) > 10, "Should receive substantial content" + assert not tool_calls_detected, "Basic streaming shouldn't have tool calls" + + # Test streaming with tool calls + stream_with_tools = anthropic_client.messages.create( + model=get_model("anthropic", "tools"), + messages=STREAMING_TOOL_CALL_MESSAGES, + max_tokens=150, + tools=convert_to_anthropic_tools([WEATHER_TOOL]), + stream=True, + ) + + content_tools, chunk_count_tools, tool_calls_detected_tools = ( + collect_streaming_content(stream_with_tools, "anthropic", timeout=30) + ) + + # Validate tool streaming results + assert chunk_count_tools > 0, "Should receive at least one chunk with tools" + assert tool_calls_detected_tools, "Should receive at least one chunk with tools" + # Additional helper functions specific to Anthropic def extract_anthropic_tool_calls(response: Any) -> List[Dict[str, Any]]: diff --git a/tests/transports-integrations/tests/integrations/test_google.py b/tests/transports-integrations/tests/integrations/test_google.py index 02b96d2736..eac2ec2526 100644 --- a/tests/transports-integrations/tests/integrations/test_google.py +++ b/tests/transports-integrations/tests/integrations/test_google.py @@ -32,12 +32,16 @@ IMAGE_URL, BASE64_IMAGE, INVALID_ROLE_MESSAGES, + STREAMING_CHAT_MESSAGES, + STREAMING_TOOL_CALL_MESSAGES, WEATHER_TOOL, CALCULATOR_TOOL, assert_valid_chat_response, assert_valid_image_response, assert_valid_error_response, assert_error_propagation, + assert_valid_streaming_response, + collect_streaming_content, get_api_key, skip_if_no_api_key, COMPARISON_KEYWORDS, @@ -439,6 +443,49 @@ def test_12_error_handling_invalid_roles(self, google_client, test_config): assert_valid_error_response(error, "tester") assert_error_propagation(error, "google") + @skip_if_no_api_key("google") + def test_13_streaming(self, google_client, test_config): + """Test Case 13: Streaming chat completion using Google GenAI SDK""" + + # Use the correct Google GenAI SDK streaming method + stream = google_client.models.generate_content_stream( + model=get_model("google", "chat"), + contents="Tell me a short story about a robot", + ) + + content = "" + chunk_count = 0 + + # Collect streaming content + for chunk in stream: + chunk_count += 1 + if chunk.text: + content += chunk.text + + # Validate streaming results + assert chunk_count > 0, "Should receive at least one chunk" + assert len(content) > 10, "Should receive substantial content" + + # Check for robot-related terms (the story might not use the exact word "robot") + robot_terms = [ + "robot", + "metallic", + "programmed", + "unit", + "custodian", + "mechanical", + "android", + "machine", + ] + has_robot_content = any(term in content.lower() for term in robot_terms) + assert ( + has_robot_content + ), f"Content should relate to robots. Found content: {content[:200]}..." + + print( + f"✅ Streaming test passed: {chunk_count} chunks, {len(content)} characters" + ) + # Additional helper functions specific to Google GenAI def extract_google_function_calls(response: Any) -> List[Dict[str, Any]]: diff --git a/tests/transports-integrations/tests/integrations/test_litellm.py b/tests/transports-integrations/tests/integrations/test_litellm.py index f06e048ffb..e5a04a5be4 100644 --- a/tests/transports-integrations/tests/integrations/test_litellm.py +++ b/tests/transports-integrations/tests/integrations/test_litellm.py @@ -37,6 +37,8 @@ MULTIPLE_IMAGES_MESSAGES, COMPLEX_E2E_MESSAGES, INVALID_ROLE_MESSAGES, + STREAMING_CHAT_MESSAGES, + STREAMING_TOOL_CALL_MESSAGES, WEATHER_TOOL, CALCULATOR_TOOL, mock_tool_response, @@ -45,6 +47,8 @@ assert_valid_image_response, assert_valid_error_response, assert_error_propagation, + assert_valid_streaming_response, + collect_streaming_content, extract_tool_calls, get_api_key, skip_if_no_api_key, @@ -358,6 +362,46 @@ def test_12_error_handling_invalid_roles(self, test_config): assert_valid_error_response(error, "tester") assert_error_propagation(error, "litellm") + def test_13_streaming(self, test_config): + """Test Case 13: Streaming chat completion""" + # Test basic streaming + stream = litellm.completion( + model=get_model("litellm", "chat"), + messages=STREAMING_CHAT_MESSAGES, + max_tokens=200, + stream=True, + ) + + content, chunk_count, tool_calls_detected = collect_streaming_content( + stream, "openai", timeout=30 # LiteLLM uses OpenAI format + ) + + # Validate streaming results + assert chunk_count > 0, "Should receive at least one chunk" + assert len(content) > 10, "Should receive substantial content" + assert not tool_calls_detected, "Basic streaming shouldn't have tool calls" + + # Test streaming with tool calls + stream_with_tools = litellm.completion( + model=get_model("litellm", "tools"), + messages=STREAMING_TOOL_CALL_MESSAGES, + max_tokens=150, + tools=convert_to_litellm_tools([WEATHER_TOOL]), + stream=True, + ) + + content_tools, chunk_count_tools, tool_calls_detected_tools = ( + collect_streaming_content( + stream_with_tools, "openai", timeout=30 # LiteLLM uses OpenAI format + ) + ) + + # Validate tool streaming results + assert chunk_count_tools > 0, "Should receive at least one chunk with tools" + assert ( + tool_calls_detected_tools + ), "Should detect tool calls in streaming response" + # Additional helper functions specific to LiteLLM def extract_litellm_tool_calls(response: Any) -> List[Dict[str, Any]]: diff --git a/tests/transports-integrations/tests/integrations/test_openai.py b/tests/transports-integrations/tests/integrations/test_openai.py index 40ec386db9..1a271607f2 100644 --- a/tests/transports-integrations/tests/integrations/test_openai.py +++ b/tests/transports-integrations/tests/integrations/test_openai.py @@ -37,6 +37,8 @@ MULTIPLE_IMAGES_MESSAGES, COMPLEX_E2E_MESSAGES, INVALID_ROLE_MESSAGES, + STREAMING_CHAT_MESSAGES, + STREAMING_TOOL_CALL_MESSAGES, WEATHER_TOOL, CALCULATOR_TOOL, mock_tool_response, @@ -45,6 +47,8 @@ assert_valid_image_response, assert_valid_error_response, assert_error_propagation, + assert_valid_streaming_response, + collect_streaming_content, extract_tool_calls, get_api_key, skip_if_no_api_key, @@ -407,3 +411,42 @@ def test_12_error_handling_invalid_roles(self, openai_client, test_config): error = exc_info.value assert_valid_error_response(error, "tester") assert_error_propagation(error, "openai") + + @skip_if_no_api_key("openai") + def test_13_streaming(self, openai_client, test_config): + """Test Case 13: Streaming chat completion""" + # Test basic streaming + stream = openai_client.chat.completions.create( + model=get_model("openai", "chat"), + messages=STREAMING_CHAT_MESSAGES, + max_tokens=200, + stream=True, + ) + + content, chunk_count, tool_calls_detected = collect_streaming_content( + stream, "openai", timeout=30 + ) + + # Validate streaming results + assert chunk_count > 0, "Should receive at least one chunk" + assert len(content) > 10, "Should receive substantial content" + assert not tool_calls_detected, "Basic streaming shouldn't have tool calls" + + # Test streaming with tool calls + stream_with_tools = openai_client.chat.completions.create( + model=get_model("openai", "tools"), + messages=STREAMING_TOOL_CALL_MESSAGES, + max_tokens=150, + tools=convert_to_openai_tools([WEATHER_TOOL]), + stream=True, + ) + + content_tools, chunk_count_tools, tool_calls_detected_tools = ( + collect_streaming_content(stream_with_tools, "openai", timeout=30) + ) + + # Validate tool streaming results + assert chunk_count_tools > 0, "Should receive at least one chunk with tools" + assert ( + tool_calls_detected_tools + ), "Should detect tool calls in streaming response" diff --git a/tests/transports-integrations/tests/utils/common.py b/tests/transports-integrations/tests/utils/common.py index bd36e29095..66a0d56230 100644 --- a/tests/transports-integrations/tests/utils/common.py +++ b/tests/transports-integrations/tests/utils/common.py @@ -89,6 +89,21 @@ class Config: {"role": "user", "content": "What's the weather in New York and calculate 15 * 23?"} ] +# Streaming Test Messages +STREAMING_CHAT_MESSAGES = [ + { + "role": "user", + "content": "Tell me a short story about a robot learning to paint. Keep it under 200 words.", + } +] + +STREAMING_TOOL_CALL_MESSAGES = [ + { + "role": "user", + "content": "What's the weather like in San Francisco? Please use the get_weather function.", + } +] + # Image Test Data IMAGE_URL = "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg" @@ -635,6 +650,186 @@ def assert_error_propagation(error_response: Any, integration: str): return True +def assert_valid_streaming_response( + chunk: Any, integration: str, is_final: bool = False +): + """ + Assert that a streaming response chunk is valid for the given integration. + + Args: + chunk: Individual streaming response chunk + integration: The integration name (openai, anthropic, etc.) + is_final: Whether this is expected to be the final chunk + """ + assert chunk is not None, "Streaming chunk should not be None" + + if integration.lower() == "openai": + # OpenAI streaming format + assert hasattr(chunk, "choices"), "OpenAI streaming chunk should have choices" + assert ( + len(chunk.choices) > 0 + ), "OpenAI streaming chunk should have at least one choice" + + choice = chunk.choices[0] + assert hasattr(choice, "delta"), "OpenAI streaming choice should have delta" + + # Check for content or tool calls in delta + has_content = ( + hasattr(choice.delta, "content") and choice.delta.content is not None + ) + has_tool_calls = ( + hasattr(choice.delta, "tool_calls") and choice.delta.tool_calls is not None + ) + has_role = hasattr(choice.delta, "role") and choice.delta.role is not None + + # Allow empty deltas for final chunks (they just signal completion) + if not is_final: + assert ( + has_content or has_tool_calls or has_role + ), "OpenAI delta should have content, tool_calls, or role (except for final chunks)" + + if is_final: + assert hasattr( + choice, "finish_reason" + ), "Final chunk should have finish_reason" + assert ( + choice.finish_reason is not None + ), "Final chunk finish_reason should not be None" + + elif integration.lower() == "anthropic": + # Anthropic streaming format + assert hasattr(chunk, "type"), "Anthropic streaming chunk should have type" + + if chunk.type == "content_block_delta": + assert hasattr( + chunk, "delta" + ), "Content block delta should have delta field" + + # Validate based on delta type + if hasattr(chunk.delta, "type"): + if chunk.delta.type == "text_delta": + assert hasattr( + chunk.delta, "text" + ), "Text delta should have text field" + elif chunk.delta.type == "thinking_delta": + assert hasattr( + chunk.delta, "thinking" + ), "Thinking delta should have thinking field" + elif chunk.delta.type == "input_json_delta": + assert hasattr( + chunk.delta, "partial_json" + ), "Input JSON delta should have partial_json field" + else: + # Fallback: if no type specified, assume text_delta for backward compatibility + assert hasattr( + chunk.delta, "text" + ), "Content delta should have text field" + elif chunk.type == "message_delta" and is_final: + assert hasattr(chunk, "usage"), "Final message delta should have usage" + + elif integration.lower() in ["google", "gemini", "genai"]: + # Google streaming format + assert hasattr( + chunk, "candidates" + ), "Google streaming chunk should have candidates" + assert ( + len(chunk.candidates) > 0 + ), "Google streaming chunk should have at least one candidate" + + candidate = chunk.candidates[0] + assert hasattr(candidate, "content"), "Google candidate should have content" + + if is_final: + assert hasattr( + candidate, "finish_reason" + ), "Final chunk should have finish_reason" + + +def collect_streaming_content( + stream, integration: str, timeout: int = 30 +) -> tuple[str, int, bool]: + """ + Collect content from a streaming response and validate the stream. + + Args: + stream: The streaming response iterator + integration: The integration name (openai, anthropic, etc.) + timeout: Maximum time to wait for stream completion + + Returns: + tuple: (collected_content, chunk_count, tool_calls_detected) + """ + import time + + content_parts = [] + chunk_count = 0 + tool_calls_detected = False + start_time = time.time() + + for chunk in stream: + chunk_count += 1 + + # Check timeout + if time.time() - start_time > timeout: + raise TimeoutError(f"Streaming took longer than {timeout} seconds") + + # Validate chunk + is_final = False + if integration.lower() == "openai": + is_final = ( + hasattr(chunk, "choices") + and len(chunk.choices) > 0 + and hasattr(chunk.choices[0], "finish_reason") + and chunk.choices[0].finish_reason is not None + ) + + assert_valid_streaming_response(chunk, integration, is_final) + + # Extract content based on integration + if integration.lower() == "openai": + choice = chunk.choices[0] + if hasattr(choice.delta, "content") and choice.delta.content: + content_parts.append(choice.delta.content) + if hasattr(choice.delta, "tool_calls") and choice.delta.tool_calls: + tool_calls_detected = True + + elif integration.lower() == "anthropic": + if chunk.type == "content_block_delta": + if hasattr(chunk.delta, "text") and chunk.delta.text: + content_parts.append(chunk.delta.text) + elif hasattr(chunk.delta, "thinking") and chunk.delta.thinking: + content_parts.append(chunk.delta.thinking) + # Note: partial_json from input_json_delta is not user-visible content + elif chunk.type == "content_block_start": + # Check for tool use content blocks + if ( + hasattr(chunk, "content_block") + and hasattr(chunk.content_block, "type") + and chunk.content_block.type == "tool_use" + ): + tool_calls_detected = True + + elif integration.lower() in ["google", "gemini", "genai"]: + if hasattr(chunk, "candidates") and len(chunk.candidates) > 0: + candidate = chunk.candidates[0] + if ( + hasattr(candidate.content, "parts") + and len(candidate.content.parts) > 0 + ): + for part in candidate.content.parts: + if hasattr(part, "text") and part.text: + content_parts.append(part.text) + + # Safety check + if chunk_count > 500: + raise ValueError( + "Received too many streaming chunks, something might be wrong" + ) + + content = "".join(content_parts) + return content, chunk_count, tool_calls_detected + + # Test Categories class TestCategories: """Constants for test categories""" @@ -647,6 +842,7 @@ class TestCategories: AUTO_FUNCTION = "auto_function" IMAGE_URL = "image_url" IMAGE_BASE64 = "image_base64" + STREAMING = "streaming" MULTIPLE_IMAGES = "multiple_images" COMPLEX_E2E = "complex_e2e" INTEGRATION_SPECIFIC = "integration_specific" diff --git a/transports/README.md b/transports/README.md index dbc4c560b6..bcad8b3803 100644 --- a/transports/README.md +++ b/transports/README.md @@ -53,7 +53,7 @@ docker run -p 8080:8080 -v $(pwd)/data:/app/data maximhq/bifrost | Feature | Description | Learn More | | ----------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------- | | **🖥️ Built-in Web UI** | Visual configuration, live monitoring, request logs, and analytics | Open `http://localhost:8080` after startup | -| **🔄 Multi-Provider Support** | OpenAI, Anthropic, Bedrock, Vertex, Cohere, Mistral, Ollama | [Provider Setup](../docs/usage/providers.md) | +| **🔄 Multi-Provider Support** | OpenAI, Anthropic, Azure, Bedrock, Vertex, Cohere, Mistral, Ollama, Groq, SGLang | [Provider Setup](../docs/usage/providers.md) | | **🔌 Drop-in Compatibility** | Replace OpenAI/Anthropic/GenAI APIs with zero code changes | [Integrations](../docs/usage/http-transport/integrations/) | | **🛠️ MCP Tool Calling** | Enable AI models to use external tools (filesystem, web, databases) | [MCP Guide](../docs/mcp.md) | | **⚡ Plugin System** | Add analytics, caching, rate limiting, custom logic | [Plugin System](../docs/plugins.md) | @@ -278,7 +278,7 @@ For complete setup instructions, deployment scenarios, and best practices, see t ### 🚀 Core Features -- **[🔗 Multi-Provider Support](../docs/usage/providers.md)** - 8+ AI providers with fallbacks +- **[🔗 Multi-Provider Support](../docs/usage/providers.md)** - 10+ AI providers with fallbacks - **[🛠️ MCP Integration](../docs/mcp.md)** - External tool calling for AI models - **[🔌 Plugin System](../docs/plugins.md)** - Extensible middleware architecture diff --git a/transports/bifrost-http/handlers/completions.go b/transports/bifrost-http/handlers/completions.go index 532a04fc85..935b28e908 100644 --- a/transports/bifrost-http/handlers/completions.go +++ b/transports/bifrost-http/handlers/completions.go @@ -3,6 +3,8 @@ package handlers import ( + "bufio" + "context" "encoding/json" "fmt" "strings" @@ -35,6 +37,7 @@ type CompletionRequest struct { Text string `json:"text"` // Text input (for text completion) Params *schemas.ModelParameters `json:"params"` // Additional model parameters Fallbacks []string `json:"fallbacks"` // Fallback providers and models in "provider/model" format + Stream *bool `json:"stream"` // Whether to stream the response } type CompletionType string @@ -132,7 +135,16 @@ func (h *CompletionHandler) handleCompletion(ctx *fasthttp.RequestCtx, completio return } - // Execute request + // Check if streaming is requested + isStreaming := req.Stream != nil && *req.Stream + + // Handle streaming for chat completions only + if isStreaming && completionType == CompletionTypeChat { + h.handleStreamingChatCompletion(ctx, bifrostReq, bifrostCtx) + return + } + + // Handle non-streaming requests var resp *schemas.BifrostResponse var bifrostErr *schemas.BifrostError @@ -152,3 +164,56 @@ func (h *CompletionHandler) handleCompletion(ctx *fasthttp.RequestCtx, completio // Send successful response SendJSON(ctx, resp, h.logger) } + +// handleStreamingChatCompletion handles streaming chat completion requests using Server-Sent Events (SSE) +func (h *CompletionHandler) handleStreamingChatCompletion(ctx *fasthttp.RequestCtx, req *schemas.BifrostRequest, bifrostCtx *context.Context) { + // Set SSE headers + ctx.SetContentType("text/event-stream") + ctx.Response.Header.Set("Cache-Control", "no-cache") + ctx.Response.Header.Set("Connection", "keep-alive") + ctx.Response.Header.Set("Access-Control-Allow-Origin", "*") + + // Get the streaming channel from Bifrost + stream, bifrostErr := h.client.ChatCompletionStreamRequest(*bifrostCtx, req) + if bifrostErr != nil { + // Send error in SSE format + SendSSEError(ctx, bifrostErr, h.logger) + return + } + + // Use streaming response writer + ctx.Response.SetBodyStreamWriter(func(w *bufio.Writer) { + defer w.Flush() + + // Process streaming responses + for response := range stream { + if response == nil { + continue + } + + // Convert response to JSON + responseJSON, err := json.Marshal(response) + if err != nil { + h.logger.Warn(fmt.Sprintf("Failed to marshal streaming response: %v", err)) + continue + } + + // Send as SSE data + if _, err := fmt.Fprintf(w, "data: %s\n\n", responseJSON); err != nil { + h.logger.Warn(fmt.Sprintf("Failed to write SSE data: %v", err)) + break + } + + // Flush immediately to send the chunk + if err := w.Flush(); err != nil { + h.logger.Warn(fmt.Sprintf("Failed to flush SSE data: %v", err)) + break + } + } + + // Send the [DONE] marker to indicate the end of the stream + if _, err := fmt.Fprint(w, "data: [DONE]\n\n"); err != nil { + h.logger.Warn(fmt.Sprintf("Failed to write SSE done marker: %v", err)) + } + }) +} diff --git a/transports/bifrost-http/handlers/providers.go b/transports/bifrost-http/handlers/providers.go index 0dd5afd964..8e83f2879e 100644 --- a/transports/bifrost-http/handlers/providers.go +++ b/transports/bifrost-http/handlers/providers.go @@ -153,7 +153,7 @@ func (h *ProviderHandler) AddProvider(ctx *fasthttp.RequestCtx) { } // Validate required keys - if len(req.Keys) == 0 && req.Provider != schemas.Vertex && req.Provider != schemas.Ollama { + if len(req.Keys) == 0 && req.Provider != schemas.Vertex && req.Provider != schemas.Ollama && req.Provider != schemas.SGL { SendError(ctx, fasthttp.StatusBadRequest, "At least one API key is required", h.logger) return } @@ -250,7 +250,7 @@ func (h *ProviderHandler) UpdateProvider(ctx *fasthttp.RequestCtx) { // Validate and process keys if req.Keys != nil { - if len(req.Keys) == 0 && provider != schemas.Vertex && provider != schemas.Ollama { + if len(req.Keys) == 0 && provider != schemas.Vertex && provider != schemas.Ollama && provider != schemas.SGL { SendError(ctx, fasthttp.StatusBadRequest, "At least one API key is required", h.logger) return } diff --git a/transports/bifrost-http/handlers/utils.go b/transports/bifrost-http/handlers/utils.go index ffded4a5dc..e70ac90db5 100644 --- a/transports/bifrost-http/handlers/utils.go +++ b/transports/bifrost-http/handlers/utils.go @@ -48,3 +48,19 @@ func SendBifrostError(ctx *fasthttp.RequestCtx, bifrostErr *schemas.BifrostError ctx.SetBodyString(fmt.Sprintf("Failed to encode error response: %v", encodeErr)) } } + +// SendSSEError sends an error in Server-Sent Events format +func SendSSEError(ctx *fasthttp.RequestCtx, bifrostErr *schemas.BifrostError, logger schemas.Logger) { + errorJSON, err := json.Marshal(map[string]interface{}{ + "error": bifrostErr, + }) + if err != nil { + logger.Error(fmt.Errorf("failed to marshal error for SSE: %w", err)) + ctx.SetStatusCode(fasthttp.StatusInternalServerError) + return + } + + if _, err := fmt.Fprintf(ctx, "data: %s\n\n", errorJSON); err != nil { + logger.Warn(fmt.Sprintf("Failed to write SSE error: %v", err)) + } +} diff --git a/transports/bifrost-http/handlers/websocket.go b/transports/bifrost-http/handlers/websocket.go index cc0f23adb7..5aee37aae4 100644 --- a/transports/bifrost-http/handlers/websocket.go +++ b/transports/bifrost-http/handlers/websocket.go @@ -125,12 +125,20 @@ func (h *WebSocketHandler) HandleLogStream(ctx *fasthttp.RequestCtx) { // BroadcastLogUpdate sends a log update to all connected WebSocket clients func (h *WebSocketHandler) BroadcastLogUpdate(logEntry *logging.LogEntry) { + // Determine operation type based on log status and timestamp + operationType := "update" + if logEntry.Status == "processing" && logEntry.CreatedAt.Equal(logEntry.Timestamp) { + operationType = "create" + } + message := struct { - Type string `json:"type"` - Payload *logging.LogEntry `json:"payload"` + Type string `json:"type"` + Operation string `json:"operation"` // "create" or "update" + Payload *logging.LogEntry `json:"payload"` }{ - Type: "log", - Payload: logEntry, + Type: "log", + Operation: operationType, + Payload: logEntry, } data, err := json.Marshal(message) diff --git a/transports/bifrost-http/integrations/anthropic/router.go b/transports/bifrost-http/integrations/anthropic/router.go index f205193282..e7d13ca8ed 100644 --- a/transports/bifrost-http/integrations/anthropic/router.go +++ b/transports/bifrost-http/integrations/anthropic/router.go @@ -8,8 +8,7 @@ import ( "github.com/maximhq/bifrost/transports/bifrost-http/integrations" ) -// AnthropicRouter holds route registrations for Anthropic endpoints. -// It supports standard chat completions and image-enabled vision capabilities. +// AnthropicRouter handles Anthropic-compatible API endpoints type AnthropicRouter struct { *integrations.GenericRouter } @@ -35,6 +34,14 @@ func NewAnthropicRouter(client *bifrost.Bifrost) *AnthropicRouter { ErrorConverter: func(err *schemas.BifrostError) interface{} { return DeriveAnthropicErrorFromBifrostError(err) }, + StreamConfig: &integrations.StreamConfig{ + ResponseConverter: func(resp *schemas.BifrostResponse) (interface{}, error) { + return DeriveAnthropicStreamFromBifrostResponse(resp), nil + }, + ErrorConverter: func(err *schemas.BifrostError) interface{} { + return DeriveAnthropicStreamFromBifrostError(err) + }, + }, }, } diff --git a/transports/bifrost-http/integrations/anthropic/types.go b/transports/bifrost-http/integrations/anthropic/types.go index 9240896d90..0833a3824e 100644 --- a/transports/bifrost-http/integrations/anthropic/types.go +++ b/transports/bifrost-http/integrations/anthropic/types.go @@ -75,6 +75,11 @@ type AnthropicMessageRequest struct { ToolChoice *AnthropicToolChoice `json:"tool_choice,omitempty"` } +// IsStreamingRequested implements the StreamingRequest interface +func (r *AnthropicMessageRequest) IsStreamingRequested() bool { + return r.Stream != nil && *r.Stream +} + // AnthropicMessageResponse represents an Anthropic messages API response type AnthropicMessageResponse struct { ID string `json:"id"` @@ -105,6 +110,41 @@ type AnthropicMessageErrorStruct struct { Message string `json:"message"` // Error message } +// AnthropicStreamResponse represents a single chunk in the Anthropic streaming response +// This matches the format expected by Anthropic's streaming API clients +type AnthropicStreamResponse struct { + Type string `json:"type"` + ID *string `json:"id,omitempty"` + Model *string `json:"model,omitempty"` + Index *int `json:"index,omitempty"` + Message *AnthropicStreamMessage `json:"message,omitempty"` + ContentBlock *AnthropicContentBlock `json:"content_block,omitempty"` + Delta *AnthropicStreamDelta `json:"delta,omitempty"` + Usage *AnthropicUsage `json:"usage,omitempty"` +} + +// AnthropicStreamMessage represents the message structure in streaming events +type AnthropicStreamMessage struct { + ID string `json:"id"` + Type string `json:"type"` + Role string `json:"role"` + Content []AnthropicContentBlock `json:"content"` + Model string `json:"model"` + StopReason *string `json:"stop_reason,omitempty"` + StopSequence *string `json:"stop_sequence,omitempty"` + Usage *AnthropicUsage `json:"usage,omitempty"` +} + +// AnthropicStreamDelta represents the incremental content in a streaming chunk +type AnthropicStreamDelta struct { + Type string `json:"type"` + Text *string `json:"text,omitempty"` + Thinking *string `json:"thinking,omitempty"` + PartialJSON *string `json:"partial_json,omitempty"` + StopReason *string `json:"stop_reason,omitempty"` + StopSequence *string `json:"stop_sequence,omitempty"` +} + // MarshalJSON implements custom JSON marshalling for MessageContent. // It marshals either ContentStr or ContentBlocks directly without wrapping. func (mc AnthropicContent) MarshalJSON() ([]byte, error) { @@ -402,7 +442,7 @@ func DeriveAnthropicFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *A } // Convert usage information - if bifrostResp.Usage != (schemas.LLMUsage{}) { + if bifrostResp.Usage != nil { anthropicResp.Usage = &AnthropicUsage{ InputTokens: bifrostResp.Usage.PromptTokens, OutputTokens: bifrostResp.Usage.CompletionTokens, @@ -477,6 +517,134 @@ func DeriveAnthropicFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *A return anthropicResp } +// DeriveAnthropicStreamFromBifrostResponse converts a Bifrost streaming response to Anthropic SSE string format +func DeriveAnthropicStreamFromBifrostResponse(bifrostResp *schemas.BifrostResponse) string { + if bifrostResp == nil { + return "" + } + + streamResp := &AnthropicStreamResponse{} + + // Handle different streaming event types based on the response content + if len(bifrostResp.Choices) > 0 { + choice := bifrostResp.Choices[0] // Anthropic typically returns one choice + + // Handle streaming responses + if choice.BifrostStreamResponseChoice != nil { + delta := choice.BifrostStreamResponseChoice.Delta + + // Handle text content deltas + if delta.Content != nil { + streamResp.Type = "content_block_delta" + streamResp.Index = &choice.Index + streamResp.Delta = &AnthropicStreamDelta{ + Type: "text_delta", + Text: delta.Content, + } + } else if delta.Thought != nil { + // Handle thinking content deltas + streamResp.Type = "content_block_delta" + streamResp.Index = &choice.Index + streamResp.Delta = &AnthropicStreamDelta{ + Type: "thinking_delta", + Thinking: delta.Thought, + } + } else if len(delta.ToolCalls) > 0 { + // Handle tool call deltas + toolCall := delta.ToolCalls[0] // Take first tool call + + if toolCall.Function.Name != nil && *toolCall.Function.Name != "" { + // Tool use start event + streamResp.Type = "content_block_start" + streamResp.Index = &choice.Index + streamResp.ContentBlock = &AnthropicContentBlock{ + Type: "tool_use", + ID: toolCall.ID, + Name: toolCall.Function.Name, + } + } else if toolCall.Function.Arguments != "" { + // Tool input delta + streamResp.Type = "content_block_delta" + streamResp.Index = &choice.Index + streamResp.Delta = &AnthropicStreamDelta{ + Type: "input_json_delta", + PartialJSON: &toolCall.Function.Arguments, + } + } + } else if choice.FinishReason != nil && *choice.FinishReason != "" { + // Handle finish reason + streamResp.Type = "message_delta" + streamResp.Delta = &AnthropicStreamDelta{ + Type: "message_delta", + StopReason: choice.FinishReason, + } + } + + } else if choice.BifrostNonStreamResponseChoice != nil { + // Handle non-streaming response converted to streaming format + streamResp.Type = "message_start" + + // Create message start event + streamMessage := &AnthropicStreamMessage{ + ID: bifrostResp.ID, + Type: "message", + Role: string(choice.BifrostNonStreamResponseChoice.Message.Role), + Model: bifrostResp.Model, + } + + // Convert content + var content []AnthropicContentBlock + if choice.BifrostNonStreamResponseChoice.Message.Content.ContentStr != nil { + content = append(content, AnthropicContentBlock{ + Type: "text", + Text: choice.BifrostNonStreamResponseChoice.Message.Content.ContentStr, + }) + } + + streamMessage.Content = content + streamResp.Message = streamMessage + } + } + + // Handle usage information + if bifrostResp.Usage != nil { + if streamResp.Type == "" { + streamResp.Type = "message_delta" + } + streamResp.Usage = &AnthropicUsage{ + InputTokens: bifrostResp.Usage.PromptTokens, + OutputTokens: bifrostResp.Usage.CompletionTokens, + } + } + + // Set common fields + if bifrostResp.ID != "" { + streamResp.ID = &bifrostResp.ID + } + if bifrostResp.Model != "" { + streamResp.Model = &bifrostResp.Model + } + + // Default to empty content_block_delta if no specific type was set + if streamResp.Type == "" { + streamResp.Type = "content_block_delta" + streamResp.Index = bifrost.Ptr(0) + streamResp.Delta = &AnthropicStreamDelta{ + Type: "text_delta", + Text: bifrost.Ptr(""), + } + } + + // Marshal to JSON and format as SSE + jsonData, err := json.Marshal(streamResp) + if err != nil { + return "" + } + + // Format as Anthropic SSE + return fmt.Sprintf("event: %s\ndata: %s\n\n", streamResp.Type, jsonData) +} + // DeriveAnthropicErrorFromBifrostError derives a AnthropicMessageError from a BifrostError func DeriveAnthropicErrorFromBifrostError(bifrostErr *schemas.BifrostError) *AnthropicMessageError { if bifrostErr == nil { @@ -504,3 +672,20 @@ func DeriveAnthropicErrorFromBifrostError(bifrostErr *schemas.BifrostError) *Ant Error: errorStruct, } } + +// DeriveAnthropicStreamFromBifrostError derives an Anthropic streaming error from a BifrostError in SSE format +func DeriveAnthropicStreamFromBifrostError(bifrostErr *schemas.BifrostError) string { + errorResp := DeriveAnthropicErrorFromBifrostError(bifrostErr) + if errorResp == nil { + return "" + } + + // Marshal to JSON + jsonData, err := json.Marshal(errorResp) + if err != nil { + return "" + } + + // Format as Anthropic SSE error event + return fmt.Sprintf("event: error\ndata: %s\n\n", jsonData) +} diff --git a/transports/bifrost-http/integrations/genai/router.go b/transports/bifrost-http/integrations/genai/router.go index 675d489029..7739611cae 100644 --- a/transports/bifrost-http/integrations/genai/router.go +++ b/transports/bifrost-http/integrations/genai/router.go @@ -37,6 +37,14 @@ func NewGenAIRouter(client *bifrost.Bifrost) *GenAIRouter { ErrorConverter: func(err *schemas.BifrostError) interface{} { return DeriveGeminiErrorFromBifrostError(err) }, + StreamConfig: &integrations.StreamConfig{ + ResponseConverter: func(resp *schemas.BifrostResponse) (interface{}, error) { + return DeriveGeminiStreamFromBifrostResponse(resp), nil + }, + ErrorConverter: func(err *schemas.BifrostError) interface{} { + return DeriveGeminiStreamFromBifrostError(err) + }, + }, PreCallback: extractAndSetModelFromURL, }, } @@ -54,6 +62,10 @@ func extractAndSetModelFromURL(ctx *fasthttp.RequestCtx, req interface{}) error } modelStr := model.(string) + + // Check if this is a streaming request + isStreaming := strings.HasSuffix(modelStr, ":streamGenerateContent") + // Remove Google GenAI API endpoint suffixes if present for _, sfx := range []string{ ":streamGenerateContent", @@ -74,9 +86,10 @@ func extractAndSetModelFromURL(ctx *fasthttp.RequestCtx, req interface{}) error processedModel = "google/" + modelStr } - // Set the model in the request + // Set the model and streaming flag in the request if geminiReq, ok := req.(*GeminiChatRequest); ok { geminiReq.Model = processedModel + geminiReq.Stream = isStreaming return nil } diff --git a/transports/bifrost-http/integrations/genai/types.go b/transports/bifrost-http/integrations/genai/types.go index 01dd15d06f..d0131d4e38 100644 --- a/transports/bifrost-http/integrations/genai/types.go +++ b/transports/bifrost-http/integrations/genai/types.go @@ -134,6 +134,12 @@ type GeminiChatRequest struct { Labels map[string]string `json:"labels,omitempty"` CachedContent string `json:"cachedContent,omitempty"` ResponseModalities []string `json:"responseModalities,omitempty"` + Stream bool `json:"-"` // Internal field to track streaming requests +} + +// IsStreamingRequested implements the StreamingRequest interface +func (r *GeminiChatRequest) IsStreamingRequested() bool { + return r.Stream } // GeminiChatRequestError represents a Gemini chat completion error response @@ -475,7 +481,7 @@ func DeriveGenAIFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *genai Candidates: make([]*genai_sdk.Candidate, len(bifrostResp.Choices)), } - if bifrostResp.Usage != (schemas.LLMUsage{}) { + if bifrostResp.Usage != nil { genaiResp.UsageMetadata = &genai_sdk.GenerateContentResponseUsageMetadata{ PromptTokenCount: int32(bifrostResp.Usage.PromptTokens), CandidatesTokenCount: int32(bifrostResp.Usage.CompletionTokens), @@ -491,7 +497,7 @@ func DeriveGenAIFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *genai candidate.FinishReason = genai_sdk.FinishReason(*choice.FinishReason) } - if bifrostResp.Usage != (schemas.LLMUsage{}) { + if bifrostResp.Usage != nil { candidate.TokenCount = int32(bifrostResp.Usage.CompletionTokens) } @@ -579,6 +585,112 @@ func DeriveGenAIFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *genai return genaiResp } +// DeriveGeminiStreamFromBifrostResponse converts a Bifrost streaming response to Google GenAI streaming format +func DeriveGeminiStreamFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *genai_sdk.GenerateContentResponse { + if bifrostResp == nil { + return nil + } + + genaiResp := &genai_sdk.GenerateContentResponse{ + Candidates: make([]*genai_sdk.Candidate, len(bifrostResp.Choices)), + } + + // Set usage metadata if available + if bifrostResp.Usage != nil { + genaiResp.UsageMetadata = &genai_sdk.GenerateContentResponseUsageMetadata{ + PromptTokenCount: int32(bifrostResp.Usage.PromptTokens), + CandidatesTokenCount: int32(bifrostResp.Usage.CompletionTokens), + TotalTokenCount: int32(bifrostResp.Usage.TotalTokens), + } + } + + // Convert choices to streaming format + for i, choice := range bifrostResp.Choices { + candidate := &genai_sdk.Candidate{ + Index: int32(choice.Index), + } + + // Set finish reason if present + if choice.FinishReason != nil { + candidate.FinishReason = genai_sdk.FinishReason(*choice.FinishReason) + } + + // Set token count if available + if bifrostResp.Usage != nil { + candidate.TokenCount = int32(bifrostResp.Usage.CompletionTokens) + } + + // Handle streaming response delta + var parts []*genai_sdk.Part + + if choice.BifrostStreamResponseChoice != nil { + // Convert streaming delta to parts + delta := choice.BifrostStreamResponseChoice.Delta + + // Handle text content delta + if delta.Content != nil && *delta.Content != "" { + parts = append(parts, &genai_sdk.Part{ + Text: *delta.Content, + }) + } + + // Handle thinking content delta + if delta.Thought != nil && *delta.Thought != "" { + parts = append(parts, &genai_sdk.Part{ + Text: *delta.Thought, + Thought: true, + }) + } + + // Handle tool call deltas + if len(delta.ToolCalls) > 0 { + for _, toolCall := range delta.ToolCalls { + if toolCall.Function.Name != nil && *toolCall.Function.Name != "" { + // Convert tool call arguments from JSON string to map + argsMap := make(map[string]interface{}) + if toolCall.Function.Arguments != "" { + json.Unmarshal([]byte(toolCall.Function.Arguments), &argsMap) + } + + fc := &genai_sdk.FunctionCall{ + Name: *toolCall.Function.Name, + Args: argsMap, + } + if toolCall.ID != nil { + fc.ID = *toolCall.ID + } + + parts = append(parts, &genai_sdk.Part{ + FunctionCall: fc, + }) + } + } + } + + } + + // Set content if we have parts + if len(parts) > 0 { + candidate.Content = &genai_sdk.Content{ + Parts: parts, + Role: string(schemas.ModelChatMessageRoleAssistant), // Streaming responses are typically from assistant + } + } + + genaiResp.Candidates[i] = candidate + } + + // Set response metadata + if bifrostResp.ID != "" { + genaiResp.ResponseID = bifrostResp.ID + } + if bifrostResp.Model != "" { + genaiResp.ModelVersion = bifrostResp.Model + } + + return genaiResp +} + // DeriveGeminiErrorFromBifrostError derives a GeminiChatRequestError from a BifrostError func DeriveGeminiErrorFromBifrostError(bifrostErr *schemas.BifrostError) *GeminiChatRequestError { if bifrostErr == nil { @@ -605,6 +717,12 @@ func DeriveGeminiErrorFromBifrostError(bifrostErr *schemas.BifrostError) *Gemini } } +// DeriveGeminiStreamFromBifrostError derives a Gemini streaming error from a BifrostError +func DeriveGeminiStreamFromBifrostError(bifrostErr *schemas.BifrostError) *GeminiChatRequestError { + // For streaming, we use the same error format as regular Gemini errors + return DeriveGeminiErrorFromBifrostError(bifrostErr) +} + // isImageMimeType checks if a MIME type represents an image format func isImageMimeType(mimeType string) bool { if mimeType == "" { diff --git a/transports/bifrost-http/integrations/litellm/router.go b/transports/bifrost-http/integrations/litellm/router.go index e7403514d5..cede7a42f7 100644 --- a/transports/bifrost-http/integrations/litellm/router.go +++ b/transports/bifrost-http/integrations/litellm/router.go @@ -21,6 +21,21 @@ type LiteLLMRequestWrapper struct { Provider schemas.ModelProvider `json:"-"` } +// IsStreamingRequested implements the StreamingRequest interface +// by delegating to the underlying provider-specific request +func (w *LiteLLMRequestWrapper) IsStreamingRequested() bool { + if w.ActualRequest == nil { + return false + } + + // Delegate to the actual request's streaming method + if streamingReq, ok := w.ActualRequest.(integrations.StreamingRequest); ok { + return streamingReq.IsStreamingRequested() + } + + return false +} + // LiteLLMRouter holds route registrations for LiteLLM endpoints. // It supports standard chat completions and image-enabled vision capabilities. // LiteLLM is fully OpenAI-compatible, so we reuse OpenAI types @@ -153,6 +168,42 @@ func NewLiteLLMRouter(client *bifrost.Bifrost) *LiteLLMRouter { } } + streamResponseConverter := func(resp *schemas.BifrostResponse) (interface{}, error) { + if resp == nil { + return nil, errors.New("response is nil") + } + + provider := resp.ExtraFields.Provider + if provider == "" && resp.Model != "" { + provider = integrations.GetProviderFromModel(resp.Model) + } + + // Route to the appropriate provider's streaming converter based on provider type + switch provider { + case schemas.OpenAI, schemas.Azure: + return openai.DeriveOpenAIStreamFromBifrostResponse(resp), nil + case schemas.Anthropic: + return anthropic.DeriveAnthropicStreamFromBifrostResponse(resp), nil + case schemas.Vertex: + return genai.DeriveGeminiStreamFromBifrostResponse(resp), nil + default: + return resp, nil + } + } + + streamErrorConverter := func(err *schemas.BifrostError) interface{} { + switch err.Provider { + case schemas.OpenAI, schemas.Azure: + return openai.DeriveOpenAIStreamFromBifrostError(err) + case schemas.Anthropic: + return anthropic.DeriveAnthropicStreamFromBifrostError(err) + case schemas.Vertex: + return genai.DeriveGeminiStreamFromBifrostError(err) + default: + return err + } + } + routes := []integrations.RouteConfig{} for _, path := range paths { routes = append(routes, integrations.RouteConfig{ @@ -162,7 +213,11 @@ func NewLiteLLMRouter(client *bifrost.Bifrost) *LiteLLMRouter { RequestConverter: requestConverter, ResponseConverter: responseConverter, ErrorConverter: errorConverter, - PreCallback: preHook, + StreamConfig: &integrations.StreamConfig{ + ResponseConverter: streamResponseConverter, + ErrorConverter: streamErrorConverter, + }, + PreCallback: preHook, }) } diff --git a/transports/bifrost-http/integrations/openai/router.go b/transports/bifrost-http/integrations/openai/router.go index d31f6b6599..0c2b61a9b0 100644 --- a/transports/bifrost-http/integrations/openai/router.go +++ b/transports/bifrost-http/integrations/openai/router.go @@ -9,7 +9,7 @@ import ( ) // OpenAIRouter holds route registrations for OpenAI endpoints. -// It supports standard chat completions and image-enabled vision capabilities. +// It supports standard chat completions and streaming capabilities with OpenAI-specific formatting. type OpenAIRouter struct { *integrations.GenericRouter } @@ -35,6 +35,14 @@ func NewOpenAIRouter(client *bifrost.Bifrost) *OpenAIRouter { ErrorConverter: func(err *schemas.BifrostError) interface{} { return DeriveOpenAIErrorFromBifrostError(err) }, + StreamConfig: &integrations.StreamConfig{ + ResponseConverter: func(resp *schemas.BifrostResponse) (interface{}, error) { + return DeriveOpenAIStreamFromBifrostResponse(resp), nil + }, + ErrorConverter: func(err *schemas.BifrostError) interface{} { + return DeriveOpenAIStreamFromBifrostError(err) + }, + }, }, } diff --git a/transports/bifrost-http/integrations/openai/types.go b/transports/bifrost-http/integrations/openai/types.go index 1d5b8f7bc0..e709ad9bee 100644 --- a/transports/bifrost-http/integrations/openai/types.go +++ b/transports/bifrost-http/integrations/openai/types.go @@ -27,6 +27,11 @@ type OpenAIChatRequest struct { Seed *int `json:"seed,omitempty"` } +// IsStreamingRequested implements the StreamingRequest interface +func (r *OpenAIChatRequest) IsStreamingRequested() bool { + return r.Stream != nil && *r.Stream +} + // OpenAIChatResponse represents an OpenAI chat completion response type OpenAIChatResponse struct { ID string `json:"id"` @@ -61,6 +66,32 @@ type OpenAIChatErrorStruct struct { EventID string `json:"event_id"` // Event ID for tracking } +// OpenAIStreamChoice represents a choice in a streaming response chunk +type OpenAIStreamChoice struct { + Index int `json:"index"` + Delta *OpenAIStreamDelta `json:"delta,omitempty"` + FinishReason *string `json:"finish_reason,omitempty"` + LogProbs *schemas.LogProbs `json:"logprobs,omitempty"` +} + +// OpenAIStreamDelta represents the incremental content in a streaming chunk +type OpenAIStreamDelta struct { + Role *string `json:"role,omitempty"` + Content *string `json:"content,omitempty"` + ToolCalls *[]schemas.ToolCall `json:"tool_calls,omitempty"` +} + +// OpenAIStreamResponse represents a single chunk in the OpenAI streaming response +type OpenAIStreamResponse struct { + ID string `json:"id"` + Object string `json:"object"` + Created int `json:"created"` + Model string `json:"model"` + SystemFingerprint *string `json:"system_fingerprint,omitempty"` + Choices []OpenAIStreamChoice `json:"choices"` + Usage *schemas.LLMUsage `json:"usage,omitempty"` +} + // ConvertToBifrostRequest converts an OpenAI chat request to Bifrost format func (r *OpenAIChatRequest) ConvertToBifrostRequest() *schemas.BifrostRequest { provider, model := integrations.ParseModelString(r.Model, schemas.OpenAI) @@ -145,7 +176,7 @@ func DeriveOpenAIFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *Open Created: bifrostResp.Created, Model: bifrostResp.Model, Choices: bifrostResp.Choices, - Usage: &bifrostResp.Usage, + Usage: bifrostResp.Usage, ServiceTier: bifrostResp.ServiceTier, SystemFingerprint: bifrostResp.SystemFingerprint, } @@ -197,3 +228,91 @@ func DeriveOpenAIErrorFromBifrostError(bifrostErr *schemas.BifrostError) *OpenAI Error: errorStruct, } } + +// DeriveOpenAIStreamFromBifrostError derives an OpenAI streaming error from a BifrostError +func DeriveOpenAIStreamFromBifrostError(bifrostErr *schemas.BifrostError) *OpenAIChatError { + // For streaming, we use the same error format as regular OpenAI errors + return DeriveOpenAIErrorFromBifrostError(bifrostErr) +} + +// DeriveOpenAIStreamFromBifrostResponse converts a Bifrost response to OpenAI streaming format +func DeriveOpenAIStreamFromBifrostResponse(bifrostResp *schemas.BifrostResponse) *OpenAIStreamResponse { + if bifrostResp == nil { + return nil + } + + streamResp := &OpenAIStreamResponse{ + ID: bifrostResp.ID, + Object: "chat.completion.chunk", + Created: bifrostResp.Created, + Model: bifrostResp.Model, + SystemFingerprint: bifrostResp.SystemFingerprint, + Usage: bifrostResp.Usage, + } + + // Convert choices to streaming format + for _, choice := range bifrostResp.Choices { + streamChoice := OpenAIStreamChoice{ + Index: choice.Index, + FinishReason: choice.FinishReason, + } + + var delta *OpenAIStreamDelta + + // Handle streaming vs non-streaming choices + if choice.BifrostStreamResponseChoice != nil { + // This is a streaming response - use the delta directly + delta = &OpenAIStreamDelta{} + + // Only set fields that are not nil + if choice.BifrostStreamResponseChoice.Delta.Role != nil { + delta.Role = choice.BifrostStreamResponseChoice.Delta.Role + } + if choice.BifrostStreamResponseChoice.Delta.Content != nil { + delta.Content = choice.BifrostStreamResponseChoice.Delta.Content + } + if len(choice.BifrostStreamResponseChoice.Delta.ToolCalls) > 0 { + delta.ToolCalls = &choice.BifrostStreamResponseChoice.Delta.ToolCalls + } + } else if choice.BifrostNonStreamResponseChoice != nil { + // This is a non-streaming response - convert message to delta format + delta = &OpenAIStreamDelta{} + + // Convert role + role := string(choice.BifrostNonStreamResponseChoice.Message.Role) + delta.Role = &role + + // Convert content + if choice.BifrostNonStreamResponseChoice.Message.Content.ContentStr != nil { + delta.Content = choice.BifrostNonStreamResponseChoice.Message.Content.ContentStr + } + + // Convert tool calls if present (from AssistantMessage) + if choice.BifrostNonStreamResponseChoice.Message.AssistantMessage != nil && + choice.BifrostNonStreamResponseChoice.Message.AssistantMessage.ToolCalls != nil { + delta.ToolCalls = choice.BifrostNonStreamResponseChoice.Message.AssistantMessage.ToolCalls + } + + // Set LogProbs from non-streaming choice + if choice.BifrostNonStreamResponseChoice.LogProbs != nil { + streamChoice.LogProbs = choice.BifrostNonStreamResponseChoice.LogProbs + } + } + + // Ensure we have a valid delta with at least one field set + // If all fields are nil, we should skip this chunk or set an empty content + if delta != nil { + hasValidField := (delta.Role != nil) || (delta.Content != nil) || (delta.ToolCalls != nil) + if !hasValidField { + // Set empty content to ensure we have at least one field + emptyContent := "" + delta.Content = &emptyContent + } + streamChoice.Delta = delta + } + + streamResp.Choices = append(streamResp.Choices, streamChoice) + } + + return streamResp +} diff --git a/transports/bifrost-http/integrations/utils.go b/transports/bifrost-http/integrations/utils.go index 84ba65e743..30bb1e751f 100644 --- a/transports/bifrost-http/integrations/utils.go +++ b/transports/bifrost-http/integrations/utils.go @@ -1,11 +1,61 @@ +// Package integrations provides a generic router framework for handling different LLM provider APIs. +// +// CENTRALIZED STREAMING ARCHITECTURE: +// +// This package implements a centralized streaming approach where all stream handling logic +// is consolidated in the GenericRouter, eliminating the need for provider-specific StreamHandler +// implementations. The key components are: +// +// 1. StreamConfig: Defines streaming configuration for each route, including: +// - ResponseConverter: Converts BifrostResponse to provider-specific streaming format +// - ErrorConverter: Converts BifrostError to provider-specific streaming error format +// +// 2. Centralized Stream Processing: The GenericRouter handles all streaming logic: +// - SSE header management +// - Stream channel processing +// - Error handling and conversion +// - Response formatting and flushing +// - Stream closure (handled automatically by provider implementation) +// +// 3. Provider-Specific Type Conversion: Integration types.go files only handle type conversion: +// - Derive{Provider}StreamFromBifrostResponse: Convert responses to streaming format +// - Derive{Provider}StreamFromBifrostError: Convert errors to streaming error format +// +// BENEFITS: +// - Eliminates code duplication across provider-specific stream handlers +// - Centralizes streaming logic for consistency and maintainability +// - Separates concerns: routing logic vs type conversion +// - Automatic stream closure management by provider implementations +// - Consistent error handling across all providers +// +// USAGE EXAMPLE: +// +// routes := []RouteConfig{ +// { +// Path: "/openai/chat/completions", +// Method: "POST", +// // ... other configs ... +// StreamConfig: &StreamConfig{ +// ResponseConverter: func(resp *schemas.BifrostResponse) (interface{}, error) { +// return DeriveOpenAIStreamFromBifrostResponse(resp), nil +// }, +// ErrorConverter: func(err *schemas.BifrostError) interface{} { +// return DeriveOpenAIStreamFromBifrostError(err) +// }, +// }, +// }, +// } package integrations import ( + "context" "encoding/json" "fmt" "log" "strings" + "bufio" + "github.com/fasthttp/router" bifrost "github.com/maximhq/bifrost/core" "github.com/maximhq/bifrost/core/schemas" @@ -19,6 +69,11 @@ type ExtensionRouter interface { RegisterRoutes(r *router.Router) } +// StreamingRequest interface for requests that support streaming +type StreamingRequest interface { + IsStreamingRequested() bool +} + // RequestConverter is a function that converts integration-specific requests to Bifrost format. // It takes the parsed request object and returns a BifrostRequest ready for processing. type RequestConverter func(req interface{}) (*schemas.BifrostRequest, error) @@ -27,10 +82,18 @@ type RequestConverter func(req interface{}) (*schemas.BifrostRequest, error) // It takes a BifrostResponse and returns the format expected by the specific integration. type ResponseConverter func(*schemas.BifrostResponse) (interface{}, error) +// StreamResponseConverter is a function that converts Bifrost responses to integration-specific streaming format. +// It takes a BifrostResponse and returns the streaming format expected by the specific integration. +type StreamResponseConverter func(*schemas.BifrostResponse) (interface{}, error) + // ErrorConverter is a function that converts BifrostError to integration-specific format. // It takes a BifrostError and returns the format expected by the specific integration. type ErrorConverter func(*schemas.BifrostError) interface{} +// StreamErrorConverter is a function that converts BifrostError to integration-specific streaming error format. +// It takes a BifrostError and returns the streaming error format expected by the specific integration. +type StreamErrorConverter func(*schemas.BifrostError) interface{} + // PreRequestCallback is called before processing the request. // It can be used to modify the request object (e.g., extract model from URL parameters) // or perform validation. If it returns an error, the request processing stops. @@ -41,8 +104,33 @@ type PreRequestCallback func(ctx *fasthttp.RequestCtx, req interface{}) error // If it returns an error, an error response is sent instead of the success response. type PostRequestCallback func(ctx *fasthttp.RequestCtx, req interface{}, resp *schemas.BifrostResponse) error -// RouteConfig defines configuration for a single HTTP route in an integration. -// Each route specifies how to handle requests for a specific endpoint. +// StreamConfig defines streaming-specific configuration for an integration +// +// SSE FORMAT BEHAVIOR: +// +// The ResponseConverter and ErrorConverter functions in StreamConfig can return either: +// +// 1. OBJECTS (interface{} that's not a string): +// - Will be JSON marshaled and sent as standard SSE: data: {json}\n\n +// - Use this for most providers (OpenAI, Google, etc.) +// - Example: return map[string]interface{}{"delta": {"content": "hello"}} +// - Result: data: {"delta":{"content":"hello"}}\n\n +// +// 2. STRINGS: +// - Will be sent directly as-is without any modification +// - Use this for providers requiring custom SSE event types (Anthropic, etc.) +// - Example: return "event: content_block_delta\ndata: {\"type\":\"text\"}\n\n" +// - Result: event: content_block_delta +// data: {"type":"text"} +// +// Choose the appropriate return type based on your provider's SSE specification. +type StreamConfig struct { + ResponseConverter StreamResponseConverter // Function to convert BifrostResponse to streaming format + ErrorConverter StreamErrorConverter // Function to convert BifrostError to streaming error format +} + +// RouteConfig defines the configuration for a single route in an integration. +// It specifies the path, method, and handlers for request/response conversion. type RouteConfig struct { Path string // HTTP path pattern (e.g., "/openai/v1/chat/completions") Method string // HTTP method (POST, GET, PUT, DELETE) @@ -50,6 +138,7 @@ type RouteConfig struct { RequestConverter RequestConverter // Function to convert request to BifrostRequest (SHOULD NOT BE NIL) ResponseConverter ResponseConverter // Function to convert BifrostResponse to integration format (SHOULD NOT BE NIL) ErrorConverter ErrorConverter // Function to convert BifrostError to integration format (SHOULD NOT BE NIL) + StreamConfig *StreamConfig // Optional: Streaming configuration (if nil, streaming not supported) PreCallback PreRequestCallback // Optional: called before request processing PostCallback PostRequestCallback // Optional: called after request processing } @@ -120,7 +209,7 @@ func (g *GenericRouter) RegisterRoutes(r *router.Router) { // 1. Parse JSON request body into the configured request type (for methods that expect bodies) // 2. Execute pre-callback (if configured) for request modification/validation // 3. Convert request to BifrostRequest using the configured converter -// 4. Execute the request through Bifrost +// 4. Execute the request through Bifrost (streaming or non-streaming) // 5. Execute post-callback (if configured) for response modification // 6. Convert and send the response using the configured response converter func (g *GenericRouter) createHandler(config RouteConfig) fasthttp.RequestHandler { @@ -167,34 +256,277 @@ func (g *GenericRouter) createHandler(config RouteConfig) fasthttp.RequestHandle return } + // Check if streaming is requested + isStreaming := false + if streamingReq, ok := req.(StreamingRequest); ok { + isStreaming = streamingReq.IsStreamingRequested() + } + // Execute the request through Bifrost bifrostCtx := lib.ConvertToBifrostContext(ctx) - result, bifrostErr := g.client.ChatCompletionRequest(*bifrostCtx, bifrostReq) - if bifrostErr != nil { - g.sendError(ctx, config.ErrorConverter, bifrostErr) + + if isStreaming { + g.handleStreamingRequest(ctx, config, req, bifrostReq, bifrostCtx) + } else { + g.handleNonStreamingRequest(ctx, config, req, bifrostReq, bifrostCtx) + } + } +} + +// handleNonStreamingRequest handles regular (non-streaming) requests +func (g *GenericRouter) handleNonStreamingRequest(ctx *fasthttp.RequestCtx, config RouteConfig, req interface{}, bifrostReq *schemas.BifrostRequest, bifrostCtx *context.Context) { + result, bifrostErr := g.client.ChatCompletionRequest(*bifrostCtx, bifrostReq) + if bifrostErr != nil { + g.sendError(ctx, config.ErrorConverter, bifrostErr) + return + } + + // Execute post-request callback if configured + // This is typically used for response modification or additional processing + if config.PostCallback != nil { + if err := config.PostCallback(ctx, req, result); err != nil { + g.sendError(ctx, config.ErrorConverter, newBifrostError(err, "failed to execute post-request callback")) return } - // Execute post-request callback if configured - // This is typically used for response modification or additional processing - if config.PostCallback != nil { - if err := config.PostCallback(ctx, req, result); err != nil { - g.sendError(ctx, config.ErrorConverter, newBifrostError(err, "failed to execute post-request callback")) + } + + if result == nil { + g.sendError(ctx, config.ErrorConverter, newBifrostError(nil, "Bifrost response is nil after post-request callback")) + return + } + + // Convert Bifrost response to integration-specific format and send + response, err := config.ResponseConverter(result) + if err != nil { + g.sendError(ctx, config.ErrorConverter, newBifrostError(err, "failed to encode response")) + return + } + g.sendSuccess(ctx, config.ErrorConverter, response) +} + +// handleStreamingRequest handles streaming requests using Server-Sent Events (SSE) +func (g *GenericRouter) handleStreamingRequest(ctx *fasthttp.RequestCtx, config RouteConfig, req interface{}, bifrostReq *schemas.BifrostRequest, bifrostCtx *context.Context) { + // Set common SSE headers + ctx.SetContentType("text/event-stream") + ctx.Response.Header.Set("Cache-Control", "no-cache") + ctx.Response.Header.Set("Connection", "keep-alive") + ctx.Response.Header.Set("Access-Control-Allow-Origin", "*") + + // Get the streaming channel from Bifrost + stream, bifrostErr := g.client.ChatCompletionStreamRequest(*bifrostCtx, bifrostReq) + if bifrostErr != nil { + // Send error in SSE format + g.sendStreamError(ctx, config, bifrostErr) + return + } + + // Check if streaming is configured for this route + if config.StreamConfig == nil { + g.sendStreamError(ctx, config, newBifrostError(nil, "streaming is not supported for this integration")) + return + } + + // Handle streaming using the centralized approach + g.handleStreaming(ctx, config, stream) +} + +// handleStreaming processes a stream of BifrostResponse objects and sends them as Server-Sent Events (SSE). +// It handles both successful responses and errors in the streaming format. +// +// SSE FORMAT HANDLING: +// +// By default, all responses and errors are sent in the standard SSE format: +// +// data: {"response": "content"}\n\n +// +// However, some providers (like Anthropic) require custom SSE event formats with explicit event types: +// +// event: content_block_delta +// data: {"type": "content_block_delta", "delta": {...}} +// +// event: message_stop +// data: {"type": "message_stop"} +// +// STREAMCONFIG CONVERTER BEHAVIOR: +// +// The StreamConfig.ResponseConverter and StreamConfig.ErrorConverter functions can return: +// +// 1. OBJECTS (default behavior): +// - Return any Go struct/map/interface{} +// - Will be JSON marshaled and wrapped as: data: {json}\n\n +// - Example: return map[string]interface{}{"content": "hello"} +// - Result: data: {"content":"hello"}\n\n +// +// 2. STRINGS (custom SSE format): +// - Return a complete SSE string with custom event types and formatting +// - Will be sent directly without any wrapping or modification +// - Example: return "event: content_block_delta\ndata: {\"type\":\"text\"}\n\n" +// - Result: event: content_block_delta +// data: {"type":"text"} +// +// IMPLEMENTATION GUIDELINES: +// +// For standard providers (OpenAI, etc.): Return objects from converters +// For custom SSE providers (Anthropic, etc.): Return pre-formatted SSE strings +// +// When returning strings, ensure they: +// - Include proper event: lines (if needed) +// - Include data: lines with JSON content +// - End with \n\n for proper SSE formatting +// - Follow the provider's specific SSE event specification +func (g *GenericRouter) handleStreaming(ctx *fasthttp.RequestCtx, config RouteConfig, streamChan chan *schemas.BifrostStream) { + // Use streaming response writer + ctx.Response.SetBodyStreamWriter(func(w *bufio.Writer) { + defer w.Flush() + + // Process streaming responses + for response := range streamChan { + if response == nil { + continue + } + + // Check for context cancellation + select { + case <-ctx.Done(): return + default: } - } - if result == nil { - g.sendError(ctx, config.ErrorConverter, newBifrostError(nil, "Bifrost response is nil after post-request callback")) - return - } + // Handle errors + if response.BifrostError != nil { + var errorResponse interface{} + var errorJSON []byte + var err error + + // Use stream error converter if available, otherwise fallback to regular error converter + if config.StreamConfig != nil && config.StreamConfig.ErrorConverter != nil { + errorResponse = config.StreamConfig.ErrorConverter(response.BifrostError) + } else if config.ErrorConverter != nil { + errorResponse = config.ErrorConverter(response.BifrostError) + } else { + // Default error response + errorResponse = map[string]interface{}{ + "error": map[string]interface{}{ + "type": "internal_error", + "message": "An error occurred while processing your request", + }, + } + } - // Convert Bifrost response to integration-specific format and send - response, err := config.ResponseConverter(result) - if err != nil { - g.sendError(ctx, config.ErrorConverter, newBifrostError(err, "failed to encode response")) - return + // Check if the error converter returned a raw SSE string or JSON object + if sseErrorString, ok := errorResponse.(string); ok { + // CUSTOM SSE FORMAT: The converter returned a complete SSE string + // This is used by providers like Anthropic that need custom event types + // Example: "event: error\ndata: {...}\n\n" + if _, err := fmt.Fprint(w, sseErrorString); err != nil { + return + } + } else { + // STANDARD SSE FORMAT: The converter returned an object + // This will be JSON marshaled and wrapped as "data: {json}\n\n" + // Used by most providers (OpenAI, Google, etc.) + errorJSON, err = json.Marshal(errorResponse) + if err != nil { + // Fallback to basic error if marshaling fails + basicError := map[string]interface{}{ + "error": map[string]interface{}{ + "type": "internal_error", + "message": "An error occurred while processing your request", + }, + } + if errorJSON, err = json.Marshal(basicError); err != nil { + return // Can't even send basic error + } + } + + // Send error as SSE data + if _, err := fmt.Fprintf(w, "data: %s\n\n", errorJSON); err != nil { + return + } + } + + // Flush and return on error + if err := w.Flush(); err != nil { + return + } + return // End stream on error + } + + // Handle successful responses + if response.BifrostResponse != nil { + // Convert response to integration-specific streaming format + var convertedResponse interface{} + var err error + + if config.StreamConfig.ResponseConverter != nil { + convertedResponse, err = config.StreamConfig.ResponseConverter(response.BifrostResponse) + } else { + // Fallback to regular response converter + convertedResponse, err = config.ResponseConverter(response.BifrostResponse) + } + + if err != nil { + // Log conversion error but continue processing + log.Printf("Failed to convert streaming response: %v", err) + continue + } + + // Check if the converter returned a raw SSE string or JSON object + if sseString, ok := convertedResponse.(string); ok { + // CUSTOM SSE FORMAT: The converter returned a complete SSE string + // This is used by providers like Anthropic that need custom event types + // Example: "event: content_block_delta\ndata: {...}\n\n" + if _, err := fmt.Fprint(w, sseString); err != nil { + return // Network error, stop streaming + } + } else { + // STANDARD SSE FORMAT: The converter returned an object + // This will be JSON marshaled and wrapped as "data: {json}\n\n" + // Used by most providers (OpenAI, Google, etc.) + responseJSON, err := json.Marshal(convertedResponse) + if err != nil { + // Log JSON marshaling error but continue processing + log.Printf("Failed to marshal streaming response: %v", err) + continue + } + + // Send as SSE data + if _, err := fmt.Fprintf(w, "data: %s\n\n", responseJSON); err != nil { + return // Network error, stop streaming + } + } + + // Flush immediately to send the chunk + if err := w.Flush(); err != nil { + return // Network error, stop streaming + } + } } - g.sendSuccess(ctx, config.ErrorConverter, response) + }) +} + +// sendStreamError sends an error in streaming format using the stream error converter if available +func (g *GenericRouter) sendStreamError(ctx *fasthttp.RequestCtx, config RouteConfig, bifrostErr *schemas.BifrostError) { + var errorResponse interface{} + + // Use stream error converter if available, otherwise fallback to regular error converter + if config.StreamConfig != nil && config.StreamConfig.ErrorConverter != nil { + errorResponse = config.StreamConfig.ErrorConverter(bifrostErr) + } else { + errorResponse = config.ErrorConverter(bifrostErr) + } + + errorJSON, err := json.Marshal(map[string]interface{}{ + "error": errorResponse, + }) + if err != nil { + log.Printf("Failed to marshal error for SSE: %v", err) + ctx.SetStatusCode(fasthttp.StatusInternalServerError) + return + } + + if _, err := fmt.Fprintf(ctx, "data: %s\n\n", errorJSON); err != nil { + log.Printf("Failed to write SSE error: %v", err) } } diff --git a/transports/bifrost-http/main.go b/transports/bifrost-http/main.go index 73c2ba7bc2..f927ebd8b6 100644 --- a/transports/bifrost-http/main.go +++ b/transports/bifrost-http/main.go @@ -46,7 +46,7 @@ // This allows clients to use their existing integration code without modification while benefiting // from Bifrost's unified model routing, fallbacks, monitoring capabilities, and high-performance configuration management. // -// NOTE: Streaming is not supported yet so all the flags related to streaming are ignored. (in both bifrost and its integrations) +// NOTE: Streaming is supported for chat completions via Server-Sent Events (SSE) package main import ( diff --git a/transports/bifrost-http/plugins/logging/main.go b/transports/bifrost-http/plugins/logging/main.go index 1587a9e313..c316119cb7 100644 --- a/transports/bifrost-http/plugins/logging/main.go +++ b/transports/bifrost-http/plugins/logging/main.go @@ -29,8 +29,9 @@ type ContextKey string type LogOperation string const ( - LogOperationCreate LogOperation = "create" - LogOperationUpdate LogOperation = "update" + LogOperationCreate LogOperation = "create" + LogOperationUpdate LogOperation = "update" + LogOperationStreamUpdate LogOperation = "stream_update" ) // Context keys for logging optimization @@ -38,13 +39,35 @@ const ( DroppedCreateContextKey ContextKey = "bifrost-logging-dropped" ) +// UpdateLogData contains data for log entry updates +type UpdateLogData struct { + Status string + TokenUsage *schemas.LLMUsage + OutputMessage *schemas.BifrostMessage + ToolCalls *[]schemas.ToolCall + ErrorDetails *schemas.BifrostError + Model string // May be different from request + Object string // May be different from request +} + +// StreamUpdateData contains lightweight data for streaming delta updates +type StreamUpdateData struct { + ErrorDetails *schemas.BifrostError + Model string // May be different from request + Object string // May be different from request + TokenUsage *schemas.LLMUsage + Delta *schemas.BifrostStreamDelta // The actual streaming delta + FinishReason *string // If the stream is finished +} + // LogMessage represents a message in the logging queue type LogMessage struct { - Operation LogOperation - RequestID string - Timestamp time.Time // Of the preHook/postHook call - InitialData *InitialLogData // For create operations - UpdateData *UpdateLogData // For update operations + Operation LogOperation + RequestID string + Timestamp time.Time // Of the preHook/postHook call + InitialData *InitialLogData // For create operations + UpdateData *UpdateLogData // For update operations + StreamUpdateData *StreamUpdateData // For stream update operations } // InitialLogData contains data for initial log entry creation @@ -57,17 +80,6 @@ type InitialLogData struct { Tools *[]schemas.Tool } -// UpdateLogData contains data for log entry updates -type UpdateLogData struct { - Status string - TokenUsage *schemas.LLMUsage - OutputMessage *schemas.BifrostMessage - ToolCalls *[]schemas.ToolCall - ErrorDetails *schemas.BifrostError - Model string // May be different from request - Object string // May be different from request -} - // LogEntry represents a complete log entry for a request/response cycle type LogEntry struct { ID string `json:"id"` @@ -84,6 +96,7 @@ type LogEntry struct { TokenUsage *schemas.LLMUsage `json:"token_usage,omitempty"` Status string `json:"status"` // "processing", "success", or "error" ErrorDetails *schemas.BifrostError `json:"error_details,omitempty"` + Stream bool `json:"stream"` // true if this was a streaming response CreatedAt time.Time `json:"created_at"` } @@ -143,6 +156,8 @@ type LoggerPlugin struct { droppedRequests atomic.Int64 cleanupTicker *time.Ticker // Ticker for cleaning up old processing logs logMsgPool sync.Pool // Pool for reusing LogMessage structs + updateDataPool sync.Pool // Pool for reusing UpdateLogData structs + streamDataPool sync.Pool // Pool for reusing StreamUpdateData structs } // NewLoggerPlugin creates a new logging plugin @@ -187,11 +202,23 @@ func NewLoggerPlugin(config *Config, logger schemas.Logger) (*LoggerPlugin, erro return &LogMessage{} }, }, + updateDataPool: sync.Pool{ + New: func() interface{} { + return &UpdateLogData{} + }, + }, + streamDataPool: sync.Pool{ + New: func() interface{} { + return &StreamUpdateData{} + }, + }, } - // Prewarm the log message pool + // Prewarm the pools for better performance at startup for range 1000 { - plugin.getLogMessage() + plugin.logMsgPool.Put(&LogMessage{}) + plugin.updateDataPool.Put(&UpdateLogData{}) + plugin.streamDataPool.Put(&StreamUpdateData{}) } // Create tables and indexes @@ -235,6 +262,9 @@ func (p *LoggerPlugin) createTables() error { -- For content search content_summary TEXT, + -- Stream indicator + stream BOOLEAN DEFAULT FALSE, + -- Timestamps for tracking created_at INTEGER NOT NULL )` @@ -317,6 +347,19 @@ func (p *LoggerPlugin) migrateTableSchema() error { } } + // Check if stream column exists + columnExists = false + err = p.db.QueryRow("SELECT COUNT(*) FROM pragma_table_info('logs') WHERE name = 'stream'").Scan(&columnExists) + if err != nil { + return fmt.Errorf("failed to check for stream column: %w", err) + } + + if !columnExists { + if _, err := p.db.Exec("ALTER TABLE logs ADD COLUMN stream BOOLEAN DEFAULT FALSE"); err != nil { + return fmt.Errorf("failed to add stream column: %w", err) + } + } + return nil } @@ -366,11 +409,52 @@ func (p *LoggerPlugin) putLogMessage(msg *LogMessage) { msg.RequestID = "" msg.Timestamp = time.Time{} msg.InitialData = nil + + // Don't reset UpdateData and StreamUpdateData here since they're returned + // to their own pools in the defer function - just clear the pointers msg.UpdateData = nil + msg.StreamUpdateData = nil p.logMsgPool.Put(msg) } +// getUpdateLogData gets an UpdateLogData from the pool +func (p *LoggerPlugin) getUpdateLogData() *UpdateLogData { + return p.updateDataPool.Get().(*UpdateLogData) +} + +// putUpdateLogData returns an UpdateLogData to the pool after resetting it +func (p *LoggerPlugin) putUpdateLogData(data *UpdateLogData) { + // Reset all fields to avoid memory leaks + data.Status = "" + data.TokenUsage = nil + data.OutputMessage = nil + data.ToolCalls = nil + data.ErrorDetails = nil + data.Model = "" + data.Object = "" + + p.updateDataPool.Put(data) +} + +// getStreamUpdateData gets a StreamUpdateData from the pool +func (p *LoggerPlugin) getStreamUpdateData() *StreamUpdateData { + return p.streamDataPool.Get().(*StreamUpdateData) +} + +// putStreamUpdateData returns a StreamUpdateData to the pool after resetting it +func (p *LoggerPlugin) putStreamUpdateData(data *StreamUpdateData) { + // Reset all fields to avoid memory leaks + data.ErrorDetails = nil + data.Model = "" + data.Object = "" + data.TokenUsage = nil + data.Delta = nil + data.FinishReason = nil + + p.streamDataPool.Put(data) +} + // SetLogCallback sets a callback function that will be called for each log entry func (p *LoggerPlugin) SetLogCallback(callback LogCallback) { p.mu.Lock() @@ -426,6 +510,27 @@ func (p *LoggerPlugin) PreHook(ctx *context.Context, req *schemas.BifrostRequest defer p.putLogMessage(logMsg) // Return to pool when done if err := p.insertInitialLogEntry(logMsg.RequestID, logMsg.Timestamp, logMsg.InitialData); err != nil { p.logger.Error(fmt.Errorf("failed to insert initial log entry for request %s: %w", logMsg.RequestID, err)) + } else { + // Call callback for initial log creation (WebSocket "create" message) + // Construct LogEntry directly from data we have to avoid database query + p.mu.Lock() + if p.logCallback != nil { + initialEntry := &LogEntry{ + ID: logMsg.RequestID, + Timestamp: logMsg.Timestamp, + Object: logMsg.InitialData.Object, + Provider: logMsg.InitialData.Provider, + Model: logMsg.InitialData.Model, + InputHistory: logMsg.InitialData.InputHistory, + Params: logMsg.InitialData.Params, + Tools: logMsg.InitialData.Tools, + Status: "processing", + Stream: false, // Initially false, will be updated if streaming + CreatedAt: logMsg.Timestamp, + } + p.logCallback(initialEntry) + } + p.mu.Unlock() } }(logMsg) @@ -454,61 +559,124 @@ func (p *LoggerPlugin) PostHook(ctx *context.Context, result *schemas.BifrostRes return result, err, nil } - // Queue the log update message (non-blocking) + // Check if this is a streaming response + isStreaming := p.isStreamingResponse(result) + + // Queue the log update message (non-blocking) - use same pattern for both streaming and regular logMsg := p.getLogMessage() - logMsg.Operation = LogOperationUpdate logMsg.RequestID = requestID logMsg.Timestamp = time.Now() - // Prepare update data (latency will be calculated in background worker) - updateData := &UpdateLogData{} + if isStreaming { + // Handle streaming response with lightweight async pattern + logMsg.Operation = LogOperationStreamUpdate - if err != nil { - // Error case - updateData.Status = "error" - updateData.ErrorDetails = err - } else if result != nil { - // Success case - updateData.Status = "success" - - // Update model if different from request - if result.Model != "" { - updateData.Model = result.Model - } + // Prepare lightweight streaming update data + streamUpdateData := p.getStreamUpdateData() - // Update object type if available - if result.Object != "" { - updateData.Object = result.Object - } + if err != nil { + // Error case + streamUpdateData.ErrorDetails = err + } else if result != nil { + // Update model if different from request + if result.Model != "" { + streamUpdateData.Model = result.Model + } + + // Update object type if available + if result.Object != "" { + streamUpdateData.Object = result.Object + } + + // Token usage + if result.Usage != nil && result.Usage.TotalTokens > 0 { + streamUpdateData.TokenUsage = result.Usage + } - // Token usage - if result.Usage.TotalTokens > 0 { - updateData.TokenUsage = &result.Usage + // Extract delta and finish reason from streaming response + if len(result.Choices) > 0 { + choice := result.Choices[0] + if choice.BifrostStreamResponseChoice != nil { + streamUpdateData.Delta = &choice.BifrostStreamResponseChoice.Delta + } + streamUpdateData.FinishReason = choice.FinishReason + } } - // Output message and tool calls - if len(result.Choices) > 0 { - updateData.OutputMessage = &result.Choices[0].Message + logMsg.StreamUpdateData = streamUpdateData + } else { + // Handle regular response + logMsg.Operation = LogOperationUpdate + + // Prepare update data (latency will be calculated in background worker) + updateData := p.getUpdateLogData() + + if err != nil { + // Error case + updateData.Status = "error" + updateData.ErrorDetails = err + } else if result != nil { + // Success case + updateData.Status = "success" + + // Update model if different from request + if result.Model != "" { + updateData.Model = result.Model + } + + // Update object type if available + if result.Object != "" { + updateData.Object = result.Object + } + + // Token usage + if result.Usage != nil && result.Usage.TotalTokens > 0 { + updateData.TokenUsage = result.Usage + } - // Extract tool calls if present - if result.Choices[0].Message.AssistantMessage != nil && - result.Choices[0].Message.AssistantMessage.ToolCalls != nil { - updateData.ToolCalls = result.Choices[0].Message.AssistantMessage.ToolCalls + // Output message and tool calls + if len(result.Choices) > 0 { + updateData.OutputMessage = &result.Choices[0].Message + + // Extract tool calls if present + if result.Choices[0].Message.AssistantMessage != nil && + result.Choices[0].Message.AssistantMessage.ToolCalls != nil { + updateData.ToolCalls = result.Choices[0].Message.AssistantMessage.ToolCalls + } } } - } - logMsg.UpdateData = updateData + logMsg.UpdateData = updateData + } + // Both streaming and regular updates now use the same async pattern go func(logMsg *LogMessage) { defer p.putLogMessage(logMsg) // Return to pool when done - if err := p.updateLogEntry(logMsg.RequestID, logMsg.Timestamp, logMsg.UpdateData); err != nil { - p.logger.Error(fmt.Errorf("failed to update log entry for request %s: %w", logMsg.RequestID, err)) + + // Return pooled data structures to their respective pools + defer func() { + if logMsg.UpdateData != nil { + p.putUpdateLogData(logMsg.UpdateData) + } + if logMsg.StreamUpdateData != nil { + p.putStreamUpdateData(logMsg.StreamUpdateData) + } + }() + + var processingErr error + if logMsg.Operation == LogOperationStreamUpdate { + processingErr = p.processStreamUpdate(logMsg.RequestID, logMsg.Timestamp, logMsg.StreamUpdateData) } else { - // Call callback if set (for real-time updates) + processingErr = p.updateLogEntry(logMsg.RequestID, logMsg.Timestamp, logMsg.UpdateData) + } + + if processingErr != nil { + p.logger.Error(fmt.Errorf("failed to process log update for request %s: %w", logMsg.RequestID, processingErr)) + } else { + // Call callback immediately for both streaming and regular updates + // UI will handle debouncing if needed p.mu.Lock() if p.logCallback != nil { - // Get the updated log entry for callback if updatedEntry, getErr := p.getLogEntry(logMsg.RequestID); getErr == nil { p.logCallback(updatedEntry) } @@ -517,11 +685,25 @@ func (p *LoggerPlugin) PostHook(ctx *context.Context, result *schemas.BifrostRes } }(logMsg) - // p.putLogMessage(logMsg) - return result, err, nil } +// isStreamingResponse checks if the response is a streaming delta +func (p *LoggerPlugin) isStreamingResponse(result *schemas.BifrostResponse) bool { + if result == nil || len(result.Choices) == 0 { + return false + } + + // Check if any choice has BifrostStreamResponseChoice (indicating streaming) + for _, choice := range result.Choices { + if choice.BifrostStreamResponseChoice != nil { + return true + } + } + + return false +} + // Cleanup is called when the plugin is being shut down func (p *LoggerPlugin) Cleanup() error { // Stop the cleanup ticker diff --git a/transports/bifrost-http/plugins/logging/utils.go b/transports/bifrost-http/plugins/logging/utils.go index 725063f976..436ef66bd9 100644 --- a/transports/bifrost-http/plugins/logging/utils.go +++ b/transports/bifrost-http/plugins/logging/utils.go @@ -25,14 +25,14 @@ func (p *LoggerPlugin) insertInitialLogEntry(requestID string, timestamp time.Ti INSERT INTO logs ( id, provider, model, object_type, status, input_history, tools, params, content_summary, - created_at - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` + stream, created_at + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)` _, err := p.db.Exec(query, requestID, data.Provider, data.Model, data.Object, "processing", string(inputHistoryJSON), string(toolsJSON), string(paramsJSON), - contentSummary, timestamp.UnixNano()) + contentSummary, false, timestamp.UnixNano()) if err != nil { return fmt.Errorf("failed to insert initial log entry: %w", err) @@ -134,6 +134,242 @@ func (p *LoggerPlugin) updateLogEntry(requestID string, timestamp time.Time, dat return nil } +// processStreamUpdate handles streaming delta updates efficiently with minimal database operations +func (p *LoggerPlugin) processStreamUpdate(requestID string, timestamp time.Time, data *StreamUpdateData) error { + // Handle error case first + if data.ErrorDetails != nil { + // For errors, we should also calculate latency + // Get created_at timestamp to calculate latency + var createdAtUnix int64 + err := p.db.QueryRow("SELECT created_at FROM logs WHERE id = ?", requestID).Scan(&createdAtUnix) + if err != nil { + // If we can't get created_at, just update status and error + query := "UPDATE logs SET status = ?, error_details = ? WHERE id = ?" + errorDetailsJSON, _ := json.Marshal(data.ErrorDetails) + _, execErr := p.db.Exec(query, "error", string(errorDetailsJSON), requestID) + return execErr + } + + createdAt := time.Unix(createdAtUnix/1e9, createdAtUnix%1e9) + latency := float64(timestamp.Sub(createdAt).Milliseconds()) + + query := "UPDATE logs SET status = ?, error_details = ?, latency = ?, timestamp = ? WHERE id = ?" + errorDetailsJSON, _ := json.Marshal(data.ErrorDetails) + _, err = p.db.Exec(query, "error", string(errorDetailsJSON), latency, timestamp.UnixNano(), requestID) + return err + } + + // For streaming updates, we need to calculate latency when the stream finishes + var needsLatency bool + var latency float64 + + if data.FinishReason != nil { + // Stream is finishing, calculate latency + var createdAtUnix int64 + err := p.db.QueryRow("SELECT created_at FROM logs WHERE id = ?", requestID).Scan(&createdAtUnix) + if err != nil { + return fmt.Errorf("failed to get created_at for latency calculation: %w", err) + } + + createdAt := time.Unix(createdAtUnix/1e9, createdAtUnix%1e9) + latency = float64(timestamp.Sub(createdAt).Milliseconds()) + needsLatency = true + } + + // Build dynamic UPDATE query for streaming data + var setParts []string + var args []interface{} + + // Always mark as streaming and update timestamp + setParts = append(setParts, "stream = ?, timestamp = ?") + args = append(args, true, timestamp.UnixNano()) + + // Add latency if this is the final chunk + if needsLatency { + setParts = append(setParts, "latency = ?") + args = append(args, latency) + } + + // Update model if provided + if data.Model != "" { + setParts = append(setParts, "model = ?") + args = append(args, data.Model) + } + + // Update object type if provided + if data.Object != "" { + setParts = append(setParts, "object_type = ?") + args = append(args, data.Object) + } + + // Update token usage if provided + if data.TokenUsage != nil { + setParts = append(setParts, "prompt_tokens = ?, completion_tokens = ?, total_tokens = ?") + args = append(args, data.TokenUsage.PromptTokens, data.TokenUsage.CompletionTokens, data.TokenUsage.TotalTokens) + } + + // Handle finish reason - if present, mark as complete + if data.FinishReason != nil { + setParts = append(setParts, "status = ?") + args = append(args, "success") + } + + // Process delta content and tool calls if present + if data.Delta != nil { + if err := p.appendDeltaToEntry(requestID, data.Delta, &setParts, &args); err != nil { + return fmt.Errorf("failed to append delta: %w", err) + } + } + + // Only perform update if there's something to update + if len(setParts) > 0 { + // Add WHERE clause parameter + args = append(args, requestID) + + query := fmt.Sprintf("UPDATE logs SET %s WHERE id = ?", strings.Join(setParts, ", ")) + _, err := p.db.Exec(query, args...) + if err != nil { + return fmt.Errorf("failed to update streaming log entry: %w", err) + } + } + + return nil +} + +// appendDeltaToEntry efficiently appends streaming delta content to existing database entry +func (p *LoggerPlugin) appendDeltaToEntry(requestID string, delta *schemas.BifrostStreamDelta, setParts *[]string, args *[]interface{}) error { + // Only fetch existing content if we have content or tool calls to append + if (delta.Content == nil || *delta.Content == "") && len(delta.ToolCalls) == 0 && delta.Refusal == nil { + return nil + } + + // Get only the necessary fields from existing entry + var outputMessageJSON sql.NullString + err := p.db.QueryRow("SELECT output_message FROM logs WHERE id = ?", requestID).Scan(&outputMessageJSON) + if err != nil { + return fmt.Errorf("failed to get existing output message: %w", err) + } + + // Parse existing message or create new one + var outputMessage *schemas.BifrostMessage + if outputMessageJSON.Valid && outputMessageJSON.String != "null" && outputMessageJSON.String != "" { + outputMessage = &schemas.BifrostMessage{} + if err := json.Unmarshal([]byte(outputMessageJSON.String), outputMessage); err != nil { + // If unmarshaling fails, create new message + outputMessage = &schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{}, + } + } + } else { + // Create new message + outputMessage = &schemas.BifrostMessage{ + Role: schemas.ModelChatMessageRoleAssistant, + Content: schemas.MessageContent{}, + } + } + + // Handle role (usually in first chunk) + if delta.Role != nil { + outputMessage.Role = schemas.ModelChatMessageRole(*delta.Role) + } + + // Append content + if delta.Content != nil && *delta.Content != "" { + p.appendContentToMessage(outputMessage, *delta.Content) + } + + // Handle refusal + if delta.Refusal != nil && *delta.Refusal != "" { + if outputMessage.AssistantMessage == nil { + outputMessage.AssistantMessage = &schemas.AssistantMessage{} + } + if outputMessage.AssistantMessage.Refusal == nil { + outputMessage.AssistantMessage.Refusal = delta.Refusal + } else { + *outputMessage.AssistantMessage.Refusal += *delta.Refusal + } + } + + // Accumulate tool calls + if len(delta.ToolCalls) > 0 { + p.accumulateToolCallsInMessage(outputMessage, delta.ToolCalls) + } + + // Update the database fields + updatedMessageJSON, _ := json.Marshal(outputMessage) + *setParts = append(*setParts, "output_message = ?") + *args = append(*args, string(updatedMessageJSON)) + + // Also update tool_calls field for backward compatibility + if outputMessage.AssistantMessage != nil && outputMessage.AssistantMessage.ToolCalls != nil { + toolCallsJSON, _ := json.Marshal(outputMessage.AssistantMessage.ToolCalls) + *setParts = append(*setParts, "tool_calls = ?") + *args = append(*args, string(toolCallsJSON)) + } + + return nil +} + +// appendContentToMessage efficiently appends content to a message +func (p *LoggerPlugin) appendContentToMessage(message *schemas.BifrostMessage, newContent string) { + if message.Content.ContentStr != nil { + // Append to existing string content + *message.Content.ContentStr += newContent + } else if message.Content.ContentBlocks != nil { + // Find the last text block and append, or create new one + blocks := *message.Content.ContentBlocks + if len(blocks) > 0 && blocks[len(blocks)-1].Type == schemas.ContentBlockTypeText && blocks[len(blocks)-1].Text != nil { + // Append to last text block + *blocks[len(blocks)-1].Text += newContent + } else { + // Create new text block + blocks = append(blocks, schemas.ContentBlock{ + Type: schemas.ContentBlockTypeText, + Text: &newContent, + }) + message.Content.ContentBlocks = &blocks + } + } else { + // Initialize with string content + message.Content.ContentStr = &newContent + } +} + +// accumulateToolCallsInMessage efficiently accumulates tool calls in a message +func (p *LoggerPlugin) accumulateToolCallsInMessage(message *schemas.BifrostMessage, deltaToolCalls []schemas.ToolCall) { + if message.AssistantMessage == nil { + message.AssistantMessage = &schemas.AssistantMessage{} + } + + if message.AssistantMessage.ToolCalls == nil { + message.AssistantMessage.ToolCalls = &[]schemas.ToolCall{} + } + + existingToolCalls := *message.AssistantMessage.ToolCalls + + for _, deltaToolCall := range deltaToolCalls { + // Find existing tool call with same ID or create new one + found := false + for i := range existingToolCalls { + if existingToolCalls[i].ID != nil && deltaToolCall.ID != nil && + *existingToolCalls[i].ID == *deltaToolCall.ID { + // Append arguments to existing tool call + existingToolCalls[i].Function.Arguments += deltaToolCall.Function.Arguments + found = true + break + } + } + + if !found { + // Add new tool call + existingToolCalls = append(existingToolCalls, deltaToolCall) + } + } + + message.AssistantMessage.ToolCalls = &existingToolCalls +} + // createContentSummaryFromInitialData creates a searchable content summary from initial log data func (p *LoggerPlugin) createContentSummaryFromInitialData(data *InitialLogData) string { var parts []string @@ -154,7 +390,7 @@ func (p *LoggerPlugin) getLogEntry(requestID string) (*LogEntry, error) { SELECT id, timestamp, provider, model, object_type, status, latency, prompt_tokens, completion_tokens, total_tokens, input_history, output_message, tools, tool_calls, - params, error_details, created_at + params, error_details, stream, created_at FROM logs WHERE id = ?` var entry LogEntry @@ -163,13 +399,14 @@ func (p *LoggerPlugin) getLogEntry(requestID string) (*LogEntry, error) { var paramsJSON, errorDetailsJSON sql.NullString var promptTokens, completionTokens, totalTokensRow sql.NullInt64 var latency sql.NullFloat64 + var stream sql.NullBool err := p.db.QueryRow(query, requestID).Scan( &entry.ID, ×tampUnix, &entry.Provider, &entry.Model, &entry.Object, &entry.Status, &latency, &promptTokens, &completionTokens, &totalTokensRow, &inputHistoryJSON, &outputMessageJSON, &toolsJSON, &toolCallsJSON, - ¶msJSON, &errorDetailsJSON, + ¶msJSON, &errorDetailsJSON, &stream, &createdAtUnix, ) if err != nil { @@ -185,6 +422,11 @@ func (p *LoggerPlugin) getLogEntry(requestID string) (*LogEntry, error) { entry.Latency = &latency.Float64 } + // Handle stream flag + if stream.Valid { + entry.Stream = stream.Bool + } + // Handle token usage if promptTokens.Valid || completionTokens.Valid || totalTokensRow.Valid { entry.TokenUsage = &schemas.LLMUsage{} diff --git a/transports/bifrost-http/ui/404.html b/transports/bifrost-http/ui/404.html index 1d921e5b46..a0fd813772 100644 --- a/transports/bifrost-http/ui/404.html +++ b/transports/bifrost-http/ui/404.html @@ -1,4 +1,4 @@ -404: This page could not be found.Bifrost - The fastest LLM gateway

404

This page could not be found.

\ No newline at end of file +

404

This page could not be found.

\ No newline at end of file diff --git a/transports/bifrost-http/ui/404/index.html b/transports/bifrost-http/ui/404/index.html index 77008b1a38..7289c14ee5 100644 --- a/transports/bifrost-http/ui/404/index.html +++ b/transports/bifrost-http/ui/404/index.html @@ -1,4 +1,4 @@ -404: This page could not be found.Bifrost - The fastest LLM gateway

404

This page could not be found.

\ No newline at end of file +

404

This page could not be found.

\ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/build/_buildManifest.js b/transports/bifrost-http/ui/_next/static/build/_buildManifest.js index 2a6d077149..ce1ca2aef5 100644 --- a/transports/bifrost-http/ui/_next/static/build/_buildManifest.js +++ b/transports/bifrost-http/ui/_next/static/build/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:6,errorRate:1e-4,numBits:116,numHashes:14,bitArray:[1,0,0,r,r,r,1,e,e,r,r,e,e,r,e,e,e,r,r,r,e,r,r,r,e,r,r,r,e,r,e,r,e,r,r,e,e,e,e,e,e,r,e,e,r,r,e,e,r,r,r,r,e,r,e,r,r,e,r,e,e,e,r,e,r,e,e,e,r,e,r,e,r,e,r,r,e,r,r,r,e,r,r,e,e,e,e,r,e,e,r,e,e,r,r,r,r,r,e,e,r,e,e,e,r,e,e,e,r,r,e,e,e,r,e,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:r,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cc3f077a18ea1793.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST=function(e,r,t){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:8,errorRate:1e-4,numBits:154,numHashes:14,bitArray:[0,0,e,1,e,e,e,1,r,r,e,e,r,r,e,r,e,r,e,e,r,r,r,e,r,e,e,e,r,r,e,e,e,r,e,e,r,r,r,r,e,e,r,e,e,r,e,r,r,e,r,e,r,r,e,r,e,r,e,e,r,r,e,e,e,e,e,r,r,r,r,e,r,r,e,r,r,r,e,r,e,e,r,e,e,r,r,e,r,e,e,r,r,r,e,e,e,e,r,e,e,r,r,r,e,e,e,e,r,e,r,r,r,r,r,e,r,e,e,e,r,r,e,r,r,e,e,r,e,r,e,r,e,e,r,r,r,e,e,r,e,e,e,r,r,r,r,r,e,e,e,r,e,r]},__routerFilterDynamic:{numItems:e,errorRate:1e-4,numBits:e,numHashes:null,bitArray:[]},"/_error":["static/chunks/pages/_error-cc3f077a18ea1793.js"],sortedPages:["/_app","/_error"]}}(0,1,1e-4),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/0-92aa8a29adf5b5bf.js b/transports/bifrost-http/ui/_next/static/chunks/0-92aa8a29adf5b5bf.js deleted file mode 100644 index b3ef0e627c..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/0-92aa8a29adf5b5bf.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[0],{1886:(s,e,t)=>{t.d(e,{K:()=>o});var r=t(9362),i=t(3464),a=t(2379);class C{getErrorMessage(s){if((0,r.F0)(s)&&s.response){let e=s.response.data;if(e.error&&e.error.message)return e.error.message}return s instanceof Error&&s.message||"An unexpected error occurred."}async getLogs(s,e){try{let t={limit:e.limit,offset:e.offset,sort_by:e.sort_by,order:e.order};return s.providers&&s.providers.length>0&&(t.providers=s.providers.join(",")),s.models&&s.models.length>0&&(t.models=s.models.join(",")),s.status&&s.status.length>0&&(t.status=s.status.join(",")),s.objects&&s.objects.length>0&&(t.objects=s.objects.join(",")),s.start_time&&(t.start_time=s.start_time),s.end_time&&(t.end_time=s.end_time),s.min_latency&&(t.min_latency=s.min_latency),s.max_latency&&(t.max_latency=s.max_latency),s.min_tokens&&(t.min_tokens=s.min_tokens),s.max_tokens&&(t.max_tokens=s.max_tokens),s.content_search&&(t.content_search=s.content_search),[(await this.client.get("/logs",{params:t})).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async getDroppedRequests(){try{return[(await this.client.get("/logs/dropped")).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async getProviders(){try{return[(await this.client.get("/providers")).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async getProvider(s){try{return[(await this.client.get("/providers/".concat(s))).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async createProvider(s){try{return[(await this.client.post("/providers",s)).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async updateProvider(s,e){try{return[(await this.client.put("/providers/".concat(s),e)).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async deleteProvider(s){try{return[(await this.client.delete("/providers/".concat(s))).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async getMCPClients(){try{return[(await this.client.get("/mcp/clients")).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async createMCPClient(s){try{return await this.client.post("/mcp/client",s),[null,null]}catch(s){return[null,this.getErrorMessage(s)]}}async updateMCPClient(s,e){try{return await this.client.put("/mcp/client/".concat(s),e),[null,null]}catch(s){return[null,this.getErrorMessage(s)]}}async deleteMCPClient(s){try{return await this.client.delete("/mcp/client/".concat(s)),[null,null]}catch(s){return[null,this.getErrorMessage(s)]}}async reconnectMCPClient(s){try{return await this.client.post("/mcp/client/".concat(s,"/reconnect")),[null,null]}catch(s){return[null,this.getErrorMessage(s)]}}async getCoreConfig(){try{return[(await this.client.get("/config")).data,null]}catch(s){return[null,this.getErrorMessage(s)]}}async updateCoreConfig(s){try{return await this.client.put("/config",s),[null,null]}catch(s){return[null,this.getErrorMessage(s)]}}constructor(){let s=(0,a.hY)();this.client=i.A.create({baseURL:s,headers:{"Content-Type":"application/json"}})}}let o=new C},2379:(s,e,t)=>{function r(){{let s="https:"===window.location.protocol?"https:":"http:",e="https:"===window.location.protocol?"wss:":"ws:";return{port:window.location.port||("https:"===window.location.protocol?"443":"80"),isDevelopment:!1,baseUrl:"".concat(s,"//").concat(window.location.host),wsUrl:"".concat(e,"//").concat(window.location.host),host:window.location.host}}}function i(){let s=r();return s.isDevelopment?"".concat(s.baseUrl,"/api"):"/api"}function a(){let s=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",e=r(),t=s.startsWith("/")?s:"/".concat(s);return"".concat(e.wsUrl).concat(t)}function C(){return r().baseUrl}t.d(e,{$0:()=>a,XO:()=>C,hY:()=>i}),t(9509)},2384:(s,e,t)=>{t.d(e,{A:()=>a});var r=t(5155),i=t(1154);let a=function(){return(0,r.jsx)("div",{className:"h-base flex items-center justify-center pb-24",children:(0,r.jsx)(i.A,{className:"h-4 w-4 animate-spin"})})}},3999:(s,e,t)=>{t.d(e,{cn:()=>a});var r=t(2596),i=t(9688);function a(){for(var s=arguments.length,e=Array(s),t=0;t{t.d(e,{FO:()=>g});var r=t(5155);t(2115);var i=t(1362);let a={xs:24,sm:32,md:40,lg:48,xl:64},C=s=>"number"==typeof s?s:a[s]||a.md,o={anthropic:s=>{let{size:e="md",className:t=""}=s,{resolvedTheme:a}=(0,i.D)(),o=C(e);return"light"==a?(0,r.jsx)("svg",{width:o,height:o,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.1315 4.10742H20.335L28 23.3341H23.7965L16.1315 4.10742ZM7.66383 4.10742H12.0587L19.7237 23.3341H15.4373L13.8705 19.2963H5.85317L4.28517 23.3329H0L7.665 4.10976L7.66383 4.10742ZM12.4845 15.7263L9.86183 8.96892L7.23917 15.7274H12.4833L12.4845 15.7263Z",fill:"black"})}):(0,r.jsx)("svg",{width:o,height:o,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.1315 4.10645H20.335L28 23.3331H23.7965L16.1315 4.10645ZM7.66383 4.10645H12.0587L19.7237 23.3331H15.4373L13.8705 19.2953H5.85317L4.28517 23.3319H0L7.665 4.10878L7.66383 4.10645ZM12.4845 15.7253L9.86183 8.96795L7.23917 15.7264H12.4833L12.4845 15.7253Z",fill:"white"})})},azure:s=>{let{size:e="md",className:t=""}=s,i=C(e);return(0,r.jsxs)("svg",{width:i,height:i,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",xlinkHref:"http://www.w3.org/1999/xlink",className:t,children:[(0,r.jsx)("g",{clipPath:"url(#clip0_2482_3252)",children:(0,r.jsx)("path",{d:"M28 0H0V28H28V0Z",fill:"url(#pattern0_2482_3252)"})}),(0,r.jsxs)("defs",{children:[(0,r.jsx)("pattern",{id:"pattern0_2482_3252",patternContentUnits:"objectBoundingBox",width:"1",height:"1",children:(0,r.jsx)("use",{xlinkHref:"#image0_2482_3252",transform:"scale(0.00166667)"})}),(0,r.jsx)("clipPath",{id:"clip0_2482_3252",children:(0,r.jsx)("rect",{width:"28",height:"28",fill:"white"})}),(0,r.jsx)("image",{id:"image0_2482_3252",width:"600",height:"600",preserveAspectRatio:"none",xlinkHref:"data:image/png;base64,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"})]})]})},bedrock:s=>{let{size:e="md",className:t=""}=s,i=C(e);return(0,r.jsxs)("svg",{width:i,height:i,viewBox:"0 0 29 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:[(0,r.jsx)("path",{d:"M15.7276 18.0981H19.3209C19.5706 18.0981 19.7748 18.3046 19.7748 18.5577V20.6811C20.2076 20.7878 20.5919 21.0369 20.8661 21.3883C21.1403 21.7397 21.2885 22.1731 21.2868 22.6189C21.2868 23.7191 20.4059 24.6116 19.3209 24.6116C18.2348 24.6116 17.3539 23.7191 17.3539 22.6189C17.3539 21.6774 18.0003 20.8876 18.8671 20.6799V19.0174H15.7288V24.4576C15.7291 24.5366 15.7091 24.6143 15.6707 24.6834C15.6323 24.7525 15.5767 24.8105 15.5094 24.8519L12.3711 26.7664C12.2999 26.8099 12.218 26.8328 12.1345 26.8324C12.0511 26.832 11.9694 26.8083 11.8986 26.7641L6.1516 23.1637C6.08529 23.1221 6.03068 23.0643 5.99291 22.9957C5.95515 22.9271 5.93548 22.85 5.93577 22.7717V19.0162L3.0646 17.3479C2.99931 17.31 2.94431 17.2567 2.90444 17.1927C2.86457 17.1286 2.84105 17.0557 2.83594 16.9804V16.9489V10.9732C2.83594 10.8099 2.9211 10.6582 3.05994 10.5766L5.93577 8.87089V5.18889C5.93577 5.03839 6.0081 4.89839 6.12827 4.81322L6.15277 4.79689L11.9009 1.23389C11.9722 1.18953 12.0544 1.16602 12.1384 1.16602C12.2223 1.16602 12.3045 1.18953 12.3758 1.23389L15.5141 3.18806C15.5804 3.22968 15.635 3.28751 15.6728 3.3561C15.7106 3.42469 15.7302 3.50176 15.7299 3.58006V8.86622H20.2286V6.62972C19.7956 6.52295 19.4111 6.27369 19.1369 5.92202C18.8626 5.57034 18.7146 5.13668 18.7166 4.69072C18.7166 3.59056 19.5974 2.69806 20.6824 2.69806C21.7686 2.69806 22.6483 3.59056 22.6483 4.69072C22.6483 5.63222 22.0031 6.42206 21.1363 6.62972V9.32589C21.1367 9.38589 21.1253 9.4454 21.1028 9.50099C21.0802 9.55659 21.0469 9.60719 21.0047 9.64989C20.9626 9.69259 20.9124 9.72655 20.8571 9.74983C20.8018 9.77311 20.7424 9.78525 20.6824 9.78556H15.7299V11.8926H23.4579C23.5572 11.4588 23.8003 11.0713 24.1477 10.7932C24.495 10.5151 24.9263 10.3627 25.3713 10.3607C26.4563 10.3607 27.3371 11.2521 27.3371 12.3522C27.3371 13.4524 26.4574 14.3449 25.3713 14.3449C24.9261 14.3429 24.4948 14.1903 24.1474 13.9119C23.8 13.6336 23.557 13.2459 23.4579 12.8119H15.7276V15.0717H21.5061L22.5736 16.4484C22.8709 16.2745 23.2092 16.1831 23.5536 16.1836C24.6398 16.1836 25.5194 17.0749 25.5194 18.1751C25.5194 19.2752 24.6398 20.1677 23.5536 20.1677C22.4686 20.1677 21.5878 19.2752 21.5878 18.1751C21.5878 17.7714 21.7068 17.3957 21.9098 17.0819L21.0651 15.9911H15.7276V18.0981ZM12.1378 2.16489L9.75427 3.64189V7.10456H8.8466V4.20422L6.84344 5.44672V8.88256L9.3051 10.4692L11.8333 8.87789V6.22256H12.7409V9.13456C12.7409 9.29322 12.6593 9.44139 12.5263 9.52539L9.79277 11.2439V13.6717L11.4518 14.8489L10.9314 15.6026L9.2911 14.4382L7.5061 15.6107L7.0126 14.8407L8.8851 13.6099V11.2882L6.38027 9.67122L3.7436 11.2346V13.1899L6.04427 11.8027L6.5086 12.5926L3.7436 14.2597V16.6829L6.2706 18.1506L8.91894 16.5546L9.3821 17.3444L6.84344 18.8739V22.5162L9.0321 23.8871L11.7913 22.2234L12.2556 23.0144L9.90244 24.4331L12.1401 25.8342L14.8211 24.1974V17.4541L9.2701 20.8292L8.80344 20.0417L14.8211 16.3831V3.83672L12.1378 2.16489ZM19.3209 21.5479C19.1809 21.5487 19.0423 21.577 18.9132 21.6314C18.7841 21.6858 18.667 21.7651 18.5686 21.8648C18.4702 21.9645 18.3925 22.0826 18.3398 22.2124C18.2871 22.3422 18.2605 22.4811 18.2616 22.6212C18.2616 23.2127 18.7353 23.6922 19.3209 23.6922C19.4608 23.6913 19.5991 23.6628 19.728 23.6085C19.8569 23.5541 19.9738 23.4749 20.0721 23.3753C20.1703 23.2757 20.248 23.1578 20.3007 23.0282C20.3534 22.8986 20.38 22.7599 20.3791 22.6201C20.3802 22.4801 20.3537 22.3413 20.301 22.2115C20.2484 22.0818 20.1708 21.9637 20.0725 21.8641C19.9742 21.7644 19.8573 21.685 19.7283 21.6306C19.5993 21.5761 19.4609 21.5488 19.3209 21.5479ZM23.5559 17.1029C23.4159 17.1037 23.2773 17.132 23.1482 17.1864C23.0191 17.2408 22.902 17.3201 22.8036 17.4198C22.7052 17.5195 22.6275 17.6376 22.5748 17.7674C22.5221 17.8972 22.4955 18.0361 22.4966 18.1762C22.4966 18.7689 22.9703 19.2496 23.5548 19.2496C23.6948 19.2488 23.8334 19.2204 23.9625 19.166C24.0916 19.1116 24.2087 19.0323 24.3071 18.9326C24.4055 18.8329 24.4832 18.7148 24.5359 18.585C24.5886 18.4552 24.6152 18.3163 24.6141 18.1762C24.6152 18.0361 24.5886 17.8972 24.5359 17.7674C24.4832 17.6376 24.4055 17.5195 24.3071 17.4198C24.2087 17.3201 24.0916 17.2408 23.9625 17.1864C23.8334 17.132 23.696 17.1037 23.5559 17.1029ZM25.3701 11.2812C25.23 11.282 25.0915 11.3104 24.9624 11.3648C24.8333 11.4191 24.7162 11.4984 24.6178 11.5981C24.5194 11.6978 24.4416 11.816 24.3889 11.9458C24.3363 12.0756 24.3097 12.2145 24.3108 12.3546C24.3108 12.9461 24.7856 13.4256 25.3701 13.4256C25.51 13.4246 25.6483 13.3962 25.7772 13.3418C25.9061 13.2874 26.023 13.2082 26.1212 13.1086C26.2195 13.0091 26.2972 12.8911 26.3499 12.7615C26.4026 12.632 26.4292 12.4933 26.4283 12.3534C26.4293 12.2134 26.4028 12.0746 26.3502 11.9449C26.2976 11.8152 26.2199 11.6971 26.1217 11.5974C26.0234 11.4977 25.9064 11.4184 25.7775 11.3639C25.6485 11.3095 25.5101 11.281 25.3701 11.2801V11.2812ZM20.6813 3.61622C20.5413 3.61714 20.4029 3.64564 20.2739 3.70009C20.1449 3.75454 20.028 3.83387 19.9297 3.93356C19.8314 4.03324 19.7538 4.15132 19.7012 4.28104C19.6486 4.41076 19.622 4.54958 19.6231 4.68956C19.6231 5.28222 20.0968 5.76289 20.6813 5.76289C20.8213 5.76213 20.9599 5.73374 21.089 5.67936C21.2181 5.62498 21.3352 5.54566 21.4336 5.44597C21.532 5.34627 21.6098 5.22814 21.6624 5.09834C21.7151 4.96854 21.7417 4.82963 21.7406 4.68956C21.7417 4.54948 21.7151 4.41057 21.6624 4.28077C21.6098 4.15098 21.532 4.03285 21.4336 3.93315C21.3352 3.83345 21.2181 3.75414 21.089 3.69975C20.9599 3.64537 20.8213 3.61699 20.6813 3.61622Z",fill:"url(#paint0_linear_2482_3244)"}),(0,r.jsx)("defs",{children:(0,r.jsxs)("linearGradient",{id:"paint0_linear_2482_3244",x1:"1962.93",y1:"514.493",x2:"424.608",y2:"1982.98",gradientUnits:"userSpaceOnUse",children:[(0,r.jsx)("stop",{stopColor:"#6350FB"}),(0,r.jsx)("stop",{offset:"0.5",stopColor:"#3D8FFF"}),(0,r.jsx)("stop",{offset:"1",stopColor:"#9AD8F8"})]})})]})},cohere:s=>{let{size:e="md",className:t=""}=s,i=C(e);return(0,r.jsxs)("svg",{width:i,height:i,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:[(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.48006 16.4482C10.1707 16.4482 11.5451 16.4097 13.4444 15.628C15.6576 14.7168 20.0617 13.0613 23.2386 11.3627C25.4611 10.175 26.4352 8.60235 26.4352 6.48602C26.4352 5.78728 26.2976 5.0954 26.0302 4.44987C25.7627 3.80434 25.3708 3.21782 24.8766 2.7238C24.3825 2.22977 23.7959 1.83793 23.1503 1.57064C22.5047 1.30336 21.8128 1.16586 21.1141 1.16602H8.80456C6.77807 1.16633 4.83468 1.97156 3.40184 3.40462C1.969 4.83768 1.16406 6.78119 1.16406 8.80768C1.16406 13.0275 4.36656 16.4482 9.48006 16.4482Z",fill:"#39594D"}),(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.5625 21.7119C11.5624 20.7002 11.8622 19.7113 12.4239 18.8699C12.9856 18.0285 13.784 17.3724 14.7183 16.9846L18.5952 15.3746C22.5163 13.7482 26.8318 16.6299 26.8318 20.8754C26.8318 21.6575 26.6778 22.4319 26.3784 23.1544C26.0791 23.8769 25.6404 24.5334 25.0873 25.0864C24.5343 25.6393 23.8777 26.0779 23.1551 26.3771C22.4325 26.6763 21.6581 26.8302 20.876 26.8301L16.6795 26.8289C16.0074 26.8289 15.3419 26.6965 14.721 26.4393C14.1001 26.182 13.536 25.805 13.0608 25.3297C12.5856 24.8545 12.2088 24.2902 11.9517 23.6693C11.6946 23.0483 11.5623 22.3828 11.5625 21.7107V21.7119Z",fill:"#D18EE2"}),(0,r.jsx)("path",{d:"M5.5694 17.4551C4.99084 17.4549 4.41792 17.5688 3.88337 17.7901C3.34882 18.0114 2.86312 18.3359 2.45401 18.745C2.04491 19.1541 1.72042 19.6398 1.49909 20.1744C1.27775 20.7089 1.16391 21.2819 1.16406 21.8604V22.4309C1.18287 23.5867 1.65522 24.6888 2.47922 25.4995C3.30323 26.3102 4.41286 26.7646 5.56881 26.7646C6.72476 26.7646 7.8344 26.3102 8.6584 25.4995C9.48241 24.6888 9.95475 23.5867 9.97356 22.4309V21.8592C9.97356 21.2809 9.85965 20.7082 9.63832 20.1738C9.41699 19.6395 9.09258 19.154 8.68361 18.745C8.27465 18.3361 7.78914 18.0117 7.2548 17.7903C6.72046 17.569 6.14776 17.4551 5.5694 17.4551Z",fill:"#FF7759"})]})},mistral:s=>{let{size:e="md",className:t=""}=s,i=C(e);return(0,r.jsxs)("svg",{width:i,height:i,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:[(0,r.jsx)("path",{d:"M4 3.9668H8.0005V7.96613H4V3.9668ZM19.9997 3.9668H24.0013V7.96613H19.9997V3.9668Z",fill:"#FFD700"}),(0,r.jsx)("path",{d:"M4 7.9668H11.9998V11.9673H4.00117L4 7.9668ZM16.0003 7.9668H24.0002V11.9673H16.0003V7.9668Z",fill:"#FFAF00"}),(0,r.jsx)("path",{d:"M4 11.9668H24.0013V15.9661H4V11.9668Z",fill:"#FF8205"}),(0,r.jsx)("path",{d:"M4 15.9668H8.0005V19.9661H4V15.9668ZM12.001 15.9668H16.0015V19.9661H12.001V15.9668ZM19.9997 15.9668H24.0013V19.9661H19.9997V15.9668Z",fill:"#FA500F"}),(0,r.jsx)("path",{d:"M0 19.9668H12.0003V23.9673H0V19.9668ZM15.9997 19.9668H28V23.9673H15.9997V19.9668Z",fill:"#E10500"})]})},ollama:s=>{let{size:e="md",className:t=""}=s,{resolvedTheme:a}=(0,i.D)(),o=C(e);return"light"==a?(0,r.jsx)("svg",{width:o,height:o,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.22529 1.27126C9.47729 1.37043 9.70479 1.53376 9.91129 1.7496C10.2555 2.1066 10.546 2.6176 10.7676 3.2231C10.9905 3.8321 11.1351 4.50643 11.19 5.1831C11.9245 4.76754 12.7397 4.5145 13.5805 4.4411L13.64 4.43643C14.655 4.35476 15.6583 4.53793 16.5333 4.98943C16.6511 5.05126 16.7666 5.11776 16.8798 5.18776C16.9381 4.52393 17.0805 3.86476 17.2998 3.26976C17.5215 2.6631 17.812 2.15326 18.155 1.7951C18.3466 1.58774 18.5811 1.42453 18.8421 1.31676C19.142 1.2001 19.4605 1.1791 19.7708 1.26776C20.2386 1.40076 20.64 1.6971 20.9561 2.1276C21.2455 2.52076 21.4625 3.02476 21.6106 3.6291C21.879 4.71876 21.9256 6.1526 21.7448 7.8816L21.8066 7.92826L21.837 7.95043C22.7201 8.62243 23.335 9.58026 23.6605 10.6921C24.168 12.4269 23.9125 14.3729 23.0375 15.4614L23.0165 15.4859L23.0188 15.4894C23.5053 16.3784 23.8005 17.3176 23.8635 18.2894L23.8658 18.3244C23.9405 19.5669 23.6325 20.8176 22.9161 22.0461L22.908 22.0578L22.9196 22.0858C23.4703 23.4356 23.643 24.7948 23.4306 26.1528L23.4236 26.1983C23.3907 26.3966 23.2805 26.5739 23.1171 26.6911C22.9538 26.8083 22.7506 26.856 22.5521 26.8236C22.4539 26.8083 22.3596 26.7737 22.2747 26.7218C22.1898 26.67 22.116 26.6019 22.0575 26.5215C21.999 26.4411 21.9569 26.3499 21.9336 26.2532C21.9104 26.1565 21.9065 26.0562 21.9221 25.9579C22.117 24.7528 21.9338 23.5441 21.3621 22.3144C21.3088 22.2002 21.2851 22.0744 21.2933 21.9485C21.3014 21.8227 21.3411 21.701 21.4088 21.5946L21.4135 21.5876C22.1181 20.5096 22.4098 19.4526 22.3468 18.4143C22.2931 17.5054 21.9676 16.6129 21.4135 15.7624C21.3057 15.5971 21.2673 15.396 21.3066 15.2026C21.3459 15.0091 21.4597 14.8389 21.6235 14.7288L21.634 14.7218C21.9175 14.5363 22.1788 14.0626 22.3106 13.4151C22.4561 12.6495 22.4181 11.8602 22.1998 11.1121C21.9606 10.2954 21.5231 9.6141 20.9106 9.1486C20.2165 8.61893 19.2971 8.36343 18.134 8.43693C17.9819 8.44682 17.8303 8.41086 17.6988 8.3337C17.5674 8.25654 17.4621 8.14172 17.3966 8.0041C17.0303 7.22826 16.496 6.67293 15.8298 6.32876C15.1902 6.00956 14.4742 5.87541 13.7625 5.94143C12.31 6.05693 11.029 6.87593 10.6475 7.90843C10.5935 8.05375 10.4964 8.17911 10.3692 8.26772C10.242 8.35634 10.0908 8.40398 9.93579 8.40426C8.69095 8.4066 7.72729 8.69826 7.02262 9.22443C6.41362 9.67943 5.99829 10.3153 5.77895 11.0771C5.58048 11.7942 5.5533 12.5479 5.69962 13.2774C5.83029 13.9284 6.08579 14.4674 6.37862 14.7579L6.38795 14.7661C6.63529 15.0076 6.68779 15.3844 6.51512 15.6819C6.09512 16.4076 5.78129 17.4891 5.72995 18.5286C5.67162 19.7163 5.94695 20.7476 6.56879 21.4873L6.58745 21.5094C6.68129 21.6188 6.74165 21.7529 6.76131 21.8956C6.78096 22.0384 6.75908 22.1838 6.69829 22.3144C6.02629 23.7564 5.81979 24.9418 6.04262 25.8751C6.08267 26.0692 6.04541 26.2712 5.93875 26.4382C5.8321 26.6053 5.66447 26.7241 5.47155 26.7694C5.27863 26.8147 5.07565 26.7829 4.9058 26.6808C4.73595 26.5787 4.61264 26.4144 4.56212 26.2228C4.27862 25.0351 4.47112 23.6748 5.11395 22.1418L5.13029 22.1009L5.12095 22.0869C4.80501 21.6203 4.56921 21.1041 4.42329 20.5598L4.41745 20.5376C4.24037 19.8585 4.17069 19.1558 4.21095 18.4551C4.26229 17.3934 4.53529 16.3061 4.93662 15.4334L4.95062 15.4031L4.94829 15.4008C4.60645 14.9131 4.35329 14.2889 4.21329 13.5983L4.20745 13.5703C4.01456 12.6069 4.05174 11.6116 4.31595 10.6653C4.62162 9.59776 5.22245 8.68076 6.10795 8.0181C6.17795 7.9656 6.25145 7.9131 6.32495 7.8641C6.13945 6.12226 6.18612 4.6791 6.45562 3.58243C6.60379 2.9781 6.82195 2.4741 7.11129 2.08093C7.42629 1.6516 7.82762 1.35526 8.29545 1.2211C8.60579 1.13243 8.92545 1.15226 9.22529 1.2701V1.27126ZM14.0273 11.8763C15.1193 11.8763 16.1273 12.2414 16.881 12.8738C17.616 13.4886 18.0535 14.3146 18.0535 15.1371C18.0535 16.1731 17.5798 16.9804 16.7316 17.4961C16.0083 17.9336 15.0388 18.1459 13.9281 18.1459C12.751 18.1459 11.7453 17.8438 11.0196 17.2896C10.2998 16.7413 9.89612 15.9713 9.89612 15.1371C9.89612 14.3123 10.3605 13.4839 11.1281 12.8668C11.9075 12.2403 12.9365 11.8763 14.0273 11.8763ZM14.0273 12.9216C13.2179 12.9145 12.43 13.1818 11.792 13.6799C11.2541 14.1116 10.9496 14.6541 10.9496 15.1383C10.9496 15.6376 11.1946 16.1054 11.6613 16.4613C12.1921 16.8661 12.9726 17.1006 13.9281 17.1006C14.8603 17.1006 15.6466 16.9291 16.1821 16.6036C16.7223 16.2769 16.9988 15.8033 16.9988 15.1371C16.9988 14.6436 16.7118 14.0988 16.202 13.6718C15.6373 13.1993 14.872 12.9216 14.0273 12.9216ZM14.7996 14.3333L14.8043 14.3379C14.9443 14.5141 14.9151 14.7696 14.739 14.9096L14.3983 15.1779V15.6983C14.3977 15.8141 14.3511 15.925 14.2689 16.0065C14.1867 16.0881 14.0755 16.1337 13.9596 16.1334C13.8438 16.1337 13.7326 16.0881 13.6503 16.0065C13.5681 15.925 13.5216 15.8141 13.521 15.6983V15.1616L13.2048 14.9073C13.1631 14.8738 13.1284 14.8325 13.1028 14.7856C13.0771 14.7387 13.061 14.6872 13.0554 14.6341C13.0497 14.5809 13.0547 14.5272 13.0699 14.476C13.0851 14.4247 13.1104 14.377 13.1441 14.3356C13.213 14.2518 13.3121 14.1985 13.4201 14.1874C13.528 14.1762 13.6359 14.2081 13.7205 14.2761L13.9713 14.4768L14.228 14.2738C14.3122 14.2072 14.4191 14.1762 14.5259 14.1873C14.6327 14.1984 14.7309 14.2508 14.7996 14.3333ZM8.91962 12.0944C9.47729 12.0944 9.93112 12.5494 9.93112 13.1106C9.93143 13.3796 9.82495 13.6377 9.63507 13.8282C9.44519 14.0188 9.18745 14.1261 8.91845 14.1268C8.64987 14.1258 8.39259 14.0185 8.203 13.8282C8.01341 13.638 7.90695 13.3804 7.90695 13.1118C7.90633 12.8428 8.01252 12.5845 8.20218 12.3938C8.39184 12.203 8.65063 12.0954 8.91962 12.0944ZM19.0766 12.0944C19.6366 12.0944 20.0893 12.5494 20.0893 13.1106C20.0896 13.3796 19.9831 13.6377 19.7932 13.8282C19.6034 14.0188 19.3456 14.1261 19.0766 14.1268C18.808 14.1258 18.5508 14.0185 18.3612 13.8282C18.1716 13.638 18.0651 13.3804 18.0651 13.1118C18.0645 12.8428 18.1707 12.5845 18.3603 12.3938C18.55 12.203 18.8076 12.0954 19.0766 12.0944ZM8.68279 2.68293L8.67929 2.68526C8.54413 2.74404 8.42872 2.84042 8.34679 2.96293L8.34095 2.96993C8.17995 3.19043 8.03995 3.51476 7.93495 3.9406C7.73662 4.74793 7.68295 5.84343 7.79029 7.18626C8.29195 7.03693 8.83912 6.9436 9.42829 6.90976L9.43995 6.9086L9.46212 6.86893C9.51579 6.77326 9.57295 6.6811 9.63479 6.5901C9.77829 5.6906 9.66045 4.6161 9.33962 3.73876C9.18329 3.3141 8.99312 2.98043 8.81112 2.79026C8.77355 2.75073 8.73168 2.71551 8.68629 2.68526L8.68279 2.68293ZM19.3858 2.7296L19.3835 2.73076C19.3381 2.76101 19.2962 2.79623 19.2586 2.83576C19.0766 3.02593 18.8853 3.36076 18.7301 3.78543C18.3918 4.71176 18.2786 5.85743 18.4618 6.7861L18.5295 6.89926L18.5388 6.9156H18.5738C19.1528 6.91575 19.7288 6.99904 20.2841 7.16293C20.3845 5.8516 20.3285 4.77943 20.1348 3.98726C20.0298 3.56143 19.8898 3.2371 19.7276 3.0166L19.723 3.0096C19.6412 2.88665 19.5258 2.78985 19.3905 2.73076H19.3858V2.7296Z",fill:"black"})}):(0,r.jsx)("svg",{width:o,height:o,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.22333 1.27175C9.47533 1.37092 9.70283 1.53425 9.90933 1.75009C10.2535 2.10709 10.544 2.61809 10.7657 3.22359C10.9885 3.83259 11.1332 4.50692 11.188 5.18359C11.9225 4.76803 12.7377 4.51499 13.5785 4.44159L13.638 4.43692C14.653 4.35525 15.6563 4.53842 16.5313 4.98992C16.6492 5.05175 16.7647 5.11825 16.8778 5.18825C16.9362 4.52442 17.0785 3.86525 17.2978 3.27025C17.5195 2.66359 17.81 2.15375 18.153 1.79559C18.3447 1.58823 18.5792 1.42502 18.8402 1.31725C19.14 1.20059 19.4585 1.17959 19.7688 1.26825C20.2367 1.40125 20.638 1.69759 20.9542 2.12809C21.2435 2.52125 21.4605 3.02525 21.6087 3.62959C21.877 4.71925 21.9237 6.15309 21.7428 7.88209L21.8047 7.92875L21.835 7.95092C22.7182 8.62292 23.333 9.58075 23.6585 10.6926C24.166 12.4274 23.9105 14.3734 23.0355 15.4619L23.0145 15.4864L23.0168 15.4899C23.5033 16.3789 23.7985 17.3181 23.8615 18.2899L23.8638 18.3249C23.9385 19.5674 23.6305 20.8181 22.9142 22.0466L22.906 22.0583L22.9177 22.0863C23.4683 23.4361 23.641 24.7953 23.4287 26.1533L23.4217 26.1988C23.3888 26.3971 23.2786 26.5743 23.1152 26.6916C22.9518 26.8088 22.7486 26.8564 22.5502 26.8241C22.4519 26.8087 22.3576 26.7742 22.2727 26.7223C22.1879 26.6705 22.1141 26.6024 22.0555 26.522C21.997 26.4416 21.9549 26.3504 21.9317 26.2537C21.9085 26.157 21.9046 26.0566 21.9202 25.9584C22.115 24.7533 21.9318 23.5446 21.3602 22.3149C21.3068 22.2007 21.2831 22.0748 21.2913 21.949C21.2995 21.8232 21.3392 21.7015 21.4068 21.5951L21.4115 21.5881C22.1162 20.5101 22.4078 19.4531 22.3448 18.4148C22.2912 17.5059 21.9657 16.6134 21.4115 15.7629C21.3037 15.5976 21.2653 15.3965 21.3046 15.203C21.3439 15.0096 21.4577 14.8394 21.6215 14.7293L21.632 14.7223C21.9155 14.5368 22.1768 14.0631 22.3087 13.4156C22.4541 12.6499 22.4161 11.8607 22.1978 11.1126C21.9587 10.2959 21.5212 9.61459 20.9087 9.14909C20.2145 8.61942 19.2952 8.36392 18.132 8.43742C17.9799 8.44731 17.8283 8.41135 17.6969 8.33419C17.5654 8.25703 17.4602 8.14221 17.3947 8.00459C17.0283 7.22875 16.494 6.67342 15.8278 6.32925C15.1883 6.01005 14.4722 5.8759 13.7605 5.94192C12.308 6.05742 11.027 6.87642 10.6455 7.90892C10.5915 8.05424 10.4945 8.17959 10.3673 8.26821C10.2401 8.35682 10.0888 8.40447 9.93383 8.40475C8.689 8.40709 7.72533 8.69875 7.02067 9.22492C6.41167 9.67992 5.99633 10.3158 5.777 11.0776C5.57853 11.7947 5.55135 12.5484 5.69767 13.2779C5.82833 13.9289 6.08383 14.4679 6.37667 14.7584L6.386 14.7666C6.63333 15.0081 6.68583 15.3849 6.51317 15.6824C6.09317 16.4081 5.77933 17.4896 5.728 18.5291C5.66967 19.7168 5.945 20.7481 6.56683 21.4878L6.5855 21.5099C6.67934 21.6193 6.7397 21.7534 6.75935 21.8961C6.77901 22.0389 6.75713 22.1843 6.69633 22.3149C6.02433 23.7569 5.81783 24.9423 6.04067 25.8756C6.08072 26.0697 6.04345 26.2717 5.9368 26.4387C5.83014 26.6057 5.66252 26.7246 5.4696 26.7699C5.27668 26.8152 5.07369 26.7834 4.90384 26.6813C4.73399 26.5792 4.61069 26.4149 4.56017 26.2233C4.27667 25.0356 4.46917 23.6753 5.112 22.1423L5.12833 22.1014L5.119 22.0874C4.80306 21.6207 4.56726 21.1046 4.42133 20.5603L4.4155 20.5381C4.23841 19.8589 4.16874 19.1563 4.209 18.4556C4.26033 17.3939 4.53333 16.3066 4.93467 15.4339L4.94867 15.4036L4.94633 15.4013C4.6045 14.9136 4.35133 14.2894 4.21133 13.5988L4.2055 13.5708C4.01261 12.6074 4.04978 11.6121 4.314 10.6658C4.61967 9.59825 5.2205 8.68125 6.106 8.01859C6.176 7.96609 6.2495 7.91359 6.323 7.86459C6.1375 6.12275 6.18417 4.67959 6.45367 3.58292C6.60183 2.97859 6.82 2.47459 7.10933 2.08142C7.42433 1.65209 7.82567 1.35575 8.2935 1.22159C8.60383 1.13292 8.9235 1.15275 9.22333 1.27059V1.27175ZM14.0253 11.8768C15.1173 11.8768 16.1253 12.2419 16.879 12.8743C17.614 13.4891 18.0515 14.3151 18.0515 15.1376C18.0515 16.1736 17.5778 16.9809 16.7297 17.4966C16.0063 17.9341 15.0368 18.1464 13.9262 18.1464C12.749 18.1464 11.7433 17.8443 11.0177 17.2901C10.2978 16.7418 9.89417 15.9718 9.89417 15.1376C9.89417 14.3128 10.3585 13.4844 11.1262 12.8673C11.9055 12.2408 12.9345 11.8768 14.0253 11.8768ZM14.0253 12.9221C13.2159 12.915 12.428 13.1823 11.79 13.6804C11.2522 14.1121 10.9477 14.6546 10.9477 15.1388C10.9477 15.6381 11.1927 16.1059 11.6593 16.4618C12.1902 16.8666 12.9707 17.1011 13.9262 17.1011C14.8583 17.1011 15.6447 16.9296 16.1802 16.6041C16.7203 16.2774 16.9968 15.8038 16.9968 15.1376C16.9968 14.6441 16.7098 14.0993 16.2 13.6723C15.6353 13.1998 14.87 12.9221 14.0253 12.9221ZM14.7977 14.3338L14.8023 14.3384C14.9423 14.5146 14.9132 14.7701 14.737 14.9101L14.3963 15.1784V15.6988C14.3957 15.8146 14.3492 15.9254 14.267 16.007C14.1847 16.0886 14.0735 16.1342 13.9577 16.1339C13.8418 16.1342 13.7306 16.0886 13.6484 16.007C13.5661 15.9254 13.5196 15.8146 13.519 15.6988V15.1621L13.2028 14.9078C13.1611 14.8743 13.1265 14.833 13.1008 14.7861C13.0752 14.7392 13.0591 14.6877 13.0534 14.6346C13.0478 14.5814 13.0527 14.5277 13.0679 14.4764C13.0832 14.4252 13.1084 14.3775 13.1422 14.3361C13.211 14.2523 13.3102 14.199 13.4181 14.1878C13.526 14.1767 13.634 14.2086 13.7185 14.2766L13.9693 14.4773L14.226 14.2743C14.3102 14.2077 14.4171 14.1767 14.5239 14.1878C14.6307 14.1989 14.7289 14.2513 14.7977 14.3338ZM8.91767 12.0949C9.47533 12.0949 9.92917 12.5499 9.92917 13.1111C9.92948 13.3801 9.823 13.6382 9.63312 13.8287C9.44324 14.0193 9.18549 14.1266 8.9165 14.1273C8.64791 14.1263 8.39064 14.019 8.20105 13.8287C8.01146 13.6385 7.905 13.3808 7.905 13.1123C7.90438 12.8433 8.01056 12.585 8.20022 12.3943C8.38988 12.2035 8.64867 12.0958 8.91767 12.0949ZM19.0747 12.0949C19.6347 12.0949 20.0873 12.5499 20.0873 13.1111C20.0876 13.3801 19.9812 13.6382 19.7913 13.8287C19.6014 14.0193 19.3437 14.1266 19.0747 14.1273C18.8061 14.1263 18.5488 14.019 18.3592 13.8287C18.1696 13.6385 18.0632 13.3808 18.0632 13.1123C18.0625 12.8433 18.1687 12.585 18.3584 12.3943C18.5481 12.2035 18.8057 12.0958 19.0747 12.0949ZM8.68083 2.68342L8.67733 2.68575C8.54218 2.74453 8.42676 2.84091 8.34483 2.96342L8.339 2.97042C8.178 3.19092 8.038 3.51525 7.933 3.94109C7.73467 4.74842 7.681 5.84392 7.78833 7.18675C8.29 7.03742 8.83717 6.94409 9.42633 6.91025L9.438 6.90909L9.46017 6.86942C9.51383 6.77375 9.571 6.68159 9.63283 6.59059C9.77633 5.69109 9.6585 4.61659 9.33767 3.73925C9.18133 3.31459 8.99117 2.98092 8.80917 2.79075C8.77159 2.75122 8.72972 2.716 8.68433 2.68575L8.68083 2.68342ZM19.3838 2.73009L19.3815 2.73125C19.3361 2.7615 19.2942 2.79672 19.2567 2.83625C19.0747 3.02642 18.8833 3.36125 18.7282 3.78592C18.3898 4.71225 18.2767 5.85792 18.4598 6.78659L18.5275 6.89975L18.5368 6.91609H18.5718C19.1508 6.91624 19.7268 6.99953 20.2822 7.16342C20.3825 5.85209 20.3265 4.77992 20.1328 3.98775C20.0278 3.56192 19.8878 3.23759 19.7257 3.01709L19.721 3.01009C19.6392 2.88714 19.5238 2.79034 19.3885 2.73125H19.3838V2.73009Z",fill:"white"})})},openai:s=>{let{size:e="md",className:t=""}=s,{resolvedTheme:a}=(0,i.D)(),o=C(e);return"light"===a?(0,r.jsx)("svg",{fill:"#000000",width:o,height:o,viewBox:"0 0 24 24",role:"img",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"})}):(0,r.jsx)("svg",{width:o,height:o,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M25.1416 11.6714C25.4329 10.8076 25.5338 9.89114 25.4376 8.98473C25.3413 8.07831 25.0501 7.20345 24.5839 6.42019C23.1641 3.98186 20.3116 2.72653 17.5256 3.31686C16.9085 2.63366 16.1538 2.08884 15.311 1.71825C14.4683 1.34765 13.5566 1.15968 12.6361 1.16669C9.78822 1.16086 7.26122 2.97036 6.38505 5.64436C5.48445 5.82464 4.63247 6.19436 3.88564 6.72899C3.13881 7.26362 2.51419 7.95094 2.05322 8.74536C1.35646 9.92867 1.05868 11.3047 1.20384 12.6702C1.34901 14.0357 1.92942 15.3183 2.85939 16.3287C2.56773 17.1925 2.46646 18.1092 2.56252 19.0158C2.65858 19.9224 2.9497 20.7975 3.41589 21.581C4.83572 24.0194 7.68822 25.2735 10.4742 24.6844C11.0911 25.3674 11.8456 25.9121 12.6882 26.2825C13.5307 26.6529 14.4422 26.8407 15.3626 26.8334C18.2127 26.8404 20.7409 25.0297 21.6171 22.3534C22.5183 22.1731 23.3708 21.8032 24.1181 21.2681C24.8654 20.7331 25.4902 20.0451 25.9512 19.25C26.6467 18.0668 26.9435 16.6914 26.7979 15.3267C26.6523 13.962 26.0721 12.6801 25.1427 11.6702L25.1416 11.6714ZM15.3637 25.1557C14.2257 25.1584 13.1223 24.7649 12.2429 24.0427C12.2826 24.0217 12.3514 23.9844 12.3969 23.9564L17.5769 21.0047C17.7062 20.9325 17.8137 20.8271 17.8884 20.6992C17.9631 20.5714 18.0022 20.4259 18.0016 20.2779V13.0725L20.1914 14.3197C20.2147 14.3314 20.2299 14.3535 20.2334 14.378V20.3455C20.2299 22.9985 18.0517 25.1499 15.3637 25.1557ZM4.89055 20.7434C4.31962 19.7722 4.11362 18.6293 4.30955 17.5199C4.34689 17.5432 4.41455 17.584 4.46239 17.6109L9.64239 20.5625C9.90489 20.7142 10.2304 20.7142 10.4941 20.5625L16.8174 16.9599V19.4542C16.8179 19.467 16.8153 19.4797 16.8098 19.4913C16.8043 19.5029 16.7961 19.513 16.7859 19.5207L11.5499 22.5027C9.21772 23.828 6.23922 23.0394 4.89172 20.741L4.89055 20.7434ZM3.52672 9.58536C4.09989 8.60769 4.99786 7.86207 6.06422 7.47836L6.06189 7.65453V13.5579C6.06117 13.7061 6.10019 13.8518 6.17487 13.9798C6.24956 14.1078 6.35718 14.2135 6.48655 14.2859L12.8099 17.8874L10.6212 19.1357C10.6104 19.1426 10.598 19.1468 10.5852 19.1478C10.5724 19.1488 10.5595 19.1467 10.5477 19.1415L5.31055 16.156C2.98305 14.826 2.18505 11.8884 3.52555 9.58769L3.52672 9.58536ZM21.5132 13.7154L15.1899 10.1127L17.3786 8.86669C17.3893 8.85956 17.4016 8.85519 17.4144 8.85397C17.4272 8.85275 17.4402 8.85471 17.4521 8.85969L22.6892 11.8429C25.0202 13.1729 25.8194 16.1152 24.4731 18.4147C23.8994 19.3917 23.0022 20.1375 21.9367 20.5229V14.4434C21.9375 14.2954 21.8986 14.15 21.8241 14.0222C21.7496 13.8944 21.6423 13.7888 21.5132 13.7165V13.7154ZM23.6914 10.4802C23.6404 10.4492 23.5891 10.4189 23.5374 10.3892L18.3574 7.43753C18.228 7.36311 18.0814 7.32394 17.9321 7.32394C17.7829 7.32394 17.6363 7.36311 17.5069 7.43753L11.1836 11.0402V8.54586C11.183 8.53305 11.1856 8.52032 11.1911 8.50874C11.1966 8.49716 11.2048 8.48708 11.2151 8.47936L16.4499 5.49853C18.7832 4.17203 21.7641 4.96186 23.1081 7.26369C23.6762 8.23553 23.8839 9.37419 23.6914 10.4802ZM9.99355 14.9252L7.80372 13.6792C7.79229 13.6736 7.78245 13.6652 7.77511 13.6548C7.76777 13.6444 7.76317 13.6323 7.76172 13.6197V7.65219C7.76289 4.99569 9.94689 2.84319 12.6396 2.84553C13.7782 2.84553 14.8796 3.23986 15.7557 3.95853C15.7161 3.97953 15.6484 4.01686 15.6029 4.04369L10.4229 6.99536C10.2934 7.06735 10.1856 7.17276 10.1107 7.3006C10.0358 7.42844 9.99654 7.57403 9.99705 7.72219L9.99355 14.924V14.9252ZM11.1836 12.3959L13.9999 10.7917L16.8162 12.3959V15.6042L13.9999 17.2084L11.1824 15.6042V12.3959H11.1836Z",fill:"white"})})},vertex:s=>{let{size:e="md",className:t=""}=s,i=C(e);return(0,r.jsxs)("svg",{width:i,height:i,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:t,children:[(0,r.jsxs)("g",{clipPath:"url(#clip0_2482_3231)",children:[(0,r.jsx)("path",{d:"M13.997 23.5859C13.4114 23.5859 12.8498 23.8186 12.4357 24.2326C12.0217 24.6467 11.7891 25.2083 11.7891 25.7939C11.7891 26.3794 12.0217 26.941 12.4357 27.3551C12.8498 27.7692 13.4114 28.0018 13.997 28.0018C14.5826 28.0018 15.1441 27.7692 15.5582 27.3551C15.9723 26.941 16.2049 26.3794 16.2049 25.7939C16.2049 25.2083 15.9723 24.6467 15.5582 24.2326C15.1441 23.8186 14.5826 23.5859 13.997 23.5859ZM13.997 26.8596C13.7824 26.8596 13.5727 26.7958 13.3946 26.6762C13.2164 26.5567 13.0778 26.3869 12.9964 26.1884C12.915 25.9899 12.8945 25.7717 12.9375 25.5615C12.9805 25.3513 13.085 25.1586 13.2378 25.008C13.3905 24.8574 13.5847 24.7556 13.7954 24.7156C14.0062 24.6756 14.2241 24.6992 14.4215 24.7833C14.6188 24.8675 14.7866 25.0085 14.9036 25.1883C15.0206 25.3682 15.0815 25.5788 15.0785 25.7933C15.0785 25.9346 15.0504 26.0745 14.9959 26.2049C14.9413 26.3352 14.8614 26.4535 14.7608 26.5527C14.6602 26.6519 14.5408 26.7301 14.4097 26.7828C14.2786 26.8355 14.1383 26.8616 13.997 26.8596Z",fill:"#4285F4"}),(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M25.2994 16.5009C25.5759 16.5453 25.8268 16.6876 26.0053 16.9023C26.1645 17.1361 26.2312 17.4208 26.1924 17.701C26.1536 17.9813 26.0121 18.2372 25.7952 18.4189L16.1819 25.5146C16.1332 25.1296 15.9839 24.7642 15.7489 24.4554C15.514 24.1465 15.2018 23.905 14.8438 23.7553L24.5037 16.6619C24.7408 16.5139 25.0235 16.4567 25.2994 16.5009Z",fill:"#669DF6"}),(0,r.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8069 25.482L2.22044 18.405C1.99694 18.2322 1.84767 17.9808 1.80303 17.7018C1.75838 17.4229 1.8217 17.1374 1.9801 16.9035C2.15708 16.6859 2.40802 16.5411 2.68498 16.4968C2.96195 16.4524 3.24555 16.5117 3.4816 16.6632L13.1416 23.7565C12.7888 23.904 12.4803 24.1405 12.2464 24.443C12.0124 24.7454 11.861 25.1035 11.8069 25.482Z",fill:"#AECBFA"}),(0,r.jsx)("path",{d:"M4.98383 5.2215C4.68646 5.21757 4.40238 5.09769 4.19209 4.88741C3.9818 4.67712 3.86193 4.39303 3.858 4.09566V1.27233C3.83948 1.11248 3.85498 0.950517 3.90348 0.79708C3.95199 0.643643 4.0324 0.502201 4.13944 0.382042C4.24648 0.261884 4.37773 0.165726 4.52456 0.0998824C4.67139 0.0340392 4.8305 0 4.99142 0C5.15234 0 5.31144 0.0340392 5.45827 0.0998824C5.60511 0.165726 5.73635 0.261884 5.84339 0.382042C5.95043 0.502201 6.03085 0.643643 6.07935 0.79708C6.12786 0.950517 6.14336 1.11248 6.12483 1.27233V4.09566C6.12085 4.39564 5.99888 4.68198 5.78533 4.89269C5.57178 5.1034 5.28384 5.22152 4.98383 5.2215ZM4.9535 15.207C5.25611 15.207 5.54633 15.0868 5.76031 14.8728C5.97429 14.6588 6.0945 14.3686 6.0945 14.066C6.0945 13.7634 5.97429 13.4732 5.76031 13.2592C5.54633 13.0452 5.25611 12.925 4.9535 12.925C4.65089 12.925 4.36067 13.0452 4.14669 13.2592C3.93271 13.4732 3.8125 13.7634 3.8125 14.066C3.8125 14.3686 3.93271 14.6588 4.14669 14.8728C4.36067 15.0868 4.65089 15.207 4.9535 15.207ZM4.9535 11.889C5.10334 11.889 5.25171 11.8595 5.39014 11.8021C5.52857 11.7448 5.65436 11.6608 5.76031 11.5548C5.86626 11.4489 5.95031 11.3231 6.00765 11.1846C6.06499 11.0462 6.0945 10.8978 6.0945 10.748C6.0945 10.5982 6.06499 10.4498 6.00765 10.3114C5.95031 10.1729 5.86626 10.0471 5.76031 9.94119C5.65436 9.83524 5.52857 9.75119 5.39014 9.69385C5.25171 9.63651 5.10334 9.607 4.9535 9.607C4.65089 9.607 4.36067 9.72721 4.14669 9.94119C3.93271 10.1552 3.8125 10.4454 3.8125 10.748C3.8125 11.0506 3.93271 11.3408 4.14669 11.5548C4.36067 11.7688 4.65089 11.889 4.9535 11.889ZM4.9535 8.55466C5.25611 8.55466 5.54633 8.43445 5.76031 8.22047C5.97429 8.00649 6.0945 7.71628 6.0945 7.41366C6.0945 7.11105 5.97429 6.82083 5.76031 6.60685C5.54633 6.39288 5.25611 6.27266 4.9535 6.27266C4.65089 6.27266 4.36067 6.39288 4.14669 6.60685C3.93271 6.82083 3.8125 7.11105 3.8125 7.41366C3.8125 7.71628 3.93271 8.00649 4.14669 8.22047C4.36067 8.43445 4.65089 8.55466 4.9535 8.55466Z",fill:"#AECBFA"}),(0,r.jsx)("path",{d:"M23.0008 8.52503C22.7007 8.52104 22.4141 8.3989 22.2034 8.1851C21.9927 7.9713 21.8747 7.68306 21.875 7.38286V4.55953C21.875 4.26094 21.9936 3.97458 22.2048 3.76344C22.4159 3.55231 22.7022 3.43369 23.0008 3.43369C23.2994 3.43369 23.5858 3.55231 23.7969 3.76344C24.0081 3.97458 24.1267 4.26094 24.1267 4.55953V7.38286C24.129 7.53212 24.1016 7.68034 24.046 7.8189C23.9905 7.95745 23.9079 8.08356 23.8031 8.18987C23.6983 8.29618 23.5734 8.38057 23.4357 8.43811C23.2979 8.49565 23.1501 8.5252 23.0008 8.52503ZM23.03 15.2217C23.1798 15.2217 23.3282 15.1922 23.4666 15.1348C23.6051 15.0775 23.7309 14.9935 23.8368 14.8875C23.9428 14.7815 24.0268 14.6558 24.0841 14.5173C24.1415 14.3789 24.171 14.2305 24.171 14.0807C24.171 13.9309 24.1415 13.7825 24.0841 13.644C24.0268 13.5056 23.9428 13.3798 23.8368 13.2739C23.7309 13.1679 23.6051 13.0839 23.4666 13.0265C23.3282 12.9692 23.1798 12.9397 23.03 12.9397C22.7274 12.9397 22.4372 13.0599 22.2232 13.2739C22.0092 13.4879 21.889 13.7781 21.889 14.0807C21.889 14.3833 22.0092 14.6735 22.2232 14.8875C22.4372 15.1015 22.7274 15.2217 23.03 15.2217ZM23.03 11.843C23.3326 11.843 23.6228 11.7228 23.8368 11.5088C24.0508 11.2949 24.171 11.0046 24.171 10.702C24.171 10.3994 24.0508 10.1092 23.8368 9.89522C23.6228 9.68124 23.3326 9.56102 23.03 9.56102C22.7274 9.56102 22.4372 9.68124 22.2232 9.89522C22.0092 10.1092 21.889 10.3994 21.889 10.702C21.889 11.0046 22.0092 11.2949 22.2232 11.5088C22.4372 11.7228 22.7274 11.843 23.03 11.843ZM23.03 2.41286C23.1798 2.41286 23.3282 2.38335 23.4666 2.32601C23.6051 2.26867 23.7309 2.18462 23.8368 2.07867C23.9428 1.97272 24.0268 1.84693 24.0841 1.7085C24.1415 1.57007 24.171 1.4217 24.171 1.27186C24.171 1.12202 24.1415 0.97365 24.0841 0.835218C24.0268 0.696785 23.9428 0.571002 23.8368 0.465051C23.7309 0.359099 23.6051 0.275053 23.4666 0.217713C23.3282 0.160372 23.1798 0.130859 23.03 0.130859C22.7274 0.130859 22.4372 0.251072 22.2232 0.465051C22.0092 0.67903 21.889 0.969247 21.889 1.27186C21.889 1.57447 22.0092 1.86469 22.2232 2.07867C22.4372 2.29265 22.7274 2.41286 23.03 2.41286Z",fill:"#4285F4"}),(0,r.jsx)("path",{d:"M13.9926 18.5705C13.6952 18.5666 13.4111 18.4467 13.2008 18.2364C12.9905 18.0261 12.8707 17.742 12.8667 17.4447V14.5758C12.8989 14.2978 13.0322 14.0413 13.2412 13.8552C13.4502 13.669 13.7203 13.5662 14.0001 13.5662C14.28 13.5662 14.5501 13.669 14.7591 13.8552C14.9681 14.0413 15.1013 14.2978 15.1336 14.5758V17.4143C15.1359 17.5655 15.1081 17.7157 15.0517 17.856C14.9954 17.9963 14.9117 18.124 14.8055 18.2317C14.6993 18.3393 14.5727 18.4247 14.4331 18.4829C14.2935 18.541 14.1438 18.5708 13.9926 18.5705ZM13.9926 21.8897C14.2952 21.8897 14.5854 21.7694 14.7994 21.5555C15.0133 21.3415 15.1336 21.0513 15.1336 20.7487C15.1336 20.446 15.0133 20.1558 14.7994 19.9419C14.5854 19.7279 14.2952 19.6077 13.9926 19.6077C13.69 19.6077 13.3997 19.7279 13.1858 19.9419C12.9718 20.1558 12.8516 20.446 12.8516 20.7487C12.8516 21.0513 12.9718 21.3415 13.1858 21.5555C13.3997 21.7694 13.69 21.8897 13.9926 21.8897ZM13.9926 12.414C14.2952 12.414 14.5854 12.2938 14.7994 12.0798C15.0133 11.8658 15.1336 11.5756 15.1336 11.273C15.1336 10.9704 15.0133 10.6802 14.7994 10.4662C14.5854 10.2522 14.2952 10.132 13.9926 10.132C13.69 10.132 13.3997 10.2522 13.1858 10.4662C12.9718 10.6802 12.8516 10.9704 12.8516 11.273C12.8516 11.5756 12.9718 11.8658 13.1858 12.0798C13.3997 12.2938 13.69 12.414 13.9926 12.414ZM13.9926 9.08083C14.2952 9.08083 14.5854 8.96062 14.7994 8.74664C15.0133 8.53266 15.1336 8.24244 15.1336 7.93983C15.1336 7.63722 15.0133 7.347 14.7994 7.13302C14.5854 6.91904 14.2952 6.79883 13.9926 6.79883C13.69 6.79883 13.3997 6.91904 13.1858 7.13302C12.9718 7.347 12.8516 7.63722 12.8516 7.93983C12.8516 8.24244 12.9718 8.53266 13.1858 8.74664C13.3997 8.96062 13.69 9.08083 13.9926 9.08083Z",fill:"#669DF6"}),(0,r.jsx)("path",{d:"M18.5011 11.8726C18.2037 11.8686 17.9196 11.7488 17.7093 11.5385C17.499 11.3282 17.3792 11.0441 17.3752 10.7467V7.92339C17.3464 7.68214 17.3955 7.43801 17.5152 7.2266C17.6349 7.0152 17.8191 6.84757 18.0407 6.74819C18.2624 6.6488 18.5101 6.62285 18.7476 6.67413C18.9851 6.7254 19.1999 6.85122 19.3609 7.03322C19.4678 7.15343 19.5481 7.29486 19.5966 7.44827C19.645 7.60167 19.6605 7.76358 19.6421 7.92339V10.7467C19.6381 11.0467 19.5161 11.333 19.3026 11.5437C19.089 11.7545 18.8011 11.8726 18.5011 11.8726ZM18.5162 5.73122C18.6661 5.73122 18.8144 5.70171 18.9529 5.64437C19.0913 5.58703 19.2171 5.50298 19.323 5.39703C19.429 5.29108 19.513 5.16529 19.5704 5.02686C19.6277 4.88843 19.6572 4.74006 19.6572 4.59022C19.6572 4.44038 19.6277 4.29201 19.5704 4.15358C19.513 4.01514 19.429 3.88936 19.323 3.78341C19.2171 3.67746 19.0913 3.59341 18.9529 3.53607C18.8144 3.47873 18.6661 3.44922 18.5162 3.44922C18.2136 3.44922 17.9234 3.56943 17.7094 3.78341C17.4954 3.99739 17.3752 4.28761 17.3752 4.59022C17.3752 4.89283 17.4954 5.18305 17.7094 5.39703C17.9234 5.61101 18.2136 5.73122 18.5162 5.73122ZM18.5162 18.4946C18.8188 18.4946 19.1091 18.3743 19.323 18.1604C19.537 17.9464 19.6572 17.6562 19.6572 17.3536C19.6572 17.0509 19.537 16.7607 19.323 16.5467C19.1091 16.3328 18.8188 16.2126 18.5162 16.2126C18.2136 16.2126 17.9234 16.3328 17.7094 16.5467C17.4954 16.7607 17.3752 17.0509 17.3752 17.3536C17.3752 17.6562 17.4954 17.9464 17.7094 18.1604C17.9234 18.3743 18.2136 18.4946 18.5162 18.4946ZM18.5162 15.1614C18.8188 15.1614 19.1091 15.0412 19.323 14.8272C19.537 14.6132 19.6572 14.323 19.6572 14.0204C19.6572 13.7178 19.537 13.4276 19.323 13.2136C19.1091 12.9996 18.8188 12.8794 18.5162 12.8794C18.2136 12.8794 17.9234 12.9996 17.7094 13.2136C17.4954 13.4276 17.3752 13.7178 17.3752 14.0204C17.3752 14.323 17.4954 14.6132 17.7094 14.8272C17.9234 15.0412 18.2136 15.1614 18.5162 15.1614Z",fill:"#4285F4"}),(0,r.jsx)("path",{d:"M9.47752 18.4957C9.78013 18.4957 10.0704 18.3755 10.2843 18.1615C10.4983 17.9475 10.6185 17.6573 10.6185 17.3547C10.6185 17.0521 10.4983 16.7619 10.2843 16.5479C10.0704 16.3339 9.78013 16.2137 9.47752 16.2137C9.17491 16.2137 8.88469 16.3339 8.67071 16.5479C8.45673 16.7619 8.33652 17.0521 8.33652 17.3547C8.33652 17.6573 8.45673 17.9475 8.67071 18.1615C8.88469 18.3755 9.17491 18.4957 9.47752 18.4957ZM9.47752 9.08072C9.78013 9.08072 10.0704 8.96051 10.2843 8.74653C10.4983 8.53255 10.6185 8.24233 10.6185 7.93972C10.6185 7.63711 10.4983 7.34689 10.2843 7.13291C10.0704 6.91893 9.78013 6.79872 9.47752 6.79872C9.17491 6.79872 8.88469 6.91893 8.67071 7.13291C8.45673 7.34689 8.33652 7.63711 8.33652 7.93972C8.33652 8.24233 8.45673 8.53255 8.67071 8.74653C8.88469 8.96051 9.17491 9.08072 9.47752 9.08072ZM9.47752 5.73239C9.78029 5.73239 10.0707 5.61211 10.2847 5.39802C10.4988 5.18393 10.6191 4.89357 10.6191 4.5908C10.6191 4.28804 10.4988 3.99767 10.2847 3.78358C10.0707 3.56949 9.78029 3.44922 9.47752 3.44922C9.17475 3.44922 8.88439 3.56949 8.6703 3.78358C8.45621 3.99767 8.33594 4.28804 8.33594 4.5908C8.33594 4.89357 8.45621 5.18393 8.6703 5.39802C8.88439 5.61211 9.17475 5.73239 9.47752 5.73239ZM9.49269 15.1626C9.1976 15.1628 8.91391 15.0487 8.70116 14.8442C8.48841 14.6397 8.36315 14.3607 8.35169 14.0659V11.2134C8.35169 10.9148 8.4703 10.6284 8.68144 10.4173C8.89257 10.2062 9.17893 10.0876 9.47752 10.0876C9.77611 10.0876 10.0625 10.2062 10.2736 10.4173C10.4847 10.6284 10.6034 10.9148 10.6034 11.2134V14.0659C10.5956 14.3567 10.4756 14.6332 10.2686 14.8376C10.0616 15.042 9.78357 15.1584 9.49269 15.1626Z",fill:"#AECBFA"})]}),(0,r.jsx)("defs",{children:(0,r.jsx)("clipPath",{id:"clip0_2482_3231",children:(0,r.jsx)("rect",{width:"28",height:"28",fill:"white"})})})]})}},g=function(s){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},t=o[s];return t?(0,r.jsx)(t,{...e}):null}},4964:(s,e,t)=>{t.d(e,{Xi:()=>g,av:()=>A,j7:()=>o,tU:()=>C});var r=t(5155);t(2115);var i=t(704),a=t(3999);function C(s){let{className:e,...t}=s;return(0,r.jsx)(i.bL,{"data-slot":"tabs",className:(0,a.cn)("flex flex-col gap-2",e),...t})}function o(s){let{className:e,...t}=s;return(0,r.jsx)(i.B8,{"data-slot":"tabs-list",className:(0,a.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",e),...t})}function g(s){let{className:e,...t}=s;return(0,r.jsx)(i.l9,{"data-slot":"tabs-trigger",className:(0,a.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...t})}function A(s){let{className:e,...t}=s;return(0,r.jsx)(i.UC,{"data-slot":"tabs-content",className:(0,a.cn)("flex-1 outline-none",e),...t})}},5784:(s,e,t)=>{t.d(e,{bq:()=>n,eb:()=>B,gC:()=>w,l6:()=>A,yv:()=>l});var r=t(5155);t(2115);var i=t(4582),a=t(6474),C=t(2815),o=t(7863),g=t(3999);function A(s){let{...e}=s;return(0,r.jsx)(i.bL,{"data-slot":"select",...e})}function l(s){let{...e}=s;return(0,r.jsx)(i.WT,{"data-slot":"select-value",...e})}function n(s){let{className:e,size:t="default",children:C,...o}=s;return(0,r.jsxs)(i.l9,{"data-slot":"select-trigger","data-size":t,className:(0,g.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",e),...o,children:[C,(0,r.jsx)(i.In,{asChild:!0,children:(0,r.jsx)(a.A,{className:"size-4 opacity-50"})})]})}function w(s){let{className:e,children:t,position:a="popper",...C}=s;return(0,r.jsx)(i.ZL,{children:(0,r.jsxs)(i.UC,{"data-slot":"select-content",className:(0,g.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===a&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:a,...C,children:[(0,r.jsx)(d,{}),(0,r.jsx)(i.LM,{className:(0,g.cn)("p-1","popper"===a&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:t}),(0,r.jsx)(c,{})]})})}function B(s){let{className:e,children:t,...a}=s;return(0,r.jsxs)(i.q7,{"data-slot":"select-item",className:(0,g.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",e),...a,children:[(0,r.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,r.jsx)(i.VF,{children:(0,r.jsx)(C.A,{className:"size-4"})})}),(0,r.jsx)(i.p4,{children:t})]})}function d(s){let{className:e,...t}=s;return(0,r.jsx)(i.PP,{"data-slot":"select-scroll-up-button",className:(0,g.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,r.jsx)(o.A,{className:"size-4"})})}function c(s){let{className:e,...t}=s;return(0,r.jsx)(i.wn,{"data-slot":"select-scroll-down-button",className:(0,g.cn)("flex cursor-default items-center justify-center py-1",e),...t,children:(0,r.jsx)(a.A,{className:"size-4"})})}},7168:(s,e,t)=>{t.d(e,{$:()=>A,r:()=>g});var r=t(5155);t(2115);var i=t(9708),a=t(2085),C=t(3999),o=t(1154);let g=(0,a.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function A(s){let{className:e,variant:t,size:i,asChild:a=!1,children:C,isLoading:g=!1,...A}=s;return(0,r.jsx)(l,{className:e,variant:t,size:i,asChild:a,...A,children:g?(0,r.jsx)(o.A,{className:"size-4 animate-spin"}):C})}function l(s){let{className:e,variant:t,size:a,asChild:o=!1,...A}=s,l=o?i.DX:"button";return(0,r.jsx)(l,{"data-slot":"button",className:(0,C.cn)(g({variant:t,size:a,className:e}),"cursor-pointer"),...A})}},7783:(s,e,t)=>{t.d(e,{Ez:()=>o,f:()=>i,mG:()=>a,oU:()=>C,tJ:()=>g,wf:()=>A,xq:()=>r});let r=["openai","anthropic","azure","bedrock","cohere","vertex","mistral","ollama"],i=["success","error","cancelled"],a=["chat.completion","text.completion","embedding"],C={openai:"OpenAI",anthropic:"Anthropic",azure:"Azure OpenAI",bedrock:"AWS Bedrock",cohere:"Cohere",vertex:"Vertex AI",mistral:"Mistral AI",ollama:"Ollama"},o={success:"bg-green-100 text-green-800",error:"bg-red-100 text-red-800",cancelled:"bg-gray-100 text-gray-800"},g={"chat.completion":"Chat","text.completion":"Text",embedding:"Embedding"},A={"chat.completion":"bg-blue-100 text-blue-800","text.completion":"bg-green-100 text-green-800",embedding:"bg-red-100 text-red-800"}},8145:(s,e,t)=>{t.d(e,{E:()=>g});var r=t(5155);t(2115);var i=t(9708),a=t(2085),C=t(3999);let o=(0,a.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function g(s){let{className:e,variant:t,asChild:a=!1,...g}=s,A=a?i.DX:"span";return(0,r.jsx)(A,{"data-slot":"badge",className:(0,C.cn)(o({variant:t}),e),...g})}},8482:(s,e,t)=>{t.d(e,{BT:()=>g,Wu:()=>A,ZB:()=>o,Zp:()=>a,aR:()=>C});var r=t(5155);t(2115);var i=t(3999);function a(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"card",className:(0,i.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",e),...t})}function C(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,i.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",e),...t})}function o(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,i.cn)("leading-none font-semibold",e),...t})}function g(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,i.cn)("text-muted-foreground text-sm",e),...t})}function A(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,i.cn)("px-6",e),...t})}},8524:(s,e,t)=>{t.d(e,{A0:()=>C,BF:()=>o,Hj:()=>g,XI:()=>a,nA:()=>l,nd:()=>A});var r=t(5155);t(2115);var i=t(3999);function a(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,r.jsx)("table",{"data-slot":"table",className:(0,i.cn)("w-full caption-bottom text-sm",e),...t})})}function C(s){let{className:e,...t}=s;return(0,r.jsx)("thead",{"data-slot":"table-header",className:(0,i.cn)("[&_tr]:border-b",e),...t})}function o(s){let{className:e,...t}=s;return(0,r.jsx)("tbody",{"data-slot":"table-body",className:(0,i.cn)("[&_tr:last-child]:border-0",e),...t})}function g(s){let{className:e,...t}=s;return(0,r.jsx)("tr",{"data-slot":"table-row",className:(0,i.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",e),...t})}function A(s){let{className:e,...t}=s;return(0,r.jsx)("th",{"data-slot":"table-head",className:(0,i.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}function l(s){let{className:e,...t}=s;return(0,r.jsx)("td",{"data-slot":"table-cell",className:(0,i.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",e),...t})}},9026:(s,e,t)=>{t.d(e,{Fc:()=>o,TN:()=>g});var r=t(5155);t(2115);var i=t(2085),a=t(3999);let C=(0,i.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function o(s){let{className:e,variant:t,...i}=s;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,a.cn)(C({variant:t}),e),...i})}function g(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,a.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",e),...t})}},9840:(s,e,t)=>{t.d(e,{Cf:()=>l,Es:()=>w,L3:()=>B,c7:()=>n,lG:()=>o,rr:()=>d});var r=t(5155);t(2115);var i=t(5452),a=t(4416),C=t(3999);function o(s){let{...e}=s;return(0,r.jsx)(i.bL,{"data-slot":"dialog",...e})}function g(s){let{...e}=s;return(0,r.jsx)(i.ZL,{"data-slot":"dialog-portal",...e})}function A(s){let{className:e,...t}=s;return(0,r.jsx)(i.hJ,{"data-slot":"dialog-overlay",className:(0,C.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...t})}function l(s){let{className:e,children:t,showCloseButton:o=!0,...l}=s;return(0,r.jsxs)(g,{"data-slot":"dialog-portal",children:[(0,r.jsx)(A,{}),(0,r.jsxs)(i.UC,{"data-slot":"dialog-content",className:(0,C.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...l,children:[t,o&&(0,r.jsxs)(i.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,r.jsx)(a.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function n(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,C.cn)("flex flex-col gap-2 text-center sm:text-left",e),...t})}function w(s){let{className:e,...t}=s;return(0,r.jsx)("div",{"data-slot":"dialog-footer",className:(0,C.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",e),...t})}function B(s){let{className:e,...t}=s;return(0,r.jsx)(i.hE,{"data-slot":"dialog-title",className:(0,C.cn)("text-lg leading-none font-semibold",e),...t})}function d(s){let{className:e,...t}=s;return(0,r.jsx)(i.VY,{"data-slot":"dialog-description",className:(0,C.cn)("text-muted-foreground text-sm",e),...t})}},9852:(s,e,t)=>{t.d(e,{p:()=>C});var r=t(5155),i=t(2115),a=t(3999);let C=i.forwardRef((s,e)=>{let{className:t,type:i,...C}=s;return(0,r.jsx)("input",{type:i,ref:e,"data-slot":"input",className:(0,a.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",t),...C})});C.displayName="Input"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/272-ea143f89da3f8b1f.js b/transports/bifrost-http/ui/_next/static/chunks/105-03c7a8798baa706f.js similarity index 73% rename from transports/bifrost-http/ui/_next/static/chunks/272-ea143f89da3f8b1f.js rename to transports/bifrost-http/ui/_next/static/chunks/105-03c7a8798baa706f.js index 554a2cf73b..a16d62ee3a 100644 --- a/transports/bifrost-http/ui/_next/static/chunks/272-ea143f89da3f8b1f.js +++ b/transports/bifrost-http/ui/_next/static/chunks/105-03c7a8798baa706f.js @@ -1,4 +1,4 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[272],{255:(e,t,l)=>{function n(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return n}}),l(5155),l(7650),l(5744),l(589)},547:(e,t,l)=>{l.d(t,{UC:()=>U,ZL:()=>N,bL:()=>B,l9:()=>q});var n=l(2115),o=l(5185),r=l(6101),i=l(6081),a=l(9178),u=l(2293),s=l(7900),d=l(1285),g=l(5152),c=l(4378),p=l(8905),f=l(3655),m=l(9708),v=l(5845),h=l(8168),C=l(3795),b=l(5155),w="Popover",[S,R]=(0,i.A)(w,[g.Bk]),y=(0,g.Bk)(),[x,F]=S(w),M=e=>{let{__scopePopover:t,children:l,open:o,defaultOpen:r,onOpenChange:i,modal:a=!1}=e,u=y(t),s=n.useRef(null),[c,p]=n.useState(!1),[f,m]=(0,v.i)({prop:o,defaultProp:null!=r&&r,onChange:i,caller:w});return(0,b.jsx)(g.bL,{...u,children:(0,b.jsx)(x,{scope:t,contentId:(0,d.B)(),triggerRef:s,open:f,onOpenChange:m,onOpenToggle:n.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:c,onCustomAnchorAdd:n.useCallback(()=>p(!0),[]),onCustomAnchorRemove:n.useCallback(()=>p(!1),[]),modal:a,children:l})})};M.displayName=w;var P="PopoverAnchor";n.forwardRef((e,t)=>{let{__scopePopover:l,...o}=e,r=F(P,l),i=y(l),{onCustomAnchorAdd:a,onCustomAnchorRemove:u}=r;return n.useEffect(()=>(a(),()=>u()),[a,u]),(0,b.jsx)(g.Mz,{...i,...o,ref:t})}).displayName=P;var I="PopoverTrigger",A=n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,i=F(I,l),a=y(l),u=(0,r.s)(t,i.triggerRef),s=(0,b.jsx)(f.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":T(i.open),...n,ref:u,onClick:(0,o.m)(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,b.jsx)(g.Mz,{asChild:!0,...a,children:s})});A.displayName=I;var V="PopoverPortal",[E,_]=S(V,{forceMount:void 0}),k=e=>{let{__scopePopover:t,forceMount:l,children:n,container:o}=e,r=F(V,t);return(0,b.jsx)(E,{scope:t,forceMount:l,children:(0,b.jsx)(p.C,{present:l||r.open,children:(0,b.jsx)(c.Z,{asChild:!0,container:o,children:n})})})};k.displayName=V;var L="PopoverContent",G=n.forwardRef((e,t)=>{let l=_(L,e.__scopePopover),{forceMount:n=l.forceMount,...o}=e,r=F(L,e.__scopePopover);return(0,b.jsx)(p.C,{present:n||r.open,children:r.modal?(0,b.jsx)(O,{...o,ref:t}):(0,b.jsx)(H,{...o,ref:t})})});G.displayName=L;var D=(0,m.TL)("PopoverContent.RemoveScroll"),O=n.forwardRef((e,t)=>{let l=F(L,e.__scopePopover),i=n.useRef(null),a=(0,r.s)(t,i),u=n.useRef(!1);return n.useEffect(()=>{let e=i.current;if(e)return(0,h.Eq)(e)},[]),(0,b.jsx)(C.A,{as:D,allowPinchZoom:!0,children:(0,b.jsx)(z,{...e,ref:a,trapFocus:l.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),u.current||null==(t=l.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,o.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,l=0===t.button&&!0===t.ctrlKey;u.current=2===t.button||l},{checkForDefaultPrevented:!1}),onFocusOutside:(0,o.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=n.forwardRef((e,t)=>{let l=F(L,e.__scopePopover),o=n.useRef(!1),r=n.useRef(!1);return(0,b.jsx)(z,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var n,i;null==(n=e.onCloseAutoFocus)||n.call(e,t),t.defaultPrevented||(o.current||null==(i=l.triggerRef.current)||i.focus(),t.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:t=>{var n,i;null==(n=e.onInteractOutside)||n.call(e,t),t.defaultPrevented||(o.current=!0,"pointerdown"===t.detail.originalEvent.type&&(r.current=!0));let a=t.target;(null==(i=l.triggerRef.current)?void 0:i.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&r.current&&t.preventDefault()}})}),z=n.forwardRef((e,t)=>{let{__scopePopover:l,trapFocus:n,onOpenAutoFocus:o,onCloseAutoFocus:r,disableOutsidePointerEvents:i,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:p,onInteractOutside:f,...m}=e,v=F(L,l),h=y(l);return(0,u.Oh)(),(0,b.jsx)(s.n,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:o,onUnmountAutoFocus:r,children:(0,b.jsx)(a.qW,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:p,onDismiss:()=>v.onOpenChange(!1),children:(0,b.jsx)(g.UC,{"data-state":T(v.open),role:"dialog",id:v.contentId,...h,...m,ref:t,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),j="PopoverClose";function T(e){return e?"open":"closed"}n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,r=F(j,l);return(0,b.jsx)(f.sG.button,{type:"button",...n,ref:t,onClick:(0,o.m)(e.onClick,()=>r.onOpenChange(!1))})}).displayName=j,n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,o=y(l);return(0,b.jsx)(g.i3,{...o,...n,ref:t})}).displayName="PopoverArrow";var B=M,q=A,N=k,U=G},646:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},741:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chart-no-axes-column-increasing",[["line",{x1:"12",x2:"12",y1:"20",y2:"10",key:"1vz5eb"}],["line",{x1:"18",x2:"18",y1:"20",y2:"4",key:"cun8e5"}],["line",{x1:"6",x2:"6",y1:"20",y2:"16",key:"hq0ia6"}]])},1032:(e,t,l)=>{function n(e,t){return"function"==typeof e?e(t):e}function o(e,t){return l=>{t.setState(t=>({...t,[e]:n(l,t[e])}))}}function r(e){return e instanceof Function}l.d(t,{HT:()=>N,ZR:()=>q});function i(e,t,l){let n,o=[];return r=>{let i,a;l.key&&l.debug&&(i=Date.now());let u=e(r);if(!(u.length!==o.length||u.some((e,t)=>o[t]!==e)))return n;if(o=u,l.key&&l.debug&&(a=Date.now()),n=t(...u),null==l||null==l.onChange||l.onChange(n),l.key&&l.debug&&null!=l&&l.debug()){let e=Math.round((Date.now()-i)*100)/100,t=Math.round((Date.now()-a)*100)/100,n=t/16,o=(e,t)=>{for(e=String(e);e.length{function n(e){let{moduleIds:t}=e;return null}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PreloadChunks",{enumerable:!0,get:function(){return n}}),l(5155),l(7650),l(5744),l(589)},547:(e,t,l)=>{l.d(t,{UC:()=>U,ZL:()=>N,bL:()=>B,l9:()=>q});var n=l(2115),o=l(5185),r=l(6101),i=l(6081),a=l(9178),u=l(2293),s=l(7900),d=l(1285),g=l(5152),c=l(4378),p=l(8905),f=l(3655),m=l(9708),v=l(5845),h=l(8168),C=l(3795),b=l(5155),w="Popover",[S,R]=(0,i.A)(w,[g.Bk]),y=(0,g.Bk)(),[x,F]=S(w),M=e=>{let{__scopePopover:t,children:l,open:o,defaultOpen:r,onOpenChange:i,modal:a=!1}=e,u=y(t),s=n.useRef(null),[c,p]=n.useState(!1),[f,m]=(0,v.i)({prop:o,defaultProp:null!=r&&r,onChange:i,caller:w});return(0,b.jsx)(g.bL,{...u,children:(0,b.jsx)(x,{scope:t,contentId:(0,d.B)(),triggerRef:s,open:f,onOpenChange:m,onOpenToggle:n.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:c,onCustomAnchorAdd:n.useCallback(()=>p(!0),[]),onCustomAnchorRemove:n.useCallback(()=>p(!1),[]),modal:a,children:l})})};M.displayName=w;var P="PopoverAnchor";n.forwardRef((e,t)=>{let{__scopePopover:l,...o}=e,r=F(P,l),i=y(l),{onCustomAnchorAdd:a,onCustomAnchorRemove:u}=r;return n.useEffect(()=>(a(),()=>u()),[a,u]),(0,b.jsx)(g.Mz,{...i,...o,ref:t})}).displayName=P;var I="PopoverTrigger",V=n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,i=F(I,l),a=y(l),u=(0,r.s)(t,i.triggerRef),s=(0,b.jsx)(f.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":T(i.open),...n,ref:u,onClick:(0,o.m)(e.onClick,i.onOpenToggle)});return i.hasCustomAnchor?s:(0,b.jsx)(g.Mz,{asChild:!0,...a,children:s})});V.displayName=I;var A="PopoverPortal",[E,_]=S(A,{forceMount:void 0}),k=e=>{let{__scopePopover:t,forceMount:l,children:n,container:o}=e,r=F(A,t);return(0,b.jsx)(E,{scope:t,forceMount:l,children:(0,b.jsx)(p.C,{present:l||r.open,children:(0,b.jsx)(c.Z,{asChild:!0,container:o,children:n})})})};k.displayName=A;var L="PopoverContent",G=n.forwardRef((e,t)=>{let l=_(L,e.__scopePopover),{forceMount:n=l.forceMount,...o}=e,r=F(L,e.__scopePopover);return(0,b.jsx)(p.C,{present:n||r.open,children:r.modal?(0,b.jsx)(O,{...o,ref:t}):(0,b.jsx)(H,{...o,ref:t})})});G.displayName=L;var D=(0,m.TL)("PopoverContent.RemoveScroll"),O=n.forwardRef((e,t)=>{let l=F(L,e.__scopePopover),i=n.useRef(null),a=(0,r.s)(t,i),u=n.useRef(!1);return n.useEffect(()=>{let e=i.current;if(e)return(0,h.Eq)(e)},[]),(0,b.jsx)(C.A,{as:D,allowPinchZoom:!0,children:(0,b.jsx)(z,{...e,ref:a,trapFocus:l.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),u.current||null==(t=l.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,o.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,l=0===t.button&&!0===t.ctrlKey;u.current=2===t.button||l},{checkForDefaultPrevented:!1}),onFocusOutside:(0,o.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),H=n.forwardRef((e,t)=>{let l=F(L,e.__scopePopover),o=n.useRef(!1),r=n.useRef(!1);return(0,b.jsx)(z,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var n,i;null==(n=e.onCloseAutoFocus)||n.call(e,t),t.defaultPrevented||(o.current||null==(i=l.triggerRef.current)||i.focus(),t.preventDefault()),o.current=!1,r.current=!1},onInteractOutside:t=>{var n,i;null==(n=e.onInteractOutside)||n.call(e,t),t.defaultPrevented||(o.current=!0,"pointerdown"===t.detail.originalEvent.type&&(r.current=!0));let a=t.target;(null==(i=l.triggerRef.current)?void 0:i.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&r.current&&t.preventDefault()}})}),z=n.forwardRef((e,t)=>{let{__scopePopover:l,trapFocus:n,onOpenAutoFocus:o,onCloseAutoFocus:r,disableOutsidePointerEvents:i,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:p,onInteractOutside:f,...m}=e,v=F(L,l),h=y(l);return(0,u.Oh)(),(0,b.jsx)(s.n,{asChild:!0,loop:!0,trapped:n,onMountAutoFocus:o,onUnmountAutoFocus:r,children:(0,b.jsx)(a.qW,{asChild:!0,disableOutsidePointerEvents:i,onInteractOutside:f,onEscapeKeyDown:d,onPointerDownOutside:c,onFocusOutside:p,onDismiss:()=>v.onOpenChange(!1),children:(0,b.jsx)(g.UC,{"data-state":T(v.open),role:"dialog",id:v.contentId,...h,...m,ref:t,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),j="PopoverClose";function T(e){return e?"open":"closed"}n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,r=F(j,l);return(0,b.jsx)(f.sG.button,{type:"button",...n,ref:t,onClick:(0,o.m)(e.onClick,()=>r.onOpenChange(!1))})}).displayName=j,n.forwardRef((e,t)=>{let{__scopePopover:l,...n}=e,o=y(l);return(0,b.jsx)(g.i3,{...o,...n,ref:t})}).displayName="PopoverArrow";var B=M,q=V,N=k,U=G},646:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("circle-check-big",[["path",{d:"M21.801 10A10 10 0 1 1 17 3.335",key:"yps3ct"}],["path",{d:"m9 11 3 3L22 4",key:"1pflzl"}]])},741:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chart-no-axes-column-increasing",[["line",{x1:"12",x2:"12",y1:"20",y2:"10",key:"1vz5eb"}],["line",{x1:"18",x2:"18",y1:"20",y2:"4",key:"cun8e5"}],["line",{x1:"6",x2:"6",y1:"20",y2:"16",key:"hq0ia6"}]])},1032:(e,t,l)=>{function n(e,t){return"function"==typeof e?e(t):e}function o(e,t){return l=>{t.setState(t=>({...t,[e]:n(l,t[e])}))}}function r(e){return e instanceof Function}l.d(t,{HT:()=>N,ZR:()=>q});function i(e,t,l){let n,o=[];return r=>{let i,a;l.key&&l.debug&&(i=Date.now());let u=e(r);if(!(u.length!==o.length||u.some((e,t)=>o[t]!==e)))return n;if(o=u,l.key&&l.debug&&(a=Date.now()),n=t(...u),null==l||null==l.onChange||l.onChange(n),l.key&&l.debug&&null!=l&&l.debug()){let e=Math.round((Date.now()-i)*100)/100,t=Math.round((Date.now()-a)*100)/100,n=t/16,o=(e,t)=>{for(e=String(e);e.length{var l;return null!=(l=null==e?void 0:e.debugAll)?l:e[t]},key:!1,onChange:n}}let u="debugHeaders";function s(e,t,l){var n;let o={id:null!=(n=l.id)?n:t.id,column:t,index:l.index,isPlaceholder:!!l.isPlaceholder,placeholderId:l.placeholderId,depth:l.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{let e=[],t=l=>{l.subHeaders&&l.subHeaders.length&&l.subHeaders.map(t),e.push(l)};return t(o),e},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(t=>{null==t.createHeader||t.createHeader(o,e)}),o}function d(e,t,l,n){var o,r;let i=0,a=function(e,t){void 0===t&&(t=1),i=Math.max(i,t),e.filter(e=>e.getIsVisible()).forEach(e=>{var l;null!=(l=e.columns)&&l.length&&a(e.columns,t+1)},0)};a(e);let u=[],d=(e,t)=>{let o={depth:t,id:[n,`${t}`].filter(Boolean).join("_"),headers:[]},r=[];e.forEach(e=>{let i,a=[...r].reverse()[0],u=e.column.depth===o.depth,d=!1;if(u&&e.column.parent?i=e.column.parent:(i=e.column,d=!0),a&&(null==a?void 0:a.column)===i)a.subHeaders.push(e);else{let o=s(l,i,{id:[n,t,i.id,null==e?void 0:e.id].filter(Boolean).join("_"),isPlaceholder:d,placeholderId:d?`${r.filter(e=>e.column===i).length}`:void 0,depth:t,index:r.length});o.subHeaders.push(e),r.push(o)}o.headers.push(e),e.headerGroup=o}),u.push(o),t>0&&d(r,t-1)};d(t.map((e,t)=>s(l,e,{depth:i,index:t})),i-1),u.reverse();let g=e=>e.filter(e=>e.column.getIsVisible()).map(e=>{let t=0,l=0,n=[0];return e.subHeaders&&e.subHeaders.length?(n=[],g(e.subHeaders).forEach(e=>{let{colSpan:l,rowSpan:o}=e;t+=l,n.push(o)})):t=1,l+=Math.min(...n),e.colSpan=t,e.rowSpan=l,{colSpan:t,rowSpan:l}});return g(null!=(o=null==(r=u[0])?void 0:r.headers)?o:[]),u}let g=(e,t,l,n,o,r,u)=>{let s={id:t,index:n,original:l,depth:o,parentId:u,_valuesCache:{},_uniqueValuesCache:{},getValue:t=>{if(s._valuesCache.hasOwnProperty(t))return s._valuesCache[t];let l=e.getColumn(t);if(null!=l&&l.accessorFn)return s._valuesCache[t]=l.accessorFn(s.original,n),s._valuesCache[t]},getUniqueValues:t=>{if(s._uniqueValuesCache.hasOwnProperty(t))return s._uniqueValuesCache[t];let l=e.getColumn(t);if(null!=l&&l.accessorFn)return l.columnDef.getUniqueValues?s._uniqueValuesCache[t]=l.columnDef.getUniqueValues(s.original,n):s._uniqueValuesCache[t]=[s.getValue(t)],s._uniqueValuesCache[t]},renderValue:t=>{var l;return null!=(l=s.getValue(t))?l:e.options.renderFallbackValue},subRows:null!=r?r:[],getLeafRows:()=>(function(e,t){let l=[],n=e=>{e.forEach(e=>{l.push(e);let o=t(e);null!=o&&o.length&&n(o)})};return n(e),l})(s.subRows,e=>e.subRows),getParentRow:()=>s.parentId?e.getRow(s.parentId,!0):void 0,getParentRows:()=>{let e=[],t=s;for(;;){let l=t.getParentRow();if(!l)break;e.push(l),t=l}return e.reverse()},getAllCells:i(()=>[e.getAllLeafColumns()],t=>t.map(t=>(function(e,t,l,n){let o={id:`${t.id}_${l.id}`,row:t,column:l,getValue:()=>t.getValue(n),renderValue:()=>{var t;return null!=(t=o.getValue())?t:e.options.renderFallbackValue},getContext:i(()=>[e,l,t,o],(e,t,l,n)=>({table:e,column:t,row:l,cell:n,getValue:n.getValue,renderValue:n.renderValue}),a(e.options,"debugCells","cell.getContext"))};return e._features.forEach(n=>{null==n.createCell||n.createCell(o,l,t,e)},{}),o})(e,s,t,t.id)),a(e.options,"debugRows","getAllCells")),_getAllCellsByColumnId:i(()=>[s.getAllCells()],e=>e.reduce((e,t)=>(e[t.column.id]=t,e),{}),a(e.options,"debugRows","getAllCellsByColumnId"))};for(let t=0;t{var n,o;let r=null==l||null==(n=l.toString())?void 0:n.toLowerCase();return!!(null==(o=e.getValue(t))||null==(o=o.toString())||null==(o=o.toLowerCase())?void 0:o.includes(r))};c.autoRemove=e=>R(e);let p=(e,t,l)=>{var n;return!!(null==(n=e.getValue(t))||null==(n=n.toString())?void 0:n.includes(l))};p.autoRemove=e=>R(e);let f=(e,t,l)=>{var n;return(null==(n=e.getValue(t))||null==(n=n.toString())?void 0:n.toLowerCase())===(null==l?void 0:l.toLowerCase())};f.autoRemove=e=>R(e);let m=(e,t,l)=>{var n;return null==(n=e.getValue(t))?void 0:n.includes(l)};m.autoRemove=e=>R(e);let v=(e,t,l)=>!l.some(l=>{var n;return!(null!=(n=e.getValue(t))&&n.includes(l))});v.autoRemove=e=>R(e)||!(null!=e&&e.length);let h=(e,t,l)=>l.some(l=>{var n;return null==(n=e.getValue(t))?void 0:n.includes(l)});h.autoRemove=e=>R(e)||!(null!=e&&e.length);let C=(e,t,l)=>e.getValue(t)===l;C.autoRemove=e=>R(e);let b=(e,t,l)=>e.getValue(t)==l;b.autoRemove=e=>R(e);let w=(e,t,l)=>{let[n,o]=l,r=e.getValue(t);return r>=n&&r<=o};w.resolveFilterValue=e=>{let[t,l]=e,n="number"!=typeof t?parseFloat(t):t,o="number"!=typeof l?parseFloat(l):l,r=null===t||Number.isNaN(n)?-1/0:n,i=null===l||Number.isNaN(o)?1/0:o;if(r>i){let e=r;r=i,i=e}return[r,i]},w.autoRemove=e=>R(e)||R(e[0])&&R(e[1]);let S={includesString:c,includesStringSensitive:p,equalsString:f,arrIncludes:m,arrIncludesAll:v,arrIncludesSome:h,equals:C,weakEquals:b,inNumberRange:w};function R(e){return null==e||""===e}function y(e,t,l){return!!e&&!!e.autoRemove&&e.autoRemove(t,l)||void 0===t||"string"==typeof t&&!t}let x={sum:(e,t,l)=>l.reduce((t,l)=>{let n=l.getValue(e);return t+("number"==typeof n?n:0)},0),min:(e,t,l)=>{let n;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(n>l||void 0===n&&l>=l)&&(n=l)}),n},max:(e,t,l)=>{let n;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(n=l)&&(n=l)}),n},extent:(e,t,l)=>{let n,o;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(void 0===n?l>=l&&(n=o=l):(n>l&&(n=l),o{let l=0,n=0;if(t.forEach(t=>{let o=t.getValue(e);null!=o&&(o*=1)>=o&&(++l,n+=o)}),l)return n/l},median:(e,t)=>{if(!t.length)return;let l=t.map(t=>t.getValue(e));if(!function(e){return Array.isArray(e)&&e.every(e=>"number"==typeof e)}(l))return;if(1===l.length)return l[0];let n=Math.floor(l.length/2),o=l.sort((e,t)=>e-t);return l.length%2!=0?o[n]:(o[n-1]+o[n])/2},unique:(e,t)=>Array.from(new Set(t.map(t=>t.getValue(e))).values()),uniqueCount:(e,t)=>new Set(t.map(t=>t.getValue(e))).size,count:(e,t)=>t.length},F=()=>({left:[],right:[]}),M={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},P=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),I=null;function A(e){return"touchstart"===e.type}function V(e,t){return t?"center"===t?e.getCenterVisibleLeafColumns():"left"===t?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}let E=()=>({pageIndex:0,pageSize:10}),_=()=>({top:[],bottom:[]}),k=(e,t,l,n,o)=>{var r;let i=o.getRow(t,!0);l?(i.getCanMultiSelect()||Object.keys(e).forEach(t=>delete e[t]),i.getCanSelect()&&(e[t]=!0)):delete e[t],n&&null!=(r=i.subRows)&&r.length&&i.getCanSelectSubRows()&&i.subRows.forEach(t=>k(e,t.id,l,n,o))};function L(e,t){let l=e.getState().rowSelection,n=[],o={},r=function(e,t){return e.map(e=>{var t;let i=G(e,l);if(i&&(n.push(e),o[e.id]=e),null!=(t=e.subRows)&&t.length&&(e={...e,subRows:r(e.subRows)}),i)return e}).filter(Boolean)};return{rows:r(t.rows),flatRows:n,rowsById:o}}function G(e,t){var l;return null!=(l=t[e.id])&&l}function D(e,t,l){var n;if(!(null!=(n=e.subRows)&&n.length))return!1;let o=!0,r=!1;return e.subRows.forEach(e=>{if((!r||o)&&(e.getCanSelect()&&(G(e,t)?r=!0:o=!1),e.subRows&&e.subRows.length)){let l=D(e,t);"all"===l?r=!0:("some"===l&&(r=!0),o=!1)}}),o?"all":!!r&&"some"}let O=/([0-9]+)/gm;function H(e,t){return e===t?0:e>t?1:-1}function z(e){return"number"==typeof e?isNaN(e)||e===1/0||e===-1/0?"":String(e):"string"==typeof e?e:""}function j(e,t){let l=e.split(O).filter(Boolean),n=t.split(O).filter(Boolean);for(;l.length&&n.length;){let e=l.shift(),t=n.shift(),o=parseInt(e,10),r=parseInt(t,10),i=[o,r].sort();if(isNaN(i[0])){if(e>t)return 1;if(t>e)return -1;continue}if(isNaN(i[1]))return isNaN(o)?-1:1;if(o>r)return 1;if(r>o)return -1}return l.length-n.length}let T={alphanumeric:(e,t,l)=>j(z(e.getValue(l)).toLowerCase(),z(t.getValue(l)).toLowerCase()),alphanumericCaseSensitive:(e,t,l)=>j(z(e.getValue(l)),z(t.getValue(l))),text:(e,t,l)=>H(z(e.getValue(l)).toLowerCase(),z(t.getValue(l)).toLowerCase()),textCaseSensitive:(e,t,l)=>H(z(e.getValue(l)),z(t.getValue(l))),datetime:(e,t,l)=>{let n=e.getValue(l),o=t.getValue(l);return n>o?1:nH(e.getValue(l),t.getValue(l))},B=[{createTable:e=>{e.getHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,l,n,o)=>{var r,i;let a=null!=(r=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?r:[],u=null!=(i=null==o?void 0:o.map(e=>l.find(t=>t.id===e)).filter(Boolean))?i:[];return d(t,[...a,...l.filter(e=>!(null!=n&&n.includes(e.id))&&!(null!=o&&o.includes(e.id))),...u],e)},a(e.options,u,"getHeaderGroups")),e.getCenterHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,l,n,o)=>d(t,l=l.filter(e=>!(null!=n&&n.includes(e.id))&&!(null!=o&&o.includes(e.id))),e,"center"),a(e.options,u,"getCenterHeaderGroups")),e.getLeftHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,l,n)=>{var o;return d(t,null!=(o=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?o:[],e,"left")},a(e.options,u,"getLeftHeaderGroups")),e.getRightHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,l,n)=>{var o;return d(t,null!=(o=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?o:[],e,"right")},a(e.options,u,"getRightHeaderGroups")),e.getFooterGroups=i(()=>[e.getHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getFooterGroups")),e.getLeftFooterGroups=i(()=>[e.getLeftHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getLeftFooterGroups")),e.getCenterFooterGroups=i(()=>[e.getCenterHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getCenterFooterGroups")),e.getRightFooterGroups=i(()=>[e.getRightHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getRightFooterGroups")),e.getFlatHeaders=i(()=>[e.getHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getFlatHeaders")),e.getLeftFlatHeaders=i(()=>[e.getLeftHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getLeftFlatHeaders")),e.getCenterFlatHeaders=i(()=>[e.getCenterHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getCenterFlatHeaders")),e.getRightFlatHeaders=i(()=>[e.getRightHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getRightFlatHeaders")),e.getCenterLeafHeaders=i(()=>[e.getCenterFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getCenterLeafHeaders")),e.getLeftLeafHeaders=i(()=>[e.getLeftFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getLeftLeafHeaders")),e.getRightLeafHeaders=i(()=>[e.getRightFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getRightLeafHeaders")),e.getLeafHeaders=i(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(e,t,l)=>{var n,o,r,i,a,u;return[...null!=(n=null==(o=e[0])?void 0:o.headers)?n:[],...null!=(r=null==(i=t[0])?void 0:i.headers)?r:[],...null!=(a=null==(u=l[0])?void 0:u.headers)?a:[]].map(e=>e.getLeafHeaders()).flat()},a(e.options,u,"getLeafHeaders"))}},{getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:o("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=l=>{e.getCanHide()&&t.setColumnVisibility(t=>({...t,[e.id]:null!=l?l:!e.getIsVisible()}))},e.getIsVisible=()=>{var l,n;let o=e.columns;return null==(l=o.length?o.some(e=>e.getIsVisible()):null==(n=t.getState().columnVisibility)?void 0:n[e.id])||l},e.getCanHide=()=>{var l,n;return(null==(l=e.columnDef.enableHiding)||l)&&(null==(n=t.options.enableHiding)||n)},e.getToggleVisibilityHandler=()=>t=>{null==e.toggleVisibility||e.toggleVisibility(t.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=i(()=>[e.getAllCells(),t.getState().columnVisibility],e=>e.filter(e=>e.column.getIsVisible()),a(t.options,"debugRows","_getAllVisibleCells")),e.getVisibleCells=i(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(e,t,l)=>[...e,...t,...l],a(t.options,"debugRows","getVisibleCells"))},createTable:e=>{let t=(t,l)=>i(()=>[l(),l().filter(e=>e.getIsVisible()).map(e=>e.id).join("_")],e=>e.filter(e=>null==e.getIsVisible?void 0:e.getIsVisible()),a(e.options,"debugColumns",t));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=t=>null==e.options.onColumnVisibilityChange?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{var l;e.setColumnVisibility(t?{}:null!=(l=e.initialState.columnVisibility)?l:{})},e.toggleAllColumnsVisible=t=>{var l;t=null!=(l=t)?l:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((e,l)=>({...e,[l.id]:t||!(null!=l.getCanHide&&l.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(e=>!(null!=e.getIsVisible&&e.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(e=>null==e.getIsVisible?void 0:e.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>t=>{var l;e.toggleAllColumnsVisible(null==(l=t.target)?void 0:l.checked)}}},{getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:o("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=i(e=>[V(t,e)],t=>t.findIndex(t=>t.id===e.id),a(t.options,"debugColumns","getIndex")),e.getIsFirstColumn=l=>{var n;return(null==(n=V(t,l)[0])?void 0:n.id)===e.id},e.getIsLastColumn=l=>{var n;let o=V(t,l);return(null==(n=o[o.length-1])?void 0:n.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>null==e.options.onColumnOrderChange?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var l;e.setColumnOrder(t?[]:null!=(l=e.initialState.columnOrder)?l:[])},e._getOrderColumnsFn=i(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(e,t,l)=>n=>{let o=[];if(null!=e&&e.length){let t=[...e],l=[...n];for(;l.length&&t.length;){let e=t.shift(),n=l.findIndex(t=>t.id===e);n>-1&&o.push(l.splice(n,1)[0])}o=[...o,...l]}else o=n;return function(e,t,l){if(!(null!=t&&t.length)||!l)return e;let n=e.filter(e=>!t.includes(e.id));return"remove"===l?n:[...t.map(t=>e.find(e=>e.id===t)).filter(Boolean),...n]}(o,t,l)},a(e.options,"debugTable","_getOrderColumnsFn"))}},{getInitialState:e=>({columnPinning:F(),...e}),getDefaultOptions:e=>({onColumnPinningChange:o("columnPinning",e)}),createColumn:(e,t)=>{e.pin=l=>{let n=e.getLeafColumns().map(e=>e.id).filter(Boolean);t.setColumnPinning(e=>{var t,o,r,i,a,u;return"right"===l?{left:(null!=(r=null==e?void 0:e.left)?r:[]).filter(e=>!(null!=n&&n.includes(e))),right:[...(null!=(i=null==e?void 0:e.right)?i:[]).filter(e=>!(null!=n&&n.includes(e))),...n]}:"left"===l?{left:[...(null!=(a=null==e?void 0:e.left)?a:[]).filter(e=>!(null!=n&&n.includes(e))),...n],right:(null!=(u=null==e?void 0:e.right)?u:[]).filter(e=>!(null!=n&&n.includes(e)))}:{left:(null!=(t=null==e?void 0:e.left)?t:[]).filter(e=>!(null!=n&&n.includes(e))),right:(null!=(o=null==e?void 0:e.right)?o:[]).filter(e=>!(null!=n&&n.includes(e)))}})},e.getCanPin=()=>e.getLeafColumns().some(e=>{var l,n,o;return(null==(l=e.columnDef.enablePinning)||l)&&(null==(n=null!=(o=t.options.enableColumnPinning)?o:t.options.enablePinning)||n)}),e.getIsPinned=()=>{let l=e.getLeafColumns().map(e=>e.id),{left:n,right:o}=t.getState().columnPinning,r=l.some(e=>null==n?void 0:n.includes(e)),i=l.some(e=>null==o?void 0:o.includes(e));return r?"left":!!i&&"right"},e.getPinnedIndex=()=>{var l,n;let o=e.getIsPinned();return o?null!=(l=null==(n=t.getState().columnPinning)||null==(n=n[o])?void 0:n.indexOf(e.id))?l:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(e,t,l)=>{let n=[...null!=t?t:[],...null!=l?l:[]];return e.filter(e=>!n.includes(e.column.id))},a(t.options,"debugRows","getCenterVisibleCells")),e.getLeftVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:"left"})),a(t.options,"debugRows","getLeftVisibleCells")),e.getRightVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:"right"})),a(t.options,"debugRows","getRightVisibleCells"))},createTable:e=>{e.setColumnPinning=t=>null==e.options.onColumnPinningChange?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var l,n;return e.setColumnPinning(t?F():null!=(l=null==(n=e.initialState)?void 0:n.columnPinning)?l:F())},e.getIsSomeColumnsPinned=t=>{var l,n,o;let r=e.getState().columnPinning;return t?!!(null==(l=r[t])?void 0:l.length):!!((null==(n=r.left)?void 0:n.length)||(null==(o=r.right)?void 0:o.length))},e.getLeftLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),a(e.options,"debugColumns","getLeftLeafColumns")),e.getRightLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),a(e.options,"debugColumns","getRightLeafColumns")),e.getCenterLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(e,t,l)=>{let n=[...null!=t?t:[],...null!=l?l:[]];return e.filter(e=>!n.includes(e.id))},a(e.options,"debugColumns","getCenterLeafColumns"))}},{createColumn:(e,t)=>{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},{getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:o("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{let l=t.getCoreRowModel().flatRows[0],n=null==l?void 0:l.getValue(e.id);return"string"==typeof n?S.includesString:"number"==typeof n?S.inNumberRange:"boolean"==typeof n||null!==n&&"object"==typeof n?S.equals:Array.isArray(n)?S.arrIncludes:S.weakEquals},e.getFilterFn=()=>{var l,n;return r(e.columnDef.filterFn)?e.columnDef.filterFn:"auto"===e.columnDef.filterFn?e.getAutoFilterFn():null!=(l=null==(n=t.options.filterFns)?void 0:n[e.columnDef.filterFn])?l:S[e.columnDef.filterFn]},e.getCanFilter=()=>{var l,n,o;return(null==(l=e.columnDef.enableColumnFilter)||l)&&(null==(n=t.options.enableColumnFilters)||n)&&(null==(o=t.options.enableFilters)||o)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var l;return null==(l=t.getState().columnFilters)||null==(l=l.find(t=>t.id===e.id))?void 0:l.value},e.getFilterIndex=()=>{var l,n;return null!=(l=null==(n=t.getState().columnFilters)?void 0:n.findIndex(t=>t.id===e.id))?l:-1},e.setFilterValue=l=>{t.setColumnFilters(t=>{var o,r;let i=e.getFilterFn(),a=null==t?void 0:t.find(t=>t.id===e.id),u=n(l,a?a.value:void 0);if(y(i,u,e))return null!=(o=null==t?void 0:t.filter(t=>t.id!==e.id))?o:[];let s={id:e.id,value:u};return a?null!=(r=null==t?void 0:t.map(t=>t.id===e.id?s:t))?r:[]:null!=t&&t.length?[...t,s]:[s]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{let l=e.getAllLeafColumns();null==e.options.onColumnFiltersChange||e.options.onColumnFiltersChange(e=>{var o;return null==(o=n(t,e))?void 0:o.filter(e=>{let t=l.find(t=>t.id===e.id);return!(t&&y(t.getFilterFn(),e.value,t))&&!0})})},e.resetColumnFilters=t=>{var l,n;e.setColumnFilters(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.columnFilters)?l:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel)?e.getPreFilteredRowModel():e._getFilteredRowModel()}},{createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},{getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:o("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var l;let n=null==(l=e.getCoreRowModel().flatRows[0])||null==(l=l._getAllCellsByColumnId()[t.id])?void 0:l.getValue();return"string"==typeof n||"number"==typeof n}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var l,n,o,r;return(null==(l=e.columnDef.enableGlobalFilter)||l)&&(null==(n=t.options.enableGlobalFilter)||n)&&(null==(o=t.options.enableFilters)||o)&&(null==(r=null==t.options.getColumnCanGlobalFilter?void 0:t.options.getColumnCanGlobalFilter(e))||r)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>S.includesString,e.getGlobalFilterFn=()=>{var t,l;let{globalFilterFn:n}=e.options;return r(n)?n:"auto"===n?e.getGlobalAutoFilterFn():null!=(t=null==(l=e.options.filterFns)?void 0:l[n])?t:S[n]},e.setGlobalFilter=t=>{null==e.options.onGlobalFilterChange||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},{getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:o("sorting",e),isMultiSortEvent:e=>e.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{let l=t.getFilteredRowModel().flatRows.slice(10),n=!1;for(let t of l){let l=null==t?void 0:t.getValue(e.id);if("[object Date]"===Object.prototype.toString.call(l))return T.datetime;if("string"==typeof l&&(n=!0,l.split(O).length>1))return T.alphanumeric}return n?T.text:T.basic},e.getAutoSortDir=()=>{let l=t.getFilteredRowModel().flatRows[0];return"string"==typeof(null==l?void 0:l.getValue(e.id))?"asc":"desc"},e.getSortingFn=()=>{var l,n;if(!e)throw Error();return r(e.columnDef.sortingFn)?e.columnDef.sortingFn:"auto"===e.columnDef.sortingFn?e.getAutoSortingFn():null!=(l=null==(n=t.options.sortingFns)?void 0:n[e.columnDef.sortingFn])?l:T[e.columnDef.sortingFn]},e.toggleSorting=(l,n)=>{let o=e.getNextSortingOrder(),r=null!=l;t.setSorting(i=>{let a,u=null==i?void 0:i.find(t=>t.id===e.id),s=null==i?void 0:i.findIndex(t=>t.id===e.id),d=[],g=r?l:"desc"===o;if("toggle"!=(a=null!=i&&i.length&&e.getCanMultiSort()&&n?u?"toggle":"add":null!=i&&i.length&&s!==i.length-1?"replace":u?"toggle":"replace")||r||o||(a="remove"),"add"===a){var c;(d=[...i,{id:e.id,desc:g}]).splice(0,d.length-(null!=(c=t.options.maxMultiSortColCount)?c:Number.MAX_SAFE_INTEGER))}else d="toggle"===a?i.map(t=>t.id===e.id?{...t,desc:g}:t):"remove"===a?i.filter(t=>t.id!==e.id):[{id:e.id,desc:g}];return d})},e.getFirstSortDir=()=>{var l,n;return(null!=(l=null!=(n=e.columnDef.sortDescFirst)?n:t.options.sortDescFirst)?l:"desc"===e.getAutoSortDir())?"desc":"asc"},e.getNextSortingOrder=l=>{var n,o;let r=e.getFirstSortDir(),i=e.getIsSorted();return i?(i===r||null!=(n=t.options.enableSortingRemoval)&&!n||!!l&&null!=(o=t.options.enableMultiRemove)&&!o)&&("desc"===i?"asc":"desc"):r},e.getCanSort=()=>{var l,n;return(null==(l=e.columnDef.enableSorting)||l)&&(null==(n=t.options.enableSorting)||n)&&!!e.accessorFn},e.getCanMultiSort=()=>{var l,n;return null!=(l=null!=(n=e.columnDef.enableMultiSort)?n:t.options.enableMultiSort)?l:!!e.accessorFn},e.getIsSorted=()=>{var l;let n=null==(l=t.getState().sorting)?void 0:l.find(t=>t.id===e.id);return!!n&&(n.desc?"desc":"asc")},e.getSortIndex=()=>{var l,n;return null!=(l=null==(n=t.getState().sorting)?void 0:n.findIndex(t=>t.id===e.id))?l:-1},e.clearSorting=()=>{t.setSorting(t=>null!=t&&t.length?t.filter(t=>t.id!==e.id):[])},e.getToggleSortingHandler=()=>{let l=e.getCanSort();return n=>{l&&(null==n.persist||n.persist(),null==e.toggleSorting||e.toggleSorting(void 0,!!e.getCanMultiSort()&&(null==t.options.isMultiSortEvent?void 0:t.options.isMultiSortEvent(n))))}}},createTable:e=>{e.setSorting=t=>null==e.options.onSortingChange?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var l,n;e.setSorting(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.sorting)?l:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel)?e.getPreSortedRowModel():e._getSortedRowModel()}},{getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,l;return null!=(t=null==(l=e.getValue())||null==l.toString?void 0:l.toString())?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:o("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(t=>null!=t&&t.includes(e.id)?t.filter(t=>t!==e.id):[...null!=t?t:[],e.id])},e.getCanGroup=()=>{var l,n;return(null==(l=e.columnDef.enableGrouping)||l)&&(null==(n=t.options.enableGrouping)||n)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var l;return null==(l=t.getState().grouping)?void 0:l.includes(e.id)},e.getGroupedIndex=()=>{var l;return null==(l=t.getState().grouping)?void 0:l.indexOf(e.id)},e.getToggleGroupingHandler=()=>{let t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{let l=t.getCoreRowModel().flatRows[0],n=null==l?void 0:l.getValue(e.id);return"number"==typeof n?x.sum:"[object Date]"===Object.prototype.toString.call(n)?x.extent:void 0},e.getAggregationFn=()=>{var l,n;if(!e)throw Error();return r(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:"auto"===e.columnDef.aggregationFn?e.getAutoAggregationFn():null!=(l=null==(n=t.options.aggregationFns)?void 0:n[e.columnDef.aggregationFn])?l:x[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>null==e.options.onGroupingChange?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var l,n;e.setGrouping(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.grouping)?l:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel)?e.getPreGroupedRowModel():e._getGroupedRowModel()},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=l=>{if(e._groupingValuesCache.hasOwnProperty(l))return e._groupingValuesCache[l];let n=t.getColumn(l);return null!=n&&n.columnDef.getGroupingValue?(e._groupingValuesCache[l]=n.columnDef.getGroupingValue(e.original),e._groupingValuesCache[l]):e.getValue(l)},e._groupingValuesCache={}},createCell:(e,t,l,n)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===l.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var t;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!(null!=(t=l.subRows)&&t.length)}}},{getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:o("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,l=!1;e._autoResetExpanded=()=>{var n,o;if(!t)return void e._queue(()=>{t=!0});if(null!=(n=null!=(o=e.options.autoResetAll)?o:e.options.autoResetExpanded)?n:!e.options.manualExpanding){if(l)return;l=!0,e._queue(()=>{e.resetExpanded(),l=!1})}},e.setExpanded=t=>null==e.options.onExpandedChange?void 0:e.options.onExpandedChange(t),e.toggleAllRowsExpanded=t=>{(null!=t?t:!e.getIsAllRowsExpanded())?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=t=>{var l,n;e.setExpanded(t?{}:null!=(l=null==(n=e.initialState)?void 0:n.expanded)?l:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(e=>e.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>t=>{null==t.persist||t.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{let t=e.getState().expanded;return!0===t||Object.values(t).some(Boolean)},e.getIsAllRowsExpanded=()=>{let t=e.getState().expanded;return"boolean"==typeof t?!0===t:!(!Object.keys(t).length||e.getRowModel().flatRows.some(e=>!e.getIsExpanded()))},e.getExpandedDepth=()=>{let t=0;return(!0===e.getState().expanded?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(e=>{let l=e.split(".");t=Math.max(t,l.length)}),t},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel)?e.getPreExpandedRowModel():e._getExpandedRowModel()},createRow:(e,t)=>{e.toggleExpanded=l=>{t.setExpanded(n=>{var o;let r=!0===n||!!(null!=n&&n[e.id]),i={};if(!0===n?Object.keys(t.getRowModel().rowsById).forEach(e=>{i[e]=!0}):i=n,l=null!=(o=l)?o:!r,!r&&l)return{...i,[e.id]:!0};if(r&&!l){let{[e.id]:t,...l}=i;return l}return n})},e.getIsExpanded=()=>{var l;let n=t.getState().expanded;return!!(null!=(l=null==t.options.getIsRowExpanded?void 0:t.options.getIsRowExpanded(e))?l:!0===n||(null==n?void 0:n[e.id]))},e.getCanExpand=()=>{var l,n,o;return null!=(l=null==t.options.getRowCanExpand?void 0:t.options.getRowCanExpand(e))?l:(null==(n=t.options.enableExpanding)||n)&&!!(null!=(o=e.subRows)&&o.length)},e.getIsAllParentsExpanded=()=>{let l=!0,n=e;for(;l&&n.parentId;)l=(n=t.getRow(n.parentId,!0)).getIsExpanded();return l},e.getToggleExpandedHandler=()=>{let t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},{getInitialState:e=>({...e,pagination:{...E(),...null==e?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:o("pagination",e)}),createTable:e=>{let t=!1,l=!1;e._autoResetPageIndex=()=>{var n,o;if(!t)return void e._queue(()=>{t=!0});if(null!=(n=null!=(o=e.options.autoResetAll)?o:e.options.autoResetPageIndex)?n:!e.options.manualPagination){if(l)return;l=!0,e._queue(()=>{e.resetPageIndex(),l=!1})}},e.setPagination=t=>null==e.options.onPaginationChange?void 0:e.options.onPaginationChange(e=>n(t,e)),e.resetPagination=t=>{var l;e.setPagination(t?E():null!=(l=e.initialState.pagination)?l:E())},e.setPageIndex=t=>{e.setPagination(l=>{let o=n(t,l.pageIndex);return o=Math.max(0,Math.min(o,void 0===e.options.pageCount||-1===e.options.pageCount?Number.MAX_SAFE_INTEGER:e.options.pageCount-1)),{...l,pageIndex:o}})},e.resetPageIndex=t=>{var l,n;e.setPageIndex(t?0:null!=(l=null==(n=e.initialState)||null==(n=n.pagination)?void 0:n.pageIndex)?l:0)},e.resetPageSize=t=>{var l,n;e.setPageSize(t?10:null!=(l=null==(n=e.initialState)||null==(n=n.pagination)?void 0:n.pageSize)?l:10)},e.setPageSize=t=>{e.setPagination(e=>{let l=Math.max(1,n(t,e.pageSize)),o=Math.floor(e.pageSize*e.pageIndex/l);return{...e,pageIndex:o,pageSize:l}})},e.setPageCount=t=>e.setPagination(l=>{var o;let r=n(t,null!=(o=e.options.pageCount)?o:-1);return"number"==typeof r&&(r=Math.max(-1,r)),{...l,pageCount:r}}),e.getPageOptions=i(()=>[e.getPageCount()],e=>{let t=[];return e&&e>0&&(t=[...Array(e)].fill(null).map((e,t)=>t)),t},a(e.options,"debugTable","getPageOptions")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{let{pageIndex:t}=e.getState().pagination,l=e.getPageCount();return -1===l||0!==l&&te.setPageIndex(e=>e-1),e.nextPage=()=>e.setPageIndex(e=>e+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel)?e.getPrePaginationRowModel():e._getPaginationRowModel(),e.getPageCount=()=>{var t;return null!=(t=e.options.pageCount)?t:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var t;return null!=(t=e.options.rowCount)?t:e.getPrePaginationRowModel().rows.length}}},{getInitialState:e=>({rowPinning:_(),...e}),getDefaultOptions:e=>({onRowPinningChange:o("rowPinning",e)}),createRow:(e,t)=>{e.pin=(l,n,o)=>{let r=n?e.getLeafRows().map(e=>{let{id:t}=e;return t}):[],i=new Set([...o?e.getParentRows().map(e=>{let{id:t}=e;return t}):[],e.id,...r]);t.setRowPinning(e=>{var t,n,o,r,a,u;return"bottom"===l?{top:(null!=(o=null==e?void 0:e.top)?o:[]).filter(e=>!(null!=i&&i.has(e))),bottom:[...(null!=(r=null==e?void 0:e.bottom)?r:[]).filter(e=>!(null!=i&&i.has(e))),...Array.from(i)]}:"top"===l?{top:[...(null!=(a=null==e?void 0:e.top)?a:[]).filter(e=>!(null!=i&&i.has(e))),...Array.from(i)],bottom:(null!=(u=null==e?void 0:e.bottom)?u:[]).filter(e=>!(null!=i&&i.has(e)))}:{top:(null!=(t=null==e?void 0:e.top)?t:[]).filter(e=>!(null!=i&&i.has(e))),bottom:(null!=(n=null==e?void 0:e.bottom)?n:[]).filter(e=>!(null!=i&&i.has(e)))}})},e.getCanPin=()=>{var l;let{enableRowPinning:n,enablePinning:o}=t.options;return"function"==typeof n?n(e):null==(l=null!=n?n:o)||l},e.getIsPinned=()=>{let l=[e.id],{top:n,bottom:o}=t.getState().rowPinning,r=l.some(e=>null==n?void 0:n.includes(e)),i=l.some(e=>null==o?void 0:o.includes(e));return r?"top":!!i&&"bottom"},e.getPinnedIndex=()=>{var l,n;let o=e.getIsPinned();if(!o)return -1;let r=null==(l="top"===o?t.getTopRows():t.getBottomRows())?void 0:l.map(e=>{let{id:t}=e;return t});return null!=(n=null==r?void 0:r.indexOf(e.id))?n:-1}},createTable:e=>{e.setRowPinning=t=>null==e.options.onRowPinningChange?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var l,n;return e.setRowPinning(t?_():null!=(l=null==(n=e.initialState)?void 0:n.rowPinning)?l:_())},e.getIsSomeRowsPinned=t=>{var l,n,o;let r=e.getState().rowPinning;return t?!!(null==(l=r[t])?void 0:l.length):!!((null==(n=r.top)?void 0:n.length)||(null==(o=r.bottom)?void 0:o.length))},e._getPinnedRows=(t,l,n)=>{var o;return(null==(o=e.options.keepPinnedRows)||o?(null!=l?l:[]).map(t=>{let l=e.getRow(t,!0);return l.getIsAllParentsExpanded()?l:null}):(null!=l?l:[]).map(e=>t.find(t=>t.id===e))).filter(Boolean).map(e=>({...e,position:n}))},e.getTopRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,l)=>e._getPinnedRows(t,l,"top"),a(e.options,"debugRows","getTopRows")),e.getBottomRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,l)=>e._getPinnedRows(t,l,"bottom"),a(e.options,"debugRows","getBottomRows")),e.getCenterRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(e,t,l)=>{let n=new Set([...null!=t?t:[],...null!=l?l:[]]);return e.filter(e=>!n.has(e.id))},a(e.options,"debugRows","getCenterRows"))}},{getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:o("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>null==e.options.onRowSelectionChange?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var l;return e.setRowSelection(t?{}:null!=(l=e.initialState.rowSelection)?l:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(l=>{t=void 0!==t?t:!e.getIsAllRowsSelected();let n={...l},o=e.getPreGroupedRowModel().flatRows;return t?o.forEach(e=>{e.getCanSelect()&&(n[e.id]=!0)}):o.forEach(e=>{delete n[e.id]}),n})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(l=>{let n=void 0!==t?t:!e.getIsAllPageRowsSelected(),o={...l};return e.getRowModel().rows.forEach(t=>{k(o,t.id,n,!0,e)}),o}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=i(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getSelectedRowModel")),e.getFilteredSelectedRowModel=i(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getFilteredSelectedRowModel")),e.getGroupedSelectedRowModel=i(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getGroupedSelectedRowModel")),e.getIsAllRowsSelected=()=>{let t=e.getFilteredRowModel().flatRows,{rowSelection:l}=e.getState(),n=!!(t.length&&Object.keys(l).length);return n&&t.some(e=>e.getCanSelect()&&!l[e.id])&&(n=!1),n},e.getIsAllPageRowsSelected=()=>{let t=e.getPaginationRowModel().flatRows.filter(e=>e.getCanSelect()),{rowSelection:l}=e.getState(),n=!!t.length;return n&&t.some(e=>!l[e.id])&&(n=!1),n},e.getIsSomeRowsSelected=()=>{var t;let l=Object.keys(null!=(t=e.getState().rowSelection)?t:{}).length;return l>0&&l{let t=e.getPaginationRowModel().flatRows;return!e.getIsAllPageRowsSelected()&&t.filter(e=>e.getCanSelect()).some(e=>e.getIsSelected()||e.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(l,n)=>{let o=e.getIsSelected();t.setRowSelection(r=>{var i;if(l=void 0!==l?l:!o,e.getCanSelect()&&o===l)return r;let a={...r};return k(a,e.id,l,null==(i=null==n?void 0:n.selectChildren)||i,t),a})},e.getIsSelected=()=>{let{rowSelection:l}=t.getState();return G(e,l)},e.getIsSomeSelected=()=>{let{rowSelection:l}=t.getState();return"some"===D(e,l)},e.getIsAllSubRowsSelected=()=>{let{rowSelection:l}=t.getState();return"all"===D(e,l)},e.getCanSelect=()=>{var l;return"function"==typeof t.options.enableRowSelection?t.options.enableRowSelection(e):null==(l=t.options.enableRowSelection)||l},e.getCanSelectSubRows=()=>{var l;return"function"==typeof t.options.enableSubRowSelection?t.options.enableSubRowSelection(e):null==(l=t.options.enableSubRowSelection)||l},e.getCanMultiSelect=()=>{var l;return"function"==typeof t.options.enableMultiRowSelection?t.options.enableMultiRowSelection(e):null==(l=t.options.enableMultiRowSelection)||l},e.getToggleSelectedHandler=()=>{let t=e.getCanSelect();return l=>{var n;t&&e.toggleSelected(null==(n=l.target)?void 0:n.checked)}}}},{getDefaultColumnDef:()=>M,getInitialState:e=>({columnSizing:{},columnSizingInfo:P(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:o("columnSizing",e),onColumnSizingInfoChange:o("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var l,n,o;let r=t.getState().columnSizing[e.id];return Math.min(Math.max(null!=(l=e.columnDef.minSize)?l:M.minSize,null!=(n=null!=r?r:e.columnDef.size)?n:M.size),null!=(o=e.columnDef.maxSize)?o:M.maxSize)},e.getStart=i(e=>[e,V(t,e),t.getState().columnSizing],(t,l)=>l.slice(0,e.getIndex(t)).reduce((e,t)=>e+t.getSize(),0),a(t.options,"debugColumns","getStart")),e.getAfter=i(e=>[e,V(t,e),t.getState().columnSizing],(t,l)=>l.slice(e.getIndex(t)+1).reduce((e,t)=>e+t.getSize(),0),a(t.options,"debugColumns","getAfter")),e.resetSize=()=>{t.setColumnSizing(t=>{let{[e.id]:l,...n}=t;return n})},e.getCanResize=()=>{var l,n;return(null==(l=e.columnDef.enableResizing)||l)&&(null==(n=t.options.enableColumnResizing)||n)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let t=0,l=e=>{if(e.subHeaders.length)e.subHeaders.forEach(l);else{var n;t+=null!=(n=e.column.getSize())?n:0}};return l(e),t},e.getStart=()=>{if(e.index>0){let t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=l=>{let n=t.getColumn(e.column.id),o=null==n?void 0:n.getCanResize();return r=>{if(!n||!o||(null==r.persist||r.persist(),A(r)&&r.touches&&r.touches.length>1))return;let i=e.getSize(),a=e?e.getLeafHeaders().map(e=>[e.column.id,e.column.getSize()]):[[n.id,n.getSize()]],u=A(r)?Math.round(r.touches[0].clientX):r.clientX,s={},d=(e,l)=>{"number"==typeof l&&(t.setColumnSizingInfo(e=>{var n,o;let r="rtl"===t.options.columnResizeDirection?-1:1,i=(l-(null!=(n=null==e?void 0:e.startOffset)?n:0))*r,a=Math.max(i/(null!=(o=null==e?void 0:e.startSize)?o:0),-.999999);return e.columnSizingStart.forEach(e=>{let[t,l]=e;s[t]=Math.round(100*Math.max(l+l*a,0))/100}),{...e,deltaOffset:i,deltaPercentage:a}}),("onChange"===t.options.columnResizeMode||"end"===e)&&t.setColumnSizing(e=>({...e,...s})))},g=e=>d("move",e),c=e=>{d("end",e),t.setColumnSizingInfo(e=>({...e,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},p=l||("undefined"!=typeof document?document:null),f={moveHandler:e=>g(e.clientX),upHandler:e=>{null==p||p.removeEventListener("mousemove",f.moveHandler),null==p||p.removeEventListener("mouseup",f.upHandler),c(e.clientX)}},m={moveHandler:e=>(e.cancelable&&(e.preventDefault(),e.stopPropagation()),g(e.touches[0].clientX),!1),upHandler:e=>{var t;null==p||p.removeEventListener("touchmove",m.moveHandler),null==p||p.removeEventListener("touchend",m.upHandler),e.cancelable&&(e.preventDefault(),e.stopPropagation()),c(null==(t=e.touches[0])?void 0:t.clientX)}},v=!!function(){if("boolean"==typeof I)return I;let e=!1;try{let t=()=>{};window.addEventListener("test",t,{get passive(){return e=!0,!1}}),window.removeEventListener("test",t)}catch(t){e=!1}return I=e}()&&{passive:!1};A(r)?(null==p||p.addEventListener("touchmove",m.moveHandler,v),null==p||p.addEventListener("touchend",m.upHandler,v)):(null==p||p.addEventListener("mousemove",f.moveHandler,v),null==p||p.addEventListener("mouseup",f.upHandler,v)),t.setColumnSizingInfo(e=>({...e,startOffset:u,startSize:i,deltaOffset:0,deltaPercentage:0,columnSizingStart:a,isResizingColumn:n.id}))}}},createTable:e=>{e.setColumnSizing=t=>null==e.options.onColumnSizingChange?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>null==e.options.onColumnSizingInfoChange?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var l;e.setColumnSizing(t?{}:null!=(l=e.initialState.columnSizing)?l:{})},e.resetHeaderSizeInfo=t=>{var l;e.setColumnSizingInfo(t?P():null!=(l=e.initialState.columnSizingInfo)?l:P())},e.getTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getLeftTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getLeftHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getCenterTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getCenterHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getRightTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getRightHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0}}}];function q(e){var t,l;let o=[...B,...null!=(t=e._features)?t:[]],r={_features:o},u=r._features.reduce((e,t)=>Object.assign(e,null==t.getDefaultOptions?void 0:t.getDefaultOptions(r)),{}),s=e=>r.options.mergeOptions?r.options.mergeOptions(u,e):{...u,...e},d={...null!=(l=e.initialState)?l:{}};r._features.forEach(e=>{var t;d=null!=(t=null==e.getInitialState?void 0:e.getInitialState(d))?t:d});let g=[],c=!1,p={_features:o,options:{...u,...e},initialState:d,_queue:e=>{g.push(e),c||(c=!0,Promise.resolve().then(()=>{for(;g.length;)g.shift()();c=!1}).catch(e=>setTimeout(()=>{throw e})))},reset:()=>{r.setState(r.initialState)},setOptions:e=>{let t=n(e,r.options);r.options=s(t)},getState:()=>r.options.state,setState:e=>{null==r.options.onStateChange||r.options.onStateChange(e)},_getRowId:(e,t,l)=>{var n;return null!=(n=null==r.options.getRowId?void 0:r.options.getRowId(e,t,l))?n:`${l?[l.id,t].join("."):t}`},getCoreRowModel:()=>(r._getCoreRowModel||(r._getCoreRowModel=r.options.getCoreRowModel(r)),r._getCoreRowModel()),getRowModel:()=>r.getPaginationRowModel(),getRow:(e,t)=>{let l=(t?r.getPrePaginationRowModel():r.getRowModel()).rowsById[e];if(!l&&!(l=r.getCoreRowModel().rowsById[e]))throw Error();return l},_getDefaultColumnDef:i(()=>[r.options.defaultColumn],e=>{var t;return e=null!=(t=e)?t:{},{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>{var t,l;return null!=(t=null==(l=e.renderValue())||null==l.toString?void 0:l.toString())?t:null},...r._features.reduce((e,t)=>Object.assign(e,null==t.getDefaultColumnDef?void 0:t.getDefaultColumnDef()),{}),...e}},a(e,"debugColumns","_getDefaultColumnDef")),_getColumnDefs:()=>r.options.columns,getAllColumns:i(()=>[r._getColumnDefs()],e=>{let t=function(e,l,n){return void 0===n&&(n=0),e.map(e=>{let o=function(e,t,l,n){var o,r;let u,s={...e._getDefaultColumnDef(),...t},d=s.accessorKey,g=null!=(o=null!=(r=s.id)?r:d?"function"==typeof String.prototype.replaceAll?d.replaceAll(".","_"):d.replace(/\./g,"_"):void 0)?o:"string"==typeof s.header?s.header:void 0;if(s.accessorFn?u=s.accessorFn:d&&(u=d.includes(".")?e=>{let t=e;for(let e of d.split(".")){var l;t=null==(l=t)?void 0:l[e]}return t}:e=>e[s.accessorKey]),!g)throw Error();let c={id:`${String(g)}`,accessorFn:u,parent:n,depth:l,columnDef:s,columns:[],getFlatColumns:i(()=>[!0],()=>{var e;return[c,...null==(e=c.columns)?void 0:e.flatMap(e=>e.getFlatColumns())]},a(e.options,"debugColumns","column.getFlatColumns")),getLeafColumns:i(()=>[e._getOrderColumnsFn()],e=>{var t;return null!=(t=c.columns)&&t.length?e(c.columns.flatMap(e=>e.getLeafColumns())):[c]},a(e.options,"debugColumns","column.getLeafColumns"))};for(let t of e._features)null==t.createColumn||t.createColumn(c,e);return c}(r,e,n,l);return o.columns=e.columns?t(e.columns,o,n+1):[],o})};return t(e)},a(e,"debugColumns","getAllColumns")),getAllFlatColumns:i(()=>[r.getAllColumns()],e=>e.flatMap(e=>e.getFlatColumns()),a(e,"debugColumns","getAllFlatColumns")),_getAllFlatColumnsById:i(()=>[r.getAllFlatColumns()],e=>e.reduce((e,t)=>(e[t.id]=t,e),{}),a(e,"debugColumns","getAllFlatColumnsById")),getAllLeafColumns:i(()=>[r.getAllColumns(),r._getOrderColumnsFn()],(e,t)=>t(e.flatMap(e=>e.getLeafColumns())),a(e,"debugColumns","getAllLeafColumns")),getColumn:e=>r._getAllFlatColumnsById()[e]};Object.assign(r,p);for(let e=0;ei(()=>[e.options.data],t=>{let l={rows:[],flatRows:[],rowsById:{}},n=function(t,o,r){void 0===o&&(o=0);let i=[];for(let u=0;ue._autoResetPageIndex()))}},1492:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("arrow-up-down",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]])},2138:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("arrow-right",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"m12 5 7 7-7 7",key:"xquz4c"}]])},2146:(e,t,l)=>{function n(e){let{reason:t,children:l}=e;return l}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}}),l(5262)},2355:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},3052:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},3904:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},4054:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var l in t)Object.defineProperty(e,l,{enumerable:!0,get:t[l]})}(t,{bindSnapshot:function(){return i},createAsyncLocalStorage:function(){return r},createSnapshot:function(){return a}});let l=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class n{disable(){throw l}getStore(){}run(){throw l}exit(){throw l}enterWith(){throw l}static bind(e){return e}}let o="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function r(){return o?new o:new n}function i(e){return o?o.bind(e):n.bind(e)}function a(){return o?o.snapshot():function(e,...t){return e(...t)}}},4186:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},4357:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},5028:(e,t,l)=>{l.d(t,{default:()=>o.a});var n=l(6645),o=l.n(n)},5339:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},5448:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]])},5744:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=l(7828)},5868:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]])},6268:(e,t,l)=>{l.d(t,{Kv:()=>r,N4:()=>i});var n=l(2115),o=l(1032);function r(e,t){var l,o,r;return e?"function"==typeof(o=l=e)&&(()=>{let e=Object.getPrototypeOf(o);return e.prototype&&e.prototype.isReactComponent})()||"function"==typeof l||"object"==typeof(r=l)&&"symbol"==typeof r.$$typeof&&["react.memo","react.forward_ref"].includes(r.$$typeof.description)?n.createElement(e,t):e:null}function i(e){let t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[l]=n.useState(()=>({current:(0,o.ZR)(t)})),[r,i]=n.useState(()=>l.current.initialState);return l.current.setOptions(t=>({...t,...e,state:{...r,...e.state},onStateChange:t=>{i(t),null==e.onStateChange||e.onStateChange(t)}})),l.current}},6561:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]])},6645:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let n=l(8229)._(l(7357));function o(e,t){var l;let o={};"function"==typeof e&&(o.loader=e);let r={...o,...t};return(0,n.default)({...r,modules:null==(l=r.loadableGenerated)?void 0:l.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7357:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=l(5155),o=l(2115),r=l(2146);function i(e){return{default:e&&"default"in e?e.default:e}}l(255);let a={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},u=function(e){let t={...a,...e},l=(0,o.lazy)(()=>t.loader().then(i)),u=t.loading;function s(e){let i=u?(0,n.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,s=a?o.Suspense:o.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:[null,(0,n.jsx)(l,{...e})]}):(0,n.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(l,{...e})});return(0,n.jsx)(s,{...a?{fallback:i}:{},children:d})}return s.displayName="LoadableComponent",s}},7434:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},7740:(e,t,l)=>{l.d(t,{uB:()=>_});var n=/[\\\/_+.#"@\[\(\{&]/,o=/[\\\/_+.#"@\[\(\{&]/g,r=/[\s-]/,i=/[\s-]/g;function a(e){return e.toLowerCase().replace(i," ")}var u=l(5452),s=l(2115),d=l(3655),g=l(1285),c=l(6101),p='[cmdk-group=""]',f='[cmdk-group-items=""]',m='[cmdk-item=""]',v="".concat(m,':not([aria-disabled="true"])'),h="cmdk-item-select",C="data-value",b=(e,t,l)=>(function(e,t,l){return function e(t,l,a,u,s,d,g){if(d===l.length)return s===t.length?1:.99;var c=`${s},${d}`;if(void 0!==g[c])return g[c];for(var p,f,m,v,h=u.charAt(d),C=a.indexOf(h,s),b=0;C>=0;)(p=e(t,l,a,u,C+1,d+1,g))>b&&(C===s?p*=1:n.test(t.charAt(C-1))?(p*=.8,(m=t.slice(s,C-1).match(o))&&s>0&&(p*=Math.pow(.999,m.length))):r.test(t.charAt(C-1))?(p*=.9,(v=t.slice(s,C-1).match(i))&&s>0&&(p*=Math.pow(.999,v.length))):(p*=.17,s>0&&(p*=Math.pow(.999,C-s))),t.charAt(C)!==l.charAt(d)&&(p*=.9999)),(p<.1&&a.charAt(C-1)===u.charAt(d+1)||u.charAt(d+1)===u.charAt(d)&&a.charAt(C-1)!==u.charAt(d))&&.1*(f=e(t,l,a,u,C+1,d+2,g))>p&&(p=.1*f),p>b&&(b=p),C=a.indexOf(h,C+1);return g[c]=b,b}(e=l&&l.length>0?`${e+" "+l.join(" ")}`:e,t,a(e),a(t),0,0,{})})(e,t,l),w=s.createContext(void 0),S=()=>s.useContext(w),R=s.createContext(void 0),y=()=>s.useContext(R),x=s.createContext(void 0),F=s.forwardRef((e,t)=>{let l=G(()=>{var t,l;return{search:"",value:null!=(l=null!=(t=e.value)?t:e.defaultValue)?l:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),n=G(()=>new Set),o=G(()=>new Map),r=G(()=>new Map),i=G(()=>new Set),a=k(e),{label:u,children:c,value:S,onValueChange:y,filter:x,shouldFilter:F,loop:M,disablePointerSelection:P=!1,vimBindings:I=!0,...A}=e,V=(0,g.B)(),E=(0,g.B)(),_=(0,g.B)(),D=s.useRef(null),O=H();L(()=>{if(void 0!==S){let e=S.trim();l.current.value=e,T.emit()}},[S]),L(()=>{O(6,K)},[]);let T=s.useMemo(()=>({subscribe:e=>(i.current.add(e),()=>i.current.delete(e)),snapshot:()=>l.current,setState:(e,t,n)=>{var o,r,i,u;if(!Object.is(l.current[e],t)){if(l.current[e]=t,"search"===e)$(),N(),O(1,U);else if("value"===e){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let e=document.getElementById(_);e?e.focus():null==(o=document.getElementById(V))||o.focus()}if(O(7,()=>{var e;l.current.selectedItemId=null==(e=X())?void 0:e.id,T.emit()}),n||O(5,K),(null==(r=a.current)?void 0:r.value)!==void 0){null==(u=(i=a.current).onValueChange)||u.call(i,null!=t?t:"");return}}T.emit()}},emit:()=>{i.current.forEach(e=>e())}}),[]),B=s.useMemo(()=>({value:(e,t,n)=>{var o;t!==(null==(o=r.current.get(e))?void 0:o.value)&&(r.current.set(e,{value:t,keywords:n}),l.current.filtered.items.set(e,q(t,n)),O(2,()=>{N(),T.emit()}))},item:(e,t)=>(n.current.add(e),t&&(o.current.has(t)?o.current.get(t).add(e):o.current.set(t,new Set([e]))),O(3,()=>{$(),N(),l.current.value||U(),T.emit()}),()=>{r.current.delete(e),n.current.delete(e),l.current.filtered.items.delete(e);let t=X();O(4,()=>{$(),(null==t?void 0:t.getAttribute("id"))===e&&U(),T.emit()})}),group:e=>(o.current.has(e)||o.current.set(e,new Set),()=>{r.current.delete(e),o.current.delete(e)}),filter:()=>a.current.shouldFilter,label:u||e["aria-label"],getDisablePointerSelection:()=>a.current.disablePointerSelection,listId:V,inputId:_,labelId:E,listInnerRef:D}),[]);function q(e,t){var n,o;let r=null!=(o=null==(n=a.current)?void 0:n.filter)?o:b;return e?r(e,l.current.search,t):0}function N(){if(!l.current.search||!1===a.current.shouldFilter)return;let e=l.current.filtered.items,t=[];l.current.filtered.groups.forEach(l=>{let n=o.current.get(l),r=0;n.forEach(t=>{r=Math.max(e.get(t),r)}),t.push([l,r])});let n=D.current;Z().sort((t,l)=>{var n,o;let r=t.getAttribute("id"),i=l.getAttribute("id");return(null!=(n=e.get(i))?n:0)-(null!=(o=e.get(r))?o:0)}).forEach(e=>{let t=e.closest(f);t?t.appendChild(e.parentElement===t?e:e.closest("".concat(f," > *"))):n.appendChild(e.parentElement===n?e:e.closest("".concat(f," > *")))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{var t;let l=null==(t=D.current)?void 0:t.querySelector("".concat(p,"[").concat(C,'="').concat(encodeURIComponent(e[0]),'"]'));null==l||l.parentElement.appendChild(l)})}function U(){let e=Z().find(e=>"true"!==e.getAttribute("aria-disabled")),t=null==e?void 0:e.getAttribute(C);T.setState("value",t||void 0)}function $(){var e,t,i,u;if(!l.current.search||!1===a.current.shouldFilter){l.current.filtered.count=n.current.size;return}l.current.filtered.groups=new Set;let s=0;for(let o of n.current){let n=q(null!=(t=null==(e=r.current.get(o))?void 0:e.value)?t:"",null!=(u=null==(i=r.current.get(o))?void 0:i.keywords)?u:[]);l.current.filtered.items.set(o,n),n>0&&s++}for(let[e,t]of o.current)for(let n of t)if(l.current.filtered.items.get(n)>0){l.current.filtered.groups.add(e);break}l.current.filtered.count=s}function K(){var e,t,l;let n=X();n&&((null==(e=n.parentElement)?void 0:e.firstChild)===n&&(null==(l=null==(t=n.closest(p))?void 0:t.querySelector('[cmdk-group-heading=""]'))||l.scrollIntoView({block:"nearest"})),n.scrollIntoView({block:"nearest"}))}function X(){var e;return null==(e=D.current)?void 0:e.querySelector("".concat(m,'[aria-selected="true"]'))}function Z(){var e;return Array.from((null==(e=D.current)?void 0:e.querySelectorAll(v))||[])}function W(e){let t=Z()[e];t&&T.setState("value",t.getAttribute(C))}function J(e){var t;let l=X(),n=Z(),o=n.findIndex(e=>e===l),r=n[o+e];null!=(t=a.current)&&t.loop&&(r=o+e<0?n[n.length-1]:o+e===n.length?n[0]:n[o+e]),r&&T.setState("value",r.getAttribute(C))}function Q(e){let t=X(),l=null==t?void 0:t.closest(p),n;for(;l&&!n;)n=null==(l=e>0?function(e,t){let l=e.nextElementSibling;for(;l;){if(l.matches(t))return l;l=l.nextElementSibling}}(l,p):function(e,t){let l=e.previousElementSibling;for(;l;){if(l.matches(t))return l;l=l.previousElementSibling}}(l,p))?void 0:l.querySelector(v);n?T.setState("value",n.getAttribute(C)):J(e)}let Y=()=>W(Z().length-1),ee=e=>{e.preventDefault(),e.metaKey?Y():e.altKey?Q(1):J(1)},et=e=>{e.preventDefault(),e.metaKey?W(0):e.altKey?Q(-1):J(-1)};return s.createElement(d.sG.div,{ref:t,tabIndex:-1,...A,"cmdk-root":"",onKeyDown:e=>{var t;null==(t=A.onKeyDown)||t.call(A,e);let l=e.nativeEvent.isComposing||229===e.keyCode;if(!(e.defaultPrevented||l))switch(e.key){case"n":case"j":I&&e.ctrlKey&&ee(e);break;case"ArrowDown":ee(e);break;case"p":case"k":I&&e.ctrlKey&&et(e);break;case"ArrowUp":et(e);break;case"Home":e.preventDefault(),W(0);break;case"End":e.preventDefault(),Y();break;case"Enter":{e.preventDefault();let t=X();if(t){let e=new Event(h);t.dispatchEvent(e)}}}}},s.createElement("label",{"cmdk-label":"",htmlFor:B.inputId,id:B.labelId,style:j},u),z(e,e=>s.createElement(R.Provider,{value:T},s.createElement(w.Provider,{value:B},e))))}),M=s.forwardRef((e,t)=>{var l,n;let o=(0,g.B)(),r=s.useRef(null),i=s.useContext(x),a=S(),u=k(e),p=null!=(n=null==(l=u.current)?void 0:l.forceMount)?n:null==i?void 0:i.forceMount;L(()=>{if(!p)return a.item(o,null==i?void 0:i.id)},[p]);let f=O(o,r,[e.value,e.children,r],e.keywords),m=y(),v=D(e=>e.value&&e.value===f.current),C=D(e=>!!p||!1===a.filter()||!e.search||e.filtered.items.get(o)>0);function b(){var e,t;w(),null==(t=(e=u.current).onSelect)||t.call(e,f.current)}function w(){m.setState("value",f.current,!0)}if(s.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(h,b),()=>t.removeEventListener(h,b)},[C,e.onSelect,e.disabled]),!C)return null;let{disabled:R,value:F,onSelect:M,forceMount:P,keywords:I,...A}=e;return s.createElement(d.sG.div,{ref:(0,c.t)(r,t),...A,id:o,"cmdk-item":"",role:"option","aria-disabled":!!R,"aria-selected":!!v,"data-disabled":!!R,"data-selected":!!v,onPointerMove:R||a.getDisablePointerSelection()?void 0:w,onClick:R?void 0:b},e.children)}),P=s.forwardRef((e,t)=>{let{heading:l,children:n,forceMount:o,...r}=e,i=(0,g.B)(),a=s.useRef(null),u=s.useRef(null),p=(0,g.B)(),f=S(),m=D(e=>!!o||!1===f.filter()||!e.search||e.filtered.groups.has(i));L(()=>f.group(i),[]),O(i,a,[e.value,e.heading,u]);let v=s.useMemo(()=>({id:i,forceMount:o}),[o]);return s.createElement(d.sG.div,{ref:(0,c.t)(a,t),...r,"cmdk-group":"",role:"presentation",hidden:!m||void 0},l&&s.createElement("div",{ref:u,"cmdk-group-heading":"","aria-hidden":!0,id:p},l),z(e,e=>s.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":l?p:void 0},s.createElement(x.Provider,{value:v},e))))}),I=s.forwardRef((e,t)=>{let{alwaysRender:l,...n}=e,o=s.useRef(null),r=D(e=>!e.search);return l||r?s.createElement(d.sG.div,{ref:(0,c.t)(o,t),...n,"cmdk-separator":"",role:"separator"}):null}),A=s.forwardRef((e,t)=>{let{onValueChange:l,...n}=e,o=null!=e.value,r=y(),i=D(e=>e.search),a=D(e=>e.selectedItemId),u=S();return s.useEffect(()=>{null!=e.value&&r.setState("search",e.value)},[e.value]),s.createElement(d.sG.input,{ref:t,...n,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":u.listId,"aria-labelledby":u.labelId,"aria-activedescendant":a,id:u.inputId,type:"text",value:o?e.value:i,onChange:e=>{o||r.setState("search",e.target.value),null==l||l(e.target.value)}})}),V=s.forwardRef((e,t)=>{let{children:l,label:n="Suggestions",...o}=e,r=s.useRef(null),i=s.useRef(null),a=D(e=>e.selectedItemId),u=S();return s.useEffect(()=>{if(i.current&&r.current){let e=i.current,t=r.current,l,n=new ResizeObserver(()=>{l=requestAnimationFrame(()=>{let l=e.offsetHeight;t.style.setProperty("--cmdk-list-height",l.toFixed(1)+"px")})});return n.observe(e),()=>{cancelAnimationFrame(l),n.unobserve(e)}}},[]),s.createElement(d.sG.div,{ref:(0,c.t)(r,t),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":a,"aria-label":n,id:u.listId},z(e,e=>s.createElement("div",{ref:(0,c.t)(i,u.listInnerRef),"cmdk-list-sizer":""},e)))}),E=s.forwardRef((e,t)=>{let{open:l,onOpenChange:n,overlayClassName:o,contentClassName:r,container:i,...a}=e;return s.createElement(u.bL,{open:l,onOpenChange:n},s.createElement(u.ZL,{container:i},s.createElement(u.hJ,{"cmdk-overlay":"",className:o}),s.createElement(u.UC,{"aria-label":e.label,"cmdk-dialog":"",className:r},s.createElement(F,{ref:t,...a}))))}),_=Object.assign(F,{List:V,Item:M,Input:A,Group:P,Separator:I,Dialog:E,Empty:s.forwardRef((e,t)=>D(e=>0===e.filtered.count)?s.createElement(d.sG.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Loading:s.forwardRef((e,t)=>{let{progress:l,children:n,label:o="Loading...",...r}=e;return s.createElement(d.sG.div,{ref:t,...r,"cmdk-loading":"",role:"progressbar","aria-valuenow":l,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},z(e,e=>s.createElement("div",{"aria-hidden":!0},e)))})});function k(e){let t=s.useRef(e);return L(()=>{t.current=e}),t}var L="undefined"==typeof window?s.useEffect:s.useLayoutEffect;function G(e){let t=s.useRef();return void 0===t.current&&(t.current=e()),t}function D(e){let t=y(),l=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,l,l)}function O(e,t,l){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=s.useRef(),r=S();return L(()=>{var i;let a=(()=>{var e;for(let t of l){if("string"==typeof t)return t.trim();if("object"==typeof t&&"current"in t)return t.current?null==(e=t.current.textContent)?void 0:e.trim():o.current}})(),u=n.map(e=>e.trim());r.value(e,a,u),null==(i=t.current)||i.setAttribute(C,a),o.current=a}),o}var H=()=>{let[e,t]=s.useState(),l=G(()=>new Map);return L(()=>{l.current.forEach(e=>e()),l.current=new Map},[e]),(e,n)=>{l.current.set(e,n),t({})}};function z(e,t){let l,{asChild:n,children:o}=e;return n&&s.isValidElement(o)?s.cloneElement("function"==typeof(l=o.type)?l(o.props):"render"in l?l.render(o.props):o,{ref:o.ref},t(o.props.children)):t(o)}var j={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"}},7828:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,l(4054).createAsyncLocalStorage)()},7924:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]])}}]); \ No newline at end of file + color: hsl(${Math.max(0,Math.min(120-120*n,120))}deg 100% 31%);`,null==l?void 0:l.key)}return n}}function a(e,t,l,n){return{debug:()=>{var l;return null!=(l=null==e?void 0:e.debugAll)?l:e[t]},key:!1,onChange:n}}let u="debugHeaders";function s(e,t,l){var n;let o={id:null!=(n=l.id)?n:t.id,column:t,index:l.index,isPlaceholder:!!l.isPlaceholder,placeholderId:l.placeholderId,depth:l.depth,subHeaders:[],colSpan:0,rowSpan:0,headerGroup:null,getLeafHeaders:()=>{let e=[],t=l=>{l.subHeaders&&l.subHeaders.length&&l.subHeaders.map(t),e.push(l)};return t(o),e},getContext:()=>({table:e,header:o,column:t})};return e._features.forEach(t=>{null==t.createHeader||t.createHeader(o,e)}),o}function d(e,t,l,n){var o,r;let i=0,a=function(e,t){void 0===t&&(t=1),i=Math.max(i,t),e.filter(e=>e.getIsVisible()).forEach(e=>{var l;null!=(l=e.columns)&&l.length&&a(e.columns,t+1)},0)};a(e);let u=[],d=(e,t)=>{let o={depth:t,id:[n,`${t}`].filter(Boolean).join("_"),headers:[]},r=[];e.forEach(e=>{let i,a=[...r].reverse()[0],u=e.column.depth===o.depth,d=!1;if(u&&e.column.parent?i=e.column.parent:(i=e.column,d=!0),a&&(null==a?void 0:a.column)===i)a.subHeaders.push(e);else{let o=s(l,i,{id:[n,t,i.id,null==e?void 0:e.id].filter(Boolean).join("_"),isPlaceholder:d,placeholderId:d?`${r.filter(e=>e.column===i).length}`:void 0,depth:t,index:r.length});o.subHeaders.push(e),r.push(o)}o.headers.push(e),e.headerGroup=o}),u.push(o),t>0&&d(r,t-1)};d(t.map((e,t)=>s(l,e,{depth:i,index:t})),i-1),u.reverse();let g=e=>e.filter(e=>e.column.getIsVisible()).map(e=>{let t=0,l=0,n=[0];return e.subHeaders&&e.subHeaders.length?(n=[],g(e.subHeaders).forEach(e=>{let{colSpan:l,rowSpan:o}=e;t+=l,n.push(o)})):t=1,l+=Math.min(...n),e.colSpan=t,e.rowSpan=l,{colSpan:t,rowSpan:l}});return g(null!=(o=null==(r=u[0])?void 0:r.headers)?o:[]),u}let g=(e,t,l,n,o,r,u)=>{let s={id:t,index:n,original:l,depth:o,parentId:u,_valuesCache:{},_uniqueValuesCache:{},getValue:t=>{if(s._valuesCache.hasOwnProperty(t))return s._valuesCache[t];let l=e.getColumn(t);if(null!=l&&l.accessorFn)return s._valuesCache[t]=l.accessorFn(s.original,n),s._valuesCache[t]},getUniqueValues:t=>{if(s._uniqueValuesCache.hasOwnProperty(t))return s._uniqueValuesCache[t];let l=e.getColumn(t);if(null!=l&&l.accessorFn)return l.columnDef.getUniqueValues?s._uniqueValuesCache[t]=l.columnDef.getUniqueValues(s.original,n):s._uniqueValuesCache[t]=[s.getValue(t)],s._uniqueValuesCache[t]},renderValue:t=>{var l;return null!=(l=s.getValue(t))?l:e.options.renderFallbackValue},subRows:null!=r?r:[],getLeafRows:()=>(function(e,t){let l=[],n=e=>{e.forEach(e=>{l.push(e);let o=t(e);null!=o&&o.length&&n(o)})};return n(e),l})(s.subRows,e=>e.subRows),getParentRow:()=>s.parentId?e.getRow(s.parentId,!0):void 0,getParentRows:()=>{let e=[],t=s;for(;;){let l=t.getParentRow();if(!l)break;e.push(l),t=l}return e.reverse()},getAllCells:i(()=>[e.getAllLeafColumns()],t=>t.map(t=>(function(e,t,l,n){let o={id:`${t.id}_${l.id}`,row:t,column:l,getValue:()=>t.getValue(n),renderValue:()=>{var t;return null!=(t=o.getValue())?t:e.options.renderFallbackValue},getContext:i(()=>[e,l,t,o],(e,t,l,n)=>({table:e,column:t,row:l,cell:n,getValue:n.getValue,renderValue:n.renderValue}),a(e.options,"debugCells","cell.getContext"))};return e._features.forEach(n=>{null==n.createCell||n.createCell(o,l,t,e)},{}),o})(e,s,t,t.id)),a(e.options,"debugRows","getAllCells")),_getAllCellsByColumnId:i(()=>[s.getAllCells()],e=>e.reduce((e,t)=>(e[t.column.id]=t,e),{}),a(e.options,"debugRows","getAllCellsByColumnId"))};for(let t=0;t{var n,o;let r=null==l||null==(n=l.toString())?void 0:n.toLowerCase();return!!(null==(o=e.getValue(t))||null==(o=o.toString())||null==(o=o.toLowerCase())?void 0:o.includes(r))};c.autoRemove=e=>R(e);let p=(e,t,l)=>{var n;return!!(null==(n=e.getValue(t))||null==(n=n.toString())?void 0:n.includes(l))};p.autoRemove=e=>R(e);let f=(e,t,l)=>{var n;return(null==(n=e.getValue(t))||null==(n=n.toString())?void 0:n.toLowerCase())===(null==l?void 0:l.toLowerCase())};f.autoRemove=e=>R(e);let m=(e,t,l)=>{var n;return null==(n=e.getValue(t))?void 0:n.includes(l)};m.autoRemove=e=>R(e);let v=(e,t,l)=>!l.some(l=>{var n;return!(null!=(n=e.getValue(t))&&n.includes(l))});v.autoRemove=e=>R(e)||!(null!=e&&e.length);let h=(e,t,l)=>l.some(l=>{var n;return null==(n=e.getValue(t))?void 0:n.includes(l)});h.autoRemove=e=>R(e)||!(null!=e&&e.length);let C=(e,t,l)=>e.getValue(t)===l;C.autoRemove=e=>R(e);let b=(e,t,l)=>e.getValue(t)==l;b.autoRemove=e=>R(e);let w=(e,t,l)=>{let[n,o]=l,r=e.getValue(t);return r>=n&&r<=o};w.resolveFilterValue=e=>{let[t,l]=e,n="number"!=typeof t?parseFloat(t):t,o="number"!=typeof l?parseFloat(l):l,r=null===t||Number.isNaN(n)?-1/0:n,i=null===l||Number.isNaN(o)?1/0:o;if(r>i){let e=r;r=i,i=e}return[r,i]},w.autoRemove=e=>R(e)||R(e[0])&&R(e[1]);let S={includesString:c,includesStringSensitive:p,equalsString:f,arrIncludes:m,arrIncludesAll:v,arrIncludesSome:h,equals:C,weakEquals:b,inNumberRange:w};function R(e){return null==e||""===e}function y(e,t,l){return!!e&&!!e.autoRemove&&e.autoRemove(t,l)||void 0===t||"string"==typeof t&&!t}let x={sum:(e,t,l)=>l.reduce((t,l)=>{let n=l.getValue(e);return t+("number"==typeof n?n:0)},0),min:(e,t,l)=>{let n;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(n>l||void 0===n&&l>=l)&&(n=l)}),n},max:(e,t,l)=>{let n;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(n=l)&&(n=l)}),n},extent:(e,t,l)=>{let n,o;return l.forEach(t=>{let l=t.getValue(e);null!=l&&(void 0===n?l>=l&&(n=o=l):(n>l&&(n=l),o{let l=0,n=0;if(t.forEach(t=>{let o=t.getValue(e);null!=o&&(o*=1)>=o&&(++l,n+=o)}),l)return n/l},median:(e,t)=>{if(!t.length)return;let l=t.map(t=>t.getValue(e));if(!function(e){return Array.isArray(e)&&e.every(e=>"number"==typeof e)}(l))return;if(1===l.length)return l[0];let n=Math.floor(l.length/2),o=l.sort((e,t)=>e-t);return l.length%2!=0?o[n]:(o[n-1]+o[n])/2},unique:(e,t)=>Array.from(new Set(t.map(t=>t.getValue(e))).values()),uniqueCount:(e,t)=>new Set(t.map(t=>t.getValue(e))).size,count:(e,t)=>t.length},F=()=>({left:[],right:[]}),M={size:150,minSize:20,maxSize:Number.MAX_SAFE_INTEGER},P=()=>({startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,isResizingColumn:!1,columnSizingStart:[]}),I=null;function V(e){return"touchstart"===e.type}function A(e,t){return t?"center"===t?e.getCenterVisibleLeafColumns():"left"===t?e.getLeftVisibleLeafColumns():e.getRightVisibleLeafColumns():e.getVisibleLeafColumns()}let E=()=>({pageIndex:0,pageSize:10}),_=()=>({top:[],bottom:[]}),k=(e,t,l,n,o)=>{var r;let i=o.getRow(t,!0);l?(i.getCanMultiSelect()||Object.keys(e).forEach(t=>delete e[t]),i.getCanSelect()&&(e[t]=!0)):delete e[t],n&&null!=(r=i.subRows)&&r.length&&i.getCanSelectSubRows()&&i.subRows.forEach(t=>k(e,t.id,l,n,o))};function L(e,t){let l=e.getState().rowSelection,n=[],o={},r=function(e,t){return e.map(e=>{var t;let i=G(e,l);if(i&&(n.push(e),o[e.id]=e),null!=(t=e.subRows)&&t.length&&(e={...e,subRows:r(e.subRows)}),i)return e}).filter(Boolean)};return{rows:r(t.rows),flatRows:n,rowsById:o}}function G(e,t){var l;return null!=(l=t[e.id])&&l}function D(e,t,l){var n;if(!(null!=(n=e.subRows)&&n.length))return!1;let o=!0,r=!1;return e.subRows.forEach(e=>{if((!r||o)&&(e.getCanSelect()&&(G(e,t)?r=!0:o=!1),e.subRows&&e.subRows.length)){let l=D(e,t);"all"===l?r=!0:("some"===l&&(r=!0),o=!1)}}),o?"all":!!r&&"some"}let O=/([0-9]+)/gm;function H(e,t){return e===t?0:e>t?1:-1}function z(e){return"number"==typeof e?isNaN(e)||e===1/0||e===-1/0?"":String(e):"string"==typeof e?e:""}function j(e,t){let l=e.split(O).filter(Boolean),n=t.split(O).filter(Boolean);for(;l.length&&n.length;){let e=l.shift(),t=n.shift(),o=parseInt(e,10),r=parseInt(t,10),i=[o,r].sort();if(isNaN(i[0])){if(e>t)return 1;if(t>e)return -1;continue}if(isNaN(i[1]))return isNaN(o)?-1:1;if(o>r)return 1;if(r>o)return -1}return l.length-n.length}let T={alphanumeric:(e,t,l)=>j(z(e.getValue(l)).toLowerCase(),z(t.getValue(l)).toLowerCase()),alphanumericCaseSensitive:(e,t,l)=>j(z(e.getValue(l)),z(t.getValue(l))),text:(e,t,l)=>H(z(e.getValue(l)).toLowerCase(),z(t.getValue(l)).toLowerCase()),textCaseSensitive:(e,t,l)=>H(z(e.getValue(l)),z(t.getValue(l))),datetime:(e,t,l)=>{let n=e.getValue(l),o=t.getValue(l);return n>o?1:nH(e.getValue(l),t.getValue(l))},B=[{createTable:e=>{e.getHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,l,n,o)=>{var r,i;let a=null!=(r=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?r:[],u=null!=(i=null==o?void 0:o.map(e=>l.find(t=>t.id===e)).filter(Boolean))?i:[];return d(t,[...a,...l.filter(e=>!(null!=n&&n.includes(e.id))&&!(null!=o&&o.includes(e.id))),...u],e)},a(e.options,u,"getHeaderGroups")),e.getCenterHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(t,l,n,o)=>d(t,l=l.filter(e=>!(null!=n&&n.includes(e.id))&&!(null!=o&&o.includes(e.id))),e,"center"),a(e.options,u,"getCenterHeaderGroups")),e.getLeftHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.left],(t,l,n)=>{var o;return d(t,null!=(o=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?o:[],e,"left")},a(e.options,u,"getLeftHeaderGroups")),e.getRightHeaderGroups=i(()=>[e.getAllColumns(),e.getVisibleLeafColumns(),e.getState().columnPinning.right],(t,l,n)=>{var o;return d(t,null!=(o=null==n?void 0:n.map(e=>l.find(t=>t.id===e)).filter(Boolean))?o:[],e,"right")},a(e.options,u,"getRightHeaderGroups")),e.getFooterGroups=i(()=>[e.getHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getFooterGroups")),e.getLeftFooterGroups=i(()=>[e.getLeftHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getLeftFooterGroups")),e.getCenterFooterGroups=i(()=>[e.getCenterHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getCenterFooterGroups")),e.getRightFooterGroups=i(()=>[e.getRightHeaderGroups()],e=>[...e].reverse(),a(e.options,u,"getRightFooterGroups")),e.getFlatHeaders=i(()=>[e.getHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getFlatHeaders")),e.getLeftFlatHeaders=i(()=>[e.getLeftHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getLeftFlatHeaders")),e.getCenterFlatHeaders=i(()=>[e.getCenterHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getCenterFlatHeaders")),e.getRightFlatHeaders=i(()=>[e.getRightHeaderGroups()],e=>e.map(e=>e.headers).flat(),a(e.options,u,"getRightFlatHeaders")),e.getCenterLeafHeaders=i(()=>[e.getCenterFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getCenterLeafHeaders")),e.getLeftLeafHeaders=i(()=>[e.getLeftFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getLeftLeafHeaders")),e.getRightLeafHeaders=i(()=>[e.getRightFlatHeaders()],e=>e.filter(e=>{var t;return!(null!=(t=e.subHeaders)&&t.length)}),a(e.options,u,"getRightLeafHeaders")),e.getLeafHeaders=i(()=>[e.getLeftHeaderGroups(),e.getCenterHeaderGroups(),e.getRightHeaderGroups()],(e,t,l)=>{var n,o,r,i,a,u;return[...null!=(n=null==(o=e[0])?void 0:o.headers)?n:[],...null!=(r=null==(i=t[0])?void 0:i.headers)?r:[],...null!=(a=null==(u=l[0])?void 0:u.headers)?a:[]].map(e=>e.getLeafHeaders()).flat()},a(e.options,u,"getLeafHeaders"))}},{getInitialState:e=>({columnVisibility:{},...e}),getDefaultOptions:e=>({onColumnVisibilityChange:o("columnVisibility",e)}),createColumn:(e,t)=>{e.toggleVisibility=l=>{e.getCanHide()&&t.setColumnVisibility(t=>({...t,[e.id]:null!=l?l:!e.getIsVisible()}))},e.getIsVisible=()=>{var l,n;let o=e.columns;return null==(l=o.length?o.some(e=>e.getIsVisible()):null==(n=t.getState().columnVisibility)?void 0:n[e.id])||l},e.getCanHide=()=>{var l,n;return(null==(l=e.columnDef.enableHiding)||l)&&(null==(n=t.options.enableHiding)||n)},e.getToggleVisibilityHandler=()=>t=>{null==e.toggleVisibility||e.toggleVisibility(t.target.checked)}},createRow:(e,t)=>{e._getAllVisibleCells=i(()=>[e.getAllCells(),t.getState().columnVisibility],e=>e.filter(e=>e.column.getIsVisible()),a(t.options,"debugRows","_getAllVisibleCells")),e.getVisibleCells=i(()=>[e.getLeftVisibleCells(),e.getCenterVisibleCells(),e.getRightVisibleCells()],(e,t,l)=>[...e,...t,...l],a(t.options,"debugRows","getVisibleCells"))},createTable:e=>{let t=(t,l)=>i(()=>[l(),l().filter(e=>e.getIsVisible()).map(e=>e.id).join("_")],e=>e.filter(e=>null==e.getIsVisible?void 0:e.getIsVisible()),a(e.options,"debugColumns",t));e.getVisibleFlatColumns=t("getVisibleFlatColumns",()=>e.getAllFlatColumns()),e.getVisibleLeafColumns=t("getVisibleLeafColumns",()=>e.getAllLeafColumns()),e.getLeftVisibleLeafColumns=t("getLeftVisibleLeafColumns",()=>e.getLeftLeafColumns()),e.getRightVisibleLeafColumns=t("getRightVisibleLeafColumns",()=>e.getRightLeafColumns()),e.getCenterVisibleLeafColumns=t("getCenterVisibleLeafColumns",()=>e.getCenterLeafColumns()),e.setColumnVisibility=t=>null==e.options.onColumnVisibilityChange?void 0:e.options.onColumnVisibilityChange(t),e.resetColumnVisibility=t=>{var l;e.setColumnVisibility(t?{}:null!=(l=e.initialState.columnVisibility)?l:{})},e.toggleAllColumnsVisible=t=>{var l;t=null!=(l=t)?l:!e.getIsAllColumnsVisible(),e.setColumnVisibility(e.getAllLeafColumns().reduce((e,l)=>({...e,[l.id]:t||!(null!=l.getCanHide&&l.getCanHide())}),{}))},e.getIsAllColumnsVisible=()=>!e.getAllLeafColumns().some(e=>!(null!=e.getIsVisible&&e.getIsVisible())),e.getIsSomeColumnsVisible=()=>e.getAllLeafColumns().some(e=>null==e.getIsVisible?void 0:e.getIsVisible()),e.getToggleAllColumnsVisibilityHandler=()=>t=>{var l;e.toggleAllColumnsVisible(null==(l=t.target)?void 0:l.checked)}}},{getInitialState:e=>({columnOrder:[],...e}),getDefaultOptions:e=>({onColumnOrderChange:o("columnOrder",e)}),createColumn:(e,t)=>{e.getIndex=i(e=>[A(t,e)],t=>t.findIndex(t=>t.id===e.id),a(t.options,"debugColumns","getIndex")),e.getIsFirstColumn=l=>{var n;return(null==(n=A(t,l)[0])?void 0:n.id)===e.id},e.getIsLastColumn=l=>{var n;let o=A(t,l);return(null==(n=o[o.length-1])?void 0:n.id)===e.id}},createTable:e=>{e.setColumnOrder=t=>null==e.options.onColumnOrderChange?void 0:e.options.onColumnOrderChange(t),e.resetColumnOrder=t=>{var l;e.setColumnOrder(t?[]:null!=(l=e.initialState.columnOrder)?l:[])},e._getOrderColumnsFn=i(()=>[e.getState().columnOrder,e.getState().grouping,e.options.groupedColumnMode],(e,t,l)=>n=>{let o=[];if(null!=e&&e.length){let t=[...e],l=[...n];for(;l.length&&t.length;){let e=t.shift(),n=l.findIndex(t=>t.id===e);n>-1&&o.push(l.splice(n,1)[0])}o=[...o,...l]}else o=n;return function(e,t,l){if(!(null!=t&&t.length)||!l)return e;let n=e.filter(e=>!t.includes(e.id));return"remove"===l?n:[...t.map(t=>e.find(e=>e.id===t)).filter(Boolean),...n]}(o,t,l)},a(e.options,"debugTable","_getOrderColumnsFn"))}},{getInitialState:e=>({columnPinning:F(),...e}),getDefaultOptions:e=>({onColumnPinningChange:o("columnPinning",e)}),createColumn:(e,t)=>{e.pin=l=>{let n=e.getLeafColumns().map(e=>e.id).filter(Boolean);t.setColumnPinning(e=>{var t,o,r,i,a,u;return"right"===l?{left:(null!=(r=null==e?void 0:e.left)?r:[]).filter(e=>!(null!=n&&n.includes(e))),right:[...(null!=(i=null==e?void 0:e.right)?i:[]).filter(e=>!(null!=n&&n.includes(e))),...n]}:"left"===l?{left:[...(null!=(a=null==e?void 0:e.left)?a:[]).filter(e=>!(null!=n&&n.includes(e))),...n],right:(null!=(u=null==e?void 0:e.right)?u:[]).filter(e=>!(null!=n&&n.includes(e)))}:{left:(null!=(t=null==e?void 0:e.left)?t:[]).filter(e=>!(null!=n&&n.includes(e))),right:(null!=(o=null==e?void 0:e.right)?o:[]).filter(e=>!(null!=n&&n.includes(e)))}})},e.getCanPin=()=>e.getLeafColumns().some(e=>{var l,n,o;return(null==(l=e.columnDef.enablePinning)||l)&&(null==(n=null!=(o=t.options.enableColumnPinning)?o:t.options.enablePinning)||n)}),e.getIsPinned=()=>{let l=e.getLeafColumns().map(e=>e.id),{left:n,right:o}=t.getState().columnPinning,r=l.some(e=>null==n?void 0:n.includes(e)),i=l.some(e=>null==o?void 0:o.includes(e));return r?"left":!!i&&"right"},e.getPinnedIndex=()=>{var l,n;let o=e.getIsPinned();return o?null!=(l=null==(n=t.getState().columnPinning)||null==(n=n[o])?void 0:n.indexOf(e.id))?l:-1:0}},createRow:(e,t)=>{e.getCenterVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left,t.getState().columnPinning.right],(e,t,l)=>{let n=[...null!=t?t:[],...null!=l?l:[]];return e.filter(e=>!n.includes(e.column.id))},a(t.options,"debugRows","getCenterVisibleCells")),e.getLeftVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.left],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:"left"})),a(t.options,"debugRows","getLeftVisibleCells")),e.getRightVisibleCells=i(()=>[e._getAllVisibleCells(),t.getState().columnPinning.right],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.column.id===t)).filter(Boolean).map(e=>({...e,position:"right"})),a(t.options,"debugRows","getRightVisibleCells"))},createTable:e=>{e.setColumnPinning=t=>null==e.options.onColumnPinningChange?void 0:e.options.onColumnPinningChange(t),e.resetColumnPinning=t=>{var l,n;return e.setColumnPinning(t?F():null!=(l=null==(n=e.initialState)?void 0:n.columnPinning)?l:F())},e.getIsSomeColumnsPinned=t=>{var l,n,o;let r=e.getState().columnPinning;return t?!!(null==(l=r[t])?void 0:l.length):!!((null==(n=r.left)?void 0:n.length)||(null==(o=r.right)?void 0:o.length))},e.getLeftLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),a(e.options,"debugColumns","getLeftLeafColumns")),e.getRightLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.right],(e,t)=>(null!=t?t:[]).map(t=>e.find(e=>e.id===t)).filter(Boolean),a(e.options,"debugColumns","getRightLeafColumns")),e.getCenterLeafColumns=i(()=>[e.getAllLeafColumns(),e.getState().columnPinning.left,e.getState().columnPinning.right],(e,t,l)=>{let n=[...null!=t?t:[],...null!=l?l:[]];return e.filter(e=>!n.includes(e.id))},a(e.options,"debugColumns","getCenterLeafColumns"))}},{createColumn:(e,t)=>{e._getFacetedRowModel=t.options.getFacetedRowModel&&t.options.getFacetedRowModel(t,e.id),e.getFacetedRowModel=()=>e._getFacetedRowModel?e._getFacetedRowModel():t.getPreFilteredRowModel(),e._getFacetedUniqueValues=t.options.getFacetedUniqueValues&&t.options.getFacetedUniqueValues(t,e.id),e.getFacetedUniqueValues=()=>e._getFacetedUniqueValues?e._getFacetedUniqueValues():new Map,e._getFacetedMinMaxValues=t.options.getFacetedMinMaxValues&&t.options.getFacetedMinMaxValues(t,e.id),e.getFacetedMinMaxValues=()=>{if(e._getFacetedMinMaxValues)return e._getFacetedMinMaxValues()}}},{getDefaultColumnDef:()=>({filterFn:"auto"}),getInitialState:e=>({columnFilters:[],...e}),getDefaultOptions:e=>({onColumnFiltersChange:o("columnFilters",e),filterFromLeafRows:!1,maxLeafRowFilterDepth:100}),createColumn:(e,t)=>{e.getAutoFilterFn=()=>{let l=t.getCoreRowModel().flatRows[0],n=null==l?void 0:l.getValue(e.id);return"string"==typeof n?S.includesString:"number"==typeof n?S.inNumberRange:"boolean"==typeof n||null!==n&&"object"==typeof n?S.equals:Array.isArray(n)?S.arrIncludes:S.weakEquals},e.getFilterFn=()=>{var l,n;return r(e.columnDef.filterFn)?e.columnDef.filterFn:"auto"===e.columnDef.filterFn?e.getAutoFilterFn():null!=(l=null==(n=t.options.filterFns)?void 0:n[e.columnDef.filterFn])?l:S[e.columnDef.filterFn]},e.getCanFilter=()=>{var l,n,o;return(null==(l=e.columnDef.enableColumnFilter)||l)&&(null==(n=t.options.enableColumnFilters)||n)&&(null==(o=t.options.enableFilters)||o)&&!!e.accessorFn},e.getIsFiltered=()=>e.getFilterIndex()>-1,e.getFilterValue=()=>{var l;return null==(l=t.getState().columnFilters)||null==(l=l.find(t=>t.id===e.id))?void 0:l.value},e.getFilterIndex=()=>{var l,n;return null!=(l=null==(n=t.getState().columnFilters)?void 0:n.findIndex(t=>t.id===e.id))?l:-1},e.setFilterValue=l=>{t.setColumnFilters(t=>{var o,r;let i=e.getFilterFn(),a=null==t?void 0:t.find(t=>t.id===e.id),u=n(l,a?a.value:void 0);if(y(i,u,e))return null!=(o=null==t?void 0:t.filter(t=>t.id!==e.id))?o:[];let s={id:e.id,value:u};return a?null!=(r=null==t?void 0:t.map(t=>t.id===e.id?s:t))?r:[]:null!=t&&t.length?[...t,s]:[s]})}},createRow:(e,t)=>{e.columnFilters={},e.columnFiltersMeta={}},createTable:e=>{e.setColumnFilters=t=>{let l=e.getAllLeafColumns();null==e.options.onColumnFiltersChange||e.options.onColumnFiltersChange(e=>{var o;return null==(o=n(t,e))?void 0:o.filter(e=>{let t=l.find(t=>t.id===e.id);return!(t&&y(t.getFilterFn(),e.value,t))&&!0})})},e.resetColumnFilters=t=>{var l,n;e.setColumnFilters(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.columnFilters)?l:[])},e.getPreFilteredRowModel=()=>e.getCoreRowModel(),e.getFilteredRowModel=()=>(!e._getFilteredRowModel&&e.options.getFilteredRowModel&&(e._getFilteredRowModel=e.options.getFilteredRowModel(e)),e.options.manualFiltering||!e._getFilteredRowModel)?e.getPreFilteredRowModel():e._getFilteredRowModel()}},{createTable:e=>{e._getGlobalFacetedRowModel=e.options.getFacetedRowModel&&e.options.getFacetedRowModel(e,"__global__"),e.getGlobalFacetedRowModel=()=>e.options.manualFiltering||!e._getGlobalFacetedRowModel?e.getPreFilteredRowModel():e._getGlobalFacetedRowModel(),e._getGlobalFacetedUniqueValues=e.options.getFacetedUniqueValues&&e.options.getFacetedUniqueValues(e,"__global__"),e.getGlobalFacetedUniqueValues=()=>e._getGlobalFacetedUniqueValues?e._getGlobalFacetedUniqueValues():new Map,e._getGlobalFacetedMinMaxValues=e.options.getFacetedMinMaxValues&&e.options.getFacetedMinMaxValues(e,"__global__"),e.getGlobalFacetedMinMaxValues=()=>{if(e._getGlobalFacetedMinMaxValues)return e._getGlobalFacetedMinMaxValues()}}},{getInitialState:e=>({globalFilter:void 0,...e}),getDefaultOptions:e=>({onGlobalFilterChange:o("globalFilter",e),globalFilterFn:"auto",getColumnCanGlobalFilter:t=>{var l;let n=null==(l=e.getCoreRowModel().flatRows[0])||null==(l=l._getAllCellsByColumnId()[t.id])?void 0:l.getValue();return"string"==typeof n||"number"==typeof n}}),createColumn:(e,t)=>{e.getCanGlobalFilter=()=>{var l,n,o,r;return(null==(l=e.columnDef.enableGlobalFilter)||l)&&(null==(n=t.options.enableGlobalFilter)||n)&&(null==(o=t.options.enableFilters)||o)&&(null==(r=null==t.options.getColumnCanGlobalFilter?void 0:t.options.getColumnCanGlobalFilter(e))||r)&&!!e.accessorFn}},createTable:e=>{e.getGlobalAutoFilterFn=()=>S.includesString,e.getGlobalFilterFn=()=>{var t,l;let{globalFilterFn:n}=e.options;return r(n)?n:"auto"===n?e.getGlobalAutoFilterFn():null!=(t=null==(l=e.options.filterFns)?void 0:l[n])?t:S[n]},e.setGlobalFilter=t=>{null==e.options.onGlobalFilterChange||e.options.onGlobalFilterChange(t)},e.resetGlobalFilter=t=>{e.setGlobalFilter(t?void 0:e.initialState.globalFilter)}}},{getInitialState:e=>({sorting:[],...e}),getDefaultColumnDef:()=>({sortingFn:"auto",sortUndefined:1}),getDefaultOptions:e=>({onSortingChange:o("sorting",e),isMultiSortEvent:e=>e.shiftKey}),createColumn:(e,t)=>{e.getAutoSortingFn=()=>{let l=t.getFilteredRowModel().flatRows.slice(10),n=!1;for(let t of l){let l=null==t?void 0:t.getValue(e.id);if("[object Date]"===Object.prototype.toString.call(l))return T.datetime;if("string"==typeof l&&(n=!0,l.split(O).length>1))return T.alphanumeric}return n?T.text:T.basic},e.getAutoSortDir=()=>{let l=t.getFilteredRowModel().flatRows[0];return"string"==typeof(null==l?void 0:l.getValue(e.id))?"asc":"desc"},e.getSortingFn=()=>{var l,n;if(!e)throw Error();return r(e.columnDef.sortingFn)?e.columnDef.sortingFn:"auto"===e.columnDef.sortingFn?e.getAutoSortingFn():null!=(l=null==(n=t.options.sortingFns)?void 0:n[e.columnDef.sortingFn])?l:T[e.columnDef.sortingFn]},e.toggleSorting=(l,n)=>{let o=e.getNextSortingOrder(),r=null!=l;t.setSorting(i=>{let a,u=null==i?void 0:i.find(t=>t.id===e.id),s=null==i?void 0:i.findIndex(t=>t.id===e.id),d=[],g=r?l:"desc"===o;if("toggle"!=(a=null!=i&&i.length&&e.getCanMultiSort()&&n?u?"toggle":"add":null!=i&&i.length&&s!==i.length-1?"replace":u?"toggle":"replace")||r||o||(a="remove"),"add"===a){var c;(d=[...i,{id:e.id,desc:g}]).splice(0,d.length-(null!=(c=t.options.maxMultiSortColCount)?c:Number.MAX_SAFE_INTEGER))}else d="toggle"===a?i.map(t=>t.id===e.id?{...t,desc:g}:t):"remove"===a?i.filter(t=>t.id!==e.id):[{id:e.id,desc:g}];return d})},e.getFirstSortDir=()=>{var l,n;return(null!=(l=null!=(n=e.columnDef.sortDescFirst)?n:t.options.sortDescFirst)?l:"desc"===e.getAutoSortDir())?"desc":"asc"},e.getNextSortingOrder=l=>{var n,o;let r=e.getFirstSortDir(),i=e.getIsSorted();return i?(i===r||null!=(n=t.options.enableSortingRemoval)&&!n||!!l&&null!=(o=t.options.enableMultiRemove)&&!o)&&("desc"===i?"asc":"desc"):r},e.getCanSort=()=>{var l,n;return(null==(l=e.columnDef.enableSorting)||l)&&(null==(n=t.options.enableSorting)||n)&&!!e.accessorFn},e.getCanMultiSort=()=>{var l,n;return null!=(l=null!=(n=e.columnDef.enableMultiSort)?n:t.options.enableMultiSort)?l:!!e.accessorFn},e.getIsSorted=()=>{var l;let n=null==(l=t.getState().sorting)?void 0:l.find(t=>t.id===e.id);return!!n&&(n.desc?"desc":"asc")},e.getSortIndex=()=>{var l,n;return null!=(l=null==(n=t.getState().sorting)?void 0:n.findIndex(t=>t.id===e.id))?l:-1},e.clearSorting=()=>{t.setSorting(t=>null!=t&&t.length?t.filter(t=>t.id!==e.id):[])},e.getToggleSortingHandler=()=>{let l=e.getCanSort();return n=>{l&&(null==n.persist||n.persist(),null==e.toggleSorting||e.toggleSorting(void 0,!!e.getCanMultiSort()&&(null==t.options.isMultiSortEvent?void 0:t.options.isMultiSortEvent(n))))}}},createTable:e=>{e.setSorting=t=>null==e.options.onSortingChange?void 0:e.options.onSortingChange(t),e.resetSorting=t=>{var l,n;e.setSorting(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.sorting)?l:[])},e.getPreSortedRowModel=()=>e.getGroupedRowModel(),e.getSortedRowModel=()=>(!e._getSortedRowModel&&e.options.getSortedRowModel&&(e._getSortedRowModel=e.options.getSortedRowModel(e)),e.options.manualSorting||!e._getSortedRowModel)?e.getPreSortedRowModel():e._getSortedRowModel()}},{getDefaultColumnDef:()=>({aggregatedCell:e=>{var t,l;return null!=(t=null==(l=e.getValue())||null==l.toString?void 0:l.toString())?t:null},aggregationFn:"auto"}),getInitialState:e=>({grouping:[],...e}),getDefaultOptions:e=>({onGroupingChange:o("grouping",e),groupedColumnMode:"reorder"}),createColumn:(e,t)=>{e.toggleGrouping=()=>{t.setGrouping(t=>null!=t&&t.includes(e.id)?t.filter(t=>t!==e.id):[...null!=t?t:[],e.id])},e.getCanGroup=()=>{var l,n;return(null==(l=e.columnDef.enableGrouping)||l)&&(null==(n=t.options.enableGrouping)||n)&&(!!e.accessorFn||!!e.columnDef.getGroupingValue)},e.getIsGrouped=()=>{var l;return null==(l=t.getState().grouping)?void 0:l.includes(e.id)},e.getGroupedIndex=()=>{var l;return null==(l=t.getState().grouping)?void 0:l.indexOf(e.id)},e.getToggleGroupingHandler=()=>{let t=e.getCanGroup();return()=>{t&&e.toggleGrouping()}},e.getAutoAggregationFn=()=>{let l=t.getCoreRowModel().flatRows[0],n=null==l?void 0:l.getValue(e.id);return"number"==typeof n?x.sum:"[object Date]"===Object.prototype.toString.call(n)?x.extent:void 0},e.getAggregationFn=()=>{var l,n;if(!e)throw Error();return r(e.columnDef.aggregationFn)?e.columnDef.aggregationFn:"auto"===e.columnDef.aggregationFn?e.getAutoAggregationFn():null!=(l=null==(n=t.options.aggregationFns)?void 0:n[e.columnDef.aggregationFn])?l:x[e.columnDef.aggregationFn]}},createTable:e=>{e.setGrouping=t=>null==e.options.onGroupingChange?void 0:e.options.onGroupingChange(t),e.resetGrouping=t=>{var l,n;e.setGrouping(t?[]:null!=(l=null==(n=e.initialState)?void 0:n.grouping)?l:[])},e.getPreGroupedRowModel=()=>e.getFilteredRowModel(),e.getGroupedRowModel=()=>(!e._getGroupedRowModel&&e.options.getGroupedRowModel&&(e._getGroupedRowModel=e.options.getGroupedRowModel(e)),e.options.manualGrouping||!e._getGroupedRowModel)?e.getPreGroupedRowModel():e._getGroupedRowModel()},createRow:(e,t)=>{e.getIsGrouped=()=>!!e.groupingColumnId,e.getGroupingValue=l=>{if(e._groupingValuesCache.hasOwnProperty(l))return e._groupingValuesCache[l];let n=t.getColumn(l);return null!=n&&n.columnDef.getGroupingValue?(e._groupingValuesCache[l]=n.columnDef.getGroupingValue(e.original),e._groupingValuesCache[l]):e.getValue(l)},e._groupingValuesCache={}},createCell:(e,t,l,n)=>{e.getIsGrouped=()=>t.getIsGrouped()&&t.id===l.groupingColumnId,e.getIsPlaceholder=()=>!e.getIsGrouped()&&t.getIsGrouped(),e.getIsAggregated=()=>{var t;return!e.getIsGrouped()&&!e.getIsPlaceholder()&&!!(null!=(t=l.subRows)&&t.length)}}},{getInitialState:e=>({expanded:{},...e}),getDefaultOptions:e=>({onExpandedChange:o("expanded",e),paginateExpandedRows:!0}),createTable:e=>{let t=!1,l=!1;e._autoResetExpanded=()=>{var n,o;if(!t)return void e._queue(()=>{t=!0});if(null!=(n=null!=(o=e.options.autoResetAll)?o:e.options.autoResetExpanded)?n:!e.options.manualExpanding){if(l)return;l=!0,e._queue(()=>{e.resetExpanded(),l=!1})}},e.setExpanded=t=>null==e.options.onExpandedChange?void 0:e.options.onExpandedChange(t),e.toggleAllRowsExpanded=t=>{(null!=t?t:!e.getIsAllRowsExpanded())?e.setExpanded(!0):e.setExpanded({})},e.resetExpanded=t=>{var l,n;e.setExpanded(t?{}:null!=(l=null==(n=e.initialState)?void 0:n.expanded)?l:{})},e.getCanSomeRowsExpand=()=>e.getPrePaginationRowModel().flatRows.some(e=>e.getCanExpand()),e.getToggleAllRowsExpandedHandler=()=>t=>{null==t.persist||t.persist(),e.toggleAllRowsExpanded()},e.getIsSomeRowsExpanded=()=>{let t=e.getState().expanded;return!0===t||Object.values(t).some(Boolean)},e.getIsAllRowsExpanded=()=>{let t=e.getState().expanded;return"boolean"==typeof t?!0===t:!(!Object.keys(t).length||e.getRowModel().flatRows.some(e=>!e.getIsExpanded()))},e.getExpandedDepth=()=>{let t=0;return(!0===e.getState().expanded?Object.keys(e.getRowModel().rowsById):Object.keys(e.getState().expanded)).forEach(e=>{let l=e.split(".");t=Math.max(t,l.length)}),t},e.getPreExpandedRowModel=()=>e.getSortedRowModel(),e.getExpandedRowModel=()=>(!e._getExpandedRowModel&&e.options.getExpandedRowModel&&(e._getExpandedRowModel=e.options.getExpandedRowModel(e)),e.options.manualExpanding||!e._getExpandedRowModel)?e.getPreExpandedRowModel():e._getExpandedRowModel()},createRow:(e,t)=>{e.toggleExpanded=l=>{t.setExpanded(n=>{var o;let r=!0===n||!!(null!=n&&n[e.id]),i={};if(!0===n?Object.keys(t.getRowModel().rowsById).forEach(e=>{i[e]=!0}):i=n,l=null!=(o=l)?o:!r,!r&&l)return{...i,[e.id]:!0};if(r&&!l){let{[e.id]:t,...l}=i;return l}return n})},e.getIsExpanded=()=>{var l;let n=t.getState().expanded;return!!(null!=(l=null==t.options.getIsRowExpanded?void 0:t.options.getIsRowExpanded(e))?l:!0===n||(null==n?void 0:n[e.id]))},e.getCanExpand=()=>{var l,n,o;return null!=(l=null==t.options.getRowCanExpand?void 0:t.options.getRowCanExpand(e))?l:(null==(n=t.options.enableExpanding)||n)&&!!(null!=(o=e.subRows)&&o.length)},e.getIsAllParentsExpanded=()=>{let l=!0,n=e;for(;l&&n.parentId;)l=(n=t.getRow(n.parentId,!0)).getIsExpanded();return l},e.getToggleExpandedHandler=()=>{let t=e.getCanExpand();return()=>{t&&e.toggleExpanded()}}}},{getInitialState:e=>({...e,pagination:{...E(),...null==e?void 0:e.pagination}}),getDefaultOptions:e=>({onPaginationChange:o("pagination",e)}),createTable:e=>{let t=!1,l=!1;e._autoResetPageIndex=()=>{var n,o;if(!t)return void e._queue(()=>{t=!0});if(null!=(n=null!=(o=e.options.autoResetAll)?o:e.options.autoResetPageIndex)?n:!e.options.manualPagination){if(l)return;l=!0,e._queue(()=>{e.resetPageIndex(),l=!1})}},e.setPagination=t=>null==e.options.onPaginationChange?void 0:e.options.onPaginationChange(e=>n(t,e)),e.resetPagination=t=>{var l;e.setPagination(t?E():null!=(l=e.initialState.pagination)?l:E())},e.setPageIndex=t=>{e.setPagination(l=>{let o=n(t,l.pageIndex);return o=Math.max(0,Math.min(o,void 0===e.options.pageCount||-1===e.options.pageCount?Number.MAX_SAFE_INTEGER:e.options.pageCount-1)),{...l,pageIndex:o}})},e.resetPageIndex=t=>{var l,n;e.setPageIndex(t?0:null!=(l=null==(n=e.initialState)||null==(n=n.pagination)?void 0:n.pageIndex)?l:0)},e.resetPageSize=t=>{var l,n;e.setPageSize(t?10:null!=(l=null==(n=e.initialState)||null==(n=n.pagination)?void 0:n.pageSize)?l:10)},e.setPageSize=t=>{e.setPagination(e=>{let l=Math.max(1,n(t,e.pageSize)),o=Math.floor(e.pageSize*e.pageIndex/l);return{...e,pageIndex:o,pageSize:l}})},e.setPageCount=t=>e.setPagination(l=>{var o;let r=n(t,null!=(o=e.options.pageCount)?o:-1);return"number"==typeof r&&(r=Math.max(-1,r)),{...l,pageCount:r}}),e.getPageOptions=i(()=>[e.getPageCount()],e=>{let t=[];return e&&e>0&&(t=[...Array(e)].fill(null).map((e,t)=>t)),t},a(e.options,"debugTable","getPageOptions")),e.getCanPreviousPage=()=>e.getState().pagination.pageIndex>0,e.getCanNextPage=()=>{let{pageIndex:t}=e.getState().pagination,l=e.getPageCount();return -1===l||0!==l&&te.setPageIndex(e=>e-1),e.nextPage=()=>e.setPageIndex(e=>e+1),e.firstPage=()=>e.setPageIndex(0),e.lastPage=()=>e.setPageIndex(e.getPageCount()-1),e.getPrePaginationRowModel=()=>e.getExpandedRowModel(),e.getPaginationRowModel=()=>(!e._getPaginationRowModel&&e.options.getPaginationRowModel&&(e._getPaginationRowModel=e.options.getPaginationRowModel(e)),e.options.manualPagination||!e._getPaginationRowModel)?e.getPrePaginationRowModel():e._getPaginationRowModel(),e.getPageCount=()=>{var t;return null!=(t=e.options.pageCount)?t:Math.ceil(e.getRowCount()/e.getState().pagination.pageSize)},e.getRowCount=()=>{var t;return null!=(t=e.options.rowCount)?t:e.getPrePaginationRowModel().rows.length}}},{getInitialState:e=>({rowPinning:_(),...e}),getDefaultOptions:e=>({onRowPinningChange:o("rowPinning",e)}),createRow:(e,t)=>{e.pin=(l,n,o)=>{let r=n?e.getLeafRows().map(e=>{let{id:t}=e;return t}):[],i=new Set([...o?e.getParentRows().map(e=>{let{id:t}=e;return t}):[],e.id,...r]);t.setRowPinning(e=>{var t,n,o,r,a,u;return"bottom"===l?{top:(null!=(o=null==e?void 0:e.top)?o:[]).filter(e=>!(null!=i&&i.has(e))),bottom:[...(null!=(r=null==e?void 0:e.bottom)?r:[]).filter(e=>!(null!=i&&i.has(e))),...Array.from(i)]}:"top"===l?{top:[...(null!=(a=null==e?void 0:e.top)?a:[]).filter(e=>!(null!=i&&i.has(e))),...Array.from(i)],bottom:(null!=(u=null==e?void 0:e.bottom)?u:[]).filter(e=>!(null!=i&&i.has(e)))}:{top:(null!=(t=null==e?void 0:e.top)?t:[]).filter(e=>!(null!=i&&i.has(e))),bottom:(null!=(n=null==e?void 0:e.bottom)?n:[]).filter(e=>!(null!=i&&i.has(e)))}})},e.getCanPin=()=>{var l;let{enableRowPinning:n,enablePinning:o}=t.options;return"function"==typeof n?n(e):null==(l=null!=n?n:o)||l},e.getIsPinned=()=>{let l=[e.id],{top:n,bottom:o}=t.getState().rowPinning,r=l.some(e=>null==n?void 0:n.includes(e)),i=l.some(e=>null==o?void 0:o.includes(e));return r?"top":!!i&&"bottom"},e.getPinnedIndex=()=>{var l,n;let o=e.getIsPinned();if(!o)return -1;let r=null==(l="top"===o?t.getTopRows():t.getBottomRows())?void 0:l.map(e=>{let{id:t}=e;return t});return null!=(n=null==r?void 0:r.indexOf(e.id))?n:-1}},createTable:e=>{e.setRowPinning=t=>null==e.options.onRowPinningChange?void 0:e.options.onRowPinningChange(t),e.resetRowPinning=t=>{var l,n;return e.setRowPinning(t?_():null!=(l=null==(n=e.initialState)?void 0:n.rowPinning)?l:_())},e.getIsSomeRowsPinned=t=>{var l,n,o;let r=e.getState().rowPinning;return t?!!(null==(l=r[t])?void 0:l.length):!!((null==(n=r.top)?void 0:n.length)||(null==(o=r.bottom)?void 0:o.length))},e._getPinnedRows=(t,l,n)=>{var o;return(null==(o=e.options.keepPinnedRows)||o?(null!=l?l:[]).map(t=>{let l=e.getRow(t,!0);return l.getIsAllParentsExpanded()?l:null}):(null!=l?l:[]).map(e=>t.find(t=>t.id===e))).filter(Boolean).map(e=>({...e,position:n}))},e.getTopRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.top],(t,l)=>e._getPinnedRows(t,l,"top"),a(e.options,"debugRows","getTopRows")),e.getBottomRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.bottom],(t,l)=>e._getPinnedRows(t,l,"bottom"),a(e.options,"debugRows","getBottomRows")),e.getCenterRows=i(()=>[e.getRowModel().rows,e.getState().rowPinning.top,e.getState().rowPinning.bottom],(e,t,l)=>{let n=new Set([...null!=t?t:[],...null!=l?l:[]]);return e.filter(e=>!n.has(e.id))},a(e.options,"debugRows","getCenterRows"))}},{getInitialState:e=>({rowSelection:{},...e}),getDefaultOptions:e=>({onRowSelectionChange:o("rowSelection",e),enableRowSelection:!0,enableMultiRowSelection:!0,enableSubRowSelection:!0}),createTable:e=>{e.setRowSelection=t=>null==e.options.onRowSelectionChange?void 0:e.options.onRowSelectionChange(t),e.resetRowSelection=t=>{var l;return e.setRowSelection(t?{}:null!=(l=e.initialState.rowSelection)?l:{})},e.toggleAllRowsSelected=t=>{e.setRowSelection(l=>{t=void 0!==t?t:!e.getIsAllRowsSelected();let n={...l},o=e.getPreGroupedRowModel().flatRows;return t?o.forEach(e=>{e.getCanSelect()&&(n[e.id]=!0)}):o.forEach(e=>{delete n[e.id]}),n})},e.toggleAllPageRowsSelected=t=>e.setRowSelection(l=>{let n=void 0!==t?t:!e.getIsAllPageRowsSelected(),o={...l};return e.getRowModel().rows.forEach(t=>{k(o,t.id,n,!0,e)}),o}),e.getPreSelectedRowModel=()=>e.getCoreRowModel(),e.getSelectedRowModel=i(()=>[e.getState().rowSelection,e.getCoreRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getSelectedRowModel")),e.getFilteredSelectedRowModel=i(()=>[e.getState().rowSelection,e.getFilteredRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getFilteredSelectedRowModel")),e.getGroupedSelectedRowModel=i(()=>[e.getState().rowSelection,e.getSortedRowModel()],(t,l)=>Object.keys(t).length?L(e,l):{rows:[],flatRows:[],rowsById:{}},a(e.options,"debugTable","getGroupedSelectedRowModel")),e.getIsAllRowsSelected=()=>{let t=e.getFilteredRowModel().flatRows,{rowSelection:l}=e.getState(),n=!!(t.length&&Object.keys(l).length);return n&&t.some(e=>e.getCanSelect()&&!l[e.id])&&(n=!1),n},e.getIsAllPageRowsSelected=()=>{let t=e.getPaginationRowModel().flatRows.filter(e=>e.getCanSelect()),{rowSelection:l}=e.getState(),n=!!t.length;return n&&t.some(e=>!l[e.id])&&(n=!1),n},e.getIsSomeRowsSelected=()=>{var t;let l=Object.keys(null!=(t=e.getState().rowSelection)?t:{}).length;return l>0&&l{let t=e.getPaginationRowModel().flatRows;return!e.getIsAllPageRowsSelected()&&t.filter(e=>e.getCanSelect()).some(e=>e.getIsSelected()||e.getIsSomeSelected())},e.getToggleAllRowsSelectedHandler=()=>t=>{e.toggleAllRowsSelected(t.target.checked)},e.getToggleAllPageRowsSelectedHandler=()=>t=>{e.toggleAllPageRowsSelected(t.target.checked)}},createRow:(e,t)=>{e.toggleSelected=(l,n)=>{let o=e.getIsSelected();t.setRowSelection(r=>{var i;if(l=void 0!==l?l:!o,e.getCanSelect()&&o===l)return r;let a={...r};return k(a,e.id,l,null==(i=null==n?void 0:n.selectChildren)||i,t),a})},e.getIsSelected=()=>{let{rowSelection:l}=t.getState();return G(e,l)},e.getIsSomeSelected=()=>{let{rowSelection:l}=t.getState();return"some"===D(e,l)},e.getIsAllSubRowsSelected=()=>{let{rowSelection:l}=t.getState();return"all"===D(e,l)},e.getCanSelect=()=>{var l;return"function"==typeof t.options.enableRowSelection?t.options.enableRowSelection(e):null==(l=t.options.enableRowSelection)||l},e.getCanSelectSubRows=()=>{var l;return"function"==typeof t.options.enableSubRowSelection?t.options.enableSubRowSelection(e):null==(l=t.options.enableSubRowSelection)||l},e.getCanMultiSelect=()=>{var l;return"function"==typeof t.options.enableMultiRowSelection?t.options.enableMultiRowSelection(e):null==(l=t.options.enableMultiRowSelection)||l},e.getToggleSelectedHandler=()=>{let t=e.getCanSelect();return l=>{var n;t&&e.toggleSelected(null==(n=l.target)?void 0:n.checked)}}}},{getDefaultColumnDef:()=>M,getInitialState:e=>({columnSizing:{},columnSizingInfo:P(),...e}),getDefaultOptions:e=>({columnResizeMode:"onEnd",columnResizeDirection:"ltr",onColumnSizingChange:o("columnSizing",e),onColumnSizingInfoChange:o("columnSizingInfo",e)}),createColumn:(e,t)=>{e.getSize=()=>{var l,n,o;let r=t.getState().columnSizing[e.id];return Math.min(Math.max(null!=(l=e.columnDef.minSize)?l:M.minSize,null!=(n=null!=r?r:e.columnDef.size)?n:M.size),null!=(o=e.columnDef.maxSize)?o:M.maxSize)},e.getStart=i(e=>[e,A(t,e),t.getState().columnSizing],(t,l)=>l.slice(0,e.getIndex(t)).reduce((e,t)=>e+t.getSize(),0),a(t.options,"debugColumns","getStart")),e.getAfter=i(e=>[e,A(t,e),t.getState().columnSizing],(t,l)=>l.slice(e.getIndex(t)+1).reduce((e,t)=>e+t.getSize(),0),a(t.options,"debugColumns","getAfter")),e.resetSize=()=>{t.setColumnSizing(t=>{let{[e.id]:l,...n}=t;return n})},e.getCanResize=()=>{var l,n;return(null==(l=e.columnDef.enableResizing)||l)&&(null==(n=t.options.enableColumnResizing)||n)},e.getIsResizing=()=>t.getState().columnSizingInfo.isResizingColumn===e.id},createHeader:(e,t)=>{e.getSize=()=>{let t=0,l=e=>{if(e.subHeaders.length)e.subHeaders.forEach(l);else{var n;t+=null!=(n=e.column.getSize())?n:0}};return l(e),t},e.getStart=()=>{if(e.index>0){let t=e.headerGroup.headers[e.index-1];return t.getStart()+t.getSize()}return 0},e.getResizeHandler=l=>{let n=t.getColumn(e.column.id),o=null==n?void 0:n.getCanResize();return r=>{if(!n||!o||(null==r.persist||r.persist(),V(r)&&r.touches&&r.touches.length>1))return;let i=e.getSize(),a=e?e.getLeafHeaders().map(e=>[e.column.id,e.column.getSize()]):[[n.id,n.getSize()]],u=V(r)?Math.round(r.touches[0].clientX):r.clientX,s={},d=(e,l)=>{"number"==typeof l&&(t.setColumnSizingInfo(e=>{var n,o;let r="rtl"===t.options.columnResizeDirection?-1:1,i=(l-(null!=(n=null==e?void 0:e.startOffset)?n:0))*r,a=Math.max(i/(null!=(o=null==e?void 0:e.startSize)?o:0),-.999999);return e.columnSizingStart.forEach(e=>{let[t,l]=e;s[t]=Math.round(100*Math.max(l+l*a,0))/100}),{...e,deltaOffset:i,deltaPercentage:a}}),("onChange"===t.options.columnResizeMode||"end"===e)&&t.setColumnSizing(e=>({...e,...s})))},g=e=>d("move",e),c=e=>{d("end",e),t.setColumnSizingInfo(e=>({...e,isResizingColumn:!1,startOffset:null,startSize:null,deltaOffset:null,deltaPercentage:null,columnSizingStart:[]}))},p=l||("undefined"!=typeof document?document:null),f={moveHandler:e=>g(e.clientX),upHandler:e=>{null==p||p.removeEventListener("mousemove",f.moveHandler),null==p||p.removeEventListener("mouseup",f.upHandler),c(e.clientX)}},m={moveHandler:e=>(e.cancelable&&(e.preventDefault(),e.stopPropagation()),g(e.touches[0].clientX),!1),upHandler:e=>{var t;null==p||p.removeEventListener("touchmove",m.moveHandler),null==p||p.removeEventListener("touchend",m.upHandler),e.cancelable&&(e.preventDefault(),e.stopPropagation()),c(null==(t=e.touches[0])?void 0:t.clientX)}},v=!!function(){if("boolean"==typeof I)return I;let e=!1;try{let t=()=>{};window.addEventListener("test",t,{get passive(){return e=!0,!1}}),window.removeEventListener("test",t)}catch(t){e=!1}return I=e}()&&{passive:!1};V(r)?(null==p||p.addEventListener("touchmove",m.moveHandler,v),null==p||p.addEventListener("touchend",m.upHandler,v)):(null==p||p.addEventListener("mousemove",f.moveHandler,v),null==p||p.addEventListener("mouseup",f.upHandler,v)),t.setColumnSizingInfo(e=>({...e,startOffset:u,startSize:i,deltaOffset:0,deltaPercentage:0,columnSizingStart:a,isResizingColumn:n.id}))}}},createTable:e=>{e.setColumnSizing=t=>null==e.options.onColumnSizingChange?void 0:e.options.onColumnSizingChange(t),e.setColumnSizingInfo=t=>null==e.options.onColumnSizingInfoChange?void 0:e.options.onColumnSizingInfoChange(t),e.resetColumnSizing=t=>{var l;e.setColumnSizing(t?{}:null!=(l=e.initialState.columnSizing)?l:{})},e.resetHeaderSizeInfo=t=>{var l;e.setColumnSizingInfo(t?P():null!=(l=e.initialState.columnSizingInfo)?l:P())},e.getTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getLeftTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getLeftHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getCenterTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getCenterHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0},e.getRightTotalSize=()=>{var t,l;return null!=(t=null==(l=e.getRightHeaderGroups()[0])?void 0:l.headers.reduce((e,t)=>e+t.getSize(),0))?t:0}}}];function q(e){var t,l;let o=[...B,...null!=(t=e._features)?t:[]],r={_features:o},u=r._features.reduce((e,t)=>Object.assign(e,null==t.getDefaultOptions?void 0:t.getDefaultOptions(r)),{}),s=e=>r.options.mergeOptions?r.options.mergeOptions(u,e):{...u,...e},d={...null!=(l=e.initialState)?l:{}};r._features.forEach(e=>{var t;d=null!=(t=null==e.getInitialState?void 0:e.getInitialState(d))?t:d});let g=[],c=!1,p={_features:o,options:{...u,...e},initialState:d,_queue:e=>{g.push(e),c||(c=!0,Promise.resolve().then(()=>{for(;g.length;)g.shift()();c=!1}).catch(e=>setTimeout(()=>{throw e})))},reset:()=>{r.setState(r.initialState)},setOptions:e=>{let t=n(e,r.options);r.options=s(t)},getState:()=>r.options.state,setState:e=>{null==r.options.onStateChange||r.options.onStateChange(e)},_getRowId:(e,t,l)=>{var n;return null!=(n=null==r.options.getRowId?void 0:r.options.getRowId(e,t,l))?n:`${l?[l.id,t].join("."):t}`},getCoreRowModel:()=>(r._getCoreRowModel||(r._getCoreRowModel=r.options.getCoreRowModel(r)),r._getCoreRowModel()),getRowModel:()=>r.getPaginationRowModel(),getRow:(e,t)=>{let l=(t?r.getPrePaginationRowModel():r.getRowModel()).rowsById[e];if(!l&&!(l=r.getCoreRowModel().rowsById[e]))throw Error();return l},_getDefaultColumnDef:i(()=>[r.options.defaultColumn],e=>{var t;return e=null!=(t=e)?t:{},{header:e=>{let t=e.header.column.columnDef;return t.accessorKey?t.accessorKey:t.accessorFn?t.id:null},cell:e=>{var t,l;return null!=(t=null==(l=e.renderValue())||null==l.toString?void 0:l.toString())?t:null},...r._features.reduce((e,t)=>Object.assign(e,null==t.getDefaultColumnDef?void 0:t.getDefaultColumnDef()),{}),...e}},a(e,"debugColumns","_getDefaultColumnDef")),_getColumnDefs:()=>r.options.columns,getAllColumns:i(()=>[r._getColumnDefs()],e=>{let t=function(e,l,n){return void 0===n&&(n=0),e.map(e=>{let o=function(e,t,l,n){var o,r;let u,s={...e._getDefaultColumnDef(),...t},d=s.accessorKey,g=null!=(o=null!=(r=s.id)?r:d?"function"==typeof String.prototype.replaceAll?d.replaceAll(".","_"):d.replace(/\./g,"_"):void 0)?o:"string"==typeof s.header?s.header:void 0;if(s.accessorFn?u=s.accessorFn:d&&(u=d.includes(".")?e=>{let t=e;for(let e of d.split(".")){var l;t=null==(l=t)?void 0:l[e]}return t}:e=>e[s.accessorKey]),!g)throw Error();let c={id:`${String(g)}`,accessorFn:u,parent:n,depth:l,columnDef:s,columns:[],getFlatColumns:i(()=>[!0],()=>{var e;return[c,...null==(e=c.columns)?void 0:e.flatMap(e=>e.getFlatColumns())]},a(e.options,"debugColumns","column.getFlatColumns")),getLeafColumns:i(()=>[e._getOrderColumnsFn()],e=>{var t;return null!=(t=c.columns)&&t.length?e(c.columns.flatMap(e=>e.getLeafColumns())):[c]},a(e.options,"debugColumns","column.getLeafColumns"))};for(let t of e._features)null==t.createColumn||t.createColumn(c,e);return c}(r,e,n,l);return o.columns=e.columns?t(e.columns,o,n+1):[],o})};return t(e)},a(e,"debugColumns","getAllColumns")),getAllFlatColumns:i(()=>[r.getAllColumns()],e=>e.flatMap(e=>e.getFlatColumns()),a(e,"debugColumns","getAllFlatColumns")),_getAllFlatColumnsById:i(()=>[r.getAllFlatColumns()],e=>e.reduce((e,t)=>(e[t.id]=t,e),{}),a(e,"debugColumns","getAllFlatColumnsById")),getAllLeafColumns:i(()=>[r.getAllColumns(),r._getOrderColumnsFn()],(e,t)=>t(e.flatMap(e=>e.getLeafColumns())),a(e,"debugColumns","getAllLeafColumns")),getColumn:e=>r._getAllFlatColumnsById()[e]};Object.assign(r,p);for(let e=0;ei(()=>[e.options.data],t=>{let l={rows:[],flatRows:[],rowsById:{}},n=function(t,o,r){void 0===o&&(o=0);let i=[];for(let u=0;ue._autoResetPageIndex()))}},1492:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("arrow-up-down",[["path",{d:"m21 16-4 4-4-4",key:"f6ql7i"}],["path",{d:"M17 20V4",key:"1ejh1v"}],["path",{d:"m3 8 4-4 4 4",key:"11wl7u"}],["path",{d:"M7 4v16",key:"1glfcx"}]])},2146:(e,t,l)=>{function n(e){let{reason:t,children:l}=e;return l}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BailoutToCSR",{enumerable:!0,get:function(){return n}}),l(5262)},2355:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]])},3052:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},3904:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("refresh-cw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},4054:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var l in t)Object.defineProperty(e,l,{enumerable:!0,get:t[l]})}(t,{bindSnapshot:function(){return i},createAsyncLocalStorage:function(){return r},createSnapshot:function(){return a}});let l=Object.defineProperty(Error("Invariant: AsyncLocalStorage accessed in runtime where it is not available"),"__NEXT_ERROR_CODE",{value:"E504",enumerable:!1,configurable:!0});class n{disable(){throw l}getStore(){}run(){throw l}exit(){throw l}enterWith(){throw l}static bind(e){return e}}let o="undefined"!=typeof globalThis&&globalThis.AsyncLocalStorage;function r(){return o?new o:new n}function i(e){return o?o.bind(e):n.bind(e)}function a(){return o?o.snapshot():function(e,...t){return e(...t)}}},4186:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("clock",[["path",{d:"M12 6v6l4 2",key:"mmk7yg"}],["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]])},4357:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]])},5028:(e,t,l)=>{l.d(t,{default:()=>o.a});var n=l(6645),o=l.n(n)},5339:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("circle-alert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},5448:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]])},5744:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorage",{enumerable:!0,get:function(){return n.workAsyncStorageInstance}});let n=l(7828)},5868:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("dollar-sign",[["line",{x1:"12",x2:"12",y1:"2",y2:"22",key:"7eqyqh"}],["path",{d:"M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6",key:"1b0p4s"}]])},6268:(e,t,l)=>{l.d(t,{Kv:()=>r,N4:()=>i});var n=l(2115),o=l(1032);function r(e,t){var l,o,r;return e?"function"==typeof(o=l=e)&&(()=>{let e=Object.getPrototypeOf(o);return e.prototype&&e.prototype.isReactComponent})()||"function"==typeof l||"object"==typeof(r=l)&&"symbol"==typeof r.$$typeof&&["react.memo","react.forward_ref"].includes(r.$$typeof.description)?n.createElement(e,t):e:null}function i(e){let t={state:{},onStateChange:()=>{},renderFallbackValue:null,...e},[l]=n.useState(()=>({current:(0,o.ZR)(t)})),[r,i]=n.useState(()=>l.current.initialState);return l.current.setOptions(t=>({...t,...e,state:{...r,...e.state},onStateChange:t=>{i(t),null==e.onStateChange||e.onStateChange(t)}})),l.current}},6561:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("timer",[["line",{x1:"10",x2:"14",y1:"2",y2:"2",key:"14vaq8"}],["line",{x1:"12",x2:"15",y1:"14",y2:"11",key:"17fdiu"}],["circle",{cx:"12",cy:"14",r:"8",key:"1e1u0o"}]])},6645:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let n=l(8229)._(l(7357));function o(e,t){var l;let o={};"function"==typeof e&&(o.loader=e);let r={...o,...t};return(0,n.default)({...r,modules:null==(l=r.loadableGenerated)?void 0:l.modules})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7357:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=l(5155),o=l(2115),r=l(2146);function i(e){return{default:e&&"default"in e?e.default:e}}l(255);let a={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},u=function(e){let t={...a,...e},l=(0,o.lazy)(()=>t.loader().then(i)),u=t.loading;function s(e){let i=u?(0,n.jsx)(u,{isLoading:!0,pastDelay:!0,error:null}):null,a=!t.ssr||!!t.loading,s=a?o.Suspense:o.Fragment,d=t.ssr?(0,n.jsxs)(n.Fragment,{children:[null,(0,n.jsx)(l,{...e})]}):(0,n.jsx)(r.BailoutToCSR,{reason:"next/dynamic",children:(0,n.jsx)(l,{...e})});return(0,n.jsx)(s,{...a?{fallback:i}:{},children:d})}return s.displayName="LoadableComponent",s}},7434:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]])},7740:(e,t,l)=>{l.d(t,{uB:()=>_});var n=/[\\\/_+.#"@\[\(\{&]/,o=/[\\\/_+.#"@\[\(\{&]/g,r=/[\s-]/,i=/[\s-]/g;function a(e){return e.toLowerCase().replace(i," ")}var u=l(5452),s=l(2115),d=l(3655),g=l(1285),c=l(6101),p='[cmdk-group=""]',f='[cmdk-group-items=""]',m='[cmdk-item=""]',v="".concat(m,':not([aria-disabled="true"])'),h="cmdk-item-select",C="data-value",b=(e,t,l)=>(function(e,t,l){return function e(t,l,a,u,s,d,g){if(d===l.length)return s===t.length?1:.99;var c=`${s},${d}`;if(void 0!==g[c])return g[c];for(var p,f,m,v,h=u.charAt(d),C=a.indexOf(h,s),b=0;C>=0;)(p=e(t,l,a,u,C+1,d+1,g))>b&&(C===s?p*=1:n.test(t.charAt(C-1))?(p*=.8,(m=t.slice(s,C-1).match(o))&&s>0&&(p*=Math.pow(.999,m.length))):r.test(t.charAt(C-1))?(p*=.9,(v=t.slice(s,C-1).match(i))&&s>0&&(p*=Math.pow(.999,v.length))):(p*=.17,s>0&&(p*=Math.pow(.999,C-s))),t.charAt(C)!==l.charAt(d)&&(p*=.9999)),(p<.1&&a.charAt(C-1)===u.charAt(d+1)||u.charAt(d+1)===u.charAt(d)&&a.charAt(C-1)!==u.charAt(d))&&.1*(f=e(t,l,a,u,C+1,d+2,g))>p&&(p=.1*f),p>b&&(b=p),C=a.indexOf(h,C+1);return g[c]=b,b}(e=l&&l.length>0?`${e+" "+l.join(" ")}`:e,t,a(e),a(t),0,0,{})})(e,t,l),w=s.createContext(void 0),S=()=>s.useContext(w),R=s.createContext(void 0),y=()=>s.useContext(R),x=s.createContext(void 0),F=s.forwardRef((e,t)=>{let l=G(()=>{var t,l;return{search:"",value:null!=(l=null!=(t=e.value)?t:e.defaultValue)?l:"",selectedItemId:void 0,filtered:{count:0,items:new Map,groups:new Set}}}),n=G(()=>new Set),o=G(()=>new Map),r=G(()=>new Map),i=G(()=>new Set),a=k(e),{label:u,children:c,value:S,onValueChange:y,filter:x,shouldFilter:F,loop:M,disablePointerSelection:P=!1,vimBindings:I=!0,...V}=e,A=(0,g.B)(),E=(0,g.B)(),_=(0,g.B)(),D=s.useRef(null),O=H();L(()=>{if(void 0!==S){let e=S.trim();l.current.value=e,T.emit()}},[S]),L(()=>{O(6,K)},[]);let T=s.useMemo(()=>({subscribe:e=>(i.current.add(e),()=>i.current.delete(e)),snapshot:()=>l.current,setState:(e,t,n)=>{var o,r,i,u;if(!Object.is(l.current[e],t)){if(l.current[e]=t,"search"===e)$(),N(),O(1,U);else if("value"===e){if(document.activeElement.hasAttribute("cmdk-input")||document.activeElement.hasAttribute("cmdk-root")){let e=document.getElementById(_);e?e.focus():null==(o=document.getElementById(A))||o.focus()}if(O(7,()=>{var e;l.current.selectedItemId=null==(e=X())?void 0:e.id,T.emit()}),n||O(5,K),(null==(r=a.current)?void 0:r.value)!==void 0){null==(u=(i=a.current).onValueChange)||u.call(i,null!=t?t:"");return}}T.emit()}},emit:()=>{i.current.forEach(e=>e())}}),[]),B=s.useMemo(()=>({value:(e,t,n)=>{var o;t!==(null==(o=r.current.get(e))?void 0:o.value)&&(r.current.set(e,{value:t,keywords:n}),l.current.filtered.items.set(e,q(t,n)),O(2,()=>{N(),T.emit()}))},item:(e,t)=>(n.current.add(e),t&&(o.current.has(t)?o.current.get(t).add(e):o.current.set(t,new Set([e]))),O(3,()=>{$(),N(),l.current.value||U(),T.emit()}),()=>{r.current.delete(e),n.current.delete(e),l.current.filtered.items.delete(e);let t=X();O(4,()=>{$(),(null==t?void 0:t.getAttribute("id"))===e&&U(),T.emit()})}),group:e=>(o.current.has(e)||o.current.set(e,new Set),()=>{r.current.delete(e),o.current.delete(e)}),filter:()=>a.current.shouldFilter,label:u||e["aria-label"],getDisablePointerSelection:()=>a.current.disablePointerSelection,listId:A,inputId:_,labelId:E,listInnerRef:D}),[]);function q(e,t){var n,o;let r=null!=(o=null==(n=a.current)?void 0:n.filter)?o:b;return e?r(e,l.current.search,t):0}function N(){if(!l.current.search||!1===a.current.shouldFilter)return;let e=l.current.filtered.items,t=[];l.current.filtered.groups.forEach(l=>{let n=o.current.get(l),r=0;n.forEach(t=>{r=Math.max(e.get(t),r)}),t.push([l,r])});let n=D.current;Z().sort((t,l)=>{var n,o;let r=t.getAttribute("id"),i=l.getAttribute("id");return(null!=(n=e.get(i))?n:0)-(null!=(o=e.get(r))?o:0)}).forEach(e=>{let t=e.closest(f);t?t.appendChild(e.parentElement===t?e:e.closest("".concat(f," > *"))):n.appendChild(e.parentElement===n?e:e.closest("".concat(f," > *")))}),t.sort((e,t)=>t[1]-e[1]).forEach(e=>{var t;let l=null==(t=D.current)?void 0:t.querySelector("".concat(p,"[").concat(C,'="').concat(encodeURIComponent(e[0]),'"]'));null==l||l.parentElement.appendChild(l)})}function U(){let e=Z().find(e=>"true"!==e.getAttribute("aria-disabled")),t=null==e?void 0:e.getAttribute(C);T.setState("value",t||void 0)}function $(){var e,t,i,u;if(!l.current.search||!1===a.current.shouldFilter){l.current.filtered.count=n.current.size;return}l.current.filtered.groups=new Set;let s=0;for(let o of n.current){let n=q(null!=(t=null==(e=r.current.get(o))?void 0:e.value)?t:"",null!=(u=null==(i=r.current.get(o))?void 0:i.keywords)?u:[]);l.current.filtered.items.set(o,n),n>0&&s++}for(let[e,t]of o.current)for(let n of t)if(l.current.filtered.items.get(n)>0){l.current.filtered.groups.add(e);break}l.current.filtered.count=s}function K(){var e,t,l;let n=X();n&&((null==(e=n.parentElement)?void 0:e.firstChild)===n&&(null==(l=null==(t=n.closest(p))?void 0:t.querySelector('[cmdk-group-heading=""]'))||l.scrollIntoView({block:"nearest"})),n.scrollIntoView({block:"nearest"}))}function X(){var e;return null==(e=D.current)?void 0:e.querySelector("".concat(m,'[aria-selected="true"]'))}function Z(){var e;return Array.from((null==(e=D.current)?void 0:e.querySelectorAll(v))||[])}function W(e){let t=Z()[e];t&&T.setState("value",t.getAttribute(C))}function J(e){var t;let l=X(),n=Z(),o=n.findIndex(e=>e===l),r=n[o+e];null!=(t=a.current)&&t.loop&&(r=o+e<0?n[n.length-1]:o+e===n.length?n[0]:n[o+e]),r&&T.setState("value",r.getAttribute(C))}function Q(e){let t=X(),l=null==t?void 0:t.closest(p),n;for(;l&&!n;)n=null==(l=e>0?function(e,t){let l=e.nextElementSibling;for(;l;){if(l.matches(t))return l;l=l.nextElementSibling}}(l,p):function(e,t){let l=e.previousElementSibling;for(;l;){if(l.matches(t))return l;l=l.previousElementSibling}}(l,p))?void 0:l.querySelector(v);n?T.setState("value",n.getAttribute(C)):J(e)}let Y=()=>W(Z().length-1),ee=e=>{e.preventDefault(),e.metaKey?Y():e.altKey?Q(1):J(1)},et=e=>{e.preventDefault(),e.metaKey?W(0):e.altKey?Q(-1):J(-1)};return s.createElement(d.sG.div,{ref:t,tabIndex:-1,...V,"cmdk-root":"",onKeyDown:e=>{var t;null==(t=V.onKeyDown)||t.call(V,e);let l=e.nativeEvent.isComposing||229===e.keyCode;if(!(e.defaultPrevented||l))switch(e.key){case"n":case"j":I&&e.ctrlKey&&ee(e);break;case"ArrowDown":ee(e);break;case"p":case"k":I&&e.ctrlKey&&et(e);break;case"ArrowUp":et(e);break;case"Home":e.preventDefault(),W(0);break;case"End":e.preventDefault(),Y();break;case"Enter":{e.preventDefault();let t=X();if(t){let e=new Event(h);t.dispatchEvent(e)}}}}},s.createElement("label",{"cmdk-label":"",htmlFor:B.inputId,id:B.labelId,style:j},u),z(e,e=>s.createElement(R.Provider,{value:T},s.createElement(w.Provider,{value:B},e))))}),M=s.forwardRef((e,t)=>{var l,n;let o=(0,g.B)(),r=s.useRef(null),i=s.useContext(x),a=S(),u=k(e),p=null!=(n=null==(l=u.current)?void 0:l.forceMount)?n:null==i?void 0:i.forceMount;L(()=>{if(!p)return a.item(o,null==i?void 0:i.id)},[p]);let f=O(o,r,[e.value,e.children,r],e.keywords),m=y(),v=D(e=>e.value&&e.value===f.current),C=D(e=>!!p||!1===a.filter()||!e.search||e.filtered.items.get(o)>0);function b(){var e,t;w(),null==(t=(e=u.current).onSelect)||t.call(e,f.current)}function w(){m.setState("value",f.current,!0)}if(s.useEffect(()=>{let t=r.current;if(!(!t||e.disabled))return t.addEventListener(h,b),()=>t.removeEventListener(h,b)},[C,e.onSelect,e.disabled]),!C)return null;let{disabled:R,value:F,onSelect:M,forceMount:P,keywords:I,...V}=e;return s.createElement(d.sG.div,{ref:(0,c.t)(r,t),...V,id:o,"cmdk-item":"",role:"option","aria-disabled":!!R,"aria-selected":!!v,"data-disabled":!!R,"data-selected":!!v,onPointerMove:R||a.getDisablePointerSelection()?void 0:w,onClick:R?void 0:b},e.children)}),P=s.forwardRef((e,t)=>{let{heading:l,children:n,forceMount:o,...r}=e,i=(0,g.B)(),a=s.useRef(null),u=s.useRef(null),p=(0,g.B)(),f=S(),m=D(e=>!!o||!1===f.filter()||!e.search||e.filtered.groups.has(i));L(()=>f.group(i),[]),O(i,a,[e.value,e.heading,u]);let v=s.useMemo(()=>({id:i,forceMount:o}),[o]);return s.createElement(d.sG.div,{ref:(0,c.t)(a,t),...r,"cmdk-group":"",role:"presentation",hidden:!m||void 0},l&&s.createElement("div",{ref:u,"cmdk-group-heading":"","aria-hidden":!0,id:p},l),z(e,e=>s.createElement("div",{"cmdk-group-items":"",role:"group","aria-labelledby":l?p:void 0},s.createElement(x.Provider,{value:v},e))))}),I=s.forwardRef((e,t)=>{let{alwaysRender:l,...n}=e,o=s.useRef(null),r=D(e=>!e.search);return l||r?s.createElement(d.sG.div,{ref:(0,c.t)(o,t),...n,"cmdk-separator":"",role:"separator"}):null}),V=s.forwardRef((e,t)=>{let{onValueChange:l,...n}=e,o=null!=e.value,r=y(),i=D(e=>e.search),a=D(e=>e.selectedItemId),u=S();return s.useEffect(()=>{null!=e.value&&r.setState("search",e.value)},[e.value]),s.createElement(d.sG.input,{ref:t,...n,"cmdk-input":"",autoComplete:"off",autoCorrect:"off",spellCheck:!1,"aria-autocomplete":"list",role:"combobox","aria-expanded":!0,"aria-controls":u.listId,"aria-labelledby":u.labelId,"aria-activedescendant":a,id:u.inputId,type:"text",value:o?e.value:i,onChange:e=>{o||r.setState("search",e.target.value),null==l||l(e.target.value)}})}),A=s.forwardRef((e,t)=>{let{children:l,label:n="Suggestions",...o}=e,r=s.useRef(null),i=s.useRef(null),a=D(e=>e.selectedItemId),u=S();return s.useEffect(()=>{if(i.current&&r.current){let e=i.current,t=r.current,l,n=new ResizeObserver(()=>{l=requestAnimationFrame(()=>{let l=e.offsetHeight;t.style.setProperty("--cmdk-list-height",l.toFixed(1)+"px")})});return n.observe(e),()=>{cancelAnimationFrame(l),n.unobserve(e)}}},[]),s.createElement(d.sG.div,{ref:(0,c.t)(r,t),...o,"cmdk-list":"",role:"listbox",tabIndex:-1,"aria-activedescendant":a,"aria-label":n,id:u.listId},z(e,e=>s.createElement("div",{ref:(0,c.t)(i,u.listInnerRef),"cmdk-list-sizer":""},e)))}),E=s.forwardRef((e,t)=>{let{open:l,onOpenChange:n,overlayClassName:o,contentClassName:r,container:i,...a}=e;return s.createElement(u.bL,{open:l,onOpenChange:n},s.createElement(u.ZL,{container:i},s.createElement(u.hJ,{"cmdk-overlay":"",className:o}),s.createElement(u.UC,{"aria-label":e.label,"cmdk-dialog":"",className:r},s.createElement(F,{ref:t,...a}))))}),_=Object.assign(F,{List:A,Item:M,Input:V,Group:P,Separator:I,Dialog:E,Empty:s.forwardRef((e,t)=>D(e=>0===e.filtered.count)?s.createElement(d.sG.div,{ref:t,...e,"cmdk-empty":"",role:"presentation"}):null),Loading:s.forwardRef((e,t)=>{let{progress:l,children:n,label:o="Loading...",...r}=e;return s.createElement(d.sG.div,{ref:t,...r,"cmdk-loading":"",role:"progressbar","aria-valuenow":l,"aria-valuemin":0,"aria-valuemax":100,"aria-label":o},z(e,e=>s.createElement("div",{"aria-hidden":!0},e)))})});function k(e){let t=s.useRef(e);return L(()=>{t.current=e}),t}var L="undefined"==typeof window?s.useEffect:s.useLayoutEffect;function G(e){let t=s.useRef();return void 0===t.current&&(t.current=e()),t}function D(e){let t=y(),l=()=>e(t.snapshot());return s.useSyncExternalStore(t.subscribe,l,l)}function O(e,t,l){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],o=s.useRef(),r=S();return L(()=>{var i;let a=(()=>{var e;for(let t of l){if("string"==typeof t)return t.trim();if("object"==typeof t&&"current"in t)return t.current?null==(e=t.current.textContent)?void 0:e.trim():o.current}})(),u=n.map(e=>e.trim());r.value(e,a,u),null==(i=t.current)||i.setAttribute(C,a),o.current=a}),o}var H=()=>{let[e,t]=s.useState(),l=G(()=>new Map);return L(()=>{l.current.forEach(e=>e()),l.current=new Map},[e]),(e,n)=>{l.current.set(e,n),t({})}};function z(e,t){let l,{asChild:n,children:o}=e;return n&&s.isValidElement(o)?s.cloneElement("function"==typeof(l=o.type)?l(o.props):"render"in l?l.render(o.props):o,{ref:o.ref},t(o.props.children)):t(o)}var j={position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",borderWidth:"0"}},7828:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"workAsyncStorageInstance",{enumerable:!0,get:function(){return n}});let n=(0,l(4054).createAsyncLocalStorage)()},7924:(e,t,l)=>{l.d(t,{A:()=>n});let n=(0,l(9946).A)("search",[["path",{d:"m21 21-4.34-4.34",key:"14j7rj"}],["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}]])}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/106-5f7ab4dfb56f2b8d.js b/transports/bifrost-http/ui/_next/static/chunks/106-5f7ab4dfb56f2b8d.js new file mode 100644 index 0000000000..54937a6b43 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/106-5f7ab4dfb56f2b8d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[106],{1154:(e,r,o)=>{o.d(r,{A:()=>t});let t=(0,o(9946).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},2085:(e,r,o)=>{o.d(r,{F:()=>a});var t=o(2596);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,l=t.$,a=(e,r)=>o=>{var t;if((null==r?void 0:r.variants)==null)return l(e,null==o?void 0:o.class,null==o?void 0:o.className);let{variants:a,defaultVariants:s}=r,i=Object.keys(a).map(e=>{let r=null==o?void 0:o[e],t=null==s?void 0:s[e];if(null===r)return null;let l=n(r)||n(t);return a[e][l]}),d=o&&Object.entries(o).reduce((e,r)=>{let[o,t]=r;return void 0===t||(e[o]=t),e},{});return l(e,i,null==r||null==(t=r.compoundVariants)?void 0:t.reduce((e,r)=>{let{class:o,className:t,...n}=r;return Object.entries(n).every(e=>{let[r,o]=e;return Array.isArray(o)?o.includes({...s,...d}[r]):({...s,...d})[r]===o})?[...e,o,t]:e},[]),null==o?void 0:o.class,null==o?void 0:o.className)}},2596:(e,r,o)=>{o.d(r,{$:()=>t});function t(){for(var e,r,o=0,t="",n=arguments.length;o{o.d(r,{N:()=>n});var t=o(2115),n=globalThis?.document?t.useLayoutEffect:()=>{}},3655:(e,r,o)=>{o.d(r,{hO:()=>i,sG:()=>s});var t=o(2115),n=o(7650),l=o(9708),a=o(5155),s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let o=(0,l.TL)(`Primitive.${r}`),n=t.forwardRef((e,t)=>{let{asChild:n,...l}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,a.jsx)(n?o:r,{...l,ref:t})});return n.displayName=`Primitive.${r}`,{...e,[r]:n}},{});function i(e,r){e&&n.flushSync(()=>e.dispatchEvent(r))}},5185:(e,r,o)=>{o.d(r,{m:()=>t});function t(e,r,{checkForDefaultPrevented:o=!0}={}){return function(t){if(e?.(t),!1===o||!t.defaultPrevented)return r?.(t)}}},5845:(e,r,o)=>{o.d(r,{i:()=>s});var t,n=o(2115),l=o(2712),a=(t||(t=o.t(n,2)))[" useInsertionEffect ".trim().toString()]||l.N;function s({prop:e,defaultProp:r,onChange:o=()=>{},caller:t}){let[l,s,i]=function({defaultProp:e,onChange:r}){let[o,t]=n.useState(e),l=n.useRef(o),s=n.useRef(r);return a(()=>{s.current=r},[r]),n.useEffect(()=>{l.current!==o&&(s.current?.(o),l.current=o)},[o,l]),[o,t,s]}({defaultProp:r,onChange:o}),d=void 0!==e,c=d?e:l;{let r=n.useRef(void 0!==e);n.useEffect(()=>{let e=r.current;if(e!==d){let r=d?"controlled":"uncontrolled";console.warn(`${t} is changing from ${e?"controlled":"uncontrolled"} to ${r}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=d},[d,t])}return[c,n.useCallback(r=>{if(d){let o="function"==typeof r?r(e):r;o!==e&&i.current?.(o)}else s(r)},[d,e,s,i])]}Symbol("RADIX:SYNC_STATE")},6081:(e,r,o)=>{o.d(r,{A:()=>a,q:()=>l});var t=o(2115),n=o(5155);function l(e,r){let o=t.createContext(r),l=e=>{let{children:r,...l}=e,a=t.useMemo(()=>l,Object.values(l));return(0,n.jsx)(o.Provider,{value:a,children:r})};return l.displayName=e+"Provider",[l,function(n){let l=t.useContext(o);if(l)return l;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function a(e,r=[]){let o=[],l=()=>{let r=o.map(e=>t.createContext(e));return function(o){let n=o?.[e]||r;return t.useMemo(()=>({[`__scope${e}`]:{...o,[e]:n}}),[o,n])}};return l.scopeName=e,[function(r,l){let a=t.createContext(l),s=o.length;o=[...o,l];let i=r=>{let{scope:o,children:l,...i}=r,d=o?.[e]?.[s]||a,c=t.useMemo(()=>i,Object.values(i));return(0,n.jsx)(d.Provider,{value:c,children:l})};return i.displayName=r+"Provider",[i,function(o,n){let i=n?.[e]?.[s]||a,d=t.useContext(i);if(d)return d;if(void 0!==l)return l;throw Error(`\`${o}\` must be used within \`${r}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let o=()=>{let o=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=o.reduce((r,{useScope:o,scopeName:t})=>{let n=o(e)[`__scope${t}`];return{...r,...n}},{});return t.useMemo(()=>({[`__scope${r.scopeName}`]:n}),[n])}};return o.scopeName=r.scopeName,o}(l,...r)]}},6101:(e,r,o)=>{o.d(r,{s:()=>a,t:()=>l});var t=o(2115);function n(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function l(...e){return r=>{let o=!1,t=e.map(e=>{let t=n(e,r);return o||"function"!=typeof t||(o=!0),t});if(o)return()=>{for(let r=0;r{o.d(r,{QP:()=>ed});let t=e=>{let r=s(e),{conflictingClassGroups:o,conflictingClassGroupModifiers:t}=e;return{getClassGroupId:e=>{let o=e.split("-");return""===o[0]&&1!==o.length&&o.shift(),n(o,r)||a(e)},getConflictingClassGroupIds:(e,r)=>{let n=o[e]||[];return r&&t[e]?[...n,...t[e]]:n}}},n=(e,r)=>{if(0===e.length)return r.classGroupId;let o=e[0],t=r.nextPart.get(o),l=t?n(e.slice(1),t):void 0;if(l)return l;if(0===r.validators.length)return;let a=e.join("-");return r.validators.find(({validator:e})=>e(a))?.classGroupId},l=/^\[(.+)\]$/,a=e=>{if(l.test(e)){let r=l.exec(e)[1],o=r?.substring(0,r.indexOf(":"));if(o)return"arbitrary.."+o}},s=e=>{let{theme:r,classGroups:o}=e,t={nextPart:new Map,validators:[]};for(let e in o)i(o[e],t,e,r);return t},i=(e,r,o,t)=>{e.forEach(e=>{if("string"==typeof e){(""===e?r:d(r,e)).classGroupId=o;return}if("function"==typeof e)return c(e)?void i(e(t),r,o,t):void r.validators.push({validator:e,classGroupId:o});Object.entries(e).forEach(([e,n])=>{i(n,d(r,e),o,t)})})},d=(e,r)=>{let o=e;return r.split("-").forEach(e=>{o.nextPart.has(e)||o.nextPart.set(e,{nextPart:new Map,validators:[]}),o=o.nextPart.get(e)}),o},c=e=>e.isThemeGetter,m=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,o=new Map,t=new Map,n=(n,l)=>{o.set(n,l),++r>e&&(r=0,t=o,o=new Map)};return{get(e){let r=o.get(e);return void 0!==r?r:void 0!==(r=t.get(e))?(n(e,r),r):void 0},set(e,r){o.has(e)?o.set(e,r):n(e,r)}}},u=e=>{let{prefix:r,experimentalParseClassName:o}=e,t=e=>{let r,o=[],t=0,n=0,l=0;for(let a=0;al?r-l:void 0}};if(r){let e=r+":",o=t;t=r=>r.startsWith(e)?o(r.substring(e.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:r,maybePostfixModifierPosition:void 0}}if(o){let e=t;t=r=>o({className:r,parseClassName:e})}return t},p=e=>e.endsWith("!")?e.substring(0,e.length-1):e.startsWith("!")?e.substring(1):e,f=e=>{let r=Object.fromEntries(e.orderSensitiveModifiers.map(e=>[e,!0]));return e=>{if(e.length<=1)return e;let o=[],t=[];return e.forEach(e=>{"["===e[0]||r[e]?(o.push(...t.sort(),e),t=[]):t.push(e)}),o.push(...t.sort()),o}},b=e=>({cache:m(e.cacheSize),parseClassName:u(e),sortModifiers:f(e),...t(e)}),g=/\s+/,h=(e,r)=>{let{parseClassName:o,getClassGroupId:t,getConflictingClassGroupIds:n,sortModifiers:l}=r,a=[],s=e.trim().split(g),i="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{isExternal:d,modifiers:c,hasImportantModifier:m,baseClassName:u,maybePostfixModifierPosition:p}=o(r);if(d){i=r+(i.length>0?" "+i:i);continue}let f=!!p,b=t(f?u.substring(0,p):u);if(!b){if(!f||!(b=t(u))){i=r+(i.length>0?" "+i:i);continue}f=!1}let g=l(c).join(":"),h=m?g+"!":g,w=h+b;if(a.includes(w))continue;a.push(w);let k=n(b,f);for(let e=0;e0?" "+i:i)}return i};function w(){let e,r,o=0,t="";for(;o{let r;if("string"==typeof e)return e;let o="";for(let t=0;t{let r=r=>r[e]||[];return r.isThemeGetter=!0,r},v=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,y=/^\((?:(\w[\w-]*):)?(.+)\)$/i,z=/^\d+\/\d+$/,N=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,j=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,C=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,$=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,E=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,P=e=>z.test(e),_=e=>!!e&&!Number.isNaN(Number(e)),S=e=>!!e&&Number.isInteger(Number(e)),A=e=>e.endsWith("%")&&_(e.slice(0,-1)),M=e=>N.test(e),O=()=>!0,I=e=>j.test(e)&&!C.test(e),R=()=>!1,G=e=>$.test(e),W=e=>E.test(e),T=e=>!D(e)&&!U(e),L=e=>ee(e,en,R),D=e=>v.test(e),V=e=>ee(e,el,I),q=e=>ee(e,ea,_),F=e=>ee(e,eo,R),Z=e=>ee(e,et,W),B=e=>ee(e,ei,G),U=e=>y.test(e),X=e=>er(e,el),Q=e=>er(e,es),Y=e=>er(e,eo),H=e=>er(e,en),J=e=>er(e,et),K=e=>er(e,ei,!0),ee=(e,r,o)=>{let t=v.exec(e);return!!t&&(t[1]?r(t[1]):o(t[2]))},er=(e,r,o=!1)=>{let t=y.exec(e);return!!t&&(t[1]?r(t[1]):o)},eo=e=>"position"===e||"percentage"===e,et=e=>"image"===e||"url"===e,en=e=>"length"===e||"size"===e||"bg-size"===e,el=e=>"length"===e,ea=e=>"number"===e,es=e=>"family-name"===e,ei=e=>"shadow"===e;Symbol.toStringTag;let ed=function(e,...r){let o,t,n,l=function(s){return t=(o=b(r.reduce((e,r)=>r(e),e()))).cache.get,n=o.cache.set,l=a,a(s)};function a(e){let r=t(e);if(r)return r;let l=h(e,o);return n(e,l),l}return function(){return l(w.apply(null,arguments))}}(()=>{let e=x("color"),r=x("font"),o=x("text"),t=x("font-weight"),n=x("tracking"),l=x("leading"),a=x("breakpoint"),s=x("container"),i=x("spacing"),d=x("radius"),c=x("shadow"),m=x("inset-shadow"),u=x("text-shadow"),p=x("drop-shadow"),f=x("blur"),b=x("perspective"),g=x("aspect"),h=x("ease"),w=x("animate"),k=()=>["auto","avoid","all","avoid-page","page","left","right","column"],v=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],y=()=>[...v(),U,D],z=()=>["auto","hidden","clip","visible","scroll"],N=()=>["auto","contain","none"],j=()=>[U,D,i],C=()=>[P,"full","auto",...j()],$=()=>[S,"none","subgrid",U,D],E=()=>["auto",{span:["full",S,U,D]},S,U,D],I=()=>[S,"auto",U,D],R=()=>["auto","min","max","fr",U,D],G=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],W=()=>["start","end","center","stretch","center-safe","end-safe"],ee=()=>["auto",...j()],er=()=>[P,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...j()],eo=()=>[e,U,D],et=()=>[...v(),Y,F,{position:[U,D]}],en=()=>["no-repeat",{repeat:["","x","y","space","round"]}],el=()=>["auto","cover","contain",H,L,{size:[U,D]}],ea=()=>[A,X,V],es=()=>["","none","full",d,U,D],ei=()=>["",_,X,V],ed=()=>["solid","dashed","dotted","double"],ec=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],em=()=>[_,A,Y,F],eu=()=>["","none",f,U,D],ep=()=>["none",_,U,D],ef=()=>["none",_,U,D],eb=()=>[_,U,D],eg=()=>[P,"full",...j()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[M],breakpoint:[M],color:[O],container:[M],"drop-shadow":[M],ease:["in","out","in-out"],font:[T],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[M],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[M],shadow:[M],spacing:["px",_],text:[M],"text-shadow":[M],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",P,D,U,g]}],container:["container"],columns:[{columns:[_,D,U,s]}],"break-after":[{"break-after":k()}],"break-before":[{"break-before":k()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:y()}],overflow:[{overflow:z()}],"overflow-x":[{"overflow-x":z()}],"overflow-y":[{"overflow-y":z()}],overscroll:[{overscroll:N()}],"overscroll-x":[{"overscroll-x":N()}],"overscroll-y":[{"overscroll-y":N()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:C()}],"inset-x":[{"inset-x":C()}],"inset-y":[{"inset-y":C()}],start:[{start:C()}],end:[{end:C()}],top:[{top:C()}],right:[{right:C()}],bottom:[{bottom:C()}],left:[{left:C()}],visibility:["visible","invisible","collapse"],z:[{z:[S,"auto",U,D]}],basis:[{basis:[P,"full","auto",s,...j()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[_,P,"auto","initial","none",D]}],grow:[{grow:["",_,U,D]}],shrink:[{shrink:["",_,U,D]}],order:[{order:[S,"first","last","none",U,D]}],"grid-cols":[{"grid-cols":$()}],"col-start-end":[{col:E()}],"col-start":[{"col-start":I()}],"col-end":[{"col-end":I()}],"grid-rows":[{"grid-rows":$()}],"row-start-end":[{row:E()}],"row-start":[{"row-start":I()}],"row-end":[{"row-end":I()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":R()}],"auto-rows":[{"auto-rows":R()}],gap:[{gap:j()}],"gap-x":[{"gap-x":j()}],"gap-y":[{"gap-y":j()}],"justify-content":[{justify:[...G(),"normal"]}],"justify-items":[{"justify-items":[...W(),"normal"]}],"justify-self":[{"justify-self":["auto",...W()]}],"align-content":[{content:["normal",...G()]}],"align-items":[{items:[...W(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...W(),{baseline:["","last"]}]}],"place-content":[{"place-content":G()}],"place-items":[{"place-items":[...W(),"baseline"]}],"place-self":[{"place-self":["auto",...W()]}],p:[{p:j()}],px:[{px:j()}],py:[{py:j()}],ps:[{ps:j()}],pe:[{pe:j()}],pt:[{pt:j()}],pr:[{pr:j()}],pb:[{pb:j()}],pl:[{pl:j()}],m:[{m:ee()}],mx:[{mx:ee()}],my:[{my:ee()}],ms:[{ms:ee()}],me:[{me:ee()}],mt:[{mt:ee()}],mr:[{mr:ee()}],mb:[{mb:ee()}],ml:[{ml:ee()}],"space-x":[{"space-x":j()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":j()}],"space-y-reverse":["space-y-reverse"],size:[{size:er()}],w:[{w:[s,"screen",...er()]}],"min-w":[{"min-w":[s,"screen","none",...er()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[a]},...er()]}],h:[{h:["screen","lh",...er()]}],"min-h":[{"min-h":["screen","lh","none",...er()]}],"max-h":[{"max-h":["screen","lh",...er()]}],"font-size":[{text:["base",o,X,V]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[t,U,q]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",A,D]}],"font-family":[{font:[Q,D,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,U,D]}],"line-clamp":[{"line-clamp":[_,"none",U,q]}],leading:[{leading:[l,...j()]}],"list-image":[{"list-image":["none",U,D]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",U,D]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:eo()}],"text-color":[{text:eo()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ed(),"wavy"]}],"text-decoration-thickness":[{decoration:[_,"from-font","auto",U,V]}],"text-decoration-color":[{decoration:eo()}],"underline-offset":[{"underline-offset":[_,"auto",U,D]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:j()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",U,D]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",U,D]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:et()}],"bg-repeat":[{bg:en()}],"bg-size":[{bg:el()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},S,U,D],radial:["",U,D],conic:[S,U,D]},J,Z]}],"bg-color":[{bg:eo()}],"gradient-from-pos":[{from:ea()}],"gradient-via-pos":[{via:ea()}],"gradient-to-pos":[{to:ea()}],"gradient-from":[{from:eo()}],"gradient-via":[{via:eo()}],"gradient-to":[{to:eo()}],rounded:[{rounded:es()}],"rounded-s":[{"rounded-s":es()}],"rounded-e":[{"rounded-e":es()}],"rounded-t":[{"rounded-t":es()}],"rounded-r":[{"rounded-r":es()}],"rounded-b":[{"rounded-b":es()}],"rounded-l":[{"rounded-l":es()}],"rounded-ss":[{"rounded-ss":es()}],"rounded-se":[{"rounded-se":es()}],"rounded-ee":[{"rounded-ee":es()}],"rounded-es":[{"rounded-es":es()}],"rounded-tl":[{"rounded-tl":es()}],"rounded-tr":[{"rounded-tr":es()}],"rounded-br":[{"rounded-br":es()}],"rounded-bl":[{"rounded-bl":es()}],"border-w":[{border:ei()}],"border-w-x":[{"border-x":ei()}],"border-w-y":[{"border-y":ei()}],"border-w-s":[{"border-s":ei()}],"border-w-e":[{"border-e":ei()}],"border-w-t":[{"border-t":ei()}],"border-w-r":[{"border-r":ei()}],"border-w-b":[{"border-b":ei()}],"border-w-l":[{"border-l":ei()}],"divide-x":[{"divide-x":ei()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ei()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ed(),"hidden","none"]}],"divide-style":[{divide:[...ed(),"hidden","none"]}],"border-color":[{border:eo()}],"border-color-x":[{"border-x":eo()}],"border-color-y":[{"border-y":eo()}],"border-color-s":[{"border-s":eo()}],"border-color-e":[{"border-e":eo()}],"border-color-t":[{"border-t":eo()}],"border-color-r":[{"border-r":eo()}],"border-color-b":[{"border-b":eo()}],"border-color-l":[{"border-l":eo()}],"divide-color":[{divide:eo()}],"outline-style":[{outline:[...ed(),"none","hidden"]}],"outline-offset":[{"outline-offset":[_,U,D]}],"outline-w":[{outline:["",_,X,V]}],"outline-color":[{outline:eo()}],shadow:[{shadow:["","none",c,K,B]}],"shadow-color":[{shadow:eo()}],"inset-shadow":[{"inset-shadow":["none",m,K,B]}],"inset-shadow-color":[{"inset-shadow":eo()}],"ring-w":[{ring:ei()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:eo()}],"ring-offset-w":[{"ring-offset":[_,V]}],"ring-offset-color":[{"ring-offset":eo()}],"inset-ring-w":[{"inset-ring":ei()}],"inset-ring-color":[{"inset-ring":eo()}],"text-shadow":[{"text-shadow":["none",u,K,B]}],"text-shadow-color":[{"text-shadow":eo()}],opacity:[{opacity:[_,U,D]}],"mix-blend":[{"mix-blend":[...ec(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ec()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[_]}],"mask-image-linear-from-pos":[{"mask-linear-from":em()}],"mask-image-linear-to-pos":[{"mask-linear-to":em()}],"mask-image-linear-from-color":[{"mask-linear-from":eo()}],"mask-image-linear-to-color":[{"mask-linear-to":eo()}],"mask-image-t-from-pos":[{"mask-t-from":em()}],"mask-image-t-to-pos":[{"mask-t-to":em()}],"mask-image-t-from-color":[{"mask-t-from":eo()}],"mask-image-t-to-color":[{"mask-t-to":eo()}],"mask-image-r-from-pos":[{"mask-r-from":em()}],"mask-image-r-to-pos":[{"mask-r-to":em()}],"mask-image-r-from-color":[{"mask-r-from":eo()}],"mask-image-r-to-color":[{"mask-r-to":eo()}],"mask-image-b-from-pos":[{"mask-b-from":em()}],"mask-image-b-to-pos":[{"mask-b-to":em()}],"mask-image-b-from-color":[{"mask-b-from":eo()}],"mask-image-b-to-color":[{"mask-b-to":eo()}],"mask-image-l-from-pos":[{"mask-l-from":em()}],"mask-image-l-to-pos":[{"mask-l-to":em()}],"mask-image-l-from-color":[{"mask-l-from":eo()}],"mask-image-l-to-color":[{"mask-l-to":eo()}],"mask-image-x-from-pos":[{"mask-x-from":em()}],"mask-image-x-to-pos":[{"mask-x-to":em()}],"mask-image-x-from-color":[{"mask-x-from":eo()}],"mask-image-x-to-color":[{"mask-x-to":eo()}],"mask-image-y-from-pos":[{"mask-y-from":em()}],"mask-image-y-to-pos":[{"mask-y-to":em()}],"mask-image-y-from-color":[{"mask-y-from":eo()}],"mask-image-y-to-color":[{"mask-y-to":eo()}],"mask-image-radial":[{"mask-radial":[U,D]}],"mask-image-radial-from-pos":[{"mask-radial-from":em()}],"mask-image-radial-to-pos":[{"mask-radial-to":em()}],"mask-image-radial-from-color":[{"mask-radial-from":eo()}],"mask-image-radial-to-color":[{"mask-radial-to":eo()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":v()}],"mask-image-conic-pos":[{"mask-conic":[_]}],"mask-image-conic-from-pos":[{"mask-conic-from":em()}],"mask-image-conic-to-pos":[{"mask-conic-to":em()}],"mask-image-conic-from-color":[{"mask-conic-from":eo()}],"mask-image-conic-to-color":[{"mask-conic-to":eo()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:et()}],"mask-repeat":[{mask:en()}],"mask-size":[{mask:el()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",U,D]}],filter:[{filter:["","none",U,D]}],blur:[{blur:eu()}],brightness:[{brightness:[_,U,D]}],contrast:[{contrast:[_,U,D]}],"drop-shadow":[{"drop-shadow":["","none",p,K,B]}],"drop-shadow-color":[{"drop-shadow":eo()}],grayscale:[{grayscale:["",_,U,D]}],"hue-rotate":[{"hue-rotate":[_,U,D]}],invert:[{invert:["",_,U,D]}],saturate:[{saturate:[_,U,D]}],sepia:[{sepia:["",_,U,D]}],"backdrop-filter":[{"backdrop-filter":["","none",U,D]}],"backdrop-blur":[{"backdrop-blur":eu()}],"backdrop-brightness":[{"backdrop-brightness":[_,U,D]}],"backdrop-contrast":[{"backdrop-contrast":[_,U,D]}],"backdrop-grayscale":[{"backdrop-grayscale":["",_,U,D]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[_,U,D]}],"backdrop-invert":[{"backdrop-invert":["",_,U,D]}],"backdrop-opacity":[{"backdrop-opacity":[_,U,D]}],"backdrop-saturate":[{"backdrop-saturate":[_,U,D]}],"backdrop-sepia":[{"backdrop-sepia":["",_,U,D]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":j()}],"border-spacing-x":[{"border-spacing-x":j()}],"border-spacing-y":[{"border-spacing-y":j()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",U,D]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[_,"initial",U,D]}],ease:[{ease:["linear","initial",h,U,D]}],delay:[{delay:[_,U,D]}],animate:[{animate:["none",w,U,D]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,U,D]}],"perspective-origin":[{"perspective-origin":y()}],rotate:[{rotate:ep()}],"rotate-x":[{"rotate-x":ep()}],"rotate-y":[{"rotate-y":ep()}],"rotate-z":[{"rotate-z":ep()}],scale:[{scale:ef()}],"scale-x":[{"scale-x":ef()}],"scale-y":[{"scale-y":ef()}],"scale-z":[{"scale-z":ef()}],"scale-3d":["scale-3d"],skew:[{skew:eb()}],"skew-x":[{"skew-x":eb()}],"skew-y":[{"skew-y":eb()}],transform:[{transform:[U,D,"","none","gpu","cpu"]}],"transform-origin":[{origin:y()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:eg()}],"translate-x":[{"translate-x":eg()}],"translate-y":[{"translate-y":eg()}],"translate-z":[{"translate-z":eg()}],"translate-none":["translate-none"],accent:[{accent:eo()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:eo()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",U,D]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":j()}],"scroll-mx":[{"scroll-mx":j()}],"scroll-my":[{"scroll-my":j()}],"scroll-ms":[{"scroll-ms":j()}],"scroll-me":[{"scroll-me":j()}],"scroll-mt":[{"scroll-mt":j()}],"scroll-mr":[{"scroll-mr":j()}],"scroll-mb":[{"scroll-mb":j()}],"scroll-ml":[{"scroll-ml":j()}],"scroll-p":[{"scroll-p":j()}],"scroll-px":[{"scroll-px":j()}],"scroll-py":[{"scroll-py":j()}],"scroll-ps":[{"scroll-ps":j()}],"scroll-pe":[{"scroll-pe":j()}],"scroll-pt":[{"scroll-pt":j()}],"scroll-pr":[{"scroll-pr":j()}],"scroll-pb":[{"scroll-pb":j()}],"scroll-pl":[{"scroll-pl":j()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",U,D]}],fill:[{fill:["none",...eo()]}],"stroke-w":[{stroke:[_,X,V,q]}],stroke:[{stroke:["none",...eo()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})},9708:(e,r,o)=>{o.d(r,{DX:()=>s,Dc:()=>d,TL:()=>a});var t=o(2115),n=o(6101),l=o(5155);function a(e){let r=function(e){let r=t.forwardRef((e,r)=>{let{children:o,...l}=e;if(t.isValidElement(o)){var a;let e,s,i=(a=o,(s=(e=Object.getOwnPropertyDescriptor(a.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.ref:(s=(e=Object.getOwnPropertyDescriptor(a,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.props.ref:a.props.ref||a.ref),d=function(e,r){let o={...r};for(let t in r){let n=e[t],l=r[t];/^on[A-Z]/.test(t)?n&&l?o[t]=(...e)=>{let r=l(...e);return n(...e),r}:n&&(o[t]=n):"style"===t?o[t]={...n,...l}:"className"===t&&(o[t]=[n,l].filter(Boolean).join(" "))}return{...e,...o}}(l,o.props);return o.type!==t.Fragment&&(d.ref=r?(0,n.t)(r,i):i),t.cloneElement(o,d)}return t.Children.count(o)>1?t.Children.only(null):null});return r.displayName=`${e}.SlotClone`,r}(e),o=t.forwardRef((e,o)=>{let{children:n,...a}=e,s=t.Children.toArray(n),i=s.find(c);if(i){let e=i.props.children,n=s.map(r=>r!==i?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,l.jsx)(r,{...a,ref:o,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,l.jsx)(r,{...a,ref:o,children:n})});return o.displayName=`${e}.Slot`,o}var s=a("Slot"),i=Symbol("radix.slottable");function d(e){let r=({children:e})=>(0,l.jsx)(l.Fragment,{children:e});return r.displayName=`${e}.Slottable`,r.__radixId=i,r}function c(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===i}},9946:(e,r,o)=>{o.d(r,{A:()=>m});var t=o(2115);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,o)=>o?o.toUpperCase():r.toLowerCase()),a=e=>{let r=l(e);return r.charAt(0).toUpperCase()+r.slice(1)},s=function(){for(var e=arguments.length,r=Array(e),o=0;o!!e&&""!==e.trim()&&o.indexOf(e)===r).join(" ").trim()},i=e=>{for(let r in e)if(r.startsWith("aria-")||"role"===r||"title"===r)return!0};var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,t.forwardRef)((e,r)=>{let{color:o="currentColor",size:n=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:c="",children:m,iconNode:u,...p}=e;return(0,t.createElement)("svg",{ref:r,...d,width:n,height:n,stroke:o,strokeWidth:a?24*Number(l)/Number(n):l,className:s("lucide",c),...!m&&!i(p)&&{"aria-hidden":"true"},...p},[...u.map(e=>{let[r,o]=e;return(0,t.createElement)(r,o)}),...Array.isArray(m)?m:[m]])}),m=(e,r)=>{let o=(0,t.forwardRef)((o,l)=>{let{className:i,...d}=o;return(0,t.createElement)(c,{ref:l,iconNode:r,className:s("lucide-".concat(n(a(e))),"lucide-".concat(e),i),...d})});return o.displayName=a(e),o}}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/146-0f84e0451d3a2c28.js b/transports/bifrost-http/ui/_next/static/chunks/146-0f84e0451d3a2c28.js deleted file mode 100644 index 09aa469f15..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/146-0f84e0451d3a2c28.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[146],{1154:(e,r,t)=>{t.d(r,{A:()=>o});let o=(0,t(9946).A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},1285:(e,r,t)=>{t.d(r,{B:()=>i});var o,n=t(2115),l=t(2712),a=(o||(o=t.t(n,2)))[" useId ".trim().toString()]||(()=>void 0),s=0;function i(e){let[r,t]=n.useState(a());return(0,l.N)(()=>{e||t(e=>e??String(s++))},[e]),e||(r?`radix-${r}`:"")}},1362:(e,r,t)=>{t.d(r,{D:()=>c,N:()=>d});var o=t(2115),n=(e,r,t,o,n,l,a,s)=>{let i=document.documentElement,c=["light","dark"];function d(r){var t;(Array.isArray(e)?e:[e]).forEach(e=>{let t="class"===e,o=t&&l?n.map(e=>l[e]||e):n;t?(i.classList.remove(...o),i.classList.add(l&&l[r]?l[r]:r)):i.setAttribute(e,r)}),t=r,s&&c.includes(t)&&(i.style.colorScheme=t)}if(o)d(o);else try{let e=localStorage.getItem(r)||t,o=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(o)}catch(e){}},l=["light","dark"],a="(prefers-color-scheme: dark)",s=o.createContext(void 0),i={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=o.useContext(s))?e:i},d=e=>o.useContext(s)?o.createElement(o.Fragment,null,e.children):o.createElement(m,{...e}),u=["light","dark"],m=e=>{let{forcedTheme:r,disableTransitionOnChange:t=!1,enableSystem:n=!0,enableColorScheme:i=!0,storageKey:c="theme",themes:d=u,defaultTheme:m=n?"system":"light",attribute:h="data-theme",value:v,children:y,nonce:w,scriptProps:x}=e,[k,N]=o.useState(()=>p(c,m)),[E,C]=o.useState(()=>"system"===k?g():k),z=v?Object.values(v):d,S=o.useCallback(e=>{let r=e;if(!r)return;"system"===e&&n&&(r=g());let o=v?v[r]:r,a=t?b(w):null,s=document.documentElement,c=e=>{"class"===e?(s.classList.remove(...z),o&&s.classList.add(o)):e.startsWith("data-")&&(o?s.setAttribute(e,o):s.removeAttribute(e))};if(Array.isArray(h)?h.forEach(c):c(h),i){let e=l.includes(m)?m:null,t=l.includes(r)?r:e;s.style.colorScheme=t}null==a||a()},[w]),A=o.useCallback(e=>{let r="function"==typeof e?e(k):e;N(r);try{localStorage.setItem(c,r)}catch(e){}},[k]),M=o.useCallback(e=>{C(g(e)),"system"===k&&n&&!r&&S("system")},[k,r]);o.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(M),M(e),()=>e.removeListener(M)},[M]),o.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?N(e.newValue):A(m))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[A]),o.useEffect(()=>{S(null!=r?r:k)},[r,k]);let T=o.useMemo(()=>({theme:k,setTheme:A,forcedTheme:r,resolvedTheme:"system"===k?E:k,themes:n?[...d,"system"]:d,systemTheme:n?E:void 0}),[k,A,r,E,n,d]);return o.createElement(s.Provider,{value:T},o.createElement(f,{forcedTheme:r,storageKey:c,attribute:h,enableSystem:n,enableColorScheme:i,defaultTheme:m,value:v,themes:d,nonce:w,scriptProps:x}),y)},f=o.memo(e=>{let{forcedTheme:r,storageKey:t,attribute:l,enableSystem:a,enableColorScheme:s,defaultTheme:i,value:c,themes:d,nonce:u,scriptProps:m}=e,f=JSON.stringify([l,t,i,r,d,c,a,s]).slice(1,-1);return o.createElement("script",{...m,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(n.toString(),")(").concat(f,")")}})}),p=(e,r)=>{let t;try{t=localStorage.getItem(e)||void 0}catch(e){}return t||r},b=e=>{let r=document.createElement("style");return e&&r.setAttribute("nonce",e),r.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(r),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(r)},1)}},g=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},2085:(e,r,t)=>{t.d(r,{F:()=>a});var o=t(2596);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,l=o.$,a=(e,r)=>t=>{var o;if((null==r?void 0:r.variants)==null)return l(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:a,defaultVariants:s}=r,i=Object.keys(a).map(e=>{let r=null==t?void 0:t[e],o=null==s?void 0:s[e];if(null===r)return null;let l=n(r)||n(o);return a[e][l]}),c=t&&Object.entries(t).reduce((e,r)=>{let[t,o]=r;return void 0===o||(e[t]=o),e},{});return l(e,i,null==r||null==(o=r.compoundVariants)?void 0:o.reduce((e,r)=>{let{class:t,className:o,...n}=r;return Object.entries(n).every(e=>{let[r,t]=e;return Array.isArray(t)?t.includes({...s,...c}[r]):({...s,...c})[r]===t})?[...e,t,o]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}},2596:(e,r,t)=>{t.d(r,{$:()=>o});function o(){for(var e,r,t=0,o="",n=arguments.length;t{t.d(r,{N:()=>n});var o=t(2115),n=globalThis?.document?o.useLayoutEffect:()=>{}},3655:(e,r,t)=>{t.d(r,{hO:()=>i,sG:()=>s});var o=t(2115),n=t(7650),l=t(9708),a=t(5155),s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let t=(0,l.TL)(`Primitive.${r}`),n=o.forwardRef((e,o)=>{let{asChild:n,...l}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,a.jsx)(n?t:r,{...l,ref:o})});return n.displayName=`Primitive.${r}`,{...e,[r]:n}},{});function i(e,r){e&&n.flushSync(()=>e.dispatchEvent(r))}},4315:(e,r,t)=>{t.d(r,{jH:()=>l});var o=t(2115);t(5155);var n=o.createContext(void 0);function l(e){let r=o.useContext(n);return e||r||"ltr"}},5185:(e,r,t)=>{t.d(r,{m:()=>o});function o(e,r,{checkForDefaultPrevented:t=!0}={}){return function(o){if(e?.(o),!1===t||!o.defaultPrevented)return r?.(o)}}},5845:(e,r,t)=>{t.d(r,{i:()=>s});var o,n=t(2115),l=t(2712),a=(o||(o=t.t(n,2)))[" useInsertionEffect ".trim().toString()]||l.N;function s({prop:e,defaultProp:r,onChange:t=()=>{},caller:o}){let[l,s,i]=function({defaultProp:e,onChange:r}){let[t,o]=n.useState(e),l=n.useRef(t),s=n.useRef(r);return a(()=>{s.current=r},[r]),n.useEffect(()=>{l.current!==t&&(s.current?.(t),l.current=t)},[t,l]),[t,o,s]}({defaultProp:r,onChange:t}),c=void 0!==e,d=c?e:l;{let r=n.useRef(void 0!==e);n.useEffect(()=>{let e=r.current;if(e!==c){let r=c?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${r}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=c},[c,o])}return[d,n.useCallback(r=>{if(c){let t="function"==typeof r?r(e):r;t!==e&&i.current?.(t)}else s(r)},[c,e,s,i])]}Symbol("RADIX:SYNC_STATE")},6081:(e,r,t)=>{t.d(r,{A:()=>a,q:()=>l});var o=t(2115),n=t(5155);function l(e,r){let t=o.createContext(r),l=e=>{let{children:r,...l}=e,a=o.useMemo(()=>l,Object.values(l));return(0,n.jsx)(t.Provider,{value:a,children:r})};return l.displayName=e+"Provider",[l,function(n){let l=o.useContext(t);if(l)return l;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function a(e,r=[]){let t=[],l=()=>{let r=t.map(e=>o.createContext(e));return function(t){let n=t?.[e]||r;return o.useMemo(()=>({[`__scope${e}`]:{...t,[e]:n}}),[t,n])}};return l.scopeName=e,[function(r,l){let a=o.createContext(l),s=t.length;t=[...t,l];let i=r=>{let{scope:t,children:l,...i}=r,c=t?.[e]?.[s]||a,d=o.useMemo(()=>i,Object.values(i));return(0,n.jsx)(c.Provider,{value:d,children:l})};return i.displayName=r+"Provider",[i,function(t,n){let i=n?.[e]?.[s]||a,c=o.useContext(i);if(c)return c;if(void 0!==l)return l;throw Error(`\`${t}\` must be used within \`${r}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let t=()=>{let t=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=t.reduce((r,{useScope:t,scopeName:o})=>{let n=t(e)[`__scope${o}`];return{...r,...n}},{});return o.useMemo(()=>({[`__scope${r.scopeName}`]:n}),[n])}};return t.scopeName=r.scopeName,t}(l,...r)]}},6101:(e,r,t)=>{t.d(r,{s:()=>a,t:()=>l});var o=t(2115);function n(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function l(...e){return r=>{let t=!1,o=e.map(e=>{let o=n(e,r);return t||"function"!=typeof o||(t=!0),o});if(t)return()=>{for(let r=0;r{function o(e,r,t){if(!r.has(e))throw TypeError("attempted to "+t+" private field on non-instance");return r.get(e)}function n(e,r){var t=o(e,r,"get");return t.get?t.get.call(e):t.value}function l(e,r,t){var n=o(e,r,"set");if(n.set)n.set.call(e,t);else{if(!n.writable)throw TypeError("attempted to set read only private field");n.value=t}return t}t.d(r,{N:()=>m});var a,s=t(2115),i=t(6081),c=t(6101),d=t(9708),u=t(5155);function m(e){let r=e+"CollectionProvider",[t,o]=(0,i.A)(r),[n,l]=t(r,{collectionRef:{current:null},itemMap:new Map}),a=e=>{let{scope:r,children:t}=e,o=s.useRef(null),l=s.useRef(new Map).current;return(0,u.jsx)(n,{scope:r,itemMap:l,collectionRef:o,children:t})};a.displayName=r;let m=e+"CollectionSlot",f=(0,d.TL)(m),p=s.forwardRef((e,r)=>{let{scope:t,children:o}=e,n=l(m,t),a=(0,c.s)(r,n.collectionRef);return(0,u.jsx)(f,{ref:a,children:o})});p.displayName=m;let b=e+"CollectionItemSlot",g="data-radix-collection-item",h=(0,d.TL)(b),v=s.forwardRef((e,r)=>{let{scope:t,children:o,...n}=e,a=s.useRef(null),i=(0,c.s)(r,a),d=l(b,t);return s.useEffect(()=>(d.itemMap.set(a,{ref:a,...n}),()=>void d.itemMap.delete(a))),(0,u.jsx)(h,{...{[g]:""},ref:i,children:o})});return v.displayName=b,[{Provider:a,Slot:p,ItemSlot:v},function(r){let t=l(e+"CollectionConsumer",r);return s.useCallback(()=>{let e=t.collectionRef.current;if(!e)return[];let r=Array.from(e.querySelectorAll("[".concat(g,"]")));return Array.from(t.itemMap.values()).sort((e,t)=>r.indexOf(e.ref.current)-r.indexOf(t.ref.current))},[t.collectionRef,t.itemMap])},o]}var f=new WeakMap;function p(e,r){if("at"in Array.prototype)return Array.prototype.at.call(e,r);let t=function(e,r){let t=e.length,o=b(r),n=o>=0?o:t+o;return n<0||n>=t?-1:n}(e,r);return -1===t?void 0:e[t]}function b(e){return e!=e||0===e?0:Math.trunc(e)}a=new WeakMap},8905:(e,r,t)=>{t.d(r,{C:()=>a});var o=t(2115),n=t(6101),l=t(2712),a=e=>{let{present:r,children:t}=e,a=function(e){var r,t;let[n,a]=o.useState(),i=o.useRef(null),c=o.useRef(e),d=o.useRef("none"),[u,m]=(r=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},o.useReducer((e,r)=>{let o=t[e][r];return null!=o?o:e},r));return o.useEffect(()=>{let e=s(i.current);d.current="mounted"===u?e:"none"},[u]),(0,l.N)(()=>{let r=i.current,t=c.current;if(t!==e){let o=d.current,n=s(r);e?m("MOUNT"):"none"===n||(null==r?void 0:r.display)==="none"?m("UNMOUNT"):t&&o!==n?m("ANIMATION_OUT"):m("UNMOUNT"),c.current=e}},[e,m]),(0,l.N)(()=>{if(n){var e;let r,t=null!=(e=n.ownerDocument.defaultView)?e:window,o=e=>{let o=s(i.current).includes(e.animationName);if(e.target===n&&o&&(m("ANIMATION_END"),!c.current)){let e=n.style.animationFillMode;n.style.animationFillMode="forwards",r=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=e)})}},l=e=>{e.target===n&&(d.current=s(i.current))};return n.addEventListener("animationstart",l),n.addEventListener("animationcancel",o),n.addEventListener("animationend",o),()=>{t.clearTimeout(r),n.removeEventListener("animationstart",l),n.removeEventListener("animationcancel",o),n.removeEventListener("animationend",o)}}m("ANIMATION_END")},[n,m]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:o.useCallback(e=>{i.current=e?getComputedStyle(e):null,a(e)},[])}}(r),i="function"==typeof t?t({present:a.isPresent}):o.Children.only(t),c=(0,n.s)(a.ref,function(e){var r,t;let o=null==(r=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:r.get,n=o&&"isReactWarning"in o&&o.isReactWarning;return n?e.ref:(n=(o=null==(t=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:t.get)&&"isReactWarning"in o&&o.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof t||a.isPresent?o.cloneElement(i,{ref:c}):null};function s(e){return(null==e?void 0:e.animationName)||"none"}a.displayName="Presence"},9033:(e,r,t)=>{t.d(r,{c:()=>n});var o=t(2115);function n(e){let r=o.useRef(e);return o.useEffect(()=>{r.current=e}),o.useMemo(()=>(...e)=>r.current?.(...e),[])}},9196:(e,r,t)=>{t.d(r,{RG:()=>x,bL:()=>T,q7:()=>j});var o=t(2115),n=t(5185),l=t(7328),a=t(6101),s=t(6081),i=t(1285),c=t(3655),d=t(9033),u=t(5845),m=t(4315),f=t(5155),p="rovingFocusGroup.onEntryFocus",b={bubbles:!1,cancelable:!0},g="RovingFocusGroup",[h,v,y]=(0,l.N)(g),[w,x]=(0,s.A)(g,[y]),[k,N]=w(g),E=o.forwardRef((e,r)=>(0,f.jsx)(h.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,f.jsx)(h.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,f.jsx)(C,{...e,ref:r})})}));E.displayName=g;var C=o.forwardRef((e,r)=>{let{__scopeRovingFocusGroup:t,orientation:l,loop:s=!1,dir:i,currentTabStopId:h,defaultCurrentTabStopId:y,onCurrentTabStopIdChange:w,onEntryFocus:x,preventScrollOnEntryFocus:N=!1,...E}=e,C=o.useRef(null),z=(0,a.s)(r,C),S=(0,m.jH)(i),[A,T]=(0,u.i)({prop:h,defaultProp:null!=y?y:null,onChange:w,caller:g}),[j,R]=o.useState(!1),I=(0,d.c)(x),O=v(t),P=o.useRef(!1),[L,_]=o.useState(0);return o.useEffect(()=>{let e=C.current;if(e)return e.addEventListener(p,I),()=>e.removeEventListener(p,I)},[I]),(0,f.jsx)(k,{scope:t,orientation:l,dir:S,loop:s,currentTabStopId:A,onItemFocus:o.useCallback(e=>T(e),[T]),onItemShiftTab:o.useCallback(()=>R(!0),[]),onFocusableItemAdd:o.useCallback(()=>_(e=>e+1),[]),onFocusableItemRemove:o.useCallback(()=>_(e=>e-1),[]),children:(0,f.jsx)(c.sG.div,{tabIndex:j||0===L?-1:0,"data-orientation":l,...E,ref:z,style:{outline:"none",...e.style},onMouseDown:(0,n.m)(e.onMouseDown,()=>{P.current=!0}),onFocus:(0,n.m)(e.onFocus,e=>{let r=!P.current;if(e.target===e.currentTarget&&r&&!j){let r=new CustomEvent(p,b);if(e.currentTarget.dispatchEvent(r),!r.defaultPrevented){let e=O().filter(e=>e.focusable);M([e.find(e=>e.active),e.find(e=>e.id===A),...e].filter(Boolean).map(e=>e.ref.current),N)}}P.current=!1}),onBlur:(0,n.m)(e.onBlur,()=>R(!1))})})}),z="RovingFocusGroupItem",S=o.forwardRef((e,r)=>{let{__scopeRovingFocusGroup:t,focusable:l=!0,active:a=!1,tabStopId:s,children:d,...u}=e,m=(0,i.B)(),p=s||m,b=N(z,t),g=b.currentTabStopId===p,y=v(t),{onFocusableItemAdd:w,onFocusableItemRemove:x,currentTabStopId:k}=b;return o.useEffect(()=>{if(l)return w(),()=>x()},[l,w,x]),(0,f.jsx)(h.ItemSlot,{scope:t,id:p,focusable:l,active:a,children:(0,f.jsx)(c.sG.span,{tabIndex:g?0:-1,"data-orientation":b.orientation,...u,ref:r,onMouseDown:(0,n.m)(e.onMouseDown,e=>{l?b.onItemFocus(p):e.preventDefault()}),onFocus:(0,n.m)(e.onFocus,()=>b.onItemFocus(p)),onKeyDown:(0,n.m)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void b.onItemShiftTab();if(e.target!==e.currentTarget)return;let r=function(e,r,t){var o;let n=(o=e.key,"rtl"!==t?o:"ArrowLeft"===o?"ArrowRight":"ArrowRight"===o?"ArrowLeft":o);if(!("vertical"===r&&["ArrowLeft","ArrowRight"].includes(n))&&!("horizontal"===r&&["ArrowUp","ArrowDown"].includes(n)))return A[n]}(e,b.orientation,b.dir);if(void 0!==r){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let t=y().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===r)t.reverse();else if("prev"===r||"next"===r){"prev"===r&&t.reverse();let o=t.indexOf(e.currentTarget);t=b.loop?function(e,r){return e.map((t,o)=>e[(r+o)%e.length])}(t,o+1):t.slice(o+1)}setTimeout(()=>M(t))}}),children:"function"==typeof d?d({isCurrentTabStop:g,hasTabStop:null!=k}):d})})});S.displayName=z;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function M(e){let r=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=document.activeElement;for(let o of e)if(o===t||(o.focus({preventScroll:r}),document.activeElement!==t))return}var T=E,j=S},9688:(e,r,t)=>{t.d(r,{QP:()=>ec});let o=e=>{let r=s(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{let t=e.split("-");return""===t[0]&&1!==t.length&&t.shift(),n(t,r)||a(e)},getConflictingClassGroupIds:(e,r)=>{let n=t[e]||[];return r&&o[e]?[...n,...o[e]]:n}}},n=(e,r)=>{if(0===e.length)return r.classGroupId;let t=e[0],o=r.nextPart.get(t),l=o?n(e.slice(1),o):void 0;if(l)return l;if(0===r.validators.length)return;let a=e.join("-");return r.validators.find(({validator:e})=>e(a))?.classGroupId},l=/^\[(.+)\]$/,a=e=>{if(l.test(e)){let r=l.exec(e)[1],t=r?.substring(0,r.indexOf(":"));if(t)return"arbitrary.."+t}},s=e=>{let{theme:r,classGroups:t}=e,o={nextPart:new Map,validators:[]};for(let e in t)i(t[e],o,e,r);return o},i=(e,r,t,o)=>{e.forEach(e=>{if("string"==typeof e){(""===e?r:c(r,e)).classGroupId=t;return}if("function"==typeof e)return d(e)?void i(e(o),r,t,o):void r.validators.push({validator:e,classGroupId:t});Object.entries(e).forEach(([e,n])=>{i(n,c(r,e),t,o)})})},c=(e,r)=>{let t=e;return r.split("-").forEach(e=>{t.nextPart.has(e)||t.nextPart.set(e,{nextPart:new Map,validators:[]}),t=t.nextPart.get(e)}),t},d=e=>e.isThemeGetter,u=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,t=new Map,o=new Map,n=(n,l)=>{t.set(n,l),++r>e&&(r=0,o=t,t=new Map)};return{get(e){let r=t.get(e);return void 0!==r?r:void 0!==(r=o.get(e))?(n(e,r),r):void 0},set(e,r){t.has(e)?t.set(e,r):n(e,r)}}},m=e=>{let{prefix:r,experimentalParseClassName:t}=e,o=e=>{let r,t=[],o=0,n=0,l=0;for(let a=0;al?r-l:void 0}};if(r){let e=r+":",t=o;o=r=>r.startsWith(e)?t(r.substring(e.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:r,maybePostfixModifierPosition:void 0}}if(t){let e=o;o=r=>t({className:r,parseClassName:e})}return o},f=e=>e.endsWith("!")?e.substring(0,e.length-1):e.startsWith("!")?e.substring(1):e,p=e=>{let r=Object.fromEntries(e.orderSensitiveModifiers.map(e=>[e,!0]));return e=>{if(e.length<=1)return e;let t=[],o=[];return e.forEach(e=>{"["===e[0]||r[e]?(t.push(...o.sort(),e),o=[]):o.push(e)}),t.push(...o.sort()),t}},b=e=>({cache:u(e.cacheSize),parseClassName:m(e),sortModifiers:p(e),...o(e)}),g=/\s+/,h=(e,r)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:l}=r,a=[],s=e.trim().split(g),i="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{isExternal:c,modifiers:d,hasImportantModifier:u,baseClassName:m,maybePostfixModifierPosition:f}=t(r);if(c){i=r+(i.length>0?" "+i:i);continue}let p=!!f,b=o(p?m.substring(0,f):m);if(!b){if(!p||!(b=o(m))){i=r+(i.length>0?" "+i:i);continue}p=!1}let g=l(d).join(":"),h=u?g+"!":g,v=h+b;if(a.includes(v))continue;a.push(v);let y=n(b,p);for(let e=0;e0?" "+i:i)}return i};function v(){let e,r,t=0,o="";for(;t{let r;if("string"==typeof e)return e;let t="";for(let o=0;o{let r=r=>r[e]||[];return r.isThemeGetter=!0,r},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,k=/^\((?:(\w[\w-]*):)?(.+)\)$/i,N=/^\d+\/\d+$/,E=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,C=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,z=/^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/,S=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,A=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,M=e=>N.test(e),T=e=>!!e&&!Number.isNaN(Number(e)),j=e=>!!e&&Number.isInteger(Number(e)),R=e=>e.endsWith("%")&&T(e.slice(0,-1)),I=e=>E.test(e),O=()=>!0,P=e=>C.test(e)&&!z.test(e),L=()=>!1,_=e=>S.test(e),$=e=>A.test(e),D=e=>!G(e)&&!q(e),F=e=>ee(e,en,L),G=e=>x.test(e),W=e=>ee(e,el,P),U=e=>ee(e,ea,T),K=e=>ee(e,et,L),V=e=>ee(e,eo,$),B=e=>ee(e,ei,_),q=e=>k.test(e),H=e=>er(e,el),Z=e=>er(e,es),X=e=>er(e,et),J=e=>er(e,en),Q=e=>er(e,eo),Y=e=>er(e,ei,!0),ee=(e,r,t)=>{let o=x.exec(e);return!!o&&(o[1]?r(o[1]):t(o[2]))},er=(e,r,t=!1)=>{let o=k.exec(e);return!!o&&(o[1]?r(o[1]):t)},et=e=>"position"===e||"percentage"===e,eo=e=>"image"===e||"url"===e,en=e=>"length"===e||"size"===e||"bg-size"===e,el=e=>"length"===e,ea=e=>"number"===e,es=e=>"family-name"===e,ei=e=>"shadow"===e;Symbol.toStringTag;let ec=function(e,...r){let t,o,n,l=function(s){return o=(t=b(r.reduce((e,r)=>r(e),e()))).cache.get,n=t.cache.set,l=a,a(s)};function a(e){let r=o(e);if(r)return r;let l=h(e,t);return n(e,l),l}return function(){return l(v.apply(null,arguments))}}(()=>{let e=w("color"),r=w("font"),t=w("text"),o=w("font-weight"),n=w("tracking"),l=w("leading"),a=w("breakpoint"),s=w("container"),i=w("spacing"),c=w("radius"),d=w("shadow"),u=w("inset-shadow"),m=w("text-shadow"),f=w("drop-shadow"),p=w("blur"),b=w("perspective"),g=w("aspect"),h=w("ease"),v=w("animate"),y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],k=()=>[...x(),q,G],N=()=>["auto","hidden","clip","visible","scroll"],E=()=>["auto","contain","none"],C=()=>[q,G,i],z=()=>[M,"full","auto",...C()],S=()=>[j,"none","subgrid",q,G],A=()=>["auto",{span:["full",j,q,G]},j,q,G],P=()=>[j,"auto",q,G],L=()=>["auto","min","max","fr",q,G],_=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],$=()=>["start","end","center","stretch","center-safe","end-safe"],ee=()=>["auto",...C()],er=()=>[M,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...C()],et=()=>[e,q,G],eo=()=>[...x(),X,K,{position:[q,G]}],en=()=>["no-repeat",{repeat:["","x","y","space","round"]}],el=()=>["auto","cover","contain",J,F,{size:[q,G]}],ea=()=>[R,H,W],es=()=>["","none","full",c,q,G],ei=()=>["",T,H,W],ec=()=>["solid","dashed","dotted","double"],ed=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eu=()=>[T,R,X,K],em=()=>["","none",p,q,G],ef=()=>["none",T,q,G],ep=()=>["none",T,q,G],eb=()=>[T,q,G],eg=()=>[M,"full",...C()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[I],breakpoint:[I],color:[O],container:[I],"drop-shadow":[I],ease:["in","out","in-out"],font:[D],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[I],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[I],shadow:[I],spacing:["px",T],text:[I],"text-shadow":[I],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",M,G,q,g]}],container:["container"],columns:[{columns:[T,G,q,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:k()}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:E()}],"overscroll-x":[{"overscroll-x":E()}],"overscroll-y":[{"overscroll-y":E()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:z()}],"inset-x":[{"inset-x":z()}],"inset-y":[{"inset-y":z()}],start:[{start:z()}],end:[{end:z()}],top:[{top:z()}],right:[{right:z()}],bottom:[{bottom:z()}],left:[{left:z()}],visibility:["visible","invisible","collapse"],z:[{z:[j,"auto",q,G]}],basis:[{basis:[M,"full","auto",s,...C()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[T,M,"auto","initial","none",G]}],grow:[{grow:["",T,q,G]}],shrink:[{shrink:["",T,q,G]}],order:[{order:[j,"first","last","none",q,G]}],"grid-cols":[{"grid-cols":S()}],"col-start-end":[{col:A()}],"col-start":[{"col-start":P()}],"col-end":[{"col-end":P()}],"grid-rows":[{"grid-rows":S()}],"row-start-end":[{row:A()}],"row-start":[{"row-start":P()}],"row-end":[{"row-end":P()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":L()}],"auto-rows":[{"auto-rows":L()}],gap:[{gap:C()}],"gap-x":[{"gap-x":C()}],"gap-y":[{"gap-y":C()}],"justify-content":[{justify:[..._(),"normal"]}],"justify-items":[{"justify-items":[...$(),"normal"]}],"justify-self":[{"justify-self":["auto",...$()]}],"align-content":[{content:["normal",..._()]}],"align-items":[{items:[...$(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...$(),{baseline:["","last"]}]}],"place-content":[{"place-content":_()}],"place-items":[{"place-items":[...$(),"baseline"]}],"place-self":[{"place-self":["auto",...$()]}],p:[{p:C()}],px:[{px:C()}],py:[{py:C()}],ps:[{ps:C()}],pe:[{pe:C()}],pt:[{pt:C()}],pr:[{pr:C()}],pb:[{pb:C()}],pl:[{pl:C()}],m:[{m:ee()}],mx:[{mx:ee()}],my:[{my:ee()}],ms:[{ms:ee()}],me:[{me:ee()}],mt:[{mt:ee()}],mr:[{mr:ee()}],mb:[{mb:ee()}],ml:[{ml:ee()}],"space-x":[{"space-x":C()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":C()}],"space-y-reverse":["space-y-reverse"],size:[{size:er()}],w:[{w:[s,"screen",...er()]}],"min-w":[{"min-w":[s,"screen","none",...er()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[a]},...er()]}],h:[{h:["screen","lh",...er()]}],"min-h":[{"min-h":["screen","lh","none",...er()]}],"max-h":[{"max-h":["screen","lh",...er()]}],"font-size":[{text:["base",t,H,W]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,q,U]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",R,G]}],"font-family":[{font:[Z,G,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,q,G]}],"line-clamp":[{"line-clamp":[T,"none",q,U]}],leading:[{leading:[l,...C()]}],"list-image":[{"list-image":["none",q,G]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",q,G]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:et()}],"text-color":[{text:et()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ec(),"wavy"]}],"text-decoration-thickness":[{decoration:[T,"from-font","auto",q,W]}],"text-decoration-color":[{decoration:et()}],"underline-offset":[{"underline-offset":[T,"auto",q,G]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:C()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",q,G]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",q,G]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:eo()}],"bg-repeat":[{bg:en()}],"bg-size":[{bg:el()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},j,q,G],radial:["",q,G],conic:[j,q,G]},Q,V]}],"bg-color":[{bg:et()}],"gradient-from-pos":[{from:ea()}],"gradient-via-pos":[{via:ea()}],"gradient-to-pos":[{to:ea()}],"gradient-from":[{from:et()}],"gradient-via":[{via:et()}],"gradient-to":[{to:et()}],rounded:[{rounded:es()}],"rounded-s":[{"rounded-s":es()}],"rounded-e":[{"rounded-e":es()}],"rounded-t":[{"rounded-t":es()}],"rounded-r":[{"rounded-r":es()}],"rounded-b":[{"rounded-b":es()}],"rounded-l":[{"rounded-l":es()}],"rounded-ss":[{"rounded-ss":es()}],"rounded-se":[{"rounded-se":es()}],"rounded-ee":[{"rounded-ee":es()}],"rounded-es":[{"rounded-es":es()}],"rounded-tl":[{"rounded-tl":es()}],"rounded-tr":[{"rounded-tr":es()}],"rounded-br":[{"rounded-br":es()}],"rounded-bl":[{"rounded-bl":es()}],"border-w":[{border:ei()}],"border-w-x":[{"border-x":ei()}],"border-w-y":[{"border-y":ei()}],"border-w-s":[{"border-s":ei()}],"border-w-e":[{"border-e":ei()}],"border-w-t":[{"border-t":ei()}],"border-w-r":[{"border-r":ei()}],"border-w-b":[{"border-b":ei()}],"border-w-l":[{"border-l":ei()}],"divide-x":[{"divide-x":ei()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ei()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ec(),"hidden","none"]}],"divide-style":[{divide:[...ec(),"hidden","none"]}],"border-color":[{border:et()}],"border-color-x":[{"border-x":et()}],"border-color-y":[{"border-y":et()}],"border-color-s":[{"border-s":et()}],"border-color-e":[{"border-e":et()}],"border-color-t":[{"border-t":et()}],"border-color-r":[{"border-r":et()}],"border-color-b":[{"border-b":et()}],"border-color-l":[{"border-l":et()}],"divide-color":[{divide:et()}],"outline-style":[{outline:[...ec(),"none","hidden"]}],"outline-offset":[{"outline-offset":[T,q,G]}],"outline-w":[{outline:["",T,H,W]}],"outline-color":[{outline:et()}],shadow:[{shadow:["","none",d,Y,B]}],"shadow-color":[{shadow:et()}],"inset-shadow":[{"inset-shadow":["none",u,Y,B]}],"inset-shadow-color":[{"inset-shadow":et()}],"ring-w":[{ring:ei()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:et()}],"ring-offset-w":[{"ring-offset":[T,W]}],"ring-offset-color":[{"ring-offset":et()}],"inset-ring-w":[{"inset-ring":ei()}],"inset-ring-color":[{"inset-ring":et()}],"text-shadow":[{"text-shadow":["none",m,Y,B]}],"text-shadow-color":[{"text-shadow":et()}],opacity:[{opacity:[T,q,G]}],"mix-blend":[{"mix-blend":[...ed(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ed()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[T]}],"mask-image-linear-from-pos":[{"mask-linear-from":eu()}],"mask-image-linear-to-pos":[{"mask-linear-to":eu()}],"mask-image-linear-from-color":[{"mask-linear-from":et()}],"mask-image-linear-to-color":[{"mask-linear-to":et()}],"mask-image-t-from-pos":[{"mask-t-from":eu()}],"mask-image-t-to-pos":[{"mask-t-to":eu()}],"mask-image-t-from-color":[{"mask-t-from":et()}],"mask-image-t-to-color":[{"mask-t-to":et()}],"mask-image-r-from-pos":[{"mask-r-from":eu()}],"mask-image-r-to-pos":[{"mask-r-to":eu()}],"mask-image-r-from-color":[{"mask-r-from":et()}],"mask-image-r-to-color":[{"mask-r-to":et()}],"mask-image-b-from-pos":[{"mask-b-from":eu()}],"mask-image-b-to-pos":[{"mask-b-to":eu()}],"mask-image-b-from-color":[{"mask-b-from":et()}],"mask-image-b-to-color":[{"mask-b-to":et()}],"mask-image-l-from-pos":[{"mask-l-from":eu()}],"mask-image-l-to-pos":[{"mask-l-to":eu()}],"mask-image-l-from-color":[{"mask-l-from":et()}],"mask-image-l-to-color":[{"mask-l-to":et()}],"mask-image-x-from-pos":[{"mask-x-from":eu()}],"mask-image-x-to-pos":[{"mask-x-to":eu()}],"mask-image-x-from-color":[{"mask-x-from":et()}],"mask-image-x-to-color":[{"mask-x-to":et()}],"mask-image-y-from-pos":[{"mask-y-from":eu()}],"mask-image-y-to-pos":[{"mask-y-to":eu()}],"mask-image-y-from-color":[{"mask-y-from":et()}],"mask-image-y-to-color":[{"mask-y-to":et()}],"mask-image-radial":[{"mask-radial":[q,G]}],"mask-image-radial-from-pos":[{"mask-radial-from":eu()}],"mask-image-radial-to-pos":[{"mask-radial-to":eu()}],"mask-image-radial-from-color":[{"mask-radial-from":et()}],"mask-image-radial-to-color":[{"mask-radial-to":et()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[T]}],"mask-image-conic-from-pos":[{"mask-conic-from":eu()}],"mask-image-conic-to-pos":[{"mask-conic-to":eu()}],"mask-image-conic-from-color":[{"mask-conic-from":et()}],"mask-image-conic-to-color":[{"mask-conic-to":et()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:eo()}],"mask-repeat":[{mask:en()}],"mask-size":[{mask:el()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",q,G]}],filter:[{filter:["","none",q,G]}],blur:[{blur:em()}],brightness:[{brightness:[T,q,G]}],contrast:[{contrast:[T,q,G]}],"drop-shadow":[{"drop-shadow":["","none",f,Y,B]}],"drop-shadow-color":[{"drop-shadow":et()}],grayscale:[{grayscale:["",T,q,G]}],"hue-rotate":[{"hue-rotate":[T,q,G]}],invert:[{invert:["",T,q,G]}],saturate:[{saturate:[T,q,G]}],sepia:[{sepia:["",T,q,G]}],"backdrop-filter":[{"backdrop-filter":["","none",q,G]}],"backdrop-blur":[{"backdrop-blur":em()}],"backdrop-brightness":[{"backdrop-brightness":[T,q,G]}],"backdrop-contrast":[{"backdrop-contrast":[T,q,G]}],"backdrop-grayscale":[{"backdrop-grayscale":["",T,q,G]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[T,q,G]}],"backdrop-invert":[{"backdrop-invert":["",T,q,G]}],"backdrop-opacity":[{"backdrop-opacity":[T,q,G]}],"backdrop-saturate":[{"backdrop-saturate":[T,q,G]}],"backdrop-sepia":[{"backdrop-sepia":["",T,q,G]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":C()}],"border-spacing-x":[{"border-spacing-x":C()}],"border-spacing-y":[{"border-spacing-y":C()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",q,G]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[T,"initial",q,G]}],ease:[{ease:["linear","initial",h,q,G]}],delay:[{delay:[T,q,G]}],animate:[{animate:["none",v,q,G]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,q,G]}],"perspective-origin":[{"perspective-origin":k()}],rotate:[{rotate:ef()}],"rotate-x":[{"rotate-x":ef()}],"rotate-y":[{"rotate-y":ef()}],"rotate-z":[{"rotate-z":ef()}],scale:[{scale:ep()}],"scale-x":[{"scale-x":ep()}],"scale-y":[{"scale-y":ep()}],"scale-z":[{"scale-z":ep()}],"scale-3d":["scale-3d"],skew:[{skew:eb()}],"skew-x":[{"skew-x":eb()}],"skew-y":[{"skew-y":eb()}],transform:[{transform:[q,G,"","none","gpu","cpu"]}],"transform-origin":[{origin:k()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:eg()}],"translate-x":[{"translate-x":eg()}],"translate-y":[{"translate-y":eg()}],"translate-z":[{"translate-z":eg()}],"translate-none":["translate-none"],accent:[{accent:et()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:et()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",q,G]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":C()}],"scroll-mx":[{"scroll-mx":C()}],"scroll-my":[{"scroll-my":C()}],"scroll-ms":[{"scroll-ms":C()}],"scroll-me":[{"scroll-me":C()}],"scroll-mt":[{"scroll-mt":C()}],"scroll-mr":[{"scroll-mr":C()}],"scroll-mb":[{"scroll-mb":C()}],"scroll-ml":[{"scroll-ml":C()}],"scroll-p":[{"scroll-p":C()}],"scroll-px":[{"scroll-px":C()}],"scroll-py":[{"scroll-py":C()}],"scroll-ps":[{"scroll-ps":C()}],"scroll-pe":[{"scroll-pe":C()}],"scroll-pt":[{"scroll-pt":C()}],"scroll-pr":[{"scroll-pr":C()}],"scroll-pb":[{"scroll-pb":C()}],"scroll-pl":[{"scroll-pl":C()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",q,G]}],fill:[{fill:["none",...et()]}],"stroke-w":[{stroke:[T,H,W,U]}],stroke:[{stroke:["none",...et()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})},9708:(e,r,t)=>{t.d(r,{DX:()=>s,Dc:()=>c,TL:()=>a});var o=t(2115),n=t(6101),l=t(5155);function a(e){let r=function(e){let r=o.forwardRef((e,r)=>{let{children:t,...l}=e;if(o.isValidElement(t)){var a;let e,s,i=(a=t,(s=(e=Object.getOwnPropertyDescriptor(a.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.ref:(s=(e=Object.getOwnPropertyDescriptor(a,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?a.props.ref:a.props.ref||a.ref),c=function(e,r){let t={...r};for(let o in r){let n=e[o],l=r[o];/^on[A-Z]/.test(o)?n&&l?t[o]=(...e)=>{let r=l(...e);return n(...e),r}:n&&(t[o]=n):"style"===o?t[o]={...n,...l}:"className"===o&&(t[o]=[n,l].filter(Boolean).join(" "))}return{...e,...t}}(l,t.props);return t.type!==o.Fragment&&(c.ref=r?(0,n.t)(r,i):i),o.cloneElement(t,c)}return o.Children.count(t)>1?o.Children.only(null):null});return r.displayName=`${e}.SlotClone`,r}(e),t=o.forwardRef((e,t)=>{let{children:n,...a}=e,s=o.Children.toArray(n),i=s.find(d);if(i){let e=i.props.children,n=s.map(r=>r!==i?r:o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null);return(0,l.jsx)(r,{...a,ref:t,children:o.isValidElement(e)?o.cloneElement(e,void 0,n):null})}return(0,l.jsx)(r,{...a,ref:t,children:n})});return t.displayName=`${e}.Slot`,t}var s=a("Slot"),i=Symbol("radix.slottable");function c(e){let r=({children:e})=>(0,l.jsx)(l.Fragment,{children:e});return r.displayName=`${e}.Slottable`,r.__radixId=i,r}function d(e){return o.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===i}},9946:(e,r,t)=>{t.d(r,{A:()=>u});var o=t(2115);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),a=e=>{let r=l(e);return r.charAt(0).toUpperCase()+r.slice(1)},s=function(){for(var e=arguments.length,r=Array(e),t=0;t!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()},i=e=>{for(let r in e)if(r.startsWith("aria-")||"role"===r||"title"===r)return!0};var c={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=(0,o.forwardRef)((e,r)=>{let{color:t="currentColor",size:n=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:d="",children:u,iconNode:m,...f}=e;return(0,o.createElement)("svg",{ref:r,...c,width:n,height:n,stroke:t,strokeWidth:a?24*Number(l)/Number(n):l,className:s("lucide",d),...!u&&!i(f)&&{"aria-hidden":"true"},...f},[...m.map(e=>{let[r,t]=e;return(0,o.createElement)(r,t)}),...Array.isArray(u)?u:[u]])}),u=(e,r)=>{let t=(0,o.forwardRef)((t,l)=>{let{className:i,...c}=t;return(0,o.createElement)(d,{ref:l,iconNode:r,className:s("lucide-".concat(n(a(e))),"lucide-".concat(e),i),...c})});return t.displayName=a(e),t}}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/189-34927d98e5a18740.js b/transports/bifrost-http/ui/_next/static/chunks/189-34927d98e5a18740.js new file mode 100644 index 0000000000..5de8e3b9b1 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/189-34927d98e5a18740.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[189],{1275:(t,e,a)=>{a.d(e,{X:()=>n});var o=a(2115),r=a(2712);function n(t){let[e,a]=o.useState(void 0);return(0,r.N)(()=>{if(t){a({width:t.offsetWidth,height:t.offsetHeight});let e=new ResizeObserver(e=>{let o,r;if(!Array.isArray(e)||!e.length)return;let n=e[0];if("borderBoxSize"in n){let t=n.borderBoxSize,e=Array.isArray(t)?t[0]:t;o=e.inlineSize,r=e.blockSize}else o=t.offsetWidth,r=t.offsetHeight;a({width:o,height:r})});return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}a(void 0)},[t]),e}},6671:(t,e,a)=>{a.d(e,{Toaster:()=>k,o:()=>v});var o=a(2115),r=a(7650);let n=t=>{switch(t){case"success":return l;case"info":return c;case"warning":return d;case"error":return u;default:return null}},s=Array(12).fill(0),i=t=>{let{visible:e,className:a}=t;return o.createElement("div",{className:["sonner-loading-wrapper",a].filter(Boolean).join(" "),"data-visible":e},o.createElement("div",{className:"sonner-spinner"},s.map((t,e)=>o.createElement("div",{className:"sonner-loading-bar",key:"spinner-bar-".concat(e)}))))},l=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),d=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),c=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),u=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},o.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),f=o.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},o.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),o.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),m=()=>{let[t,e]=o.useState(document.hidden);return o.useEffect(()=>{let t=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t},p=1;class h{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:a,...o}=t,r="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:p++,n=this.toasts.find(t=>t.id===r),s=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(r)&&this.dismissedToasts.delete(r),n?this.toasts=this.toasts.map(e=>e.id===r?(this.publish({...e,...t,id:r,title:a}),{...e,...t,id:r,dismissible:s,title:a}):e):this.addToast({title:a,...o,dismissible:s,id:r}),r},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,e)=>{let a,r;if(!e)return;void 0!==e.loading&&(r=this.create({...e,promise:t,type:"loading",message:e.loading,description:"function"!=typeof e.description?e.description:void 0}));let n=Promise.resolve(t instanceof Function?t():t),s=void 0!==r,i=n.then(async t=>{if(a=["resolve",t],o.isValidElement(t))s=!1,this.create({id:r,type:"default",message:t});else if(b(t)&&!t.ok){s=!1;let a="function"==typeof e.error?await e.error("HTTP error! status: ".concat(t.status)):e.error,n="function"==typeof e.description?await e.description("HTTP error! status: ".concat(t.status)):e.description,i="object"!=typeof a||o.isValidElement(a)?{message:a}:a;this.create({id:r,type:"error",description:n,...i})}else if(t instanceof Error){s=!1;let a="function"==typeof e.error?await e.error(t):e.error,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof a||o.isValidElement(a)?{message:a}:a;this.create({id:r,type:"error",description:n,...i})}else if(void 0!==e.success){s=!1;let a="function"==typeof e.success?await e.success(t):e.success,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof a||o.isValidElement(a)?{message:a}:a;this.create({id:r,type:"success",description:n,...i})}}).catch(async t=>{if(a=["reject",t],void 0!==e.error){s=!1;let a="function"==typeof e.error?await e.error(t):e.error,n="function"==typeof e.description?await e.description(t):e.description,i="object"!=typeof a||o.isValidElement(a)?{message:a}:a;this.create({id:r,type:"error",description:n,...i})}}).finally(()=>{s&&(this.dismiss(r),r=void 0),null==e.finally||e.finally.call(e)}),l=()=>new Promise((t,e)=>i.then(()=>"reject"===a[0]?e(a[1]):t(a[1])).catch(e));return"string"!=typeof r&&"number"!=typeof r?{unwrap:l}:Object.assign(r,{unwrap:l})},this.custom=(t,e)=>{let a=(null==e?void 0:e.id)||p++;return this.create({jsx:t(a),id:a,...e}),a},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}let g=new h,b=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,v=Object.assign((t,e)=>{let a=(null==e?void 0:e.id)||p++;return g.addToast({title:t,...e,id:a}),a},{success:g.success,info:g.info,warning:g.warning,error:g.error,custom:g.custom,message:g.message,promise:g.promise,dismiss:g.dismiss,loading:g.loading},{getHistory:()=>g.toasts,getToasts:()=>g.getActiveToasts()});function y(t){return void 0!==t.label}function w(){for(var t=arguments.length,e=Array(t),a=0;asvg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let x=t=>{var e,a,r,s,l,d,c,u,p,h,g;let{invert:b,toast:v,unstyled:x,interacting:E,setHeights:k,visibleToasts:N,heights:S,index:M,toasts:T,expanded:B,removeToast:z,defaultRichColors:C,closeButton:j,style:R,cancelButtonStyle:A,actionButtonStyle:Y,className:D="",descriptionClassName:P="",duration:I,position:L,gap:H,expandByDefault:V,classNames:X,icons:U,closeButtonAriaLabel:F="Close toast"}=t,[O,W]=o.useState(null),[_,K]=o.useState(null),[q,G]=o.useState(!1),[J,Q]=o.useState(!1),[Z,$]=o.useState(!1),[tt,te]=o.useState(!1),[ta,to]=o.useState(!1),[tr,tn]=o.useState(0),[ts,ti]=o.useState(0),tl=o.useRef(v.duration||I||4e3),td=o.useRef(null),tc=o.useRef(null),tu=0===M,tf=M+1<=N,tm=v.type,tp=!1!==v.dismissible,th=v.className||"",tg=v.descriptionClassName||"",tb=o.useMemo(()=>S.findIndex(t=>t.toastId===v.id)||0,[S,v.id]),tv=o.useMemo(()=>{var t;return null!=(t=v.closeButton)?t:j},[v.closeButton,j]),ty=o.useMemo(()=>v.duration||I||4e3,[v.duration,I]),tw=o.useRef(0),tx=o.useRef(0),tE=o.useRef(0),tk=o.useRef(null),[tN,tS]=L.split("-"),tM=o.useMemo(()=>S.reduce((t,e,a)=>a>=tb?t:t+e.height,0),[S,tb]),tT=m(),tB=v.invert||b,tz="loading"===tm;tx.current=o.useMemo(()=>tb*H+tM,[tb,tM]),o.useEffect(()=>{tl.current=ty},[ty]),o.useEffect(()=>{G(!0)},[]),o.useEffect(()=>{let t=tc.current;if(t){let e=t.getBoundingClientRect().height;return ti(e),k(t=>[{toastId:v.id,height:e,position:v.position},...t]),()=>k(t=>t.filter(t=>t.toastId!==v.id))}},[k,v.id]),o.useLayoutEffect(()=>{if(!q)return;let t=tc.current,e=t.style.height;t.style.height="auto";let a=t.getBoundingClientRect().height;t.style.height=e,ti(a),k(t=>t.find(t=>t.toastId===v.id)?t.map(t=>t.toastId===v.id?{...t,height:a}:t):[{toastId:v.id,height:a,position:v.position},...t])},[q,v.title,v.description,k,v.id,v.jsx,v.action,v.cancel]);let tC=o.useCallback(()=>{Q(!0),tn(tx.current),k(t=>t.filter(t=>t.toastId!==v.id)),setTimeout(()=>{z(v)},200)},[v,z,k,tx]);o.useEffect(()=>{let t;if((!v.promise||"loading"!==tm)&&v.duration!==1/0&&"loading"!==v.type)return B||E||tT?(()=>{if(tE.current{null==v.onAutoClose||v.onAutoClose.call(v,v),tC()},tl.current)),()=>clearTimeout(t)},[B,E,v,tm,tT,tC]),o.useEffect(()=>{v.delete&&(tC(),null==v.onDismiss||v.onDismiss.call(v,v))},[tC,v.delete]);let tj=v.icon||(null==U?void 0:U[tm])||n(tm);return o.createElement("li",{tabIndex:0,ref:tc,className:w(D,th,null==X?void 0:X.toast,null==v||null==(e=v.classNames)?void 0:e.toast,null==X?void 0:X.default,null==X?void 0:X[tm],null==v||null==(a=v.classNames)?void 0:a[tm]),"data-sonner-toast":"","data-rich-colors":null!=(h=v.richColors)?h:C,"data-styled":!(v.jsx||v.unstyled||x),"data-mounted":q,"data-promise":!!v.promise,"data-swiped":ta,"data-removed":J,"data-visible":tf,"data-y-position":tN,"data-x-position":tS,"data-index":M,"data-front":tu,"data-swiping":Z,"data-dismissible":tp,"data-type":tm,"data-invert":tB,"data-swipe-out":tt,"data-swipe-direction":_,"data-expanded":!!(B||V&&q),style:{"--index":M,"--toasts-before":M,"--z-index":T.length-M,"--offset":"".concat(J?tr:tx.current,"px"),"--initial-height":V?"auto":"".concat(ts,"px"),...R,...v.style},onDragEnd:()=>{$(!1),W(null),tk.current=null},onPointerDown:t=>{!tz&&tp&&(td.current=new Date,tn(tx.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&($(!0),tk.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,a,o,r;if(tt||!tp)return;tk.current=null;let n=Number((null==(t=tc.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),s=Number((null==(e=tc.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),i=new Date().getTime()-(null==(a=td.current)?void 0:a.getTime()),l="x"===O?n:s,d=Math.abs(l)/i;if(Math.abs(l)>=45||d>.11){tn(tx.current),null==v.onDismiss||v.onDismiss.call(v,v),"x"===O?K(n>0?"right":"left"):K(s>0?"down":"up"),tC(),te(!0);return}null==(o=tc.current)||o.style.setProperty("--swipe-amount-x","0px"),null==(r=tc.current)||r.style.setProperty("--swipe-amount-y","0px"),to(!1),$(!1),W(null)},onPointerMove:e=>{var a,o,r,n;if(!tk.current||!tp||(null==(a=window.getSelection())?void 0:a.toString().length)>0)return;let s=e.clientY-tk.current.y,i=e.clientX-tk.current.x,l=null!=(n=t.swipeDirections)?n:function(t){let[e,a]=t.split("-"),o=[];return e&&o.push(e),a&&o.push(a),o}(L);!O&&(Math.abs(i)>1||Math.abs(s)>1)&&W(Math.abs(i)>Math.abs(s)?"x":"y");let d={x:0,y:0},c=t=>1/(1.5+Math.abs(t)/20);if("y"===O){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&s<0||l.includes("bottom")&&s>0)d.y=s;else{let t=s*c(s);d.y=Math.abs(t)0)d.x=i;else{let t=i*c(i);d.x=Math.abs(t)0||Math.abs(d.y)>0)&&to(!0),null==(o=tc.current)||o.style.setProperty("--swipe-amount-x","".concat(d.x,"px")),null==(r=tc.current)||r.style.setProperty("--swipe-amount-y","".concat(d.y,"px"))}},tv&&!v.jsx&&"loading"!==tm?o.createElement("button",{"aria-label":F,"data-disabled":tz,"data-close-button":!0,onClick:tz||!tp?()=>{}:()=>{tC(),null==v.onDismiss||v.onDismiss.call(v,v)},className:w(null==X?void 0:X.closeButton,null==v||null==(r=v.classNames)?void 0:r.closeButton)},null!=(g=null==U?void 0:U.close)?g:f):null,(tm||v.icon||v.promise)&&null!==v.icon&&((null==U?void 0:U[tm])!==null||v.icon)?o.createElement("div",{"data-icon":"",className:w(null==X?void 0:X.icon,null==v||null==(s=v.classNames)?void 0:s.icon)},v.promise||"loading"===v.type&&!v.icon?v.icon||function(){var t,e;return(null==U?void 0:U.loading)?o.createElement("div",{className:w(null==X?void 0:X.loader,null==v||null==(e=v.classNames)?void 0:e.loader,"sonner-loader"),"data-visible":"loading"===tm},U.loading):o.createElement(i,{className:w(null==X?void 0:X.loader,null==v||null==(t=v.classNames)?void 0:t.loader),visible:"loading"===tm})}():null,"loading"!==v.type?tj:null):null,o.createElement("div",{"data-content":"",className:w(null==X?void 0:X.content,null==v||null==(l=v.classNames)?void 0:l.content)},o.createElement("div",{"data-title":"",className:w(null==X?void 0:X.title,null==v||null==(d=v.classNames)?void 0:d.title)},v.jsx?v.jsx:"function"==typeof v.title?v.title():v.title),v.description?o.createElement("div",{"data-description":"",className:w(P,tg,null==X?void 0:X.description,null==v||null==(c=v.classNames)?void 0:c.description)},"function"==typeof v.description?v.description():v.description):null),o.isValidElement(v.cancel)?v.cancel:v.cancel&&y(v.cancel)?o.createElement("button",{"data-button":!0,"data-cancel":!0,style:v.cancelButtonStyle||A,onClick:t=>{y(v.cancel)&&tp&&(null==v.cancel.onClick||v.cancel.onClick.call(v.cancel,t),tC())},className:w(null==X?void 0:X.cancelButton,null==v||null==(u=v.classNames)?void 0:u.cancelButton)},v.cancel.label):null,o.isValidElement(v.action)?v.action:v.action&&y(v.action)?o.createElement("button",{"data-button":!0,"data-action":!0,style:v.actionButtonStyle||Y,onClick:t=>{y(v.action)&&(null==v.action.onClick||v.action.onClick.call(v.action,t),t.defaultPrevented||tC())},className:w(null==X?void 0:X.actionButton,null==v||null==(p=v.classNames)?void 0:p.actionButton)},v.action.label):null)};function E(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let k=o.forwardRef(function(t,e){let{invert:a,position:n="bottom-right",hotkey:s=["altKey","KeyT"],expand:i,closeButton:l,className:d,offset:c,mobileOffset:u,theme:f="light",richColors:m,duration:p,style:h,visibleToasts:b=3,toastOptions:v,dir:y=E(),gap:w=14,icons:k,containerAriaLabel:N="Notifications"}=t,[S,M]=o.useState([]),T=o.useMemo(()=>Array.from(new Set([n].concat(S.filter(t=>t.position).map(t=>t.position)))),[S,n]),[B,z]=o.useState([]),[C,j]=o.useState(!1),[R,A]=o.useState(!1),[Y,D]=o.useState("system"!==f?f:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),P=o.useRef(null),I=s.join("+").replace(/Key/g,"").replace(/Digit/g,""),L=o.useRef(null),H=o.useRef(!1),V=o.useCallback(t=>{M(e=>{var a;return(null==(a=e.find(e=>e.id===t.id))?void 0:a.delete)||g.dismiss(t.id),e.filter(e=>{let{id:a}=e;return a!==t.id})})},[]);return o.useEffect(()=>g.subscribe(t=>{if(t.dismiss)return void requestAnimationFrame(()=>{M(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))});setTimeout(()=>{r.flushSync(()=>{M(e=>{let a=e.findIndex(e=>e.id===t.id);return -1!==a?[...e.slice(0,a),{...e[a],...t},...e.slice(a+1)]:[t,...e]})})})}),[S]),o.useEffect(()=>{if("system"!==f)return void D(f);if("system"===f&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?D("dark"):D("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",t=>{let{matches:e}=t;e?D("dark"):D("light")})}catch(e){t.addListener(t=>{let{matches:e}=t;try{e?D("dark"):D("light")}catch(t){console.error(t)}})}},[f]),o.useEffect(()=>{S.length<=1&&j(!1)},[S]),o.useEffect(()=>{let t=t=>{var e,a;s.every(e=>t[e]||t.code===e)&&(j(!0),null==(a=P.current)||a.focus()),"Escape"===t.code&&(document.activeElement===P.current||(null==(e=P.current)?void 0:e.contains(document.activeElement)))&&j(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[s]),o.useEffect(()=>{if(P.current)return()=>{L.current&&(L.current.focus({preventScroll:!0}),L.current=null,H.current=!1)}},[P.current]),o.createElement("section",{ref:e,"aria-label":"".concat(N," ").concat(I),tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},T.map((e,r)=>{var n;let[s,f]=e.split("-");return S.length?o.createElement("ol",{key:e,dir:"auto"===y?E():y,tabIndex:-1,ref:P,className:d,"data-sonner-toaster":!0,"data-sonner-theme":Y,"data-y-position":s,"data-x-position":f,style:{"--front-toast-height":"".concat((null==(n=B[0])?void 0:n.height)||0,"px"),"--width":"".concat(356,"px"),"--gap":"".concat(w,"px"),...h,...function(t,e){let a={};return[t,e].forEach((t,e)=>{let o=1===e,r=o?"--mobile-offset":"--offset",n=o?"16px":"24px";function s(t){["top","right","bottom","left"].forEach(e=>{a["".concat(r,"-").concat(e)]="number"==typeof t?"".concat(t,"px"):t})}"number"==typeof t||"string"==typeof t?s(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?a["".concat(r,"-").concat(e)]=n:a["".concat(r,"-").concat(e)]="number"==typeof t[e]?"".concat(t[e],"px"):t[e]}):s(n)}),a}(c,u)},onBlur:t=>{H.current&&!t.currentTarget.contains(t.relatedTarget)&&(H.current=!1,L.current&&(L.current.focus({preventScroll:!0}),L.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(H.current||(H.current=!0,L.current=t.relatedTarget))},onMouseEnter:()=>j(!0),onMouseMove:()=>j(!0),onMouseLeave:()=>{R||j(!1)},onDragEnd:()=>j(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||A(!0)},onPointerUp:()=>A(!1)},S.filter(t=>!t.position&&0===r||t.position===e).map((r,n)=>{var s,d;return o.createElement(x,{key:r.id,icons:k,index:n,toast:r,defaultRichColors:m,duration:null!=(s=null==v?void 0:v.duration)?s:p,className:null==v?void 0:v.className,descriptionClassName:null==v?void 0:v.descriptionClassName,invert:a,visibleToasts:b,closeButton:null!=(d=null==v?void 0:v.closeButton)?d:l,interacting:R,position:e,style:null==v?void 0:v.style,unstyled:null==v?void 0:v.unstyled,classNames:null==v?void 0:v.classNames,cancelButtonStyle:null==v?void 0:v.cancelButtonStyle,actionButtonStyle:null==v?void 0:v.actionButtonStyle,closeButtonAriaLabel:null==v?void 0:v.closeButtonAriaLabel,removeToast:V,toasts:S.filter(t=>t.position==r.position),heights:B.filter(t=>t.position==r.position),setHeights:z,expandByDefault:i,gap:w,expanded:C,swipeDirections:t.swipeDirections})})):null}))})}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/231-650d1d0c1739f9f4.js b/transports/bifrost-http/ui/_next/static/chunks/231-650d1d0c1739f9f4.js new file mode 100644 index 0000000000..6decb3d1df --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/231-650d1d0c1739f9f4.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[231],{2293:(e,t,n)=>{n.d(t,{Oh:()=>i});var r=n(2115),o=0;function i(){r.useEffect(()=>{var e,t;let n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!=(e=n[0])?e:l()),document.body.insertAdjacentElement("beforeend",null!=(t=n[1])?t:l()),o++,()=>{1===o&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),o--}},[])}function l(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}},2564:(e,t,n)=>{n.d(t,{Qg:()=>l,bL:()=>u});var r=n(2115),o=n(3655),i=n(5155),l=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),a=r.forwardRef((e,t)=>(0,i.jsx)(o.sG.span,{...e,ref:t,style:{...l,...e.style}}));a.displayName="VisuallyHidden";var u=a},3795:(e,t,n)=>{n.d(t,{A:()=>X});var r,o,i=function(){return(i=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}Object.create;Object.create;var a=("function"==typeof SuppressedError&&SuppressedError,n(2115)),u="right-scroll-bar-position",c="width-before-scroll-bar";function s(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var f="undefined"!=typeof window?a.useLayoutEffect:a.useEffect,d=new WeakMap;function p(e){return e}var h=function(e){void 0===e&&(e={});var t,n,r,o,l=(t=null,void 0===n&&(n=p),r=[],o=!1,{read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:null},useMedium:function(e){var t=n(e,o);return r.push(t),function(){r=r.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(o=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){o=!0;var t=[];if(r.length){var n=r;r=[],n.forEach(e),t=r}var i=function(){var n=t;t=[],n.forEach(e)},l=function(){return Promise.resolve().then(i)};l(),r={push:function(e){t.push(e),l()},filter:function(e){return t=t.filter(e),r}}}});return l.options=i({async:!0,ssr:!1},e),l}(),m=function(){},v=a.forwardRef(function(e,t){var n,r,o,u,c=a.useRef(null),p=a.useState({onScrollCapture:m,onWheelCapture:m,onTouchMoveCapture:m}),v=p[0],g=p[1],y=e.forwardProps,w=e.children,b=e.className,x=e.removeScrollBar,E=e.enabled,R=e.shards,C=e.sideCar,A=e.noRelative,S=e.noIsolation,L=e.inert,O=e.allowPinchZoom,T=e.as,D=e.gapMode,P=l(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),k=(n=[c,t],r=function(e){return n.forEach(function(t){return s(t,e)})},(o=(0,a.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var e=o.value;e!==value&&(o.value=value,o.callback(value,e))}}}})[0]).callback=r,u=o.facade,f(function(){var e=d.get(u);if(e){var t=new Set(e),r=new Set(n),o=u.current;t.forEach(function(e){r.has(e)||s(e,null)}),r.forEach(function(e){t.has(e)||s(e,o)})}d.set(u,n)},[n]),u),N=i(i({},P),v);return a.createElement(a.Fragment,null,E&&a.createElement(C,{sideCar:h,removeScrollBar:x,shards:R,noRelative:A,noIsolation:S,inert:L,setCallbacks:g,allowPinchZoom:!!O,lockRef:c,gapMode:D}),y?a.cloneElement(a.Children.only(w),i(i({},N),{ref:k})):a.createElement(void 0===T?"div":T,i({},N,{className:b,ref:k}),w))});v.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},v.classNames={fullWidth:c,zeroRight:u};var g=function(e){var t=e.sideCar,n=l(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return a.createElement(r,i({},n))};g.isSideCarExport=!0;var y=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=o||n.nc;return t&&e.setAttribute("nonce",t),e}())){var i,l;(i=t).styleSheet?i.styleSheet.cssText=r:i.appendChild(document.createTextNode(r)),l=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(l)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},w=function(){var e=y();return function(t,n){a.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},b=function(){var e=w();return function(t){return e(t.styles,t.dynamic),null}},x={left:0,top:0,right:0,gap:0},E=function(e){return parseInt(e||"",10)||0},R=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[E(n),E(r),E(o)]},C=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return x;var t=R(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},A=b(),S="data-scroll-locked",L=function(e,t,n,r){var o=e.left,i=e.top,l=e.right,a=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(a,"px ").concat(r,";\n }\n body[").concat(S,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(i,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(a,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(a,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(u," {\n right: ").concat(a,"px ").concat(r,";\n }\n \n .").concat(c," {\n margin-right: ").concat(a,"px ").concat(r,";\n }\n \n .").concat(u," .").concat(u," {\n right: 0 ").concat(r,";\n }\n \n .").concat(c," .").concat(c," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(S,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(a,"px;\n }\n")},O=function(){var e=parseInt(document.body.getAttribute(S)||"0",10);return isFinite(e)?e:0},T=function(){a.useEffect(function(){return document.body.setAttribute(S,(O()+1).toString()),function(){var e=O()-1;e<=0?document.body.removeAttribute(S):document.body.setAttribute(S,e.toString())}},[])},D=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=void 0===r?"margin":r;T();var i=a.useMemo(function(){return C(o)},[o]);return a.createElement(A,{styles:L(i,!t,o,n?"":"!important")})},P=!1;if("undefined"!=typeof window)try{var k=Object.defineProperty({},"passive",{get:function(){return P=!0,!0}});window.addEventListener("test",k,k),window.removeEventListener("test",k,k)}catch(e){P=!1}var N=!!P&&{passive:!1},j=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return"hidden"!==n[t]&&(n.overflowY!==n.overflowX||"TEXTAREA"===e.tagName||"visible"!==n[t])},M=function(e,t){var n=t.ownerDocument,r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),F(e,r)){var o=W(e,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},F=function(e,t){return"v"===e?j(t,"overflowY"):j(t,"overflowX")},W=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},I=function(e,t,n,r,o){var i,l=(i=window.getComputedStyle(t).direction,"h"===e&&"rtl"===i?-1:1),a=l*r,u=n.target,c=t.contains(u),s=!1,f=a>0,d=0,p=0;do{if(!u)break;var h=W(e,u),m=h[0],v=h[1]-h[2]-l*m;(m||v)&&F(e,u)&&(d+=v,p+=m);var g=u.parentNode;u=g&&g.nodeType===Node.DOCUMENT_FRAGMENT_NODE?g.host:g}while(!c&&u!==document.body||c&&(t.contains(u)||t===u));return f&&(o&&1>Math.abs(d)||!o&&a>d)?s=!0:!f&&(o&&1>Math.abs(p)||!o&&-a>p)&&(s=!0),s},B=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},H=function(e){return[e.deltaX,e.deltaY]},_=function(e){return e&&"current"in e?e.current:e},z=0,G=[];let V=(r=function(e){var t=a.useRef([]),n=a.useRef([0,0]),r=a.useRef(),o=a.useState(z++)[0],i=a.useState(b)[0],l=a.useRef(e);a.useEffect(function(){l.current=e},[e]),a.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var t=(function(e,t,n){if(n||2==arguments.length)for(var r,o=0,i=t.length;oMath.abs(c)?"h":"v";if("touches"in e&&"h"===f&&"range"===s.type)return!1;var d=M(f,s);if(!d)return!0;if(d?o=f:(o="v"===f?"h":"v",d=M(f,s)),!d)return!1;if(!r.current&&"changedTouches"in e&&(u||c)&&(r.current=o),!o)return!0;var p=r.current||o;return I(p,t,e,"h"===p?u:c,!0)},[]),c=a.useCallback(function(e){if(G.length&&G[G.length-1]===i){var n="deltaY"in e?H(e):B(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta,r[0]===n[0]&&r[1]===n[1])})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var o=(l.current.shards||[]).map(_).filter(Boolean).filter(function(t){return t.contains(e.target)});(o.length>0?u(e,o[0]):!l.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),s=a.useCallback(function(e,n,r,o){var i={name:e,delta:n,target:r,should:o,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(i),setTimeout(function(){t.current=t.current.filter(function(e){return e!==i})},1)},[]),f=a.useCallback(function(e){n.current=B(e),r.current=void 0},[]),d=a.useCallback(function(t){s(t.type,H(t),t.target,u(t,e.lockRef.current))},[]),p=a.useCallback(function(t){s(t.type,B(t),t.target,u(t,e.lockRef.current))},[]);a.useEffect(function(){return G.push(i),e.setCallbacks({onScrollCapture:d,onWheelCapture:d,onTouchMoveCapture:p}),document.addEventListener("wheel",c,N),document.addEventListener("touchmove",c,N),document.addEventListener("touchstart",f,N),function(){G=G.filter(function(e){return e!==i}),document.removeEventListener("wheel",c,N),document.removeEventListener("touchmove",c,N),document.removeEventListener("touchstart",f,N)}},[]);var h=e.removeScrollBar,m=e.inert;return a.createElement(a.Fragment,null,m?a.createElement(i,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,h?a.createElement(D,{noRelative:e.noRelative,gapMode:e.gapMode}):null)},h.useMedium(r),g);var Y=a.forwardRef(function(e,t){return a.createElement(v,i({},e,{ref:t,sideCar:V}))});Y.classNames=v.classNames;let X=Y},4378:(e,t,n)=>{n.d(t,{Z:()=>u});var r=n(2115),o=n(7650),i=n(3655),l=n(2712),a=n(5155),u=r.forwardRef((e,t)=>{var n,u;let{container:c,...s}=e,[f,d]=r.useState(!1);(0,l.N)(()=>d(!0),[]);let p=c||f&&(null==(u=globalThis)||null==(n=u.document)?void 0:n.body);return p?o.createPortal((0,a.jsx)(i.sG.div,{...s,ref:t}),p):null});u.displayName="Portal"},4416:(e,t,n)=>{n.d(t,{A:()=>r});let r=(0,n(9946).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},5152:(e,t,n)=>{n.d(t,{Mz:()=>te,i3:()=>tn,UC:()=>tt,bL:()=>e4,Bk:()=>eq});var r=n(2115);let o=["top","right","bottom","left"],i=Math.min,l=Math.max,a=Math.round,u=Math.floor,c=e=>({x:e,y:e}),s={left:"right",right:"left",bottom:"top",top:"bottom"},f={start:"end",end:"start"};function d(e,t){return"function"==typeof e?e(t):e}function p(e){return e.split("-")[0]}function h(e){return e.split("-")[1]}function m(e){return"x"===e?"y":"x"}function v(e){return"y"===e?"height":"width"}let g=new Set(["top","bottom"]);function y(e){return g.has(p(e))?"y":"x"}function w(e){return e.replace(/start|end/g,e=>f[e])}let b=["left","right"],x=["right","left"],E=["top","bottom"],R=["bottom","top"];function C(e){return e.replace(/left|right|bottom|top/g,e=>s[e])}function A(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function S(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function L(e,t,n){let r,{reference:o,floating:i}=e,l=y(t),a=m(y(t)),u=v(a),c=p(t),s="y"===l,f=o.x+o.width/2-i.width/2,d=o.y+o.height/2-i.height/2,g=o[u]/2-i[u]/2;switch(c){case"top":r={x:f,y:o.y-i.height};break;case"bottom":r={x:f,y:o.y+o.height};break;case"right":r={x:o.x+o.width,y:d};break;case"left":r={x:o.x-i.width,y:d};break;default:r={x:o.x,y:o.y}}switch(h(t)){case"start":r[a]-=g*(n&&s?-1:1);break;case"end":r[a]+=g*(n&&s?-1:1)}return r}let O=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),u=await (null==l.isRTL?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:s,y:f}=L(c,r,u),d=r,p={},h=0;for(let n=0;ne[t]>=0)}let k=new Set(["left","top"]);async function N(e,t){let{placement:n,platform:r,elements:o}=e,i=await (null==r.isRTL?void 0:r.isRTL(o.floating)),l=p(n),a=h(n),u="y"===y(n),c=k.has(l)?-1:1,s=i&&u?-1:1,f=d(t,e),{mainAxis:m,crossAxis:v,alignmentAxis:g}="number"==typeof f?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&"number"==typeof g&&(v="end"===a?-1*g:g),u?{x:v*s,y:m*c}:{x:m*c,y:v*s}}function j(){return"undefined"!=typeof window}function M(e){return I(e)?(e.nodeName||"").toLowerCase():"#document"}function F(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function W(e){var t;return null==(t=(I(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function I(e){return!!j()&&(e instanceof Node||e instanceof F(e).Node)}function B(e){return!!j()&&(e instanceof Element||e instanceof F(e).Element)}function H(e){return!!j()&&(e instanceof HTMLElement||e instanceof F(e).HTMLElement)}function _(e){return!!j()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof F(e).ShadowRoot)}let z=new Set(["inline","contents"]);function G(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=ee(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!z.has(o)}let V=new Set(["table","td","th"]),Y=[":popover-open",":modal"];function X(e){return Y.some(t=>{try{return e.matches(t)}catch(e){return!1}})}let q=["transform","translate","scale","rotate","perspective"],K=["transform","translate","scale","rotate","perspective","filter"],Z=["paint","layout","strict","content"];function U(e){let t=$(),n=B(e)?ee(e):e;return q.some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||K.some(e=>(n.willChange||"").includes(e))||Z.some(e=>(n.contain||"").includes(e))}function $(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let J=new Set(["html","body","#document"]);function Q(e){return J.has(M(e))}function ee(e){return F(e).getComputedStyle(e)}function et(e){return B(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function en(e){if("html"===M(e))return e;let t=e.assignedSlot||e.parentNode||_(e)&&e.host||W(e);return _(t)?t.host:t}function er(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=en(t);return Q(n)?t.ownerDocument?t.ownerDocument.body:t.body:H(n)&&G(n)?n:e(n)}(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),l=F(o);if(i){let e=eo(l);return t.concat(l,l.visualViewport||[],G(o)?o:[],e&&n?er(e):[])}return t.concat(o,er(o,[],n))}function eo(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ei(e){let t=ee(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=H(e),i=o?e.offsetWidth:n,l=o?e.offsetHeight:r,u=a(n)!==i||a(r)!==l;return u&&(n=i,r=l),{width:n,height:r,$:u}}function el(e){return B(e)?e:e.contextElement}function ea(e){let t=el(e);if(!H(t))return c(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:i}=ei(t),l=(i?a(n.width):n.width)/r,u=(i?a(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),u&&Number.isFinite(u)||(u=1),{x:l,y:u}}let eu=c(0);function ec(e){let t=F(e);return $()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:eu}function es(e,t,n,r){var o;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=el(e),a=c(1);t&&(r?B(r)&&(a=ea(r)):a=ea(e));let u=(void 0===(o=n)&&(o=!1),r&&(!o||r===F(l))&&o)?ec(l):c(0),s=(i.left+u.x)/a.x,f=(i.top+u.y)/a.y,d=i.width/a.x,p=i.height/a.y;if(l){let e=F(l),t=r&&B(r)?F(r):r,n=e,o=eo(n);for(;o&&r&&t!==n;){let e=ea(o),t=o.getBoundingClientRect(),r=ee(o),i=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;s*=e.x,f*=e.y,d*=e.x,p*=e.y,s+=i,f+=l,o=eo(n=F(o))}}return S({width:d,height:p,x:s,y:f})}function ef(e,t){let n=et(e).scrollLeft;return t?t.left+n:es(W(e)).left+n}function ed(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(n?0:ef(e,r)),y:r.top+t.scrollTop}}let ep=new Set(["absolute","fixed"]);function eh(e,t,n){let r;if("viewport"===t)r=function(e,t){let n=F(e),r=W(e),o=n.visualViewport,i=r.clientWidth,l=r.clientHeight,a=0,u=0;if(o){i=o.width,l=o.height;let e=$();(!e||e&&"fixed"===t)&&(a=o.offsetLeft,u=o.offsetTop)}return{width:i,height:l,x:a,y:u}}(e,n);else if("document"===t)r=function(e){let t=W(e),n=et(e),r=e.ownerDocument.body,o=l(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=l(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),a=-n.scrollLeft+ef(e),u=-n.scrollTop;return"rtl"===ee(r).direction&&(a+=l(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:u}}(W(e));else if(B(t))r=function(e,t){let n=es(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=H(e)?ea(e):c(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y;return{width:l,height:a,x:o*i.x,y:r*i.y}}(t,n);else{let n=ec(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return S(r)}function em(e){return"static"===ee(e).position}function ev(e,t){if(!H(e)||"fixed"===ee(e).position)return null;if(t)return t(e);let n=e.offsetParent;return W(e)===n&&(n=n.ownerDocument.body),n}function eg(e,t){var n;let r=F(e);if(X(e))return r;if(!H(e)){let t=en(e);for(;t&&!Q(t);){if(B(t)&&!em(t))return t;t=en(t)}return r}let o=ev(e,t);for(;o&&(n=o,V.has(M(n)))&&em(o);)o=ev(o,t);return o&&Q(o)&&em(o)&&!U(o)?r:o||function(e){let t=en(e);for(;H(t)&&!Q(t);){if(U(t))return t;if(X(t))break;t=en(t)}return null}(e)||r}let ey=async function(e){let t=this.getOffsetParent||eg,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=H(t),o=W(t),i="fixed"===n,l=es(e,!0,i,t),a={scrollLeft:0,scrollTop:0},u=c(0);if(r||!r&&!i)if(("body"!==M(t)||G(o))&&(a=et(t)),r){let e=es(t,!0,i,t);u.x=e.x+t.clientLeft,u.y=e.y+t.clientTop}else o&&(u.x=ef(o));i&&!r&&o&&(u.x=ef(o));let s=!o||r||i?c(0):ed(o,a);return{x:l.left+a.scrollLeft-u.x-s.x,y:l.top+a.scrollTop-u.y-s.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},ew={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,i="fixed"===o,l=W(r),a=!!t&&X(t.floating);if(r===l||a&&i)return n;let u={scrollLeft:0,scrollTop:0},s=c(1),f=c(0),d=H(r);if((d||!d&&!i)&&(("body"!==M(r)||G(l))&&(u=et(r)),H(r))){let e=es(r);s=ea(r),f.x=e.x+r.clientLeft,f.y=e.y+r.clientTop}let p=!l||d||i?c(0):ed(l,u,!0);return{width:n.width*s.x,height:n.height*s.y,x:n.x*s.x-u.scrollLeft*s.x+f.x+p.x,y:n.y*s.y-u.scrollTop*s.y+f.y+p.y}},getDocumentElement:W,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,a=[..."clippingAncestors"===n?X(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=er(e,[],!1).filter(e=>B(e)&&"body"!==M(e)),o=null,i="fixed"===ee(e).position,l=i?en(e):e;for(;B(l)&&!Q(l);){let t=ee(l),n=U(l);n||"fixed"!==t.position||(o=null),(i?!n&&!o:!n&&"static"===t.position&&!!o&&ep.has(o.position)||G(l)&&!n&&function e(t,n){let r=en(t);return!(r===n||!B(r)||Q(r))&&("fixed"===ee(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):o=t,l=en(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],u=a[0],c=a.reduce((e,n)=>{let r=eh(t,n,o);return e.top=l(r.top,e.top),e.right=i(r.right,e.right),e.bottom=i(r.bottom,e.bottom),e.left=l(r.left,e.left),e},eh(t,u,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:eg,getElementRects:ey,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=ei(e);return{width:t,height:n}},getScale:ea,isElement:B,isRTL:function(e){return"rtl"===ee(e).direction}};function eb(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let ex=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:o,rects:a,platform:u,elements:c,middlewareData:s}=t,{element:f,padding:p=0}=d(e,t)||{};if(null==f)return{};let g=A(p),w={x:n,y:r},b=m(y(o)),x=v(b),E=await u.getDimensions(f),R="y"===b,C=R?"clientHeight":"clientWidth",S=a.reference[x]+a.reference[b]-w[b]-a.floating[x],L=w[b]-a.reference[b],O=await (null==u.getOffsetParent?void 0:u.getOffsetParent(f)),T=O?O[C]:0;T&&await (null==u.isElement?void 0:u.isElement(O))||(T=c.floating[C]||a.floating[x]);let D=T/2-E[x]/2-1,P=i(g[R?"top":"left"],D),k=i(g[R?"bottom":"right"],D),N=T-E[x]-k,j=T/2-E[x]/2+(S/2-L/2),M=l(P,i(j,N)),F=!s.arrow&&null!=h(o)&&j!==M&&a.reference[x]/2-(j{let r=new Map,o={platform:ew,...n},i={...o.platform,_c:r};return O(e,t,{...o,platform:i})};var eR=n(7650),eC="undefined"!=typeof document?r.useLayoutEffect:function(){};function eA(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!eA(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if(("_owner"!==n||!e.$$typeof)&&!eA(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function eS(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function eL(e,t){let n=eS(e);return Math.round(t*n)/n}function eO(e){let t=r.useRef(e);return eC(()=>{t.current=e}),t}let eT=e=>({name:"arrow",options:e,fn(t){let{element:n,padding:r}="function"==typeof e?e(t):e;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?ex({element:n.current,padding:r}).fn(t):{}:n?ex({element:n,padding:r}).fn(t):{}}}),eD=(e,t)=>({...function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:i,placement:l,middlewareData:a}=t,u=await N(t,e);return l===(null==(n=a.offset)?void 0:n.placement)&&null!=(r=a.arrow)&&r.alignmentOffset?{}:{x:o+u.x,y:i+u.y,data:{...u,placement:l}}}}}(e),options:[e,t]}),eP=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:u=!1,limiter:c={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=d(e,t),f={x:n,y:r},h=await T(t,s),v=y(p(o)),g=m(v),w=f[g],b=f[v];if(a){let e="y"===g?"top":"left",t="y"===g?"bottom":"right",n=w+h[e],r=w-h[t];w=l(n,i(w,r))}if(u){let e="y"===v?"top":"left",t="y"===v?"bottom":"right",n=b+h[e],r=b-h[t];b=l(n,i(b,r))}let x=c.fn({...t,[g]:w,[v]:b});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[g]:a,[v]:u}}}}}}(e),options:[e,t]}),ek=(e,t)=>({...function(e){return void 0===e&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:o,rects:i,middlewareData:l}=t,{offset:a=0,mainAxis:u=!0,crossAxis:c=!0}=d(e,t),s={x:n,y:r},f=y(o),h=m(f),v=s[h],g=s[f],w=d(a,t),b="number"==typeof w?{mainAxis:w,crossAxis:0}:{mainAxis:0,crossAxis:0,...w};if(u){let e="y"===h?"height":"width",t=i.reference[h]-i.floating[e]+b.mainAxis,n=i.reference[h]+i.reference[e]-b.mainAxis;vn&&(v=n)}if(c){var x,E;let e="y"===h?"width":"height",t=k.has(p(o)),n=i.reference[f]-i.floating[e]+(t&&(null==(x=l.offset)?void 0:x[f])||0)+(t?0:b.crossAxis),r=i.reference[f]+i.reference[e]+(t?0:(null==(E=l.offset)?void 0:E[f])||0)-(t?b.crossAxis:0);gr&&(g=r)}return{[h]:v,[f]:g}}}}(e),options:[e,t]}),eN=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r,o,i,l;let{placement:a,middlewareData:u,rects:c,initialPlacement:s,platform:f,elements:g}=t,{mainAxis:A=!0,crossAxis:S=!0,fallbackPlacements:L,fallbackStrategy:O="bestFit",fallbackAxisSideDirection:D="none",flipAlignment:P=!0,...k}=d(e,t);if(null!=(n=u.arrow)&&n.alignmentOffset)return{};let N=p(a),j=y(s),M=p(s)===s,F=await (null==f.isRTL?void 0:f.isRTL(g.floating)),W=L||(M||!P?[C(s)]:function(e){let t=C(e);return[w(e),t,w(t)]}(s)),I="none"!==D;!L&&I&&W.push(...function(e,t,n,r){let o=h(e),i=function(e,t,n){switch(e){case"top":case"bottom":if(n)return t?x:b;return t?b:x;case"left":case"right":return t?E:R;default:return[]}}(p(e),"start"===n,r);return o&&(i=i.map(e=>e+"-"+o),t&&(i=i.concat(i.map(w)))),i}(s,P,D,F));let B=[s,...W],H=await T(t,k),_=[],z=(null==(r=u.flip)?void 0:r.overflows)||[];if(A&&_.push(H[N]),S){let e=function(e,t,n){void 0===n&&(n=!1);let r=h(e),o=m(y(e)),i=v(o),l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=C(l)),[l,C(l)]}(a,c,F);_.push(H[e[0]],H[e[1]])}if(z=[...z,{placement:a,overflows:_}],!_.every(e=>e<=0)){let e=((null==(o=u.flip)?void 0:o.index)||0)+1,t=B[e];if(t&&("alignment"!==S||j===y(t)||z.every(e=>e.overflows[0]>0&&y(e.placement)===j)))return{data:{index:e,overflows:z},reset:{placement:t}};let n=null==(i=z.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!n)switch(O){case"bestFit":{let e=null==(l=z.filter(e=>{if(I){let t=y(e.placement);return t===j||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(n=e);break}case"initialPlacement":n=s}if(a!==n)return{reset:{placement:n}}}return{}}}}(e),options:[e,t]}),ej=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;let o,a,{placement:u,rects:c,platform:s,elements:f}=t,{apply:m=()=>{},...v}=d(e,t),g=await T(t,v),w=p(u),b=h(u),x="y"===y(u),{width:E,height:R}=c.floating;"top"===w||"bottom"===w?(o=w,a=b===(await (null==s.isRTL?void 0:s.isRTL(f.floating))?"start":"end")?"left":"right"):(a=w,o="end"===b?"top":"bottom");let C=R-g.top-g.bottom,A=E-g.left-g.right,S=i(R-g[o],C),L=i(E-g[a],A),O=!t.middlewareData.shift,D=S,P=L;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(P=A),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(D=C),O&&!b){let e=l(g.left,0),t=l(g.right,0),n=l(g.top,0),r=l(g.bottom,0);x?P=E-2*(0!==e||0!==t?e+t:l(g.left,g.right)):D=R-2*(0!==n||0!==r?n+r:l(g.top,g.bottom))}await m({...t,availableWidth:P,availableHeight:D});let k=await s.getDimensions(f.floating);return E!==k.width||R!==k.height?{reset:{rects:!0}}:{}}}}(e),options:[e,t]}),eM=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=d(e,t);switch(r){case"referenceHidden":{let e=D(await T(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:P(e)}}}case"escaped":{let e=D(await T(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:P(e)}}}default:return{}}}}}(e),options:[e,t]}),eF=(e,t)=>({...eT(e),options:[e,t]});var eW=n(3655),eI=n(5155),eB=r.forwardRef((e,t)=>{let{children:n,width:r=10,height:o=5,...i}=e;return(0,eI.jsx)(eW.sG.svg,{...i,ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,eI.jsx)("polygon",{points:"0,0 30,0 15,10"})})});eB.displayName="Arrow";var eH=n(6101),e_=n(6081),ez=n(9033),eG=n(2712),eV=n(1275),eY="Popper",[eX,eq]=(0,e_.A)(eY),[eK,eZ]=eX(eY),eU=e=>{let{__scopePopper:t,children:n}=e,[o,i]=r.useState(null);return(0,eI.jsx)(eK,{scope:t,anchor:o,onAnchorChange:i,children:n})};eU.displayName=eY;var e$="PopperAnchor",eJ=r.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:o,...i}=e,l=eZ(e$,n),a=r.useRef(null),u=(0,eH.s)(t,a);return r.useEffect(()=>{l.onAnchorChange((null==o?void 0:o.current)||a.current)}),o?null:(0,eI.jsx)(eW.sG.div,{...i,ref:u})});eJ.displayName=e$;var eQ="PopperContent",[e0,e1]=eX(eQ),e5=r.forwardRef((e,t)=>{var n,o,a,c,s,f,d,p;let{__scopePopper:h,side:m="bottom",sideOffset:v=0,align:g="center",alignOffset:y=0,arrowPadding:w=0,avoidCollisions:b=!0,collisionBoundary:x=[],collisionPadding:E=0,sticky:R="partial",hideWhenDetached:C=!1,updatePositionStrategy:A="optimized",onPlaced:S,...L}=e,O=eZ(eQ,h),[T,D]=r.useState(null),P=(0,eH.s)(t,e=>D(e)),[k,N]=r.useState(null),j=(0,eV.X)(k),M=null!=(d=null==j?void 0:j.width)?d:0,F=null!=(p=null==j?void 0:j.height)?p:0,I="number"==typeof E?E:{top:0,right:0,bottom:0,left:0,...E},B=Array.isArray(x)?x:[x],H=B.length>0,_={padding:I,boundary:B.filter(e8),altBoundary:H},{refs:z,floatingStyles:G,placement:V,isPositioned:Y,middlewareData:X}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:n="absolute",middleware:o=[],platform:i,elements:{reference:l,floating:a}={},transform:u=!0,whileElementsMounted:c,open:s}=e,[f,d]=r.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=r.useState(o);eA(p,o)||h(o);let[m,v]=r.useState(null),[g,y]=r.useState(null),w=r.useCallback(e=>{e!==R.current&&(R.current=e,v(e))},[]),b=r.useCallback(e=>{e!==C.current&&(C.current=e,y(e))},[]),x=l||m,E=a||g,R=r.useRef(null),C=r.useRef(null),A=r.useRef(f),S=null!=c,L=eO(c),O=eO(i),T=eO(s),D=r.useCallback(()=>{if(!R.current||!C.current)return;let e={placement:t,strategy:n,middleware:p};O.current&&(e.platform=O.current),eE(R.current,C.current,e).then(e=>{let t={...e,isPositioned:!1!==T.current};P.current&&!eA(A.current,t)&&(A.current=t,eR.flushSync(()=>{d(t)}))})},[p,t,n,O,T]);eC(()=>{!1===s&&A.current.isPositioned&&(A.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[s]);let P=r.useRef(!1);eC(()=>(P.current=!0,()=>{P.current=!1}),[]),eC(()=>{if(x&&(R.current=x),E&&(C.current=E),x&&E){if(L.current)return L.current(x,E,D);D()}},[x,E,D,L,S]);let k=r.useMemo(()=>({reference:R,floating:C,setReference:w,setFloating:b}),[w,b]),N=r.useMemo(()=>({reference:x,floating:E}),[x,E]),j=r.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=eL(N.floating,f.x),r=eL(N.floating,f.y);return u?{...e,transform:"translate("+t+"px, "+r+"px)",...eS(N.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}},[n,u,N.floating,f.x,f.y]);return r.useMemo(()=>({...f,update:D,refs:k,elements:N,floatingStyles:j}),[f,D,k,N,j])}({strategy:"fixed",placement:m+("center"!==g?"-"+g:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n{a&&e.addEventListener("scroll",n,{passive:!0}),c&&e.addEventListener("resize",n)});let m=p&&f?function(e,t){let n,r=null,o=W(e);function a(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function c(s,f){void 0===s&&(s=!1),void 0===f&&(f=1),a();let d=e.getBoundingClientRect(),{left:p,top:h,width:m,height:v}=d;if(s||t(),!m||!v)return;let g=u(h),y=u(o.clientWidth-(p+m)),w={rootMargin:-g+"px "+-y+"px "+-u(o.clientHeight-(h+v))+"px "+-u(p)+"px",threshold:l(0,i(1,f))||1},b=!0;function x(t){let r=t[0].intersectionRatio;if(r!==f){if(!b)return c();r?c(!1,r):n=setTimeout(()=>{c(!1,1e-7)},1e3)}1!==r||eb(d,e.getBoundingClientRect())||c(),b=!1}try{r=new IntersectionObserver(x,{...w,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(x,w)}r.observe(e)}(!0),a}(p,n):null,v=-1,g=null;s&&(g=new ResizeObserver(e=>{let[r]=e;r&&r.target===p&&g&&(g.unobserve(t),cancelAnimationFrame(v),v=requestAnimationFrame(()=>{var e;null==(e=g)||e.observe(t)})),n()}),p&&!d&&g.observe(p),g.observe(t));let y=d?es(e):null;return d&&function t(){let r=es(e);y&&!eb(y,r)&&n(),y=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;h.forEach(e=>{a&&e.removeEventListener("scroll",n),c&&e.removeEventListener("resize",n)}),null==m||m(),null==(e=g)||e.disconnect(),g=null,d&&cancelAnimationFrame(o)}}(...t,{animationFrame:"always"===A})},elements:{reference:O.anchor},middleware:[eD({mainAxis:v+F,alignmentAxis:y}),b&&eP({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?ek():void 0,..._}),b&&eN({..._}),ej({..._,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e,{width:i,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(o,"px")),a.setProperty("--radix-popper-anchor-width","".concat(i,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),k&&eF({element:k,padding:w}),e9({arrowWidth:M,arrowHeight:F}),C&&eM({strategy:"referenceHidden",..._})]}),[q,K]=e7(V),Z=(0,ez.c)(S);(0,eG.N)(()=>{Y&&(null==Z||Z())},[Y,Z]);let U=null==(n=X.arrow)?void 0:n.x,$=null==(o=X.arrow)?void 0:o.y,J=(null==(a=X.arrow)?void 0:a.centerOffset)!==0,[Q,ee]=r.useState();return(0,eG.N)(()=>{T&&ee(window.getComputedStyle(T).zIndex)},[T]),(0,eI.jsx)("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...G,transform:Y?G.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Q,"--radix-popper-transform-origin":[null==(c=X.transformOrigin)?void 0:c.x,null==(s=X.transformOrigin)?void 0:s.y].join(" "),...(null==(f=X.hide)?void 0:f.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,eI.jsx)(e0,{scope:h,placedSide:q,onArrowChange:N,arrowX:U,arrowY:$,shouldHideArrow:J,children:(0,eI.jsx)(eW.sG.div,{"data-side":q,"data-align":K,...L,ref:P,style:{...L.style,animation:Y?void 0:"none"}})})})});e5.displayName=eQ;var e2="PopperArrow",e6={top:"bottom",right:"left",bottom:"top",left:"right"},e3=r.forwardRef(function(e,t){let{__scopePopper:n,...r}=e,o=e1(e2,n),i=e6[o.placedSide];return(0,eI.jsx)("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:(0,eI.jsx)(eB,{...r,ref:t,style:{...r.style,display:"block"}})})});function e8(e){return null!==e}e3.displayName=e2;var e9=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,l;let{placement:a,rects:u,middlewareData:c}=t,s=(null==(n=c.arrow)?void 0:n.centerOffset)!==0,f=s?0:e.arrowWidth,d=s?0:e.arrowHeight,[p,h]=e7(a),m={start:"0%",center:"50%",end:"100%"}[h],v=(null!=(i=null==(r=c.arrow)?void 0:r.x)?i:0)+f/2,g=(null!=(l=null==(o=c.arrow)?void 0:o.y)?l:0)+d/2,y="",w="";return"bottom"===p?(y=s?m:"".concat(v,"px"),w="".concat(-d,"px")):"top"===p?(y=s?m:"".concat(v,"px"),w="".concat(u.floating.height+d,"px")):"right"===p?(y="".concat(-d,"px"),w=s?m:"".concat(g,"px")):"left"===p&&(y="".concat(u.floating.width+d,"px"),w=s?m:"".concat(g,"px")),{data:{x:y,y:w}}}});function e7(e){let[t,n="center"]=e.split("-");return[t,n]}var e4=eU,te=eJ,tt=e5,tn=e3},5452:(e,t,n)=>{n.d(t,{G$:()=>K,Hs:()=>x,UC:()=>en,VY:()=>eo,ZL:()=>ee,bL:()=>J,bm:()=>ei,hE:()=>er,hJ:()=>et,l9:()=>Q});var r=n(2115),o=n(5185),i=n(6101),l=n(6081),a=n(1285),u=n(5845),c=n(9178),s=n(7900),f=n(4378),d=n(8905),p=n(3655),h=n(2293),m=n(3795),v=n(8168),g=n(9708),y=n(5155),w="Dialog",[b,x]=(0,l.A)(w),[E,R]=b(w),C=e=>{let{__scopeDialog:t,children:n,open:o,defaultOpen:i,onOpenChange:l,modal:c=!0}=e,s=r.useRef(null),f=r.useRef(null),[d,p]=(0,u.i)({prop:o,defaultProp:null!=i&&i,onChange:l,caller:w});return(0,y.jsx)(E,{scope:t,triggerRef:s,contentRef:f,contentId:(0,a.B)(),titleId:(0,a.B)(),descriptionId:(0,a.B)(),open:d,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(e=>!e),[p]),modal:c,children:n})};C.displayName=w;var A="DialogTrigger",S=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,l=R(A,n),a=(0,i.s)(t,l.triggerRef);return(0,y.jsx)(p.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":l.open,"aria-controls":l.contentId,"data-state":X(l.open),...r,ref:a,onClick:(0,o.m)(e.onClick,l.onOpenToggle)})});S.displayName=A;var L="DialogPortal",[O,T]=b(L,{forceMount:void 0}),D=e=>{let{__scopeDialog:t,forceMount:n,children:o,container:i}=e,l=R(L,t);return(0,y.jsx)(O,{scope:t,forceMount:n,children:r.Children.map(o,e=>(0,y.jsx)(d.C,{present:n||l.open,children:(0,y.jsx)(f.Z,{asChild:!0,container:i,children:e})}))})};D.displayName=L;var P="DialogOverlay",k=r.forwardRef((e,t)=>{let n=T(P,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=R(P,e.__scopeDialog);return i.modal?(0,y.jsx)(d.C,{present:r||i.open,children:(0,y.jsx)(j,{...o,ref:t})}):null});k.displayName=P;var N=(0,g.TL)("DialogOverlay.RemoveScroll"),j=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=R(P,n);return(0,y.jsx)(m.A,{as:N,allowPinchZoom:!0,shards:[o.contentRef],children:(0,y.jsx)(p.sG.div,{"data-state":X(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),M="DialogContent",F=r.forwardRef((e,t)=>{let n=T(M,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=R(M,e.__scopeDialog);return(0,y.jsx)(d.C,{present:r||i.open,children:i.modal?(0,y.jsx)(W,{...o,ref:t}):(0,y.jsx)(I,{...o,ref:t})})});F.displayName=M;var W=r.forwardRef((e,t)=>{let n=R(M,e.__scopeDialog),l=r.useRef(null),a=(0,i.s)(t,n.contentRef,l);return r.useEffect(()=>{let e=l.current;if(e)return(0,v.Eq)(e)},[]),(0,y.jsx)(B,{...e,ref:a,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),null==(t=n.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,o.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,o.m)(e.onFocusOutside,e=>e.preventDefault())})}),I=r.forwardRef((e,t)=>{let n=R(M,e.__scopeDialog),o=r.useRef(!1),i=r.useRef(!1);return(0,y.jsx)(B,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,l;null==(r=e.onCloseAutoFocus)||r.call(e,t),t.defaultPrevented||(o.current||null==(l=n.triggerRef.current)||l.focus(),t.preventDefault()),o.current=!1,i.current=!1},onInteractOutside:t=>{var r,l;null==(r=e.onInteractOutside)||r.call(e,t),t.defaultPrevented||(o.current=!0,"pointerdown"===t.detail.originalEvent.type&&(i.current=!0));let a=t.target;(null==(l=n.triggerRef.current)?void 0:l.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&i.current&&t.preventDefault()}})}),B=r.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:l,onCloseAutoFocus:a,...u}=e,f=R(M,n),d=r.useRef(null),p=(0,i.s)(t,d);return(0,h.Oh)(),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(s.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:l,onUnmountAutoFocus:a,children:(0,y.jsx)(c.qW,{role:"dialog",id:f.contentId,"aria-describedby":f.descriptionId,"aria-labelledby":f.titleId,"data-state":X(f.open),...u,ref:p,onDismiss:()=>f.onOpenChange(!1)})}),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(U,{titleId:f.titleId}),(0,y.jsx)($,{contentRef:d,descriptionId:f.descriptionId})]})]})}),H="DialogTitle",_=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=R(H,n);return(0,y.jsx)(p.sG.h2,{id:o.titleId,...r,ref:t})});_.displayName=H;var z="DialogDescription",G=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=R(z,n);return(0,y.jsx)(p.sG.p,{id:o.descriptionId,...r,ref:t})});G.displayName=z;var V="DialogClose",Y=r.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,i=R(V,n);return(0,y.jsx)(p.sG.button,{type:"button",...r,ref:t,onClick:(0,o.m)(e.onClick,()=>i.onOpenChange(!1))})});function X(e){return e?"open":"closed"}Y.displayName=V;var q="DialogTitleWarning",[K,Z]=(0,l.q)(q,{contentName:M,titleName:H,docsSlug:"dialog"}),U=e=>{let{titleId:t}=e,n=Z(q),o="`".concat(n.contentName,"` requires a `").concat(n.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(n.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(n.docsSlug);return r.useEffect(()=>{t&&(document.getElementById(t)||console.error(o))},[o,t]),null},$=e=>{let{contentRef:t,descriptionId:n}=e,o=Z("DialogDescriptionWarning"),i="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(o.contentName,"}.");return r.useEffect(()=>{var e;let r=null==(e=t.current)?void 0:e.getAttribute("aria-describedby");n&&r&&(document.getElementById(n)||console.warn(i))},[i,t,n]),null},J=C,Q=S,ee=D,et=k,en=F,er=_,eo=G,ei=Y},7900:(e,t,n)=>{n.d(t,{n:()=>f});var r=n(2115),o=n(6101),i=n(3655),l=n(9033),a=n(5155),u="focusScope.autoFocusOnMount",c="focusScope.autoFocusOnUnmount",s={bubbles:!1,cancelable:!0},f=r.forwardRef((e,t)=>{let{loop:n=!1,trapped:f=!1,onMountAutoFocus:v,onUnmountAutoFocus:g,...y}=e,[w,b]=r.useState(null),x=(0,l.c)(v),E=(0,l.c)(g),R=r.useRef(null),C=(0,o.s)(t,e=>b(e)),A=r.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;r.useEffect(()=>{if(f){let e=function(e){if(A.paused||!w)return;let t=e.target;w.contains(t)?R.current=t:h(R.current,{select:!0})},t=function(e){if(A.paused||!w)return;let t=e.relatedTarget;null!==t&&(w.contains(t)||h(R.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let n=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&h(w)});return w&&n.observe(w,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}},[f,w,A.paused]),r.useEffect(()=>{if(w){m.add(A);let e=document.activeElement;if(!w.contains(e)){let t=new CustomEvent(u,s);w.addEventListener(u,x),w.dispatchEvent(t),t.defaultPrevented||(function(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=document.activeElement;for(let r of e)if(h(r,{select:t}),document.activeElement!==n)return}(d(w).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&h(w))}return()=>{w.removeEventListener(u,x),setTimeout(()=>{let t=new CustomEvent(c,s);w.addEventListener(c,E),w.dispatchEvent(t),t.defaultPrevented||h(null!=e?e:document.body,{select:!0}),w.removeEventListener(c,E),m.remove(A)},0)}}},[w,x,E,A]);let S=r.useCallback(e=>{if(!n&&!f||A.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){let t=e.currentTarget,[o,i]=function(e){let t=d(e);return[p(t,e),p(t.reverse(),e)]}(t);o&&i?e.shiftKey||r!==i?e.shiftKey&&r===o&&(e.preventDefault(),n&&h(i,{select:!0})):(e.preventDefault(),n&&h(o,{select:!0})):r===t&&e.preventDefault()}},[n,f,A.paused]);return(0,a.jsx)(i.sG.div,{tabIndex:-1,...y,ref:C,onKeyDown:S})});function d(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function p(e,t){for(let n of e)if(!function(e,t){let{upTo:n}=t;if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===n||e!==n);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(n,{upTo:t}))return n}function h(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&e.focus){var n;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(n=e)instanceof HTMLInputElement&&"select"in n&&t&&e.select()}}f.displayName="FocusScope";var m=function(){let e=[];return{add(t){let n=e[0];t!==n&&(null==n||n.pause()),(e=v(e,t)).unshift(t)},remove(t){var n;null==(n=(e=v(e,t))[0])||n.resume()}}}();function v(e,t){let n=[...e],r=n.indexOf(t);return -1!==r&&n.splice(r,1),n}},8168:(e,t,n)=>{n.d(t,{Eq:()=>s});var r=function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},o=new WeakMap,i=new WeakMap,l={},a=0,u=function(e){return e&&(e.host||u(e.parentNode))},c=function(e,t,n,r){var c=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var n=u(e);return n&&t.contains(n)?n:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});l[n]||(l[n]=new WeakMap);var s=l[n],f=[],d=new Set,p=new Set(c),h=function(e){!e||d.has(e)||(d.add(e),h(e.parentNode))};c.forEach(h);var m=function(e){!e||p.has(e)||Array.prototype.forEach.call(e.children,function(e){if(d.has(e))m(e);else try{var t=e.getAttribute(r),l=null!==t&&"false"!==t,a=(o.get(e)||0)+1,u=(s.get(e)||0)+1;o.set(e,a),s.set(e,u),f.push(e),1===a&&l&&i.set(e,!0),1===u&&e.setAttribute(n,"true"),l||e.setAttribute(r,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return m(t),d.clear(),a++,function(){f.forEach(function(e){var t=o.get(e)-1,l=s.get(e)-1;o.set(e,t),s.set(e,l),t||(i.has(e)||e.removeAttribute(r),i.delete(e)),l||e.removeAttribute(n)}),--a||(o=new WeakMap,o=new WeakMap,i=new WeakMap,l={})}},s=function(e,t,n){void 0===n&&(n="data-aria-hidden");var o=Array.from(Array.isArray(e)?e:[e]),i=t||r(e);return i?(o.push.apply(o,Array.from(i.querySelectorAll("[aria-live], script"))),c(o,i,n,"aria-hidden")):function(){return null}}},9178:(e,t,n)=>{n.d(t,{qW:()=>d});var r,o=n(2115),i=n(5185),l=n(3655),a=n(6101),u=n(9033),c=n(5155),s="dismissableLayer.update",f=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),d=o.forwardRef((e,t)=>{var n,d;let{disableOutsidePointerEvents:m=!1,onEscapeKeyDown:v,onPointerDownOutside:g,onFocusOutside:y,onInteractOutside:w,onDismiss:b,...x}=e,E=o.useContext(f),[R,C]=o.useState(null),A=null!=(d=null==R?void 0:R.ownerDocument)?d:null==(n=globalThis)?void 0:n.document,[,S]=o.useState({}),L=(0,a.s)(t,e=>C(e)),O=Array.from(E.layers),[T]=[...E.layersWithOutsidePointerEventsDisabled].slice(-1),D=O.indexOf(T),P=R?O.indexOf(R):-1,k=E.layersWithOutsidePointerEventsDisabled.size>0,N=P>=D,j=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,u.c)(e),i=o.useRef(!1),l=o.useRef(()=>{});return o.useEffect(()=>{let e=e=>{if(e.target&&!i.current){let t=function(){h("dismissableLayer.pointerDownOutside",r,o,{discrete:!0})},o={originalEvent:e};"touch"===e.pointerType?(n.removeEventListener("click",l.current),l.current=t,n.addEventListener("click",l.current,{once:!0})):t()}else n.removeEventListener("click",l.current);i.current=!1},t=window.setTimeout(()=>{n.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",l.current)}},[n,r]),{onPointerDownCapture:()=>i.current=!0}}(e=>{let t=e.target,n=[...E.branches].some(e=>e.contains(t));N&&!n&&(null==g||g(e),null==w||w(e),e.defaultPrevented||null==b||b())},A),M=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,u.c)(e),i=o.useRef(!1);return o.useEffect(()=>{let e=e=>{e.target&&!i.current&&h("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)},[n,r]),{onFocusCapture:()=>i.current=!0,onBlurCapture:()=>i.current=!1}}(e=>{let t=e.target;![...E.branches].some(e=>e.contains(t))&&(null==y||y(e),null==w||w(e),e.defaultPrevented||null==b||b())},A);return!function(e,t=globalThis?.document){let n=(0,u.c)(e);o.useEffect(()=>{let e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[n,t])}(e=>{P===E.layers.size-1&&(null==v||v(e),!e.defaultPrevented&&b&&(e.preventDefault(),b()))},A),o.useEffect(()=>{if(R)return m&&(0===E.layersWithOutsidePointerEventsDisabled.size&&(r=A.body.style.pointerEvents,A.body.style.pointerEvents="none"),E.layersWithOutsidePointerEventsDisabled.add(R)),E.layers.add(R),p(),()=>{m&&1===E.layersWithOutsidePointerEventsDisabled.size&&(A.body.style.pointerEvents=r)}},[R,A,m,E]),o.useEffect(()=>()=>{R&&(E.layers.delete(R),E.layersWithOutsidePointerEventsDisabled.delete(R),p())},[R,E]),o.useEffect(()=>{let e=()=>S({});return document.addEventListener(s,e),()=>document.removeEventListener(s,e)},[]),(0,c.jsx)(l.sG.div,{...x,ref:L,style:{pointerEvents:k?N?"auto":"none":void 0,...e.style},onFocusCapture:(0,i.m)(e.onFocusCapture,M.onFocusCapture),onBlurCapture:(0,i.m)(e.onBlurCapture,M.onBlurCapture),onPointerDownCapture:(0,i.m)(e.onPointerDownCapture,j.onPointerDownCapture)})});function p(){let e=new CustomEvent(s);document.dispatchEvent(e)}function h(e,t,n,r){let{discrete:o}=r,i=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&i.addEventListener(e,t,{once:!0}),o?(0,l.hO)(i,a):i.dispatchEvent(a)}d.displayName="DismissableLayer",o.forwardRef((e,t)=>{let n=o.useContext(f),r=o.useRef(null),i=(0,a.s)(t,r);return o.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,c.jsx)(l.sG.div,{...e,ref:i})}).displayName="DismissableLayerBranch"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/273-9756261fec6bc01b.js b/transports/bifrost-http/ui/_next/static/chunks/273-9756261fec6bc01b.js deleted file mode 100644 index a71a8f2e83..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/273-9756261fec6bc01b.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[273],{381:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(9946).A)("settings",[["path",{d:"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z",key:"1qme2f"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]])},9613:(e,t,r)=>{r.d(t,{Kq:()=>V,UC:()=>G,ZL:()=>Z,bL:()=>X,i3:()=>K,l9:()=>Y});var n=r(2115),o=r(5185),l=r(6101),a=r(6081),i=r(9178),s=r(1285),u=r(5152),c=r(4378),d=r(8905),p=r(3655),f=r(9708),h=r(5845),x=r(2564),v=r(5155),[g,y]=(0,a.A)("Tooltip",[u.Bk]),m=(0,u.Bk)(),b="TooltipProvider",w="tooltip.open",[C,T]=g(b),E=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:o=300,disableHoverableContent:l=!1,children:a}=e,i=n.useRef(!0),s=n.useRef(!1),u=n.useRef(0);return n.useEffect(()=>{let e=u.current;return()=>window.clearTimeout(e)},[]),(0,v.jsx)(C,{scope:t,isOpenDelayedRef:i,delayDuration:r,onOpen:n.useCallback(()=>{window.clearTimeout(u.current),i.current=!1},[]),onClose:n.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>i.current=!0,o)},[o]),isPointerInTransitRef:s,onPointerInTransitChange:n.useCallback(e=>{s.current=e},[]),disableHoverableContent:l,children:a})};E.displayName=b;var k="Tooltip",[L,R]=g(k),j=e=>{let{__scopeTooltip:t,children:r,open:o,defaultOpen:l,onOpenChange:a,disableHoverableContent:i,delayDuration:c}=e,d=T(k,e.__scopeTooltip),p=m(t),[f,x]=n.useState(null),g=(0,s.B)(),y=n.useRef(0),b=null!=i?i:d.disableHoverableContent,C=null!=c?c:d.delayDuration,E=n.useRef(!1),[R,j]=(0,h.i)({prop:o,defaultProp:null!=l&&l,onChange:e=>{e?(d.onOpen(),document.dispatchEvent(new CustomEvent(w))):d.onClose(),null==a||a(e)},caller:k}),_=n.useMemo(()=>R?E.current?"delayed-open":"instant-open":"closed",[R]),M=n.useCallback(()=>{window.clearTimeout(y.current),y.current=0,E.current=!1,j(!0)},[j]),P=n.useCallback(()=>{window.clearTimeout(y.current),y.current=0,j(!1)},[j]),D=n.useCallback(()=>{window.clearTimeout(y.current),y.current=window.setTimeout(()=>{E.current=!0,j(!0),y.current=0},C)},[C,j]);return n.useEffect(()=>()=>{y.current&&(window.clearTimeout(y.current),y.current=0)},[]),(0,v.jsx)(u.bL,{...p,children:(0,v.jsx)(L,{scope:t,contentId:g,open:R,stateAttribute:_,trigger:f,onTriggerChange:x,onTriggerEnter:n.useCallback(()=>{d.isOpenDelayedRef.current?D():M()},[d.isOpenDelayedRef,D,M]),onTriggerLeave:n.useCallback(()=>{b?P():(window.clearTimeout(y.current),y.current=0)},[P,b]),onOpen:M,onClose:P,disableHoverableContent:b,children:r})})};j.displayName=k;var _="TooltipTrigger",M=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...a}=e,i=R(_,r),s=T(_,r),c=m(r),d=n.useRef(null),f=(0,l.s)(t,d,i.onTriggerChange),h=n.useRef(!1),x=n.useRef(!1),g=n.useCallback(()=>h.current=!1,[]);return n.useEffect(()=>()=>document.removeEventListener("pointerup",g),[g]),(0,v.jsx)(u.Mz,{asChild:!0,...c,children:(0,v.jsx)(p.sG.button,{"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute,...a,ref:f,onPointerMove:(0,o.m)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(x.current||s.isPointerInTransitRef.current||(i.onTriggerEnter(),x.current=!0))}),onPointerLeave:(0,o.m)(e.onPointerLeave,()=>{i.onTriggerLeave(),x.current=!1}),onPointerDown:(0,o.m)(e.onPointerDown,()=>{i.open&&i.onClose(),h.current=!0,document.addEventListener("pointerup",g,{once:!0})}),onFocus:(0,o.m)(e.onFocus,()=>{h.current||i.onOpen()}),onBlur:(0,o.m)(e.onBlur,i.onClose),onClick:(0,o.m)(e.onClick,i.onClose)})})});M.displayName=_;var P="TooltipPortal",[D,N]=g(P,{forceMount:void 0}),O=e=>{let{__scopeTooltip:t,forceMount:r,children:n,container:o}=e,l=R(P,t);return(0,v.jsx)(D,{scope:t,forceMount:r,children:(0,v.jsx)(d.C,{present:r||l.open,children:(0,v.jsx)(c.Z,{asChild:!0,container:o,children:n})})})};O.displayName=P;var B="TooltipContent",I=n.forwardRef((e,t)=>{let r=N(B,e.__scopeTooltip),{forceMount:n=r.forceMount,side:o="top",...l}=e,a=R(B,e.__scopeTooltip);return(0,v.jsx)(d.C,{present:n||a.open,children:a.disableHoverableContent?(0,v.jsx)(H,{side:o,...l,ref:t}):(0,v.jsx)(A,{side:o,...l,ref:t})})}),A=n.forwardRef((e,t)=>{let r=R(B,e.__scopeTooltip),o=T(B,e.__scopeTooltip),a=n.useRef(null),i=(0,l.s)(t,a),[s,u]=n.useState(null),{trigger:c,onClose:d}=r,p=a.current,{onPointerInTransitChange:f}=o,h=n.useCallback(()=>{u(null),f(!1)},[f]),x=n.useCallback((e,t)=>{let r=e.currentTarget,n={x:e.clientX,y:e.clientY},o=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(r,n,o,l)){case l:return"left";case o:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());u(function(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(t)}([...function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(n,o),...function(e){let{top:t,right:r,bottom:n,left:o}=e;return[{x:o,y:t},{x:r,y:t},{x:r,y:n},{x:o,y:n}]}(t.getBoundingClientRect())])),f(!0)},[f]);return n.useEffect(()=>()=>h(),[h]),n.useEffect(()=>{if(c&&p){let e=e=>x(e,p),t=e=>x(e,c);return c.addEventListener("pointerleave",e),p.addEventListener("pointerleave",t),()=>{c.removeEventListener("pointerleave",e),p.removeEventListener("pointerleave",t)}}},[c,p,x,h]),n.useEffect(()=>{if(s){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=(null==c?void 0:c.contains(t))||(null==p?void 0:p.contains(t)),o=!function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,l=t.length-1;en!=d>n&&r<(c-s)*(n-u)/(d-u)+s&&(o=!o)}return o}(r,s);n?h():o&&(h(),d())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[c,p,s,d,h]),(0,v.jsx)(H,{...e,ref:i})}),[q,z]=g(k,{isInside:!1}),F=(0,f.Dc)("TooltipContent"),H=n.forwardRef((e,t)=>{let{__scopeTooltip:r,children:o,"aria-label":l,onEscapeKeyDown:a,onPointerDownOutside:s,...c}=e,d=R(B,r),p=m(r),{onClose:f}=d;return n.useEffect(()=>(document.addEventListener(w,f),()=>document.removeEventListener(w,f)),[f]),n.useEffect(()=>{if(d.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(d.trigger))&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[d.trigger,f]),(0,v.jsx)(i.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:a,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,v.jsxs)(u.UC,{"data-state":d.stateAttribute,...p,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,v.jsx)(F,{children:o}),(0,v.jsx)(q,{scope:r,isInside:!0,children:(0,v.jsx)(x.bL,{id:d.contentId,role:"tooltip",children:l||o})})]})})});I.displayName=B;var S="TooltipArrow",U=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...n}=e,o=m(r);return z(S,r).isInside?null:(0,v.jsx)(u.i3,{...o,...n,ref:t})});U.displayName=S;var V=E,X=j,Y=M,Z=O,G=I,K=U}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/412-1cad36ab64c91342.js b/transports/bifrost-http/ui/_next/static/chunks/412-1cad36ab64c91342.js new file mode 100644 index 0000000000..716ff088c4 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/412-1cad36ab64c91342.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[412],{3464:(e,t,r)=>{"use strict";let n;r.d(t,{A:()=>tf});var o,i,s,a={};function u(e,t){return function(){return e.apply(t,arguments)}}r.r(a),r.d(a,{hasBrowserEnv:()=>eh,hasStandardBrowserEnv:()=>ed,hasStandardBrowserWebWorkerEnv:()=>ey,navigator:()=>ep,origin:()=>eg});var f=r(9509);let{toString:l}=Object.prototype,{getPrototypeOf:c}=Object,{iterator:h,toStringTag:p}=Symbol,d=(e=>t=>{let r=l.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),y=e=>(e=e.toLowerCase(),t=>d(t)===e),g=e=>t=>typeof t===e,{isArray:m}=Array,b=g("undefined"),w=y("ArrayBuffer"),E=g("string"),v=g("function"),A=g("number"),R=e=>null!==e&&"object"==typeof e,O=e=>{if("object"!==d(e))return!1;let t=c(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(p in e)&&!(h in e)},S=y("Date"),T=y("File"),B=y("Blob"),x=y("FileList"),U=y("URLSearchParams"),[C,L,j,N]=["ReadableStream","Request","Response","Headers"].map(y);function P(e,t,{allOwnKeys:r=!1}={}){let n,o;if(null!=e)if("object"!=typeof e&&(e=[e]),m(e))for(n=0,o=e.length;n0;)if(t===(r=n[o]).toLowerCase())return r;return null}let k="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,F=e=>!b(e)&&e!==k,I=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&c(Uint8Array)),D=y("HTMLFormElement"),M=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),q=y("RegExp"),z=(e,t)=>{let r=Object.getOwnPropertyDescriptors(e),n={};P(r,(r,o)=>{let i;!1!==(i=t(r,o,e))&&(n[o]=i||r)}),Object.defineProperties(e,n)},J=y("AsyncFunction"),W=(o="function"==typeof setImmediate,i=v(k.postMessage),o?setImmediate:i?((e,t)=>(k.addEventListener("message",({source:r,data:n})=>{r===k&&n===e&&t.length&&t.shift()()},!1),r=>{t.push(r),k.postMessage(e,"*")}))(`axios@${Math.random()}`,[]):e=>setTimeout(e)),H="undefined"!=typeof queueMicrotask?queueMicrotask.bind(k):void 0!==f&&f.nextTick||W,V={isArray:m,isArrayBuffer:w,isBuffer:function(e){return null!==e&&!b(e)&&null!==e.constructor&&!b(e.constructor)&&v(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||v(e.append)&&("formdata"===(t=d(e))||"object"===t&&v(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&w(e.buffer)},isString:E,isNumber:A,isBoolean:e=>!0===e||!1===e,isObject:R,isPlainObject:O,isReadableStream:C,isRequest:L,isResponse:j,isHeaders:N,isUndefined:b,isDate:S,isFile:T,isBlob:B,isRegExp:q,isFunction:v,isStream:e=>R(e)&&v(e.pipe),isURLSearchParams:U,isTypedArray:I,isFileList:x,forEach:P,merge:function e(){let{caseless:t}=F(this)&&this||{},r={},n=(n,o)=>{let i=t&&_(r,o)||o;O(r[i])&&O(n)?r[i]=e(r[i],n):O(n)?r[i]=e({},n):m(n)?r[i]=n.slice():r[i]=n};for(let e=0,t=arguments.length;e(P(t,(t,n)=>{r&&v(t)?e[n]=u(t,r):e[n]=t},{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let o,i,s,a={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)s=o[i],(!n||n(s,e,t))&&!a[s]&&(t[s]=e[s],a[s]=!0);e=!1!==r&&c(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:d,kindOfTest:y,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;let n=e.indexOf(t,r);return -1!==n&&n===r},toArray:e=>{if(!e)return null;if(m(e))return e;let t=e.length;if(!A(t))return null;let r=Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{let r,n=(e&&e[h]).call(e);for(;(r=n.next())&&!r.done;){let n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let r,n=[];for(;null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:D,hasOwnProperty:M,hasOwnProp:M,reduceDescriptors:z,freezeMethods:e=>{z(e,(t,r)=>{if(v(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;if(v(e[r])){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},toObjectSet:(e,t)=>{let r={};return(m(e)?e:String(e).split(t)).forEach(e=>{r[e]=!0}),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,r){return t.toUpperCase()+r}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e*=1)?e:t,findKey:_,global:k,isContextDefined:F,isSpecCompliantForm:function(e){return!!(e&&v(e.append)&&"FormData"===e[p]&&e[h])},toJSONObject:e=>{let t=Array(10),r=(e,n)=>{if(R(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[n]=e;let o=m(e)?[]:{};return P(e,(e,t)=>{let i=r(e,n+1);b(i)||(o[t]=i)}),t[n]=void 0,o}}return e};return r(e,0)},isAsyncFn:J,isThenable:e=>e&&(R(e)||v(e))&&v(e.then)&&v(e.catch),setImmediate:W,asap:H,isIterable:e=>null!=e&&v(e[h])};function K(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}V.inherits(K,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:V.toJSONObject(this.config),code:this.code,status:this.status}}});let $=K.prototype,X={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{X[e]={value:e}}),Object.defineProperties(K,X),Object.defineProperty($,"isAxiosError",{value:!0}),K.from=(e,t,r,n,o,i)=>{let s=Object.create($);return V.toFlatObject(e,s,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),K.call(s,e.message,t,r,n,o),s.cause=e,s.name=e.name,i&&Object.assign(s,i),s};var Y=r(9641).Buffer;function G(e){return V.isPlainObject(e)||V.isArray(e)}function Z(e){return V.endsWith(e,"[]")?e.slice(0,-2):e}function Q(e,t,r){return e?e.concat(t).map(function(e,t){return e=Z(e),!r&&t?"["+e+"]":e}).join(r?".":""):t}let ee=V.toFlatObject(V,{},null,function(e){return/^is[A-Z]/.test(e)}),et=function(e,t,r){if(!V.isObject(e))throw TypeError("target must be an object");t=t||new FormData;let n=(r=V.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!V.isUndefined(t[e])})).metaTokens,o=r.visitor||f,i=r.dots,s=r.indexes,a=(r.Blob||"undefined"!=typeof Blob&&Blob)&&V.isSpecCompliantForm(t);if(!V.isFunction(o))throw TypeError("visitor must be a function");function u(e){if(null===e)return"";if(V.isDate(e))return e.toISOString();if(V.isBoolean(e))return e.toString();if(!a&&V.isBlob(e))throw new K("Blob is not supported. Use a Buffer instead.");return V.isArrayBuffer(e)||V.isTypedArray(e)?a&&"function"==typeof Blob?new Blob([e]):Y.from(e):e}function f(e,r,o){let a=e;if(e&&!o&&"object"==typeof e)if(V.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else{var f;if(V.isArray(e)&&(f=e,V.isArray(f)&&!f.some(G))||(V.isFileList(e)||V.endsWith(r,"[]"))&&(a=V.toArray(e)))return r=Z(r),a.forEach(function(e,n){V.isUndefined(e)||null===e||t.append(!0===s?Q([r],n,i):null===s?r:r+"[]",u(e))}),!1}return!!G(e)||(t.append(Q(o,r,i),u(e)),!1)}let l=[],c=Object.assign(ee,{defaultVisitor:f,convertValue:u,isVisitable:G});if(!V.isObject(e))throw TypeError("data must be an object");return!function e(r,n){if(!V.isUndefined(r)){if(-1!==l.indexOf(r))throw Error("Circular reference detected in "+n.join("."));l.push(r),V.forEach(r,function(r,i){!0===(!(V.isUndefined(r)||null===r)&&o.call(t,r,V.isString(i)?i.trim():i,n,c))&&e(r,n?n.concat(i):[i])}),l.pop()}}(e),t};function er(e){let t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function en(e,t){this._pairs=[],e&&et(e,this,t)}let eo=en.prototype;function ei(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function es(e,t,r){let n;if(!t)return e;let o=r&&r.encode||ei;V.isFunction(r)&&(r={serialize:r});let i=r&&r.serialize;if(n=i?i(t,r):V.isURLSearchParams(t)?t.toString():new en(t,r).toString(o)){let t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}eo.append=function(e,t){this._pairs.push([e,t])},eo.toString=function(e){let t=e?function(t){return e.call(this,t,er)}:er;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class ea{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){V.forEach(this.handlers,function(t){null!==t&&e(t)})}}let eu={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},ef="undefined"!=typeof URLSearchParams?URLSearchParams:en,el="undefined"!=typeof FormData?FormData:null,ec="undefined"!=typeof Blob?Blob:null,eh="undefined"!=typeof window&&"undefined"!=typeof document,ep="object"==typeof navigator&&navigator||void 0,ed=eh&&(!ep||0>["ReactNative","NativeScript","NS"].indexOf(ep.product)),ey="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,eg=eh&&window.location.href||"http://localhost",em={...a,isBrowser:!0,classes:{URLSearchParams:ef,FormData:el,Blob:ec},protocols:["http","https","file","blob","url","data"]},eb=function(e){if(V.isFormData(e)&&V.isFunction(e.entries)){let t={};return V.forEachEntry(e,(e,r)=>{!function e(t,r,n,o){let i=t[o++];if("__proto__"===i)return!0;let s=Number.isFinite(+i),a=o>=t.length;return(i=!i&&V.isArray(n)?n.length:i,a)?V.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r:(n[i]&&V.isObject(n[i])||(n[i]=[]),e(t,r,n[i],o)&&V.isArray(n[i])&&(n[i]=function(e){let t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t"[]"===e[0]?"":e[1]||e[0]),r,t,0)}),t}return null},ew={transitional:eu,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){let r,n=t.getContentType()||"",o=n.indexOf("application/json")>-1,i=V.isObject(e);if(i&&V.isHTMLForm(e)&&(e=new FormData(e)),V.isFormData(e))return o?JSON.stringify(eb(e)):e;if(V.isArrayBuffer(e)||V.isBuffer(e)||V.isStream(e)||V.isFile(e)||V.isBlob(e)||V.isReadableStream(e))return e;if(V.isArrayBufferView(e))return e.buffer;if(V.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1){var s,a;return(s=e,a=this.formSerializer,et(s,new em.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return em.isNode&&V.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},a))).toString()}if((r=V.isFileList(e))||n.indexOf("multipart/form-data")>-1){let t=this.env&&this.env.FormData;return et(r?{"files[]":e}:e,t&&new t,this.formSerializer)}}if(i||o){t.setContentType("application/json",!1);var u=e;if(V.isString(u))try{return(0,JSON.parse)(u),V.trim(u)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(u)}return e}],transformResponse:[function(e){let t=this.transitional||ew.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(V.isResponse(e)||V.isReadableStream(e))return e;if(e&&V.isString(e)&&(r&&!this.responseType||n)){let r=t&&t.silentJSONParsing;try{return JSON.parse(e)}catch(e){if(!r&&n){if("SyntaxError"===e.name)throw K.from(e,K.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:em.classes.FormData,Blob:em.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};V.forEach(["delete","get","head","post","put","patch"],e=>{ew.headers[e]={}});let eE=V.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),ev=e=>{let t,r,n,o={};return e&&e.split("\n").forEach(function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&eE[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)}),o},eA=Symbol("internals");function eR(e){return e&&String(e).trim().toLowerCase()}function eO(e){return!1===e||null==e?e:V.isArray(e)?e.map(eO):String(e)}let eS=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function eT(e,t,r,n,o){if(V.isFunction(n))return n.call(this,t,r);if(o&&(t=r),V.isString(t)){if(V.isString(n))return -1!==t.indexOf(n);if(V.isRegExp(n))return n.test(t)}}class eB{constructor(e){e&&this.set(e)}set(e,t,r){let n=this;function o(e,t,r){let o=eR(t);if(!o)throw Error("header name must be a non-empty string");let i=V.findKey(n,o);i&&void 0!==n[i]&&!0!==r&&(void 0!==r||!1===n[i])||(n[i||t]=eO(e))}let i=(e,t)=>V.forEach(e,(e,r)=>o(e,r,t));if(V.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(V.isString(e)&&(e=e.trim())&&!eS(e))i(ev(e),t);else if(V.isObject(e)&&V.isIterable(e)){let r={},n,o;for(let t of e){if(!V.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[o=t[0]]=(n=r[o])?V.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&o(t,e,r);return this}get(e,t){if(e=eR(e)){let r=V.findKey(this,e);if(r){let e=this[r];if(!t)return e;if(!0===t){let t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;for(;t=n.exec(e);)r[t[1]]=t[2];return r}if(V.isFunction(t))return t.call(this,e,r);if(V.isRegExp(t))return t.exec(e);throw TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=eR(e)){let r=V.findKey(this,e);return!!(r&&void 0!==this[r]&&(!t||eT(this,this[r],r,t)))}return!1}delete(e,t){let r=this,n=!1;function o(e){if(e=eR(e)){let o=V.findKey(r,e);o&&(!t||eT(r,r[o],o,t))&&(delete r[o],n=!0)}}return V.isArray(e)?e.forEach(o):o(e),n}clear(e){let t=Object.keys(this),r=t.length,n=!1;for(;r--;){let o=t[r];(!e||eT(this,this[o],o,e,!0))&&(delete this[o],n=!0)}return n}normalize(e){let t=this,r={};return V.forEach(this,(n,o)=>{let i=V.findKey(r,o);if(i){t[i]=eO(n),delete t[o];return}let s=e?o.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r):String(o).trim();s!==o&&delete t[o],t[s]=eO(n),r[s]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return V.forEach(this,(r,n)=>{null!=r&&!1!==r&&(t[n]=e&&V.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let r=new this(e);return t.forEach(e=>r.set(e)),r}static accessor(e){let t=(this[eA]=this[eA]={accessors:{}}).accessors,r=this.prototype;function n(e){let n=eR(e);if(!t[n]){let o=V.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(r,t+o,{value:function(r,n,o){return this[t].call(this,e,r,n,o)},configurable:!0})}),t[n]=!0}}return V.isArray(e)?e.forEach(n):n(e),this}}function ex(e,t){let r=this||ew,n=t||r,o=eB.from(n.headers),i=n.data;return V.forEach(e,function(e){i=e.call(r,i,o.normalize(),t?t.status:void 0)}),o.normalize(),i}function eU(e){return!!(e&&e.__CANCEL__)}function eC(e,t,r){K.call(this,null==e?"canceled":e,K.ERR_CANCELED,t,r),this.name="CanceledError"}function eL(e,t,r){let n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new K("Request failed with status code "+r.status,[K.ERR_BAD_REQUEST,K.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}eB.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),V.reduceDescriptors(eB.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}}),V.freezeMethods(eB),V.inherits(eC,K,{__CANCEL__:!0});let ej=function(e,t){let r,n=Array(e=e||10),o=Array(e),i=0,s=0;return t=void 0!==t?t:1e3,function(a){let u=Date.now(),f=o[s];r||(r=u),n[i]=a,o[i]=u;let l=s,c=0;for(;l!==i;)c+=n[l++],l%=e;if((i=(i+1)%e)===s&&(s=(s+1)%e),u-r{o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[(...e)=>{let t=Date.now(),a=t-o;a>=i?s(e,t):(r=e,n||(n=setTimeout(()=>{n=null,s(r)},i-a)))},()=>r&&s(r)]},eP=(e,t,r=3)=>{let n=0,o=ej(50,250);return eN(r=>{let i=r.loaded,s=r.lengthComputable?r.total:void 0,a=i-n,u=o(a);n=i,e({loaded:i,total:s,progress:s?i/s:void 0,bytes:a,rate:u||void 0,estimated:u&&s&&i<=s?(s-i)/u:void 0,event:r,lengthComputable:null!=s,[t?"download":"upload"]:!0})},r)},e_=(e,t)=>{let r=null!=e;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},ek=e=>(...t)=>V.asap(()=>e(...t)),eF=em.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,em.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(em.origin),em.navigator&&/(msie|trident)/i.test(em.navigator.userAgent)):()=>!0,eI=em.hasStandardBrowserEnv?{write(e,t,r,n,o,i){let s=[e+"="+encodeURIComponent(t)];V.isNumber(r)&&s.push("expires="+new Date(r).toGMTString()),V.isString(n)&&s.push("path="+n),V.isString(o)&&s.push("domain="+o),!0===i&&s.push("secure"),document.cookie=s.join("; ")},read(e){let t=document.cookie.match(RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function eD(e,t,r){let n=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(n||!1==r)?t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e:t}let eM=e=>e instanceof eB?{...e}:e;function eq(e,t){t=t||{};let r={};function n(e,t,r,n){return V.isPlainObject(e)&&V.isPlainObject(t)?V.merge.call({caseless:n},e,t):V.isPlainObject(t)?V.merge({},t):V.isArray(t)?t.slice():t}function o(e,t,r,o){return V.isUndefined(t)?V.isUndefined(e)?void 0:n(void 0,e,r,o):n(e,t,r,o)}function i(e,t){if(!V.isUndefined(t))return n(void 0,t)}function s(e,t){return V.isUndefined(t)?V.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function a(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}let u={url:i,method:i,data:i,baseURL:s,transformRequest:s,transformResponse:s,paramsSerializer:s,timeout:s,timeoutMessage:s,withCredentials:s,withXSRFToken:s,adapter:s,responseType:s,xsrfCookieName:s,xsrfHeaderName:s,onUploadProgress:s,onDownloadProgress:s,decompress:s,maxContentLength:s,maxBodyLength:s,beforeRedirect:s,transport:s,httpAgent:s,httpsAgent:s,cancelToken:s,socketPath:s,responseEncoding:s,validateStatus:a,headers:(e,t,r)=>o(eM(e),eM(t),r,!0)};return V.forEach(Object.keys(Object.assign({},e,t)),function(n){let i=u[n]||o,s=i(e[n],t[n],n);V.isUndefined(s)&&i!==a||(r[n]=s)}),r}let ez=e=>{let t,r=eq({},e),{data:n,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:s,headers:a,auth:u}=r;if(r.headers=a=eB.from(a),r.url=es(eD(r.baseURL,r.url,r.allowAbsoluteUrls),e.params,e.paramsSerializer),u&&a.set("Authorization","Basic "+btoa((u.username||"")+":"+(u.password?unescape(encodeURIComponent(u.password)):""))),V.isFormData(n)){if(em.hasStandardBrowserEnv||em.hasStandardBrowserWebWorkerEnv)a.setContentType(void 0);else if(!1!==(t=a.getContentType())){let[e,...r]=t?t.split(";").map(e=>e.trim()).filter(Boolean):[];a.setContentType([e||"multipart/form-data",...r].join("; "))}}if(em.hasStandardBrowserEnv&&(o&&V.isFunction(o)&&(o=o(r)),o||!1!==o&&eF(r.url))){let e=i&&s&&eI.read(s);e&&a.set(i,e)}return r},eJ="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,r){let n,o,i,s,a,u=ez(e),f=u.data,l=eB.from(u.headers).normalize(),{responseType:c,onUploadProgress:h,onDownloadProgress:p}=u;function d(){s&&s(),a&&a(),u.cancelToken&&u.cancelToken.unsubscribe(n),u.signal&&u.signal.removeEventListener("abort",n)}let y=new XMLHttpRequest;function g(){if(!y)return;let n=eB.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders());eL(function(e){t(e),d()},function(e){r(e),d()},{data:c&&"text"!==c&&"json"!==c?y.response:y.responseText,status:y.status,statusText:y.statusText,headers:n,config:e,request:y}),y=null}y.open(u.method.toUpperCase(),u.url,!0),y.timeout=u.timeout,"onloadend"in y?y.onloadend=g:y.onreadystatechange=function(){y&&4===y.readyState&&(0!==y.status||y.responseURL&&0===y.responseURL.indexOf("file:"))&&setTimeout(g)},y.onabort=function(){y&&(r(new K("Request aborted",K.ECONNABORTED,e,y)),y=null)},y.onerror=function(){r(new K("Network Error",K.ERR_NETWORK,e,y)),y=null},y.ontimeout=function(){let t=u.timeout?"timeout of "+u.timeout+"ms exceeded":"timeout exceeded",n=u.transitional||eu;u.timeoutErrorMessage&&(t=u.timeoutErrorMessage),r(new K(t,n.clarifyTimeoutError?K.ETIMEDOUT:K.ECONNABORTED,e,y)),y=null},void 0===f&&l.setContentType(null),"setRequestHeader"in y&&V.forEach(l.toJSON(),function(e,t){y.setRequestHeader(t,e)}),V.isUndefined(u.withCredentials)||(y.withCredentials=!!u.withCredentials),c&&"json"!==c&&(y.responseType=u.responseType),p&&([i,a]=eP(p,!0),y.addEventListener("progress",i)),h&&y.upload&&([o,s]=eP(h),y.upload.addEventListener("progress",o),y.upload.addEventListener("loadend",s)),(u.cancelToken||u.signal)&&(n=t=>{y&&(r(!t||t.type?new eC(null,e,y):t),y.abort(),y=null)},u.cancelToken&&u.cancelToken.subscribe(n),u.signal&&(u.signal.aborted?n():u.signal.addEventListener("abort",n)));let m=function(e){let t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(u.url);if(m&&-1===em.protocols.indexOf(m))return void r(new K("Unsupported protocol "+m+":",K.ERR_BAD_REQUEST,e));y.send(f||null)})},eW=(e,t)=>{let{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,n=new AbortController,o=function(e){if(!r){r=!0,s();let t=e instanceof Error?e:this.reason;n.abort(t instanceof K?t:new eC(t instanceof Error?t.message:t))}},i=t&&setTimeout(()=>{i=null,o(new K(`timeout ${t} of ms exceeded`,K.ETIMEDOUT))},t),s=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));let{signal:a}=n;return a.unsubscribe=()=>V.asap(s),a}},eH=function*(e,t){let r,n=e.byteLength;if(!t||n{let o,i=eV(e,t),s=0,a=e=>{!o&&(o=!0,n&&n(e))};return new ReadableStream({async pull(e){try{let{done:t,value:n}=await i.next();if(t){a(),e.close();return}let o=n.byteLength;if(r){let e=s+=o;r(e)}e.enqueue(new Uint8Array(n))}catch(e){throw a(e),e}},cancel:e=>(a(e),i.return())},{highWaterMark:2})},eX="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,eY=eX&&"function"==typeof ReadableStream,eG=eX&&("function"==typeof TextEncoder?(n=new TextEncoder,e=>n.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer())),eZ=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},eQ=eY&&eZ(()=>{let e=!1,t=new Request(em.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),e0=eY&&eZ(()=>V.isReadableStream(new Response("").body)),e1={stream:e0&&(e=>e.body)};eX&&(s=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{e1[e]||(e1[e]=V.isFunction(s[e])?t=>t[e]():(t,r)=>{throw new K(`Response type '${e}' is not supported`,K.ERR_NOT_SUPPORT,r)})}));let e2=async e=>{if(null==e)return 0;if(V.isBlob(e))return e.size;if(V.isSpecCompliantForm(e)){let t=new Request(em.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return V.isArrayBufferView(e)||V.isArrayBuffer(e)?e.byteLength:(V.isURLSearchParams(e)&&(e+=""),V.isString(e))?(await eG(e)).byteLength:void 0},e5=async(e,t)=>{let r=V.toFiniteNumber(e.getContentLength());return null==r?e2(t):r},e6={http:null,xhr:eJ,fetch:eX&&(async e=>{let t,r,{url:n,method:o,data:i,signal:s,cancelToken:a,timeout:u,onDownloadProgress:f,onUploadProgress:l,responseType:c,headers:h,withCredentials:p="same-origin",fetchOptions:d}=ez(e);c=c?(c+"").toLowerCase():"text";let y=eW([s,a&&a.toAbortSignal()],u),g=y&&y.unsubscribe&&(()=>{y.unsubscribe()});try{if(l&&eQ&&"get"!==o&&"head"!==o&&0!==(r=await e5(h,i))){let e,t=new Request(n,{method:"POST",body:i,duplex:"half"});if(V.isFormData(i)&&(e=t.headers.get("content-type"))&&h.setContentType(e),t.body){let[e,n]=e_(r,eP(ek(l)));i=e$(t.body,65536,e,n)}}V.isString(p)||(p=p?"include":"omit");let s="credentials"in Request.prototype;t=new Request(n,{...d,signal:y,method:o.toUpperCase(),headers:h.normalize().toJSON(),body:i,duplex:"half",credentials:s?p:void 0});let a=await fetch(t,d),u=e0&&("stream"===c||"response"===c);if(e0&&(f||u&&g)){let e={};["status","statusText","headers"].forEach(t=>{e[t]=a[t]});let t=V.toFiniteNumber(a.headers.get("content-length")),[r,n]=f&&e_(t,eP(ek(f),!0))||[];a=new Response(e$(a.body,65536,r,()=>{n&&n(),g&&g()}),e)}c=c||"text";let m=await e1[V.findKey(e1,c)||"text"](a,e);return!u&&g&&g(),await new Promise((r,n)=>{eL(r,n,{data:m,headers:eB.from(a.headers),status:a.status,statusText:a.statusText,config:e,request:t})})}catch(r){if(g&&g(),r&&"TypeError"===r.name&&/Load failed|fetch/i.test(r.message))throw Object.assign(new K("Network Error",K.ERR_NETWORK,e,t),{cause:r.cause||r});throw K.from(r,r&&r.code,e,t)}})};V.forEach(e6,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});let e8=e=>`- ${e}`,e3=e=>V.isFunction(e)||null===e||!1===e,e4={getAdapter:e=>{let t,r,{length:n}=e=V.isArray(e)?e:[e],o={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new K("There is no suitable adapter to dispatch the request "+(n?e.length>1?"since :\n"+e.map(e8).join("\n"):" "+e8(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r}};function e7(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new eC(null,e)}function e9(e){return e7(e),e.headers=eB.from(e.headers),e.data=ex.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),e4.getAdapter(e.adapter||ew.adapter)(e).then(function(t){return e7(e),t.data=ex.call(e,e.transformResponse,t),t.headers=eB.from(t.headers),t},function(t){return!eU(t)&&(e7(e),t&&t.response&&(t.response.data=ex.call(e,e.transformResponse,t.response),t.response.headers=eB.from(t.response.headers))),Promise.reject(t)})}let te="1.10.0",tt={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{tt[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});let tr={};tt.transitional=function(e,t,r){function n(e,t){return"[Axios v"+te+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,o,i)=>{if(!1===e)throw new K(n(o," has been removed"+(t?" in "+t:"")),K.ERR_DEPRECATED);return t&&!tr[o]&&(tr[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},tt.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};let tn={assertOptions:function(e,t,r){if("object"!=typeof e)throw new K("options must be an object",K.ERR_BAD_OPTION_VALUE);let n=Object.keys(e),o=n.length;for(;o-- >0;){let i=n[o],s=t[i];if(s){let t=e[i],r=void 0===t||s(t,i,e);if(!0!==r)throw new K("option "+i+" must be "+r,K.ERR_BAD_OPTION_VALUE);continue}if(!0!==r)throw new K("Unknown option "+i,K.ERR_BAD_OPTION)}},validators:tt},to=tn.validators;class ti{constructor(e){this.defaults=e||{},this.interceptors={request:new ea,response:new ea}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=Error();let r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){let r,n;"string"==typeof e?(t=t||{}).url=e:t=e||{};let{transitional:o,paramsSerializer:i,headers:s}=t=eq(this.defaults,t);void 0!==o&&tn.assertOptions(o,{silentJSONParsing:to.transitional(to.boolean),forcedJSONParsing:to.transitional(to.boolean),clarifyTimeoutError:to.transitional(to.boolean)},!1),null!=i&&(V.isFunction(i)?t.paramsSerializer={serialize:i}:tn.assertOptions(i,{encode:to.function,serialize:to.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),tn.assertOptions(t,{baseUrl:to.spelling("baseURL"),withXsrfToken:to.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let a=s&&V.merge(s.common,s[t.method]);s&&V.forEach(["delete","get","head","post","put","patch","common"],e=>{delete s[e]}),t.headers=eB.concat(a,s);let u=[],f=!0;this.interceptors.request.forEach(function(e){("function"!=typeof e.runWhen||!1!==e.runWhen(t))&&(f=f&&e.synchronous,u.unshift(e.fulfilled,e.rejected))});let l=[];this.interceptors.response.forEach(function(e){l.push(e.fulfilled,e.rejected)});let c=0;if(!f){let e=[e9.bind(this),void 0];for(e.unshift.apply(e,u),e.push.apply(e,l),n=e.length,r=Promise.resolve(t);c{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null}),this.promise.then=e=>{let t,n=new Promise(e=>{r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},e(function(e,n,o){r.reason||(r.reason=new eC(e,n,o),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason)return void e(this.reason);this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ts(function(t){e=t}),cancel:e}}}let ta={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ta).forEach(([e,t])=>{ta[t]=e});let tu=function e(t){let r=new ti(t),n=u(ti.prototype.request,r);return V.extend(n,ti.prototype,r,{allOwnKeys:!0}),V.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(eq(t,r))},n}(ew);tu.Axios=ti,tu.CanceledError=eC,tu.CancelToken=ts,tu.isCancel=eU,tu.VERSION=te,tu.toFormData=et,tu.AxiosError=K,tu.Cancel=tu.CanceledError,tu.all=function(e){return Promise.all(e)},tu.spread=function(e){return function(t){return e.apply(null,t)}},tu.isAxiosError=function(e){return V.isObject(e)&&!0===e.isAxiosError},tu.mergeConfig=eq,tu.AxiosHeaders=eB,tu.formToJSON=e=>eb(V.isHTMLForm(e)?new FormData(e):e),tu.getAdapter=e4.getAdapter,tu.HttpStatusCode=ta,tu.default=tu;let tf=tu},5503:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(2115);function o(e){let t=n.useRef({value:e,previous:e});return n.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},9362:(e,t,r)=>{"use strict";r.d(t,{F0:()=>c});let{Axios:n,AxiosError:o,CanceledError:i,isCancel:s,CancelToken:a,VERSION:u,all:f,Cancel:l,isAxiosError:c,spread:h,toFormData:p,AxiosHeaders:d,HttpStatusCode:y,formToJSON:g,getAdapter:m,mergeConfig:b}=r(3464).A},9641:e=>{!function(){var t={675:function(e,t){"use strict";t.byteLength=function(e){var t=u(e),r=t[0],n=t[1];return(r+n)*3/4-n},t.toByteArray=function(e){var t,r,i=u(e),s=i[0],a=i[1],f=new o((s+a)*3/4-a),l=0,c=a>0?s-4:s;for(r=0;r>16&255,f[l++]=t>>8&255,f[l++]=255&t;return 2===a&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,f[l++]=255&t),1===a&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,f[l++]=t>>8&255,f[l++]=255&t),f},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],s=0,a=n-o;s>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return i.join("")}(e,s,s+16383>a?a:s+16383));return 1===o?i.push(r[(t=e[n-1])>>2]+r[t<<4&63]+"=="):2===o&&i.push(r[(t=(e[n-2]<<8)+e[n-1])>>10]+r[t>>4&63]+r[t<<2&63]+"="),i.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",s=0,a=i.length;s0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var n=r===t?0:4-r%4;return[r,n]}n[45]=62,n[95]=63},72:function(e,t,r){"use strict";var n=r(675),o=r(783),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function s(e){if(e>0x7fffffff)throw RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return l(e)}return u(e,t,r)}function u(e,t,r){if("string"==typeof e){var n=e,o=t;if(("string"!=typeof o||""===o)&&(o="utf8"),!a.isEncoding(o))throw TypeError("Unknown encoding: "+o);var i=0|p(n,o),u=s(i),f=u.write(n,o);return f!==i&&(u=u.slice(0,f)),u}if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(U(e,ArrayBuffer)||e&&U(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(U(e,SharedArrayBuffer)||e&&U(e.buffer,SharedArrayBuffer)))return function(e,t,r){var n;if(t<0||e.byteLength=0x7fffffff)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function p(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||U(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return S(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return B(e).length;default:if(o)return n?-1:S(e).length;t=(""+t).toLowerCase(),o=!0}}function d(e,t,r){var o,i,s,a=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0||(r>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i0x7fffffff?r=0x7fffffff:r<-0x80000000&&(r=-0x80000000),(i=r*=1)!=i&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length)if(o)return -1;else r=e.length-1;else if(r<0)if(!o)return -1;else r=0;if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:m(e,t,r,n,o);if("number"==typeof t){if(t&=255,"function"==typeof Uint8Array.prototype.indexOf)if(o)return Uint8Array.prototype.indexOf.call(e,t,r);else return Uint8Array.prototype.lastIndexOf.call(e,t,r);return m(e,[t],r,n,o)}throw TypeError("val must be string, number or Buffer")}function m(e,t,r,n,o){var i,s=1,a=e.length,u=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return -1;s=2,a/=2,u/=2,r/=2}function f(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}if(o){var l=-1;for(i=r;ia&&(r=a-u),i=r;i>=0;i--){for(var c=!0,h=0;hr&&(e+=" ... "),""},i&&(a.prototype[i]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,o){if(U(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return -1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,o>>>=0,this===e)return 0;for(var i=o-n,s=r-t,u=Math.min(i,s),f=this.slice(n,o),l=e.slice(t,r),c=0;c239?4:f>223?3:f>191?2:1;if(o+c<=r)switch(c){case 1:f<128&&(l=f);break;case 2:(192&(i=e[o+1]))==128&&(u=(31&f)<<6|63&i)>127&&(l=u);break;case 3:i=e[o+1],s=e[o+2],(192&i)==128&&(192&s)==128&&(u=(15&f)<<12|(63&i)<<6|63&s)>2047&&(u<55296||u>57343)&&(l=u);break;case 4:i=e[o+1],s=e[o+2],a=e[o+3],(192&i)==128&&(192&s)==128&&(192&a)==128&&(u=(15&f)<<18|(63&i)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(l=u)}null===l?(l=65533,c=1):l>65535&&(l-=65536,n.push(l>>>10&1023|55296),l=56320|1023&l),n.push(l),o+=c}var h=n,p=h.length;if(p<=4096)return String.fromCharCode.apply(String,h);for(var d="",y=0;yr)throw RangeError("Trying to access beyond buffer length")}function E(e,t,r,n,o,i){if(!a.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw RangeError("Index out of range")}function v(e,t,r,n,o,i){if(r+n>e.length||r<0)throw RangeError("Index out of range")}function A(e,t,r,n,i){return t*=1,r>>>=0,i||v(e,t,r,4,34028234663852886e22,-34028234663852886e22),o.write(e,t,r,n,23,4),r+4}function R(e,t,r,n,i){return t*=1,r>>>=0,i||v(e,t,r,8,17976931348623157e292,-17976931348623157e292),o.write(e,t,r,n,52,8),r+8}a.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var o,i,s,a,u,f,l,c,h=this.length-t;if((void 0===r||r>h)&&(r=h),e.length>0&&(r<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var p=!1;;)switch(n){case"hex":return function(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var s=0;s>8,o.push(r%256),o.push(n);return o}(e,this.length-l),this,l,c);default:if(p)throw TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),p=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},a.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e],o=1,i=0;++i>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},a.prototype.readUInt8=function(e,t){return e>>>=0,t||w(e,1,this.length),this[e]},a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||w(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||w(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||w(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+0x1000000*this[e+3]},a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||w(e,4,this.length),0x1000000*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=this[e],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||w(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},a.prototype.readInt8=function(e,t){return(e>>>=0,t||w(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||w(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?0xffff0000|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||w(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?0xffff0000|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||w(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||w(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readFloatLE=function(e,t){return e>>>=0,t||w(e,4,this.length),o.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||w(e,4,this.length),o.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||w(e,8,this.length),o.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||w(e,8,this.length),o.read(this,e,!1,52,8)},a.prototype.writeUIntLE=function(e,t,r,n){if(e*=1,t>>>=0,r>>>=0,!n){var o=Math.pow(2,8*r)-1;E(this,e,t,r,o,0)}var i=1,s=0;for(this[t]=255&e;++s>>=0,r>>>=0,!n){var o=Math.pow(2,8*r)-1;E(this,e,t,r,o,0)}var i=r-1,s=1;for(this[t+i]=255&e;--i>=0&&(s*=256);)this[t+i]=e/s&255;return t+r},a.prototype.writeUInt8=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUInt16LE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUInt16BE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUInt32LE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,4,0xffffffff,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUInt32BE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,4,0xffffffff,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeIntLE=function(e,t,r,n){if(e*=1,t>>>=0,!n){var o=Math.pow(2,8*r-1);E(this,e,t,r,o-1,-o)}var i=0,s=1,a=0;for(this[t]=255&e;++i>>=0,!n){var o=Math.pow(2,8*r-1);E(this,e,t,r,o-1,-o)}var i=r-1,s=1,a=0;for(this[t+i]=255&e;--i>=0&&(s*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/s|0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,4,0x7fffffff,-0x80000000),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e*=1,t>>>=0,r||E(this,e,t,4,0x7fffffff,-0x80000000),e<0&&(e=0xffffffff+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeFloatLE=function(e,t,r){return A(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return A(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return R(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return R(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw RangeError("Index out of range");if(n<0)throw RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},a.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw TypeError("Unknown encoding: "+n);if(1===e.length){var o,i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!o){if(r>56319||s+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=(o-55296<<10|r-56320)+65536}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else if(r<1114112){if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else throw Error("Invalid code point")}return i}function T(e){for(var t=[],r=0;r=t.length)&&!(o>=e.length);++o)t[o+r]=e[o];return o}function U(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}var C=function(){for(var e="0123456789abcdef",t=Array(256),r=0;r<16;++r)for(var n=16*r,o=0;o<16;++o)t[n+o]=e[r]+e[o];return t}()},783:function(e,t){t.read=function(e,t,r,n,o){var i,s,a=8*o-n-1,u=(1<>1,l=-7,c=r?o-1:0,h=r?-1:1,p=e[t+c];for(c+=h,i=p&(1<<-l)-1,p>>=-l,l+=a;l>0;i=256*i+e[t+c],c+=h,l-=8);for(s=i&(1<<-l)-1,i>>=-l,l+=n;l>0;s=256*s+e[t+c],c+=h,l-=8);if(0===i)i=1-f;else{if(i===u)return s?NaN:1/0*(p?-1:1);s+=Math.pow(2,n),i-=f}return(p?-1:1)*s*Math.pow(2,i-n)},t.write=function(e,t,r,n,o,i){var s,a,u,f=8*i-o-1,l=(1<>1,h=5960464477539062e-23*(23===o),p=n?0:i-1,d=n?1:-1,y=+(t<0||0===t&&1/t<0);for(isNaN(t=Math.abs(t))||t===1/0?(a=+!!isNaN(t),s=l):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),s+c>=1?t+=h/u:t+=h*Math.pow(2,1-c),t*u>=2&&(s++,u/=2),s+c>=l?(a=0,s=l):s+c>=1?(a=(t*u-1)*Math.pow(2,o),s+=c):(a=t*Math.pow(2,c-1)*Math.pow(2,o),s=0));o>=8;e[r+p]=255&a,p+=d,a/=256,o-=8);for(s=s<0;e[r+p]=255&s,p+=d,s/=256,f-=8);e[r+p-d]|=128*y}}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}},s=!0;try{t[e](i,i.exports,n),s=!1}finally{s&&delete r[e]}return i.exports}n.ab="//",e.exports=n(72)}()}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/447-2fb3004c69b6e1a0.js b/transports/bifrost-http/ui/_next/static/chunks/447-2fb3004c69b6e1a0.js deleted file mode 100644 index 8ac6be2383..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/447-2fb3004c69b6e1a0.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[447],{968:(e,t,r)=>{"use strict";r.d(t,{b:()=>s});var n=r(2115),a=r(3655),o=r(5155),i=n.forwardRef((e,t)=>(0,o.jsx)(a.sG.label,{...e,ref:t,onMouseDown:t=>{var r;t.target.closest("button, input, select, textarea")||(null==(r=e.onMouseDown)||r.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));i.displayName="Label";var s=i},1284:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1539:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},2525:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},3717:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]])},4109:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]])},4213:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]])},4229:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},4616:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},4869:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},4884:(e,t,r)=>{"use strict";r.d(t,{bL:()=>m,zi:()=>A});var n=r(2115),a=r(5185),o=r(6101),i=r(6081),s=r(5845),c=r(5503),u=r(1275),l=r(3655),f=r(5155),d="Switch",[p,h]=(0,i.A)(d),[y,v]=p(d),b=n.forwardRef((e,t)=>{let{__scopeSwitch:r,name:i,checked:c,defaultChecked:u,required:p,disabled:h,value:v="on",onCheckedChange:b,form:_,...g}=e,[m,A]=n.useState(null),w=(0,o.s)(t,e=>A(e)),x=n.useRef(!1),z=!m||_||!!m.closest("form"),[M,O]=(0,s.i)({prop:c,defaultProp:null!=u&&u,onChange:b,caller:d});return(0,f.jsxs)(y,{scope:r,checked:M,disabled:h,children:[(0,f.jsx)(l.sG.button,{type:"button",role:"switch","aria-checked":M,"aria-required":p,"data-state":k(M),"data-disabled":h?"":void 0,disabled:h,value:v,...g,ref:w,onClick:(0,a.m)(e.onClick,e=>{O(e=>!e),z&&(x.current=e.isPropagationStopped(),x.current||e.stopPropagation())})}),z&&(0,f.jsx)(j,{control:m,bubbles:!x.current,name:i,value:v,checked:M,required:p,disabled:h,form:_,style:{transform:"translateX(-100%)"}})]})});b.displayName=d;var _="SwitchThumb",g=n.forwardRef((e,t)=>{let{__scopeSwitch:r,...n}=e,a=v(_,r);return(0,f.jsx)(l.sG.span,{"data-state":k(a.checked),"data-disabled":a.disabled?"":void 0,...n,ref:t})});g.displayName=_;var j=n.forwardRef((e,t)=>{let{__scopeSwitch:r,control:a,checked:i,bubbles:s=!0,...l}=e,d=n.useRef(null),p=(0,o.s)(d,t),h=(0,c.Z)(i),y=(0,u.X)(a);return n.useEffect(()=>{let e=d.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(h!==i&&t){let r=new Event("click",{bubbles:s});t.call(e,i),e.dispatchEvent(r)}},[h,i,s]),(0,f.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:i,...l,tabIndex:-1,ref:p,style:{...l.style,...y,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function k(e){return e?"checked":"unchecked"}j.displayName="SwitchBubbleInput";var m=b,A=g},7649:(e,t,r)=>{"use strict";r.d(t,{UC:()=>P,VY:()=>V,ZD:()=>I,ZL:()=>S,bL:()=>E,hE:()=>F,hJ:()=>L,l9:()=>R,rc:()=>C});var n=r(2115),a=r(6081),o=r(6101),i=r(5452),s=r(5185),c=r(9708),u=r(5155),l="AlertDialog",[f,d]=(0,a.A)(l,[i.Hs]),p=(0,i.Hs)(),h=e=>{let{__scopeAlertDialog:t,...r}=e,n=p(t);return(0,u.jsx)(i.bL,{...n,...r,modal:!0})};h.displayName=l;var y=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=p(r);return(0,u.jsx)(i.l9,{...a,...n,ref:t})});y.displayName="AlertDialogTrigger";var v=e=>{let{__scopeAlertDialog:t,...r}=e,n=p(t);return(0,u.jsx)(i.ZL,{...n,...r})};v.displayName="AlertDialogPortal";var b=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=p(r);return(0,u.jsx)(i.hJ,{...a,...n,ref:t})});b.displayName="AlertDialogOverlay";var _="AlertDialogContent",[g,j]=f(_),k=(0,c.Dc)("AlertDialogContent"),m=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,children:a,...c}=e,l=p(r),f=n.useRef(null),d=(0,o.s)(t,f),h=n.useRef(null);return(0,u.jsx)(i.G$,{contentName:_,titleName:A,docsSlug:"alert-dialog",children:(0,u.jsx)(g,{scope:r,cancelRef:h,children:(0,u.jsxs)(i.UC,{role:"alertdialog",...l,...c,ref:d,onOpenAutoFocus:(0,s.m)(c.onOpenAutoFocus,e=>{var t;e.preventDefault(),null==(t=h.current)||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,u.jsx)(k,{children:a}),(0,u.jsx)(N,{contentRef:f})]})})})});m.displayName=_;var A="AlertDialogTitle",w=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=p(r);return(0,u.jsx)(i.hE,{...a,...n,ref:t})});w.displayName=A;var x="AlertDialogDescription",z=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=p(r);return(0,u.jsx)(i.VY,{...a,...n,ref:t})});z.displayName=x;var M=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,a=p(r);return(0,u.jsx)(i.bm,{...a,...n,ref:t})});M.displayName="AlertDialogAction";var O="AlertDialogCancel",D=n.forwardRef((e,t)=>{let{__scopeAlertDialog:r,...n}=e,{cancelRef:a}=j(O,r),s=p(r),c=(0,o.s)(t,a);return(0,u.jsx)(i.bm,{...s,...n,ref:c})});D.displayName=O;var N=e=>{let{contentRef:t}=e,r="`".concat(_,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(_,"` by passing a `").concat(x,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(_,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return n.useEffect(()=>{var e;document.getElementById(null==(e=t.current)?void 0:e.getAttribute("aria-describedby"))||console.warn(r)},[r,t]),null},E=h,R=y,S=v,L=b,P=m,C=M,I=D,F=w,V=z},8103:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("pickaxe",[["path",{d:"M14.531 12.469 6.619 20.38a1 1 0 1 1-3-3l7.912-7.912",key:"we99rg"}],["path",{d:"M15.686 4.314A12.5 12.5 0 0 0 5.461 2.958 1 1 0 0 0 5.58 4.71a22 22 0 0 1 6.318 3.393",key:"1w6hck"}],["path",{d:"M17.7 3.7a1 1 0 0 0-1.4 0l-4.6 4.6a1 1 0 0 0 0 1.4l2.6 2.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4z",key:"15hgfx"}],["path",{d:"M19.686 8.314a12.501 12.501 0 0 1 1.356 10.225 1 1 0 0 1-1.751-.119 22 22 0 0 0-3.393-6.319",key:"452b4h"}]])},9231:(e,t,r)=>{e=r.nmd(e);var n,a,o="__lodash_hash_undefined__",i="[object Arguments]",s="[object Array]",c="[object Boolean]",u="[object Date]",l="[object Error]",f="[object Function]",d="[object Map]",p="[object Number]",h="[object Object]",y="[object Promise]",v="[object RegExp]",b="[object Set]",_="[object String]",g="[object WeakMap]",j="[object ArrayBuffer]",k="[object DataView]",m=/^\[object .+?Constructor\]$/,A=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[i]=w[s]=w[j]=w[c]=w[k]=w[u]=w[l]=w[f]=w[d]=w[p]=w[h]=w[v]=w[b]=w[_]=w[g]=!1;var x="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,z="object"==typeof self&&self&&self.Object===Object&&self,M=x||z||Function("return this")(),O=t&&!t.nodeType&&t,D=O&&e&&!e.nodeType&&e,N=D&&D.exports===O,E=N&&x.process,R=function(){try{return E&&E.binding&&E.binding("util")}catch(e){}}(),S=R&&R.isTypedArray;function L(e){var t=-1,r=Array(e.size);return e.forEach(function(e,n){r[++t]=[n,e]}),r}function P(e){var t=-1,r=Array(e.size);return e.forEach(function(e){r[++t]=e}),r}var C=Array.prototype,I=Function.prototype,F=Object.prototype,V=M["__core-js_shared__"],T=I.toString,U=F.hasOwnProperty,$=function(){var e=/[^.]+$/.exec(V&&V.keys&&V.keys.IE_PROTO||"");return e?"Symbol(src)_1."+e:""}(),B=F.toString,H=RegExp("^"+T.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),q=N?M.Buffer:void 0,G=M.Symbol,Z=M.Uint8Array,Y=F.propertyIsEnumerable,J=C.splice,W=G?G.toStringTag:void 0,X=Object.getOwnPropertySymbols,K=q?q.isBuffer:void 0,Q=(n=Object.keys,a=Object,function(e){return n(a(e))}),ee=ew(M,"DataView"),et=ew(M,"Map"),er=ew(M,"Promise"),en=ew(M,"Set"),ea=ew(M,"WeakMap"),eo=ew(Object,"create"),ei=eM(ee),es=eM(et),ec=eM(er),eu=eM(en),el=eM(ea),ef=G?G.prototype:void 0,ed=ef?ef.valueOf:void 0;function ep(e){var t=-1,r=null==e?0:e.length;for(this.clear();++ts))return!1;var u=o.get(e);if(u&&o.get(t))return u==t;var l=-1,f=!0,d=2&r?new ev:void 0;for(o.set(e,t),o.set(t,e);++l-1},eh.prototype.set=function(e,t){var r=this.__data__,n=e_(r,e);return n<0?(++this.size,r.push([e,t])):r[n][1]=t,this},ey.prototype.clear=function(){this.size=0,this.__data__={hash:new ep,map:new(et||eh),string:new ep}},ey.prototype.delete=function(e){var t=eA(this,e).delete(e);return this.size-=!!t,t},ey.prototype.get=function(e){return eA(this,e).get(e)},ey.prototype.has=function(e){return eA(this,e).has(e)},ey.prototype.set=function(e,t){var r=eA(this,e),n=r.size;return r.set(e,t),this.size+=+(r.size!=n),this},ev.prototype.add=ev.prototype.push=function(e){return this.__data__.set(e,o),this},ev.prototype.has=function(e){return this.__data__.has(e)},eb.prototype.clear=function(){this.__data__=new eh,this.size=0},eb.prototype.delete=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r},eb.prototype.get=function(e){return this.__data__.get(e)},eb.prototype.has=function(e){return this.__data__.has(e)},eb.prototype.set=function(e,t){var r=this.__data__;if(r instanceof eh){var n=r.__data__;if(!et||n.length<199)return n.push([e,t]),this.size=++r.size,this;r=this.__data__=new ey(n)}return r.set(e,t),this.size=r.size,this};var ex=X?function(e){return null==e?[]:function(e,t){for(var r=-1,n=null==e?0:e.length,a=0,o=[];++r-1&&e%1==0&&e<=0x1fffffffffffff}function eL(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function eP(e){return null!=e&&"object"==typeof e}var eC=S?function(e){return S(e)}:function(e){return eP(e)&&eS(e.length)&&!!w[eg(e)]};function eI(e){return null!=e&&eS(e.length)&&!eR(e)?function(e,t){var r,n,a=eN(e),o=!a&&eD(e),i=!a&&!o&&eE(e),s=!a&&!o&&!i&&eC(e),c=a||o||i||s,u=c?function(e,t){for(var r=-1,n=Array(e);++r-1&&r%1==0&&r{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]])},9917:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]])}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/452-52b7b5dcb4902a2c.js b/transports/bifrost-http/ui/_next/static/chunks/452-52b7b5dcb4902a2c.js deleted file mode 100644 index 24354d5544..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/452-52b7b5dcb4902a2c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[452],{704:(e,t,r)=>{"use strict";r.d(t,{B8:()=>B,UC:()=>N,bL:()=>O,l9:()=>j});var n=r(2115),o=r(5185),i=r(6081),a=r(9196),s=r(8905),l=r(3655),u=r(4315),f=r(5845),c=r(1285),h=r(5155),d="Tabs",[p,y]=(0,i.A)(d,[a.RG]),g=(0,a.RG)(),[m,b]=p(d),v=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:s,activationMode:p="automatic",...y}=e,g=(0,u.jH)(s),[b,v]=(0,f.i)({prop:n,onChange:o,defaultProp:null!=i?i:"",caller:d});return(0,h.jsx)(m,{scope:r,baseId:(0,c.B)(),value:b,onValueChange:v,orientation:a,dir:g,activationMode:p,children:(0,h.jsx)(l.sG.div,{dir:g,"data-orientation":a,...y,ref:t})})});v.displayName=d;var w="TabsList",E=n.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...o}=e,i=b(w,r),s=g(r);return(0,h.jsx)(a.bL,{asChild:!0,...s,orientation:i.orientation,dir:i.dir,loop:n,children:(0,h.jsx)(l.sG.div,{role:"tablist","aria-orientation":i.orientation,...o,ref:t})})});E.displayName=w;var x="TabsTrigger",S=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:i=!1,...s}=e,u=b(x,r),f=g(r),c=T(u.baseId,n),d=C(u.baseId,n),p=n===u.value;return(0,h.jsx)(a.q7,{asChild:!0,...f,focusable:!i,active:p,children:(0,h.jsx)(l.sG.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":d,"data-state":p?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:c,...s,ref:t,onMouseDown:(0,o.m)(e.onMouseDown,e=>{i||0!==e.button||!1!==e.ctrlKey?e.preventDefault():u.onValueChange(n)}),onKeyDown:(0,o.m)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&u.onValueChange(n)}),onFocus:(0,o.m)(e.onFocus,()=>{let e="manual"!==u.activationMode;p||i||!e||u.onValueChange(n)})})})});S.displayName=x;var R="TabsContent",A=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:o,forceMount:i,children:a,...u}=e,f=b(R,r),c=T(f.baseId,o),d=C(f.baseId,o),p=o===f.value,y=n.useRef(p);return n.useEffect(()=>{let e=requestAnimationFrame(()=>y.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,h.jsx)(s.C,{present:i||p,children:r=>{let{present:n}=r;return(0,h.jsx)(l.sG.div,{"data-state":p?"active":"inactive","data-orientation":f.orientation,role:"tabpanel","aria-labelledby":c,hidden:!n,id:d,tabIndex:0,...u,ref:t,style:{...e.style,animationDuration:y.current?"0s":void 0},children:n&&a})}})});function T(e,t){return"".concat(e,"-trigger-").concat(t)}function C(e,t){return"".concat(e,"-content-").concat(t)}A.displayName=R;var O=v,B=E,j=S,N=A},1243:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},2815:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},3464:(e,t,r)=>{"use strict";let n;r.d(t,{A:()=>tu});var o,i,a,s={};function l(e,t){return function(){return e.apply(t,arguments)}}r.r(s),r.d(s,{hasBrowserEnv:()=>eh,hasStandardBrowserEnv:()=>ep,hasStandardBrowserWebWorkerEnv:()=>ey,navigator:()=>ed,origin:()=>eg});var u=r(9509);let{toString:f}=Object.prototype,{getPrototypeOf:c}=Object,{iterator:h,toStringTag:d}=Symbol,p=(e=>t=>{let r=f.call(t);return e[r]||(e[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),y=e=>(e=e.toLowerCase(),t=>p(t)===e),g=e=>t=>typeof t===e,{isArray:m}=Array,b=g("undefined"),v=y("ArrayBuffer"),w=g("string"),E=g("function"),x=g("number"),S=e=>null!==e&&"object"==typeof e,R=e=>{if("object"!==p(e))return!1;let t=c(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(d in e)&&!(h in e)},A=y("Date"),T=y("File"),C=y("Blob"),O=y("FileList"),B=y("URLSearchParams"),[j,N,L,U]=["ReadableStream","Request","Response","Headers"].map(y);function k(e,t,{allOwnKeys:r=!1}={}){let n,o;if(null!=e)if("object"!=typeof e&&(e=[e]),m(e))for(n=0,o=e.length;n0;)if(t===(r=n[o]).toLowerCase())return r;return null}let I="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,_=e=>!b(e)&&e!==I,D=(e=>t=>e&&t instanceof e)("undefined"!=typeof Uint8Array&&c(Uint8Array)),M=y("HTMLFormElement"),F=(({hasOwnProperty:e})=>(t,r)=>e.call(t,r))(Object.prototype),q=y("RegExp"),z=(e,t)=>{let r=Object.getOwnPropertyDescriptors(e),n={};k(r,(r,o)=>{let i;!1!==(i=t(r,o,e))&&(n[o]=i||r)}),Object.defineProperties(e,n)},H=y("AsyncFunction"),V=(o="function"==typeof setImmediate,i=E(I.postMessage),o?setImmediate:i?((e,t)=>(I.addEventListener("message",({source:r,data:n})=>{r===I&&n===e&&t.length&&t.shift()()},!1),r=>{t.push(r),I.postMessage(e,"*")}))(`axios@${Math.random()}`,[]):e=>setTimeout(e)),W="undefined"!=typeof queueMicrotask?queueMicrotask.bind(I):void 0!==u&&u.nextTick||V,K={isArray:m,isArrayBuffer:v,isBuffer:function(e){return null!==e&&!b(e)&&null!==e.constructor&&!b(e.constructor)&&E(e.constructor.isBuffer)&&e.constructor.isBuffer(e)},isFormData:e=>{let t;return e&&("function"==typeof FormData&&e instanceof FormData||E(e.append)&&("formdata"===(t=p(e))||"object"===t&&E(e.toString)&&"[object FormData]"===e.toString()))},isArrayBufferView:function(e){let t;return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&v(e.buffer)},isString:w,isNumber:x,isBoolean:e=>!0===e||!1===e,isObject:S,isPlainObject:R,isReadableStream:j,isRequest:N,isResponse:L,isHeaders:U,isUndefined:b,isDate:A,isFile:T,isBlob:C,isRegExp:q,isFunction:E,isStream:e=>S(e)&&E(e.pipe),isURLSearchParams:B,isTypedArray:D,isFileList:O,forEach:k,merge:function e(){let{caseless:t}=_(this)&&this||{},r={},n=(n,o)=>{let i=t&&P(r,o)||o;R(r[i])&&R(n)?r[i]=e(r[i],n):R(n)?r[i]=e({},n):m(n)?r[i]=n.slice():r[i]=n};for(let e=0,t=arguments.length;e(k(t,(t,n)=>{r&&E(t)?e[n]=l(t,r):e[n]=t},{allOwnKeys:n}),e),trim:e=>e.trim?e.trim():e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,""),stripBOM:e=>(65279===e.charCodeAt(0)&&(e=e.slice(1)),e),inherits:(e,t,r,n)=>{e.prototype=Object.create(t.prototype,n),e.prototype.constructor=e,Object.defineProperty(e,"super",{value:t.prototype}),r&&Object.assign(e.prototype,r)},toFlatObject:(e,t,r,n)=>{let o,i,a,s={};if(t=t||{},null==e)return t;do{for(i=(o=Object.getOwnPropertyNames(e)).length;i-- >0;)a=o[i],(!n||n(a,e,t))&&!s[a]&&(t[a]=e[a],s[a]=!0);e=!1!==r&&c(e)}while(e&&(!r||r(e,t))&&e!==Object.prototype);return t},kindOf:p,kindOfTest:y,endsWith:(e,t,r)=>{e=String(e),(void 0===r||r>e.length)&&(r=e.length),r-=t.length;let n=e.indexOf(t,r);return -1!==n&&n===r},toArray:e=>{if(!e)return null;if(m(e))return e;let t=e.length;if(!x(t))return null;let r=Array(t);for(;t-- >0;)r[t]=e[t];return r},forEachEntry:(e,t)=>{let r,n=(e&&e[h]).call(e);for(;(r=n.next())&&!r.done;){let n=r.value;t.call(e,n[0],n[1])}},matchAll:(e,t)=>{let r,n=[];for(;null!==(r=e.exec(t));)n.push(r);return n},isHTMLForm:M,hasOwnProperty:F,hasOwnProp:F,reduceDescriptors:z,freezeMethods:e=>{z(e,(t,r)=>{if(E(e)&&-1!==["arguments","caller","callee"].indexOf(r))return!1;if(E(e[r])){if(t.enumerable=!1,"writable"in t){t.writable=!1;return}t.set||(t.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},toObjectSet:(e,t)=>{let r={};return(m(e)?e:String(e).split(t)).forEach(e=>{r[e]=!0}),r},toCamelCase:e=>e.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(e,t,r){return t.toUpperCase()+r}),noop:()=>{},toFiniteNumber:(e,t)=>null!=e&&Number.isFinite(e*=1)?e:t,findKey:P,global:I,isContextDefined:_,isSpecCompliantForm:function(e){return!!(e&&E(e.append)&&"FormData"===e[d]&&e[h])},toJSONObject:e=>{let t=Array(10),r=(e,n)=>{if(S(e)){if(t.indexOf(e)>=0)return;if(!("toJSON"in e)){t[n]=e;let o=m(e)?[]:{};return k(e,(e,t)=>{let i=r(e,n+1);b(i)||(o[t]=i)}),t[n]=void 0,o}}return e};return r(e,0)},isAsyncFn:H,isThenable:e=>e&&(S(e)||E(e))&&E(e.then)&&E(e.catch),setImmediate:V,asap:W,isIterable:e=>null!=e&&E(e[h])};function G(e,t,r,n,o){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=Error().stack,this.message=e,this.name="AxiosError",t&&(this.code=t),r&&(this.config=r),n&&(this.request=n),o&&(this.response=o,this.status=o.status?o.status:null)}K.inherits(G,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:K.toJSONObject(this.config),code:this.code,status:this.status}}});let J=G.prototype,$={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(e=>{$[e]={value:e}}),Object.defineProperties(G,$),Object.defineProperty(J,"isAxiosError",{value:!0}),G.from=(e,t,r,n,o,i)=>{let a=Object.create(J);return K.toFlatObject(e,a,function(e){return e!==Error.prototype},e=>"isAxiosError"!==e),G.call(a,e.message,t,r,n,o),a.cause=e,a.name=e.name,i&&Object.assign(a,i),a};var X=r(9641).Buffer;function Y(e){return K.isPlainObject(e)||K.isArray(e)}function Z(e){return K.endsWith(e,"[]")?e.slice(0,-2):e}function Q(e,t,r){return e?e.concat(t).map(function(e,t){return e=Z(e),!r&&t?"["+e+"]":e}).join(r?".":""):t}let ee=K.toFlatObject(K,{},null,function(e){return/^is[A-Z]/.test(e)}),et=function(e,t,r){if(!K.isObject(e))throw TypeError("target must be an object");t=t||new FormData;let n=(r=K.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(e,t){return!K.isUndefined(t[e])})).metaTokens,o=r.visitor||u,i=r.dots,a=r.indexes,s=(r.Blob||"undefined"!=typeof Blob&&Blob)&&K.isSpecCompliantForm(t);if(!K.isFunction(o))throw TypeError("visitor must be a function");function l(e){if(null===e)return"";if(K.isDate(e))return e.toISOString();if(K.isBoolean(e))return e.toString();if(!s&&K.isBlob(e))throw new G("Blob is not supported. Use a Buffer instead.");return K.isArrayBuffer(e)||K.isTypedArray(e)?s&&"function"==typeof Blob?new Blob([e]):X.from(e):e}function u(e,r,o){let s=e;if(e&&!o&&"object"==typeof e)if(K.endsWith(r,"{}"))r=n?r:r.slice(0,-2),e=JSON.stringify(e);else{var u;if(K.isArray(e)&&(u=e,K.isArray(u)&&!u.some(Y))||(K.isFileList(e)||K.endsWith(r,"[]"))&&(s=K.toArray(e)))return r=Z(r),s.forEach(function(e,n){K.isUndefined(e)||null===e||t.append(!0===a?Q([r],n,i):null===a?r:r+"[]",l(e))}),!1}return!!Y(e)||(t.append(Q(o,r,i),l(e)),!1)}let f=[],c=Object.assign(ee,{defaultVisitor:u,convertValue:l,isVisitable:Y});if(!K.isObject(e))throw TypeError("data must be an object");return!function e(r,n){if(!K.isUndefined(r)){if(-1!==f.indexOf(r))throw Error("Circular reference detected in "+n.join("."));f.push(r),K.forEach(r,function(r,i){!0===(!(K.isUndefined(r)||null===r)&&o.call(t,r,K.isString(i)?i.trim():i,n,c))&&e(r,n?n.concat(i):[i])}),f.pop()}}(e),t};function er(e){let t={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(e).replace(/[!'()~]|%20|%00/g,function(e){return t[e]})}function en(e,t){this._pairs=[],e&&et(e,this,t)}let eo=en.prototype;function ei(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ea(e,t,r){let n;if(!t)return e;let o=r&&r.encode||ei;K.isFunction(r)&&(r={serialize:r});let i=r&&r.serialize;if(n=i?i(t,r):K.isURLSearchParams(t)?t.toString():new en(t,r).toString(o)){let t=e.indexOf("#");-1!==t&&(e=e.slice(0,t)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}eo.append=function(e,t){this._pairs.push([e,t])},eo.toString=function(e){let t=e?function(t){return e.call(this,t,er)}:er;return this._pairs.map(function(e){return t(e[0])+"="+t(e[1])},"").join("&")};class es{constructor(){this.handlers=[]}use(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){K.forEach(this.handlers,function(t){null!==t&&e(t)})}}let el={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},eu="undefined"!=typeof URLSearchParams?URLSearchParams:en,ef="undefined"!=typeof FormData?FormData:null,ec="undefined"!=typeof Blob?Blob:null,eh="undefined"!=typeof window&&"undefined"!=typeof document,ed="object"==typeof navigator&&navigator||void 0,ep=eh&&(!ed||0>["ReactNative","NativeScript","NS"].indexOf(ed.product)),ey="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope&&"function"==typeof self.importScripts,eg=eh&&window.location.href||"http://localhost",em={...s,isBrowser:!0,classes:{URLSearchParams:eu,FormData:ef,Blob:ec},protocols:["http","https","file","blob","url","data"]},eb=function(e){if(K.isFormData(e)&&K.isFunction(e.entries)){let t={};return K.forEachEntry(e,(e,r)=>{!function e(t,r,n,o){let i=t[o++];if("__proto__"===i)return!0;let a=Number.isFinite(+i),s=o>=t.length;return(i=!i&&K.isArray(n)?n.length:i,s)?K.hasOwnProp(n,i)?n[i]=[n[i],r]:n[i]=r:(n[i]&&K.isObject(n[i])||(n[i]=[]),e(t,r,n[i],o)&&K.isArray(n[i])&&(n[i]=function(e){let t,r,n={},o=Object.keys(e),i=o.length;for(t=0;t"[]"===e[0]?"":e[1]||e[0]),r,t,0)}),t}return null},ev={transitional:el,adapter:["xhr","http","fetch"],transformRequest:[function(e,t){let r,n=t.getContentType()||"",o=n.indexOf("application/json")>-1,i=K.isObject(e);if(i&&K.isHTMLForm(e)&&(e=new FormData(e)),K.isFormData(e))return o?JSON.stringify(eb(e)):e;if(K.isArrayBuffer(e)||K.isBuffer(e)||K.isStream(e)||K.isFile(e)||K.isBlob(e)||K.isReadableStream(e))return e;if(K.isArrayBufferView(e))return e.buffer;if(K.isURLSearchParams(e))return t.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1){var a,s;return(a=e,s=this.formSerializer,et(a,new em.classes.URLSearchParams,Object.assign({visitor:function(e,t,r,n){return em.isNode&&K.isBuffer(e)?(this.append(t,e.toString("base64")),!1):n.defaultVisitor.apply(this,arguments)}},s))).toString()}if((r=K.isFileList(e))||n.indexOf("multipart/form-data")>-1){let t=this.env&&this.env.FormData;return et(r?{"files[]":e}:e,t&&new t,this.formSerializer)}}if(i||o){t.setContentType("application/json",!1);var l=e;if(K.isString(l))try{return(0,JSON.parse)(l),K.trim(l)}catch(e){if("SyntaxError"!==e.name)throw e}return(0,JSON.stringify)(l)}return e}],transformResponse:[function(e){let t=this.transitional||ev.transitional,r=t&&t.forcedJSONParsing,n="json"===this.responseType;if(K.isResponse(e)||K.isReadableStream(e))return e;if(e&&K.isString(e)&&(r&&!this.responseType||n)){let r=t&&t.silentJSONParsing;try{return JSON.parse(e)}catch(e){if(!r&&n){if("SyntaxError"===e.name)throw G.from(e,G.ERR_BAD_RESPONSE,this,null,this.response);throw e}}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:em.classes.FormData,Blob:em.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};K.forEach(["delete","get","head","post","put","patch"],e=>{ev.headers[e]={}});let ew=K.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),eE=e=>{let t,r,n,o={};return e&&e.split("\n").forEach(function(e){n=e.indexOf(":"),t=e.substring(0,n).trim().toLowerCase(),r=e.substring(n+1).trim(),!t||o[t]&&ew[t]||("set-cookie"===t?o[t]?o[t].push(r):o[t]=[r]:o[t]=o[t]?o[t]+", "+r:r)}),o},ex=Symbol("internals");function eS(e){return e&&String(e).trim().toLowerCase()}function eR(e){return!1===e||null==e?e:K.isArray(e)?e.map(eR):String(e)}let eA=e=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());function eT(e,t,r,n,o){if(K.isFunction(n))return n.call(this,t,r);if(o&&(t=r),K.isString(t)){if(K.isString(n))return -1!==t.indexOf(n);if(K.isRegExp(n))return n.test(t)}}class eC{constructor(e){e&&this.set(e)}set(e,t,r){let n=this;function o(e,t,r){let o=eS(t);if(!o)throw Error("header name must be a non-empty string");let i=K.findKey(n,o);i&&void 0!==n[i]&&!0!==r&&(void 0!==r||!1===n[i])||(n[i||t]=eR(e))}let i=(e,t)=>K.forEach(e,(e,r)=>o(e,r,t));if(K.isPlainObject(e)||e instanceof this.constructor)i(e,t);else if(K.isString(e)&&(e=e.trim())&&!eA(e))i(eE(e),t);else if(K.isObject(e)&&K.isIterable(e)){let r={},n,o;for(let t of e){if(!K.isArray(t))throw TypeError("Object iterator must return a key-value pair");r[o=t[0]]=(n=r[o])?K.isArray(n)?[...n,t[1]]:[n,t[1]]:t[1]}i(r,t)}else null!=e&&o(t,e,r);return this}get(e,t){if(e=eS(e)){let r=K.findKey(this,e);if(r){let e=this[r];if(!t)return e;if(!0===t){let t,r=Object.create(null),n=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;for(;t=n.exec(e);)r[t[1]]=t[2];return r}if(K.isFunction(t))return t.call(this,e,r);if(K.isRegExp(t))return t.exec(e);throw TypeError("parser must be boolean|regexp|function")}}}has(e,t){if(e=eS(e)){let r=K.findKey(this,e);return!!(r&&void 0!==this[r]&&(!t||eT(this,this[r],r,t)))}return!1}delete(e,t){let r=this,n=!1;function o(e){if(e=eS(e)){let o=K.findKey(r,e);o&&(!t||eT(r,r[o],o,t))&&(delete r[o],n=!0)}}return K.isArray(e)?e.forEach(o):o(e),n}clear(e){let t=Object.keys(this),r=t.length,n=!1;for(;r--;){let o=t[r];(!e||eT(this,this[o],o,e,!0))&&(delete this[o],n=!0)}return n}normalize(e){let t=this,r={};return K.forEach(this,(n,o)=>{let i=K.findKey(r,o);if(i){t[i]=eR(n),delete t[o];return}let a=e?o.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,t,r)=>t.toUpperCase()+r):String(o).trim();a!==o&&delete t[o],t[a]=eR(n),r[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let t=Object.create(null);return K.forEach(this,(r,n)=>{null!=r&&!1!==r&&(t[n]=e&&K.isArray(r)?r.join(", "):r)}),t}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,t])=>e+": "+t).join("\n")}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...t){let r=new this(e);return t.forEach(e=>r.set(e)),r}static accessor(e){let t=(this[ex]=this[ex]={accessors:{}}).accessors,r=this.prototype;function n(e){let n=eS(e);if(!t[n]){let o=K.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(r,t+o,{value:function(r,n,o){return this[t].call(this,e,r,n,o)},configurable:!0})}),t[n]=!0}}return K.isArray(e)?e.forEach(n):n(e),this}}function eO(e,t){let r=this||ev,n=t||r,o=eC.from(n.headers),i=n.data;return K.forEach(e,function(e){i=e.call(r,i,o.normalize(),t?t.status:void 0)}),o.normalize(),i}function eB(e){return!!(e&&e.__CANCEL__)}function ej(e,t,r){G.call(this,null==e?"canceled":e,G.ERR_CANCELED,t,r),this.name="CanceledError"}function eN(e,t,r){let n=r.config.validateStatus;!r.status||!n||n(r.status)?e(r):t(new G("Request failed with status code "+r.status,[G.ERR_BAD_REQUEST,G.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}eC.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),K.reduceDescriptors(eC.prototype,({value:e},t)=>{let r=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(e){this[r]=e}}}),K.freezeMethods(eC),K.inherits(ej,G,{__CANCEL__:!0});let eL=function(e,t){let r,n=Array(e=e||10),o=Array(e),i=0,a=0;return t=void 0!==t?t:1e3,function(s){let l=Date.now(),u=o[a];r||(r=l),n[i]=s,o[i]=l;let f=a,c=0;for(;f!==i;)c+=n[f++],f%=e;if((i=(i+1)%e)===a&&(a=(a+1)%e),l-r{o=i,r=null,n&&(clearTimeout(n),n=null),e.apply(null,t)};return[(...e)=>{let t=Date.now(),s=t-o;s>=i?a(e,t):(r=e,n||(n=setTimeout(()=>{n=null,a(r)},i-s)))},()=>r&&a(r)]},ek=(e,t,r=3)=>{let n=0,o=eL(50,250);return eU(r=>{let i=r.loaded,a=r.lengthComputable?r.total:void 0,s=i-n,l=o(s);n=i,e({loaded:i,total:a,progress:a?i/a:void 0,bytes:s,rate:l||void 0,estimated:l&&a&&i<=a?(a-i)/l:void 0,event:r,lengthComputable:null!=a,[t?"download":"upload"]:!0})},r)},eP=(e,t)=>{let r=null!=e;return[n=>t[0]({lengthComputable:r,total:e,loaded:n}),t[1]]},eI=e=>(...t)=>K.asap(()=>e(...t)),e_=em.hasStandardBrowserEnv?((e,t)=>r=>(r=new URL(r,em.origin),e.protocol===r.protocol&&e.host===r.host&&(t||e.port===r.port)))(new URL(em.origin),em.navigator&&/(msie|trident)/i.test(em.navigator.userAgent)):()=>!0,eD=em.hasStandardBrowserEnv?{write(e,t,r,n,o,i){let a=[e+"="+encodeURIComponent(t)];K.isNumber(r)&&a.push("expires="+new Date(r).toGMTString()),K.isString(n)&&a.push("path="+n),K.isString(o)&&a.push("domain="+o),!0===i&&a.push("secure"),document.cookie=a.join("; ")},read(e){let t=document.cookie.match(RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read:()=>null,remove(){}};function eM(e,t,r){let n=!/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t);return e&&(n||!1==r)?t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e:t}let eF=e=>e instanceof eC?{...e}:e;function eq(e,t){t=t||{};let r={};function n(e,t,r,n){return K.isPlainObject(e)&&K.isPlainObject(t)?K.merge.call({caseless:n},e,t):K.isPlainObject(t)?K.merge({},t):K.isArray(t)?t.slice():t}function o(e,t,r,o){return K.isUndefined(t)?K.isUndefined(e)?void 0:n(void 0,e,r,o):n(e,t,r,o)}function i(e,t){if(!K.isUndefined(t))return n(void 0,t)}function a(e,t){return K.isUndefined(t)?K.isUndefined(e)?void 0:n(void 0,e):n(void 0,t)}function s(r,o,i){return i in t?n(r,o):i in e?n(void 0,r):void 0}let l={url:i,method:i,data:i,baseURL:a,transformRequest:a,transformResponse:a,paramsSerializer:a,timeout:a,timeoutMessage:a,withCredentials:a,withXSRFToken:a,adapter:a,responseType:a,xsrfCookieName:a,xsrfHeaderName:a,onUploadProgress:a,onDownloadProgress:a,decompress:a,maxContentLength:a,maxBodyLength:a,beforeRedirect:a,transport:a,httpAgent:a,httpsAgent:a,cancelToken:a,socketPath:a,responseEncoding:a,validateStatus:s,headers:(e,t,r)=>o(eF(e),eF(t),r,!0)};return K.forEach(Object.keys(Object.assign({},e,t)),function(n){let i=l[n]||o,a=i(e[n],t[n],n);K.isUndefined(a)&&i!==s||(r[n]=a)}),r}let ez=e=>{let t,r=eq({},e),{data:n,withXSRFToken:o,xsrfHeaderName:i,xsrfCookieName:a,headers:s,auth:l}=r;if(r.headers=s=eC.from(s),r.url=ea(eM(r.baseURL,r.url,r.allowAbsoluteUrls),e.params,e.paramsSerializer),l&&s.set("Authorization","Basic "+btoa((l.username||"")+":"+(l.password?unescape(encodeURIComponent(l.password)):""))),K.isFormData(n)){if(em.hasStandardBrowserEnv||em.hasStandardBrowserWebWorkerEnv)s.setContentType(void 0);else if(!1!==(t=s.getContentType())){let[e,...r]=t?t.split(";").map(e=>e.trim()).filter(Boolean):[];s.setContentType([e||"multipart/form-data",...r].join("; "))}}if(em.hasStandardBrowserEnv&&(o&&K.isFunction(o)&&(o=o(r)),o||!1!==o&&e_(r.url))){let e=i&&a&&eD.read(a);e&&s.set(i,e)}return r},eH="undefined"!=typeof XMLHttpRequest&&function(e){return new Promise(function(t,r){let n,o,i,a,s,l=ez(e),u=l.data,f=eC.from(l.headers).normalize(),{responseType:c,onUploadProgress:h,onDownloadProgress:d}=l;function p(){a&&a(),s&&s(),l.cancelToken&&l.cancelToken.unsubscribe(n),l.signal&&l.signal.removeEventListener("abort",n)}let y=new XMLHttpRequest;function g(){if(!y)return;let n=eC.from("getAllResponseHeaders"in y&&y.getAllResponseHeaders());eN(function(e){t(e),p()},function(e){r(e),p()},{data:c&&"text"!==c&&"json"!==c?y.response:y.responseText,status:y.status,statusText:y.statusText,headers:n,config:e,request:y}),y=null}y.open(l.method.toUpperCase(),l.url,!0),y.timeout=l.timeout,"onloadend"in y?y.onloadend=g:y.onreadystatechange=function(){y&&4===y.readyState&&(0!==y.status||y.responseURL&&0===y.responseURL.indexOf("file:"))&&setTimeout(g)},y.onabort=function(){y&&(r(new G("Request aborted",G.ECONNABORTED,e,y)),y=null)},y.onerror=function(){r(new G("Network Error",G.ERR_NETWORK,e,y)),y=null},y.ontimeout=function(){let t=l.timeout?"timeout of "+l.timeout+"ms exceeded":"timeout exceeded",n=l.transitional||el;l.timeoutErrorMessage&&(t=l.timeoutErrorMessage),r(new G(t,n.clarifyTimeoutError?G.ETIMEDOUT:G.ECONNABORTED,e,y)),y=null},void 0===u&&f.setContentType(null),"setRequestHeader"in y&&K.forEach(f.toJSON(),function(e,t){y.setRequestHeader(t,e)}),K.isUndefined(l.withCredentials)||(y.withCredentials=!!l.withCredentials),c&&"json"!==c&&(y.responseType=l.responseType),d&&([i,s]=ek(d,!0),y.addEventListener("progress",i)),h&&y.upload&&([o,a]=ek(h),y.upload.addEventListener("progress",o),y.upload.addEventListener("loadend",a)),(l.cancelToken||l.signal)&&(n=t=>{y&&(r(!t||t.type?new ej(null,e,y):t),y.abort(),y=null)},l.cancelToken&&l.cancelToken.subscribe(n),l.signal&&(l.signal.aborted?n():l.signal.addEventListener("abort",n)));let m=function(e){let t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}(l.url);if(m&&-1===em.protocols.indexOf(m))return void r(new G("Unsupported protocol "+m+":",G.ERR_BAD_REQUEST,e));y.send(u||null)})},eV=(e,t)=>{let{length:r}=e=e?e.filter(Boolean):[];if(t||r){let r,n=new AbortController,o=function(e){if(!r){r=!0,a();let t=e instanceof Error?e:this.reason;n.abort(t instanceof G?t:new ej(t instanceof Error?t.message:t))}},i=t&&setTimeout(()=>{i=null,o(new G(`timeout ${t} of ms exceeded`,G.ETIMEDOUT))},t),a=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(e=>{e.unsubscribe?e.unsubscribe(o):e.removeEventListener("abort",o)}),e=null)};e.forEach(e=>e.addEventListener("abort",o));let{signal:s}=n;return s.unsubscribe=()=>K.asap(a),s}},eW=function*(e,t){let r,n=e.byteLength;if(!t||n{let o,i=eK(e,t),a=0,s=e=>{!o&&(o=!0,n&&n(e))};return new ReadableStream({async pull(e){try{let{done:t,value:n}=await i.next();if(t){s(),e.close();return}let o=n.byteLength;if(r){let e=a+=o;r(e)}e.enqueue(new Uint8Array(n))}catch(e){throw s(e),e}},cancel:e=>(s(e),i.return())},{highWaterMark:2})},e$="function"==typeof fetch&&"function"==typeof Request&&"function"==typeof Response,eX=e$&&"function"==typeof ReadableStream,eY=e$&&("function"==typeof TextEncoder?(n=new TextEncoder,e=>n.encode(e)):async e=>new Uint8Array(await new Response(e).arrayBuffer())),eZ=(e,...t)=>{try{return!!e(...t)}catch(e){return!1}},eQ=eX&&eZ(()=>{let e=!1,t=new Request(em.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),e0=eX&&eZ(()=>K.isReadableStream(new Response("").body)),e1={stream:e0&&(e=>e.body)};e$&&(a=new Response,["text","arrayBuffer","blob","formData","stream"].forEach(e=>{e1[e]||(e1[e]=K.isFunction(a[e])?t=>t[e]():(t,r)=>{throw new G(`Response type '${e}' is not supported`,G.ERR_NOT_SUPPORT,r)})}));let e2=async e=>{if(null==e)return 0;if(K.isBlob(e))return e.size;if(K.isSpecCompliantForm(e)){let t=new Request(em.origin,{method:"POST",body:e});return(await t.arrayBuffer()).byteLength}return K.isArrayBufferView(e)||K.isArrayBuffer(e)?e.byteLength:(K.isURLSearchParams(e)&&(e+=""),K.isString(e))?(await eY(e)).byteLength:void 0},e5=async(e,t)=>{let r=K.toFiniteNumber(e.getContentLength());return null==r?e2(t):r},e6={http:null,xhr:eH,fetch:e$&&(async e=>{let t,r,{url:n,method:o,data:i,signal:a,cancelToken:s,timeout:l,onDownloadProgress:u,onUploadProgress:f,responseType:c,headers:h,withCredentials:d="same-origin",fetchOptions:p}=ez(e);c=c?(c+"").toLowerCase():"text";let y=eV([a,s&&s.toAbortSignal()],l),g=y&&y.unsubscribe&&(()=>{y.unsubscribe()});try{if(f&&eQ&&"get"!==o&&"head"!==o&&0!==(r=await e5(h,i))){let e,t=new Request(n,{method:"POST",body:i,duplex:"half"});if(K.isFormData(i)&&(e=t.headers.get("content-type"))&&h.setContentType(e),t.body){let[e,n]=eP(r,ek(eI(f)));i=eJ(t.body,65536,e,n)}}K.isString(d)||(d=d?"include":"omit");let a="credentials"in Request.prototype;t=new Request(n,{...p,signal:y,method:o.toUpperCase(),headers:h.normalize().toJSON(),body:i,duplex:"half",credentials:a?d:void 0});let s=await fetch(t,p),l=e0&&("stream"===c||"response"===c);if(e0&&(u||l&&g)){let e={};["status","statusText","headers"].forEach(t=>{e[t]=s[t]});let t=K.toFiniteNumber(s.headers.get("content-length")),[r,n]=u&&eP(t,ek(eI(u),!0))||[];s=new Response(eJ(s.body,65536,r,()=>{n&&n(),g&&g()}),e)}c=c||"text";let m=await e1[K.findKey(e1,c)||"text"](s,e);return!l&&g&&g(),await new Promise((r,n)=>{eN(r,n,{data:m,headers:eC.from(s.headers),status:s.status,statusText:s.statusText,config:e,request:t})})}catch(r){if(g&&g(),r&&"TypeError"===r.name&&/Load failed|fetch/i.test(r.message))throw Object.assign(new G("Network Error",G.ERR_NETWORK,e,t),{cause:r.cause||r});throw G.from(r,r&&r.code,e,t)}})};K.forEach(e6,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch(e){}Object.defineProperty(e,"adapterName",{value:t})}});let e8=e=>`- ${e}`,e3=e=>K.isFunction(e)||null===e||!1===e,e4={getAdapter:e=>{let t,r,{length:n}=e=K.isArray(e)?e:[e],o={};for(let i=0;i`adapter ${e} `+(!1===t?"is not supported by the environment":"is not available in the build"));throw new G("There is no suitable adapter to dispatch the request "+(n?e.length>1?"since :\n"+e.map(e8).join("\n"):" "+e8(e[0]):"as no adapter specified"),"ERR_NOT_SUPPORT")}return r}};function e9(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new ej(null,e)}function e7(e){return e9(e),e.headers=eC.from(e.headers),e.data=eO.call(e,e.transformRequest),-1!==["post","put","patch"].indexOf(e.method)&&e.headers.setContentType("application/x-www-form-urlencoded",!1),e4.getAdapter(e.adapter||ev.adapter)(e).then(function(t){return e9(e),t.data=eO.call(e,e.transformResponse,t),t.headers=eC.from(t.headers),t},function(t){return!eB(t)&&(e9(e),t&&t.response&&(t.response.data=eO.call(e,e.transformResponse,t.response),t.response.headers=eC.from(t.response.headers))),Promise.reject(t)})}let te="1.10.0",tt={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{tt[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});let tr={};tt.transitional=function(e,t,r){function n(e,t){return"[Axios v"+te+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return(r,o,i)=>{if(!1===e)throw new G(n(o," has been removed"+(t?" in "+t:"")),G.ERR_DEPRECATED);return t&&!tr[o]&&(tr[o]=!0,console.warn(n(o," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,o,i)}},tt.spelling=function(e){return(t,r)=>(console.warn(`${r} is likely a misspelling of ${e}`),!0)};let tn={assertOptions:function(e,t,r){if("object"!=typeof e)throw new G("options must be an object",G.ERR_BAD_OPTION_VALUE);let n=Object.keys(e),o=n.length;for(;o-- >0;){let i=n[o],a=t[i];if(a){let t=e[i],r=void 0===t||a(t,i,e);if(!0!==r)throw new G("option "+i+" must be "+r,G.ERR_BAD_OPTION_VALUE);continue}if(!0!==r)throw new G("Unknown option "+i,G.ERR_BAD_OPTION)}},validators:tt},to=tn.validators;class ti{constructor(e){this.defaults=e||{},this.interceptors={request:new es,response:new es}}async request(e,t){try{return await this._request(e,t)}catch(e){if(e instanceof Error){let t={};Error.captureStackTrace?Error.captureStackTrace(t):t=Error();let r=t.stack?t.stack.replace(/^.+\n/,""):"";try{e.stack?r&&!String(e.stack).endsWith(r.replace(/^.+\n.+\n/,""))&&(e.stack+="\n"+r):e.stack=r}catch(e){}}throw e}}_request(e,t){let r,n;"string"==typeof e?(t=t||{}).url=e:t=e||{};let{transitional:o,paramsSerializer:i,headers:a}=t=eq(this.defaults,t);void 0!==o&&tn.assertOptions(o,{silentJSONParsing:to.transitional(to.boolean),forcedJSONParsing:to.transitional(to.boolean),clarifyTimeoutError:to.transitional(to.boolean)},!1),null!=i&&(K.isFunction(i)?t.paramsSerializer={serialize:i}:tn.assertOptions(i,{encode:to.function,serialize:to.function},!0)),void 0!==t.allowAbsoluteUrls||(void 0!==this.defaults.allowAbsoluteUrls?t.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:t.allowAbsoluteUrls=!0),tn.assertOptions(t,{baseUrl:to.spelling("baseURL"),withXsrfToken:to.spelling("withXSRFToken")},!0),t.method=(t.method||this.defaults.method||"get").toLowerCase();let s=a&&K.merge(a.common,a[t.method]);a&&K.forEach(["delete","get","head","post","put","patch","common"],e=>{delete a[e]}),t.headers=eC.concat(s,a);let l=[],u=!0;this.interceptors.request.forEach(function(e){("function"!=typeof e.runWhen||!1!==e.runWhen(t))&&(u=u&&e.synchronous,l.unshift(e.fulfilled,e.rejected))});let f=[];this.interceptors.response.forEach(function(e){f.push(e.fulfilled,e.rejected)});let c=0;if(!u){let e=[e7.bind(this),void 0];for(e.unshift.apply(e,l),e.push.apply(e,f),n=e.length,r=Promise.resolve(t);c{if(!r._listeners)return;let t=r._listeners.length;for(;t-- >0;)r._listeners[t](e);r._listeners=null}),this.promise.then=e=>{let t,n=new Promise(e=>{r.subscribe(e),t=e}).then(e);return n.cancel=function(){r.unsubscribe(t)},n},e(function(e,n,o){r.reason||(r.reason=new ej(e,n,o),t(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason)return void e(this.reason);this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let t=this._listeners.indexOf(e);-1!==t&&this._listeners.splice(t,1)}toAbortSignal(){let e=new AbortController,t=t=>{e.abort(t)};return this.subscribe(t),e.signal.unsubscribe=()=>this.unsubscribe(t),e.signal}static source(){let e;return{token:new ta(function(t){e=t}),cancel:e}}}let ts={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(ts).forEach(([e,t])=>{ts[t]=e});let tl=function e(t){let r=new ti(t),n=l(ti.prototype.request,r);return K.extend(n,ti.prototype,r,{allOwnKeys:!0}),K.extend(n,r,null,{allOwnKeys:!0}),n.create=function(r){return e(eq(t,r))},n}(ev);tl.Axios=ti,tl.CanceledError=ej,tl.CancelToken=ta,tl.isCancel=eB,tl.VERSION=te,tl.toFormData=et,tl.AxiosError=G,tl.Cancel=tl.CanceledError,tl.all=function(e){return Promise.all(e)},tl.spread=function(e){return function(t){return e.apply(null,t)}},tl.isAxiosError=function(e){return K.isObject(e)&&!0===e.isAxiosError},tl.mergeConfig=eq,tl.AxiosHeaders=eC,tl.formToJSON=e=>eb(K.isHTMLForm(e)?new FormData(e):e),tl.getAdapter=e4.getAdapter,tl.HttpStatusCode=ts,tl.default=tl;let tu=tl},4582:(e,t,r)=>{"use strict";r.d(t,{UC:()=>eL,In:()=>ej,q7:()=>ek,VF:()=>eI,p4:()=>eP,ZL:()=>eN,bL:()=>eC,wn:()=>eD,PP:()=>e_,l9:()=>eO,WT:()=>eB,LM:()=>eU});var n=r(2115),o=r(7650);function i(e,[t,r]){return Math.min(r,Math.max(t,e))}var a=r(5185),s=r(7328),l=r(6101),u=r(6081),f=r(4315),c=r(9178),h=r(2293),d=r(7900),p=r(1285),y=r(5152),g=r(4378),m=r(3655),b=r(9708),v=r(9033),w=r(5845),E=r(2712),x=r(5503),S=r(2564),R=r(8168),A=r(3795),T=r(5155),C=[" ","Enter","ArrowUp","ArrowDown"],O=[" ","Enter"],B="Select",[j,N,L]=(0,s.N)(B),[U,k]=(0,u.A)(B,[L,y.Bk]),P=(0,y.Bk)(),[I,_]=U(B),[D,M]=U(B),F=e=>{let{__scopeSelect:t,children:r,open:o,defaultOpen:i,onOpenChange:a,value:s,defaultValue:l,onValueChange:u,dir:c,name:h,autoComplete:d,disabled:g,required:m,form:b}=e,v=P(t),[E,x]=n.useState(null),[S,R]=n.useState(null),[A,C]=n.useState(!1),O=(0,f.jH)(c),[N,L]=(0,w.i)({prop:o,defaultProp:null!=i&&i,onChange:a,caller:B}),[U,k]=(0,w.i)({prop:s,defaultProp:l,onChange:u,caller:B}),_=n.useRef(null),M=!E||b||!!E.closest("form"),[F,q]=n.useState(new Set),z=Array.from(F).map(e=>e.props.value).join(";");return(0,T.jsx)(y.bL,{...v,children:(0,T.jsxs)(I,{required:m,scope:t,trigger:E,onTriggerChange:x,valueNode:S,onValueNodeChange:R,valueNodeHasChildren:A,onValueNodeHasChildrenChange:C,contentId:(0,p.B)(),value:U,onValueChange:k,open:N,onOpenChange:L,dir:O,triggerPointerDownPosRef:_,disabled:g,children:[(0,T.jsx)(j.Provider,{scope:t,children:(0,T.jsx)(D,{scope:e.__scopeSelect,onNativeOptionAdd:n.useCallback(e=>{q(t=>new Set(t).add(e))},[]),onNativeOptionRemove:n.useCallback(e=>{q(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),M?(0,T.jsxs)(eS,{"aria-hidden":!0,required:m,tabIndex:-1,name:h,autoComplete:d,value:U,onChange:e=>k(e.target.value),disabled:g,form:b,children:[void 0===U?(0,T.jsx)("option",{value:""}):null,Array.from(F)]},z):null]})})};F.displayName=B;var q="SelectTrigger",z=n.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:o=!1,...i}=e,s=P(r),u=_(q,r),f=u.disabled||o,c=(0,l.s)(t,u.onTriggerChange),h=N(r),d=n.useRef("touch"),[p,g,b]=eA(e=>{let t=h().filter(e=>!e.disabled),r=t.find(e=>e.value===u.value),n=eT(t,e,r);void 0!==n&&u.onValueChange(n.value)}),v=e=>{f||(u.onOpenChange(!0),b()),e&&(u.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,T.jsx)(y.Mz,{asChild:!0,...s,children:(0,T.jsx)(m.sG.button,{type:"button",role:"combobox","aria-controls":u.contentId,"aria-expanded":u.open,"aria-required":u.required,"aria-autocomplete":"none",dir:u.dir,"data-state":u.open?"open":"closed",disabled:f,"data-disabled":f?"":void 0,"data-placeholder":eR(u.value)?"":void 0,...i,ref:c,onClick:(0,a.m)(i.onClick,e=>{e.currentTarget.focus(),"mouse"!==d.current&&v(e)}),onPointerDown:(0,a.m)(i.onPointerDown,e=>{d.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(v(e),e.preventDefault())}),onKeyDown:(0,a.m)(i.onKeyDown,e=>{let t=""!==p.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||g(e.key),(!t||" "!==e.key)&&C.includes(e.key)&&(v(),e.preventDefault())})})})});z.displayName=q;var H="SelectValue",V=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:o,children:i,placeholder:a="",...s}=e,u=_(H,r),{onValueNodeHasChildrenChange:f}=u,c=void 0!==i,h=(0,l.s)(t,u.onValueNodeChange);return(0,E.N)(()=>{f(c)},[f,c]),(0,T.jsx)(m.sG.span,{...s,ref:h,style:{pointerEvents:"none"},children:eR(u.value)?(0,T.jsx)(T.Fragment,{children:a}):i})});V.displayName=H;var W=n.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...o}=e;return(0,T.jsx)(m.sG.span,{"aria-hidden":!0,...o,ref:t,children:n||"▼"})});W.displayName="SelectIcon";var K=e=>(0,T.jsx)(g.Z,{asChild:!0,...e});K.displayName="SelectPortal";var G="SelectContent",J=n.forwardRef((e,t)=>{let r=_(G,e.__scopeSelect),[i,a]=n.useState();return((0,E.N)(()=>{a(new DocumentFragment)},[]),r.open)?(0,T.jsx)(Z,{...e,ref:t}):i?o.createPortal((0,T.jsx)($,{scope:e.__scopeSelect,children:(0,T.jsx)(j.Slot,{scope:e.__scopeSelect,children:(0,T.jsx)("div",{children:e.children})})}),i):null});J.displayName=G;var[$,X]=U(G),Y=(0,b.TL)("SelectContent.RemoveScroll"),Z=n.forwardRef((e,t)=>{let{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:s,onPointerDownOutside:u,side:f,sideOffset:p,align:y,alignOffset:g,arrowPadding:m,collisionBoundary:b,collisionPadding:v,sticky:w,hideWhenDetached:E,avoidCollisions:x,...S}=e,C=_(G,r),[O,B]=n.useState(null),[j,L]=n.useState(null),U=(0,l.s)(t,e=>B(e)),[k,P]=n.useState(null),[I,D]=n.useState(null),M=N(r),[F,q]=n.useState(!1),z=n.useRef(!1);n.useEffect(()=>{if(O)return(0,R.Eq)(O)},[O]),(0,h.Oh)();let H=n.useCallback(e=>{let[t,...r]=M().map(e=>e.ref.current),[n]=r.slice(-1),o=document.activeElement;for(let r of e)if(r===o||(null==r||r.scrollIntoView({block:"nearest"}),r===t&&j&&(j.scrollTop=0),r===n&&j&&(j.scrollTop=j.scrollHeight),null==r||r.focus(),document.activeElement!==o))return},[M,j]),V=n.useCallback(()=>H([k,O]),[H,k,O]);n.useEffect(()=>{F&&V()},[F,V]);let{onOpenChange:W,triggerPointerDownPosRef:K}=C;n.useEffect(()=>{if(O){let e={x:0,y:0},t=t=>{var r,n,o,i;e={x:Math.abs(Math.round(t.pageX)-(null!=(o=null==(r=K.current)?void 0:r.x)?o:0)),y:Math.abs(Math.round(t.pageY)-(null!=(i=null==(n=K.current)?void 0:n.y)?i:0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():O.contains(r.target)||W(!1),document.removeEventListener("pointermove",t),K.current=null};return null!==K.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[O,W,K]),n.useEffect(()=>{let e=()=>W(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[W]);let[J,X]=eA(e=>{let t=M().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=eT(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),Z=n.useCallback((e,t,r)=>{let n=!z.current&&!r;(void 0!==C.value&&C.value===t||n)&&(P(e),n&&(z.current=!0))},[C.value]),et=n.useCallback(()=>null==O?void 0:O.focus(),[O]),er=n.useCallback((e,t,r)=>{let n=!z.current&&!r;(void 0!==C.value&&C.value===t||n)&&D(e)},[C.value]),en="popper"===o?ee:Q,eo=en===ee?{side:f,sideOffset:p,align:y,alignOffset:g,arrowPadding:m,collisionBoundary:b,collisionPadding:v,sticky:w,hideWhenDetached:E,avoidCollisions:x}:{};return(0,T.jsx)($,{scope:r,content:O,viewport:j,onViewportChange:L,itemRefCallback:Z,selectedItem:k,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:V,selectedItemText:I,position:o,isPositioned:F,searchRef:J,children:(0,T.jsx)(A.A,{as:Y,allowPinchZoom:!0,children:(0,T.jsx)(d.n,{asChild:!0,trapped:C.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,a.m)(i,e=>{var t;null==(t=C.trigger)||t.focus({preventScroll:!0}),e.preventDefault()}),children:(0,T.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:s,onPointerDownOutside:u,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>C.onOpenChange(!1),children:(0,T.jsx)(en,{role:"listbox",id:C.contentId,"data-state":C.open?"open":"closed",dir:C.dir,onContextMenu:e=>e.preventDefault(),...S,...eo,onPlaced:()=>q(!0),ref:U,style:{display:"flex",flexDirection:"column",outline:"none",...S.style},onKeyDown:(0,a.m)(S.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||X(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=M().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>H(t)),e.preventDefault()}})})})})})})});Z.displayName="SelectContentImpl";var Q=n.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:o,...a}=e,s=_(G,r),u=X(G,r),[f,c]=n.useState(null),[h,d]=n.useState(null),p=(0,l.s)(t,e=>d(e)),y=N(r),g=n.useRef(!1),b=n.useRef(!0),{viewport:v,selectedItem:w,selectedItemText:x,focusSelectedItem:S}=u,R=n.useCallback(()=>{if(s.trigger&&s.valueNode&&f&&h&&v&&w&&x){let e=s.trigger.getBoundingClientRect(),t=h.getBoundingClientRect(),r=s.valueNode.getBoundingClientRect(),n=x.getBoundingClientRect();if("rtl"!==s.dir){let o=n.left-t.left,a=r.left-o,s=e.left-a,l=e.width+s,u=Math.max(l,t.width),c=i(a,[10,Math.max(10,window.innerWidth-10-u)]);f.style.minWidth=l+"px",f.style.left=c+"px"}else{let o=t.right-n.right,a=window.innerWidth-r.right-o,s=window.innerWidth-e.right-a,l=e.width+s,u=Math.max(l,t.width),c=i(a,[10,Math.max(10,window.innerWidth-10-u)]);f.style.minWidth=l+"px",f.style.right=c+"px"}let a=y(),l=window.innerHeight-20,u=v.scrollHeight,c=window.getComputedStyle(h),d=parseInt(c.borderTopWidth,10),p=parseInt(c.paddingTop,10),m=parseInt(c.borderBottomWidth,10),b=d+p+u+parseInt(c.paddingBottom,10)+m,E=Math.min(5*w.offsetHeight,b),S=window.getComputedStyle(v),R=parseInt(S.paddingTop,10),A=parseInt(S.paddingBottom,10),T=e.top+e.height/2-10,C=w.offsetHeight/2,O=d+p+(w.offsetTop+C);if(O<=T){let e=a.length>0&&w===a[a.length-1].ref.current;f.style.bottom="0px";let t=Math.max(l-T,C+(e?A:0)+(h.clientHeight-v.offsetTop-v.offsetHeight)+m);f.style.height=O+t+"px"}else{let e=a.length>0&&w===a[0].ref.current;f.style.top="0px";let t=Math.max(T,d+v.offsetTop+(e?R:0)+C);f.style.height=t+(b-O)+"px",v.scrollTop=O-T+v.offsetTop}f.style.margin="".concat(10,"px 0"),f.style.minHeight=E+"px",f.style.maxHeight=l+"px",null==o||o(),requestAnimationFrame(()=>g.current=!0)}},[y,s.trigger,s.valueNode,f,h,v,w,x,s.dir,o]);(0,E.N)(()=>R(),[R]);let[A,C]=n.useState();(0,E.N)(()=>{h&&C(window.getComputedStyle(h).zIndex)},[h]);let O=n.useCallback(e=>{e&&!0===b.current&&(R(),null==S||S(),b.current=!1)},[R,S]);return(0,T.jsx)(et,{scope:r,contentWrapper:f,shouldExpandOnScrollRef:g,onScrollButtonChange:O,children:(0,T.jsx)("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:A},children:(0,T.jsx)(m.sG.div,{...a,ref:p,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});Q.displayName="SelectItemAlignedPosition";var ee=n.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:o=10,...i}=e,a=P(r);return(0,T.jsx)(y.UC,{...a,...i,ref:t,align:n,collisionPadding:o,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ee.displayName="SelectPopperPosition";var[et,er]=U(G,{}),en="SelectViewport",eo=n.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:o,...i}=e,s=X(en,r),u=er(en,r),f=(0,l.s)(t,s.onViewportChange),c=n.useRef(0);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:o}),(0,T.jsx)(j.Slot,{scope:r,children:(0,T.jsx)(m.sG.div,{"data-radix-select-viewport":"",role:"presentation",...i,ref:f,style:{position:"relative",flex:1,overflow:"hidden auto",...i.style},onScroll:(0,a.m)(i.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=u;if((null==n?void 0:n.current)&&r){let e=Math.abs(c.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,o=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(o0?s:0,r.style.justifyContent="flex-end")}}}c.current=t.scrollTop})})})]})});eo.displayName=en;var ei="SelectGroup",[ea,es]=U(ei);n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,o=(0,p.B)();return(0,T.jsx)(ea,{scope:r,id:o,children:(0,T.jsx)(m.sG.div,{role:"group","aria-labelledby":o,...n,ref:t})})}).displayName=ei;var el="SelectLabel";n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,o=es(el,r);return(0,T.jsx)(m.sG.div,{id:o.id,...n,ref:t})}).displayName=el;var eu="SelectItem",[ef,ec]=U(eu),eh=n.forwardRef((e,t)=>{let{__scopeSelect:r,value:o,disabled:i=!1,textValue:s,...u}=e,f=_(eu,r),c=X(eu,r),h=f.value===o,[d,y]=n.useState(null!=s?s:""),[g,b]=n.useState(!1),v=(0,l.s)(t,e=>{var t;return null==(t=c.itemRefCallback)?void 0:t.call(c,e,o,i)}),w=(0,p.B)(),E=n.useRef("touch"),x=()=>{i||(f.onValueChange(o),f.onOpenChange(!1))};if(""===o)throw Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,T.jsx)(ef,{scope:r,value:o,disabled:i,textId:w,isSelected:h,onItemTextChange:n.useCallback(e=>{y(t=>{var r;return t||(null!=(r=null==e?void 0:e.textContent)?r:"").trim()})},[]),children:(0,T.jsx)(j.ItemSlot,{scope:r,value:o,disabled:i,textValue:d,children:(0,T.jsx)(m.sG.div,{role:"option","aria-labelledby":w,"data-highlighted":g?"":void 0,"aria-selected":h&&g,"data-state":h?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1,...u,ref:v,onFocus:(0,a.m)(u.onFocus,()=>b(!0)),onBlur:(0,a.m)(u.onBlur,()=>b(!1)),onClick:(0,a.m)(u.onClick,()=>{"mouse"!==E.current&&x()}),onPointerUp:(0,a.m)(u.onPointerUp,()=>{"mouse"===E.current&&x()}),onPointerDown:(0,a.m)(u.onPointerDown,e=>{E.current=e.pointerType}),onPointerMove:(0,a.m)(u.onPointerMove,e=>{if(E.current=e.pointerType,i){var t;null==(t=c.onItemLeave)||t.call(c)}else"mouse"===E.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,a.m)(u.onPointerLeave,e=>{if(e.currentTarget===document.activeElement){var t;null==(t=c.onItemLeave)||t.call(c)}}),onKeyDown:(0,a.m)(u.onKeyDown,e=>{var t;((null==(t=c.searchRef)?void 0:t.current)===""||" "!==e.key)&&(O.includes(e.key)&&x()," "===e.key&&e.preventDefault())})})})})});eh.displayName=eu;var ed="SelectItemText",ep=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:i,style:a,...s}=e,u=_(ed,r),f=X(ed,r),c=ec(ed,r),h=M(ed,r),[d,p]=n.useState(null),y=(0,l.s)(t,e=>p(e),c.onItemTextChange,e=>{var t;return null==(t=f.itemTextRefCallback)?void 0:t.call(f,e,c.value,c.disabled)}),g=null==d?void 0:d.textContent,b=n.useMemo(()=>(0,T.jsx)("option",{value:c.value,disabled:c.disabled,children:g},c.value),[c.disabled,c.value,g]),{onNativeOptionAdd:v,onNativeOptionRemove:w}=h;return(0,E.N)(()=>(v(b),()=>w(b)),[v,w,b]),(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(m.sG.span,{id:c.textId,...s,ref:y}),c.isSelected&&u.valueNode&&!u.valueNodeHasChildren?o.createPortal(s.children,u.valueNode):null]})});ep.displayName=ed;var ey="SelectItemIndicator",eg=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return ec(ey,r).isSelected?(0,T.jsx)(m.sG.span,{"aria-hidden":!0,...n,ref:t}):null});eg.displayName=ey;var em="SelectScrollUpButton",eb=n.forwardRef((e,t)=>{let r=X(em,e.__scopeSelect),o=er(em,e.__scopeSelect),[i,a]=n.useState(!1),s=(0,l.s)(t,o.onScrollButtonChange);return(0,E.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){a(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,T.jsx)(eE,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});eb.displayName=em;var ev="SelectScrollDownButton",ew=n.forwardRef((e,t)=>{let r=X(ev,e.__scopeSelect),o=er(ev,e.__scopeSelect),[i,a]=n.useState(!1),s=(0,l.s)(t,o.onScrollButtonChange);return(0,E.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),i?(0,T.jsx)(eE,{...e,ref:s,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});ew.displayName=ev;var eE=n.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:o,...i}=e,s=X("SelectScrollButton",r),l=n.useRef(null),u=N(r),f=n.useCallback(()=>{null!==l.current&&(window.clearInterval(l.current),l.current=null)},[]);return n.useEffect(()=>()=>f(),[f]),(0,E.N)(()=>{var e;let t=u().find(e=>e.ref.current===document.activeElement);null==t||null==(e=t.ref.current)||e.scrollIntoView({block:"nearest"})},[u]),(0,T.jsx)(m.sG.div,{"aria-hidden":!0,...i,ref:t,style:{flexShrink:0,...i.style},onPointerDown:(0,a.m)(i.onPointerDown,()=>{null===l.current&&(l.current=window.setInterval(o,50))}),onPointerMove:(0,a.m)(i.onPointerMove,()=>{var e;null==(e=s.onItemLeave)||e.call(s),null===l.current&&(l.current=window.setInterval(o,50))}),onPointerLeave:(0,a.m)(i.onPointerLeave,()=>{f()})})});n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,T.jsx)(m.sG.div,{"aria-hidden":!0,...n,ref:t})}).displayName="SelectSeparator";var ex="SelectArrow";n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,o=P(r),i=_(ex,r),a=X(ex,r);return i.open&&"popper"===a.position?(0,T.jsx)(y.i3,{...o,...n,ref:t}):null}).displayName=ex;var eS=n.forwardRef((e,t)=>{let{__scopeSelect:r,value:o,...i}=e,a=n.useRef(null),s=(0,l.s)(t,a),u=(0,x.Z)(o);return n.useEffect(()=>{let e=a.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(u!==o&&t){let r=new Event("change",{bubbles:!0});t.call(e,o),e.dispatchEvent(r)}},[u,o]),(0,T.jsx)(m.sG.select,{...i,style:{...S.Qg,...i.style},ref:s,defaultValue:o})});function eR(e){return""===e||void 0===e}function eA(e){let t=(0,v.c)(e),r=n.useRef(""),o=n.useRef(0),i=n.useCallback(e=>{let n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout(()=>e(""),1e3))}(n)},[t]),a=n.useCallback(()=>{r.current="",window.clearTimeout(o.current)},[]);return n.useEffect(()=>()=>window.clearTimeout(o.current),[]),[r,i,a]}function eT(e,t,r){var n,o;let i=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,s=(n=e,o=Math.max(a,0),n.map((e,t)=>n[(o+t)%n.length]));1===i.length&&(s=s.filter(e=>e!==r));let l=s.find(e=>e.textValue.toLowerCase().startsWith(i.toLowerCase()));return l!==r?l:void 0}eS.displayName="SelectBubbleInput";var eC=F,eO=z,eB=V,ej=W,eN=K,eL=J,eU=eo,ek=eh,eP=ep,eI=eg,e_=eb,eD=ew},5503:(e,t,r)=>{"use strict";r.d(t,{Z:()=>o});var n=r(2115);function o(e){let t=n.useRef({value:e,previous:e});return n.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}},6474:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},7863:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])},9362:(e,t,r)=>{"use strict";r.d(t,{F0:()=>c});let{Axios:n,AxiosError:o,CanceledError:i,isCancel:a,CancelToken:s,VERSION:l,all:u,Cancel:f,isAxiosError:c,spread:h,toFormData:d,AxiosHeaders:p,HttpStatusCode:y,formToJSON:g,getAdapter:m,mergeConfig:b}=r(3464).A},9641:e=>{!function(){var t={675:function(e,t){"use strict";t.byteLength=function(e){var t=l(e),r=t[0],n=t[1];return(r+n)*3/4-n},t.toByteArray=function(e){var t,r,i=l(e),a=i[0],s=i[1],u=new o((a+s)*3/4-s),f=0,c=s>0?a-4:a;for(r=0;r>16&255,u[f++]=t>>8&255,u[f++]=255&t;return 2===s&&(t=n[e.charCodeAt(r)]<<2|n[e.charCodeAt(r+1)]>>4,u[f++]=255&t),1===s&&(t=n[e.charCodeAt(r)]<<10|n[e.charCodeAt(r+1)]<<4|n[e.charCodeAt(r+2)]>>2,u[f++]=t>>8&255,u[f++]=255&t),u},t.fromByteArray=function(e){for(var t,n=e.length,o=n%3,i=[],a=0,s=n-o;a>18&63]+r[o>>12&63]+r[o>>6&63]+r[63&o]);return i.join("")}(e,a,a+16383>s?s:a+16383));return 1===o?i.push(r[(t=e[n-1])>>2]+r[t<<4&63]+"=="):2===o&&i.push(r[(t=(e[n-2]<<8)+e[n-1])>>10]+r[t>>4&63]+r[t<<2&63]+"="),i.join("")};for(var r=[],n=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,s=i.length;a0)throw Error("Invalid string. Length must be a multiple of 4");var r=e.indexOf("=");-1===r&&(r=t);var n=r===t?0:4-r%4;return[r,n]}n[45]=62,n[95]=63},72:function(e,t,r){"use strict";var n=r(675),o=r(783),i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;function a(e){if(e>0x7fffffff)throw RangeError('The value "'+e+'" is invalid for option "size"');var t=new Uint8Array(e);return Object.setPrototypeOf(t,s.prototype),t}function s(e,t,r){if("number"==typeof e){if("string"==typeof t)throw TypeError('The "string" argument must be of type string. Received type number');return f(e)}return l(e,t,r)}function l(e,t,r){if("string"==typeof e){var n=e,o=t;if(("string"!=typeof o||""===o)&&(o="utf8"),!s.isEncoding(o))throw TypeError("Unknown encoding: "+o);var i=0|d(n,o),l=a(i),u=l.write(n,o);return u!==i&&(l=l.slice(0,u)),l}if(ArrayBuffer.isView(e))return c(e);if(null==e)throw TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(B(e,ArrayBuffer)||e&&B(e.buffer,ArrayBuffer)||"undefined"!=typeof SharedArrayBuffer&&(B(e,SharedArrayBuffer)||e&&B(e.buffer,SharedArrayBuffer)))return function(e,t,r){var n;if(t<0||e.byteLength=0x7fffffff)throw RangeError("Attempt to allocate Buffer larger than maximum size: 0x7fffffff bytes");return 0|e}function d(e,t){if(s.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||B(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);var r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;for(var o=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return A(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return C(e).length;default:if(o)return n?-1:A(e).length;t=(""+t).toLowerCase(),o=!0}}function p(e,t,r){var o,i,a,s=!1;if((void 0===t||t<0)&&(t=0),t>this.length||((void 0===r||r>this.length)&&(r=this.length),r<=0||(r>>>=0)<=(t>>>=0)))return"";for(e||(e="utf8");;)switch(e){case"hex":return function(e,t,r){var n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);for(var o="",i=t;i0x7fffffff?r=0x7fffffff:r<-0x80000000&&(r=-0x80000000),(i=r*=1)!=i&&(r=o?0:e.length-1),r<0&&(r=e.length+r),r>=e.length)if(o)return -1;else r=e.length-1;else if(r<0)if(!o)return -1;else r=0;if("string"==typeof t&&(t=s.from(t,n)),s.isBuffer(t))return 0===t.length?-1:m(e,t,r,n,o);if("number"==typeof t){if(t&=255,"function"==typeof Uint8Array.prototype.indexOf)if(o)return Uint8Array.prototype.indexOf.call(e,t,r);else return Uint8Array.prototype.lastIndexOf.call(e,t,r);return m(e,[t],r,n,o)}throw TypeError("val must be string, number or Buffer")}function m(e,t,r,n,o){var i,a=1,s=e.length,l=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return -1;a=2,s/=2,l/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(o){var f=-1;for(i=r;is&&(r=s-l),i=r;i>=0;i--){for(var c=!0,h=0;hr&&(e+=" ... "),""},i&&(s.prototype[i]=s.prototype.inspect),s.prototype.compare=function(e,t,r,n,o){if(B(e,Uint8Array)&&(e=s.from(e,e.offset,e.byteLength)),!s.isBuffer(e))throw TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===o&&(o=this.length),t<0||r>e.length||n<0||o>this.length)throw RangeError("out of range index");if(n>=o&&t>=r)return 0;if(n>=o)return -1;if(t>=r)return 1;if(t>>>=0,r>>>=0,n>>>=0,o>>>=0,this===e)return 0;for(var i=o-n,a=r-t,l=Math.min(i,a),u=this.slice(n,o),f=e.slice(t,r),c=0;c239?4:u>223?3:u>191?2:1;if(o+c<=r)switch(c){case 1:u<128&&(f=u);break;case 2:(192&(i=e[o+1]))==128&&(l=(31&u)<<6|63&i)>127&&(f=l);break;case 3:i=e[o+1],a=e[o+2],(192&i)==128&&(192&a)==128&&(l=(15&u)<<12|(63&i)<<6|63&a)>2047&&(l<55296||l>57343)&&(f=l);break;case 4:i=e[o+1],a=e[o+2],s=e[o+3],(192&i)==128&&(192&a)==128&&(192&s)==128&&(l=(15&u)<<18|(63&i)<<12|(63&a)<<6|63&s)>65535&&l<1114112&&(f=l)}null===f?(f=65533,c=1):f>65535&&(f-=65536,n.push(f>>>10&1023|55296),f=56320|1023&f),n.push(f),o+=c}var h=n,d=h.length;if(d<=4096)return String.fromCharCode.apply(String,h);for(var p="",y=0;yr)throw RangeError("Trying to access beyond buffer length")}function w(e,t,r,n,o,i){if(!s.isBuffer(e))throw TypeError('"buffer" argument must be a Buffer instance');if(t>o||te.length)throw RangeError("Index out of range")}function E(e,t,r,n,o,i){if(r+n>e.length||r<0)throw RangeError("Index out of range")}function x(e,t,r,n,i){return t*=1,r>>>=0,i||E(e,t,r,4,34028234663852886e22,-34028234663852886e22),o.write(e,t,r,n,23,4),r+4}function S(e,t,r,n,i){return t*=1,r>>>=0,i||E(e,t,r,8,17976931348623157e292,-17976931348623157e292),o.write(e,t,r,n,52,8),r+8}s.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else if(isFinite(t))t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0);else throw Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");var o,i,a,s,l,u,f,c,h=this.length-t;if((void 0===r||r>h)&&(r=h),e.length>0&&(r<0||t<0)||t>this.length)throw RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var d=!1;;)switch(n){case"hex":return function(e,t,r,n){r=Number(r)||0;var o=e.length-r;n?(n=Number(n))>o&&(n=o):n=o;var i=t.length;n>i/2&&(n=i/2);for(var a=0;a>8,o.push(r%256),o.push(n);return o}(e,this.length-f),this,f,c);default:if(d)throw TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),d=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}},s.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r)<0&&(e=0):e>r&&(e=r),t<0?(t+=r)<0&&(t=0):t>r&&(t=r),t>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e],o=1,i=0;++i>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e+--t],o=1;t>0&&(o*=256);)n+=this[e+--t]*o;return n},s.prototype.readUInt8=function(e,t){return e>>>=0,t||v(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return e>>>=0,t||v(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+0x1000000*this[e+3]},s.prototype.readUInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),0x1000000*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var n=this[e],o=1,i=0;++i=(o*=128)&&(n-=Math.pow(2,8*t)),n},s.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||v(e,t,this.length);for(var n=t,o=1,i=this[e+--n];n>0&&(o*=256);)i+=this[e+--n]*o;return i>=(o*=128)&&(i-=Math.pow(2,8*t)),i},s.prototype.readInt8=function(e,t){return(e>>>=0,t||v(e,1,this.length),128&this[e])?-((255-this[e]+1)*1):this[e]},s.prototype.readInt16LE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?0xffff0000|r:r},s.prototype.readInt16BE=function(e,t){e>>>=0,t||v(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?0xffff0000|r:r},s.prototype.readInt32LE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return e>>>=0,t||v(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return e>>>=0,t||v(e,4,this.length),o.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return e>>>=0,t||v(e,4,this.length),o.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return e>>>=0,t||v(e,8,this.length),o.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return e>>>=0,t||v(e,8,this.length),o.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,r,n){if(e*=1,t>>>=0,r>>>=0,!n){var o=Math.pow(2,8*r)-1;w(this,e,t,r,o,0)}var i=1,a=0;for(this[t]=255&e;++a>>=0,r>>>=0,!n){var o=Math.pow(2,8*r)-1;w(this,e,t,r,o,0)}var i=r-1,a=1;for(this[t+i]=255&e;--i>=0&&(a*=256);)this[t+i]=e/a&255;return t+r},s.prototype.writeUInt8=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,1,255,0),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeUInt16BE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeUInt32LE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,4,0xffffffff,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},s.prototype.writeUInt32BE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,4,0xffffffff,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeIntLE=function(e,t,r,n){if(e*=1,t>>>=0,!n){var o=Math.pow(2,8*r-1);w(this,e,t,r,o-1,-o)}var i=0,a=1,s=0;for(this[t]=255&e;++i>>=0,!n){var o=Math.pow(2,8*r-1);w(this,e,t,r,o-1,-o)}var i=r-1,a=1,s=0;for(this[t+i]=255&e;--i>=0&&(a*=256);)e<0&&0===s&&0!==this[t+i+1]&&(s=1),this[t+i]=(e/a|0)-s&255;return t+r},s.prototype.writeInt8=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},s.prototype.writeInt16BE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},s.prototype.writeInt32LE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,4,0x7fffffff,-0x80000000),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},s.prototype.writeInt32BE=function(e,t,r){return e*=1,t>>>=0,r||w(this,e,t,4,0x7fffffff,-0x80000000),e<0&&(e=0xffffffff+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},s.prototype.writeFloatLE=function(e,t,r){return x(this,e,t,!0,r)},s.prototype.writeFloatBE=function(e,t,r){return x(this,e,t,!1,r)},s.prototype.writeDoubleLE=function(e,t,r){return S(this,e,t,!0,r)},s.prototype.writeDoubleBE=function(e,t,r){return S(this,e,t,!1,r)},s.prototype.copy=function(e,t,r,n){if(!s.isBuffer(e))throw TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n=this.length)throw RangeError("Index out of range");if(n<0)throw RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t=0;--i)e[i+t]=this[i+r];else Uint8Array.prototype.set.call(e,this.subarray(r,n),t);return o},s.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw TypeError("encoding must be a string");if("string"==typeof n&&!s.isEncoding(n))throw TypeError("Unknown encoding: "+n);if(1===e.length){var o,i=e.charCodeAt(0);("utf8"===n&&i<128||"latin1"===n)&&(e=i)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(o=t;o55295&&r<57344){if(!o){if(r>56319||a+1===n){(t-=3)>-1&&i.push(239,191,189);continue}o=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),o=r;continue}r=(o-55296<<10|r-56320)+65536}else o&&(t-=3)>-1&&i.push(239,191,189);if(o=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else if(r<1114112){if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}else throw Error("Invalid code point")}return i}function T(e){for(var t=[],r=0;r=t.length)&&!(o>=e.length);++o)t[o+r]=e[o];return o}function B(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}var j=function(){for(var e="0123456789abcdef",t=Array(256),r=0;r<16;++r)for(var n=16*r,o=0;o<16;++o)t[n+o]=e[r]+e[o];return t}()},783:function(e,t){t.read=function(e,t,r,n,o){var i,a,s=8*o-n-1,l=(1<>1,f=-7,c=r?o-1:0,h=r?-1:1,d=e[t+c];for(c+=h,i=d&(1<<-f)-1,d>>=-f,f+=s;f>0;i=256*i+e[t+c],c+=h,f-=8);for(a=i&(1<<-f)-1,i>>=-f,f+=n;f>0;a=256*a+e[t+c],c+=h,f-=8);if(0===i)i=1-u;else{if(i===l)return a?NaN:1/0*(d?-1:1);a+=Math.pow(2,n),i-=u}return(d?-1:1)*a*Math.pow(2,i-n)},t.write=function(e,t,r,n,o,i){var a,s,l,u=8*i-o-1,f=(1<>1,h=5960464477539062e-23*(23===o),d=n?0:i-1,p=n?1:-1,y=+(t<0||0===t&&1/t<0);for(isNaN(t=Math.abs(t))||t===1/0?(s=+!!isNaN(t),a=f):(a=Math.floor(Math.log(t)/Math.LN2),t*(l=Math.pow(2,-a))<1&&(a--,l*=2),a+c>=1?t+=h/l:t+=h*Math.pow(2,1-c),t*l>=2&&(a++,l/=2),a+c>=f?(s=0,a=f):a+c>=1?(s=(t*l-1)*Math.pow(2,o),a+=c):(s=t*Math.pow(2,c-1)*Math.pow(2,o),a=0));o>=8;e[r+d]=255&s,d+=p,s/=256,o-=8);for(a=a<0;e[r+d]=255&a,d+=p,a/=256,u-=8);e[r+d-p]|=128*y}}},r={};function n(e){var o=r[e];if(void 0!==o)return o.exports;var i=r[e]={exports:{}},a=!0;try{t[e](i,i.exports,n),a=!1}finally{a&&delete r[e]}return i.exports}n.ab="//",e.exports=n(72)}()}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/485-82d411514498e7b2.js b/transports/bifrost-http/ui/_next/static/chunks/485-82d411514498e7b2.js new file mode 100644 index 0000000000..edf3114189 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/485-82d411514498e7b2.js @@ -0,0 +1,124 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[485],{446:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("bug",[["path",{d:"m8 2 1.88 1.88",key:"fmnt4t"}],["path",{d:"M14.12 3.88 16 2",key:"qol33r"}],["path",{d:"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1",key:"d7y7pr"}],["path",{d:"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6",key:"xs1cw7"}],["path",{d:"M12 20v-9",key:"1qisl0"}],["path",{d:"M6.53 9C4.6 8.8 3 7.1 3 5",key:"32zzws"}],["path",{d:"M6 13H2",key:"82j7cp"}],["path",{d:"M3 21c0-2.1 1.7-3.9 3.8-4",key:"4p0ekp"}],["path",{d:"M20.97 5c0 2.1-1.6 3.8-3.5 4",key:"18gb23"}],["path",{d:"M22 13h-4",key:"1jl80f"}],["path",{d:"M17.2 17c2.1.1 3.8 1.9 3.8 4",key:"k3fwyw"}]])},1362:(e,t,r)=>{"use strict";r.d(t,{D:()=>c,N:()=>u});var n=r(2115),a=(e,t,r,n,a,s,o,i)=>{let l=document.documentElement,c=["light","dark"];function u(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&s?a.map(e=>s[e]||e):a;r?(l.classList.remove(...n),l.classList.add(s&&s[t]?s[t]:t)):l.setAttribute(e,t)}),r=t,i&&c.includes(r)&&(l.style.colorScheme=r)}if(n)u(n);else try{let e=localStorage.getItem(t)||r,n=o&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(n)}catch(e){}},s=["light","dark"],o="(prefers-color-scheme: dark)",i=n.createContext(void 0),l={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=n.useContext(i))?e:l},u=e=>n.useContext(i)?n.createElement(n.Fragment,null,e.children):n.createElement(p,{...e}),d=["light","dark"],p=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:a=!0,enableColorScheme:l=!0,storageKey:c="theme",themes:u=d,defaultTheme:p=a?"system":"light",attribute:v="data-theme",value:b,children:y,nonce:w,scriptProps:x}=e,[A,k]=n.useState(()=>h(c,p)),[M,S]=n.useState(()=>"system"===A?g():A),E=b?Object.values(b):u,L=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=g());let n=b?b[t]:t,o=r?f(w):null,i=document.documentElement,c=e=>{"class"===e?(i.classList.remove(...E),n&&i.classList.add(n)):e.startsWith("data-")&&(n?i.setAttribute(e,n):i.removeAttribute(e))};if(Array.isArray(v)?v.forEach(c):c(v),l){let e=s.includes(p)?p:null,r=s.includes(t)?t:e;i.style.colorScheme=r}null==o||o()},[w]),C=n.useCallback(e=>{let t="function"==typeof e?e(A):e;k(t);try{localStorage.setItem(c,t)}catch(e){}},[A]),P=n.useCallback(e=>{S(g(e)),"system"===A&&a&&!t&&L("system")},[A,t]);n.useEffect(()=>{let e=window.matchMedia(o);return e.addListener(P),P(e),()=>e.removeListener(P)},[P]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?k(e.newValue):C(p))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[C]),n.useEffect(()=>{L(null!=t?t:A)},[t,A]);let R=n.useMemo(()=>({theme:A,setTheme:C,forcedTheme:t,resolvedTheme:"system"===A?M:A,themes:a?[...u,"system"]:u,systemTheme:a?M:void 0}),[A,C,t,M,a,u]);return n.createElement(i.Provider,{value:R},n.createElement(m,{forcedTheme:t,storageKey:c,attribute:v,enableSystem:a,enableColorScheme:l,defaultTheme:p,value:b,themes:u,nonce:w,scriptProps:x}),y)},m=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:s,enableSystem:o,enableColorScheme:i,defaultTheme:l,value:c,themes:u,nonce:d,scriptProps:p}=e,m=JSON.stringify([s,r,l,t,u,c,o,i]).slice(1,-1);return n.createElement("script",{...p,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(a.toString(),")(").concat(m,")")}})}),h=(e,t)=>{let r;try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t},f=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(o)),e.matches?"dark":"light")},2098:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},3509:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]])},3786:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]])},3840:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("telescope",[["path",{d:"m10.065 12.493-6.18 1.318a.934.934 0 0 1-1.108-.702l-.537-2.15a1.07 1.07 0 0 1 .691-1.265l13.504-4.44",key:"k4qptu"}],["path",{d:"m13.56 11.747 4.332-.924",key:"19l80z"}],["path",{d:"m16 21-3.105-6.21",key:"7oh9d"}],["path",{d:"M16.485 5.94a2 2 0 0 1 1.455-2.425l1.09-.272a1 1 0 0 1 1.212.727l1.515 6.06a1 1 0 0 1-.727 1.213l-1.09.272a2 2 0 0 1-2.425-1.455z",key:"m7xp4m"}],["path",{d:"m6.158 8.633 1.114 4.456",key:"74o979"}],["path",{d:"m8 21 3.105-6.21",key:"1fvxut"}],["circle",{cx:"12",cy:"13",r:"2",key:"1c1ljs"}]])},5688:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_5cfdac",variable:"__variable_5cfdac"}},5695:(e,t,r)=>{"use strict";var n=r(8999);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},6357:(e,t,r)=>{"use strict";r.d(t,{a:()=>o});var n=r(2115),a=r(5709);let s=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M235.57,193.73,202.38,35.93a20,20,0,0,0-23.76-15.48L131.81,30.51a19.82,19.82,0,0,0-11,6.65A20,20,0,0,0,104,28H56A20,20,0,0,0,36,48V208a20,20,0,0,0,20,20h48a20,20,0,0,0,20-20V90.25l25.62,121.82A20,20,0,0,0,169.15,228a20.27,20.27,0,0,0,4.23-.45l46.81-10.06A20.1,20.1,0,0,0,235.57,193.73ZM148.19,88.65l39-8.38,2.53,12-39,8.38Zm7.46,35.5,39-8.38,9.16,43.58-39,8.38Zm24.06-79.39,2.53,12-39,8.38-2.53-12ZM60,88h40v80H60Zm40-36V64H60V52ZM60,204V192h40v12Zm112.29-.76-2.53-12,39-8.38,2.53,12Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M48,72h64V184H48ZM190.64,38.39a8,8,0,0,0-9.5-6.21l-46.81,10a8.07,8.07,0,0,0-6.15,9.57L139.79,107l62.46-13.42Z",opacity:"0.2"}),n.createElement("path",{d:"M231.65,194.55,198.46,36.75a16,16,0,0,0-19-12.39L132.65,34.42a16.08,16.08,0,0,0-12.3,19l33.19,157.8A16,16,0,0,0,169.16,224a16.25,16.25,0,0,0,3.38-.36l46.81-10.06A16.09,16.09,0,0,0,231.65,194.55ZM136,50.15c0-.06,0-.09,0-.09l46.8-10,3.33,15.87L139.33,66Zm6.62,31.47,46.82-10.05,3.34,15.9L146,97.53Zm6.64,31.57,46.82-10.06,13.3,63.24-46.82,10.06ZM216,197.94l-46.8,10-3.33-15.87L212.67,182,216,197.85C216,197.91,216,197.94,216,197.94ZM104,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V48A16,16,0,0,0,104,32ZM56,48h48V64H56Zm0,32h48v96H56Zm48,128H56V192h48v16Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M231.65,194.55,198.46,36.75a16,16,0,0,0-19-12.39L132.65,34.42a16.08,16.08,0,0,0-12.3,19l33.19,157.8A16,16,0,0,0,169.16,224a16.25,16.25,0,0,0,3.38-.36l46.81-10.06A16.09,16.09,0,0,0,231.65,194.55ZM136,50.15c0-.06,0-.09,0-.09l46.8-10,3.33,15.87L139.33,66Zm10,47.38-3.35-15.9,46.82-10.06,3.34,15.9Zm70,100.41-46.8,10-3.33-15.87L212.67,182,216,197.85C216,197.91,216,197.94,216,197.94ZM104,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V48A16,16,0,0,0,104,32ZM56,48h48V64H56Zm48,160H56V192h48v16Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M104,34H56A14,14,0,0,0,42,48V208a14,14,0,0,0,14,14h48a14,14,0,0,0,14-14V48A14,14,0,0,0,104,34ZM54,78h52V178H54Zm2-32h48a2,2,0,0,1,2,2V66H54V48A2,2,0,0,1,56,46Zm48,164H56a2,2,0,0,1-2-2V190h52v18A2,2,0,0,1,104,210Zm125.7-15L196.51,37.16a14,14,0,0,0-16.63-10.85L133.07,36.37A14.09,14.09,0,0,0,122.3,53l33.19,157.81a14,14,0,0,0,6.1,8.9,13.85,13.85,0,0,0,7.57,2.26,13.55,13.55,0,0,0,3-.32l46.81-10.05A14.09,14.09,0,0,0,229.7,195Zm-82.81-83.32,50.73-10.9,14.12,67.16L161,178.81Zm-6.63-31.56L191,69.19,195.15,89l-50.73,10.9Zm-4.66-32,46.8-10.05a2.18,2.18,0,0,1,.42,0,1.89,1.89,0,0,1,1.05.32,2,2,0,0,1,.89,1.31l3.75,17.82L137.79,68.34l-3.74-17.78A2.07,2.07,0,0,1,135.6,48.1Zm80.81,151.8L169.6,210a1.92,1.92,0,0,1-1.47-.27,2,2,0,0,1-.89-1.31l-3.75-17.82,50.72-10.9L218,197.43A2.07,2.07,0,0,1,216.41,199.9Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M231.65,194.55,198.46,36.75a16,16,0,0,0-19-12.39L132.65,34.42a16.08,16.08,0,0,0-12.3,19l33.19,157.8A16,16,0,0,0,169.16,224a16.25,16.25,0,0,0,3.38-.36l46.81-10.06A16.09,16.09,0,0,0,231.65,194.55ZM136,50.15c0-.06,0-.09,0-.09l46.8-10,3.33,15.87L139.33,66Zm6.62,31.47,46.82-10.05,3.34,15.9L146,97.53Zm6.64,31.57,46.82-10.06,13.3,63.24-46.82,10.06ZM216,197.94l-46.8,10-3.33-15.87L212.67,182,216,197.85C216,197.91,216,197.94,216,197.94ZM104,32H56A16,16,0,0,0,40,48V208a16,16,0,0,0,16,16h48a16,16,0,0,0,16-16V48A16,16,0,0,0,104,32ZM56,48h48V64H56Zm0,32h48v96H56Zm48,128H56V192h48v16Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M104,36H56A12,12,0,0,0,44,48V208a12,12,0,0,0,12,12h48a12,12,0,0,0,12-12V48A12,12,0,0,0,104,36ZM52,76h56V180H52Zm4-32h48a4,4,0,0,1,4,4V68H52V48A4,4,0,0,1,56,44Zm48,168H56a4,4,0,0,1-4-4V188h56v20A4,4,0,0,1,104,212Zm123.74-16.62L194.55,37.57a12,12,0,0,0-14.25-9.3L133.49,38.32a12.1,12.1,0,0,0-9.23,14.3l33.19,157.81a12,12,0,0,0,14.25,9.3l46.81-10.06h0A12.08,12.08,0,0,0,227.74,195.38Zm-83.21-85.27,54.63-11.73,15,71.07-54.63,11.74Zm-6.64-31.56,54.64-11.74,5,23.74-54.64,11.73Zm-2.71-32.4L182,36.09a4,4,0,0,1,.84-.09,3.94,3.94,0,0,1,2.14.64,4,4,0,0,1,1.76,2.58L190.88,59,136.24,70.72,132.09,51A4.07,4.07,0,0,1,135.18,46.15Zm81.65,155.7L170,211.91a4,4,0,0,1-3-.55,4,4,0,0,1-1.76-2.58L161.12,189l54.64-11.73L219.91,197A4.07,4.07,0,0,1,216.83,201.85Z"}))]]),o=n.forwardRef((e,t)=>n.createElement(a.A,{ref:t,...e,weights:s}));o.displayName="BooksIcon"},7109:(e,t,r)=>{"use strict";r.d(t,{V:()=>R});var n=r(5695),a=r(2115);function s(e,t,r){return Math.max(t,Math.min(e,r))}function o(e,t){return"rtl"===t?(1-e)*100:(-1+e)*100}function i(e,t,r){if("string"==typeof t)void 0!==r&&(e.style[t]=r);else for(let r in t)if(t.hasOwnProperty(r)){let n=t[r];void 0!==n&&(e.style[r]=n)}}function l(e,t){e.classList.add(t)}function c(e,t){e.classList.remove(t)}function u(e){e&&e.parentNode&&e.parentNode.removeChild(e)}var d={minimum:.08,maximum:1,template:`
+
+
`,easing:"linear",positionUsing:"",speed:200,trickle:!0,trickleSpeed:200,showSpinner:!0,indeterminate:!1,indeterminateSelector:".indeterminate",barSelector:".bar",spinnerSelector:".spinner",parent:"body",direction:"ltr"},p=class{static settings=d;static status=null;static pending=[];static isPaused=!1;static reset(){return this.status=null,this.isPaused=!1,this.pending=[],this.settings=d,this}static configure(e){return Object.assign(this.settings,e),this}static isStarted(){return"number"==typeof this.status}static set(e){if(this.isPaused)return this;let t=this.isStarted();e=s(e,this.settings.minimum,this.settings.maximum),this.status=e===this.settings.maximum?null:e;let r=this.render(!t),n=this.settings.speed,a=this.settings.easing;return r.forEach(e=>e.offsetWidth),this.queue(t=>{r.forEach(t=>{this.settings.indeterminate||i(t.querySelector(this.settings.barSelector),this.barPositionCSS({n:e,speed:n,ease:a}))}),e===this.settings.maximum?(r.forEach(e=>{i(e,{transition:"none",opacity:"1"}),e.offsetWidth}),setTimeout(()=>{r.forEach(e=>{i(e,{transition:`all ${n}ms ${a}`,opacity:"0"})}),setTimeout(()=>{r.forEach(e=>{this.remove(e),null===this.settings.template&&i(e,{transition:"none",opacity:"1"})}),t()},n)},n)):setTimeout(t,n)}),this}static start(){this.status||this.set(0);let e=()=>{this.isPaused||setTimeout(()=>{this.status&&(this.trickle(),e())},this.settings.trickleSpeed)};return this.settings.trickle&&e(),this}static done(e){return e||this.status?this.inc(.3+.5*Math.random()).set(1):this}static inc(e){if(this.isPaused||this.settings.indeterminate)return this;let t=this.status;return t?t>1?this:("number"!=typeof e&&(e=t>=0&&t<.2?.1:t>=.2&&t<.5?.04:t>=.5&&t<.8?.02:.005*(t>=.8&&t<.99)),t=s(t+e,0,.994),this.set(t)):this.start()}static dec(e){if(this.isPaused||this.settings.indeterminate)return this;let t=this.status;return"number"!=typeof t?this:("number"!=typeof e&&(e=t>.8?.1:t>.5?.05:t>.2?.02:.01),t=s(t-e,0,.994),this.set(t))}static trickle(){return this.isPaused||this.settings.indeterminate?this:this.inc()}static promise(e){if(!e||"resolved"===e.state())return this;let t=0,r=0;return this.start(),t++,r++,e.always(()=>{0==--r?(t=0,this.done()):this.set((t-r)/t)}),this}static render(e=!1){let t="string"==typeof this.settings.parent?document.querySelector(this.settings.parent):this.settings.parent,r=t?Array.from(t.querySelectorAll(".bprogress")):[];if(null!==this.settings.template&&0===r.length){l(document.documentElement,"bprogress-busy");let e=document.createElement("div");l(e,"bprogress"),e.innerHTML=this.settings.template,t!==document.body&&l(t,"bprogress-custom-parent"),t.appendChild(e),r.push(e)}return r.forEach(r=>{if(null===this.settings.template&&(r.style.display=""),l(document.documentElement,"bprogress-busy"),t!==document.body&&l(t,"bprogress-custom-parent"),this.settings.indeterminate){let e=r.querySelector(this.settings.barSelector);e&&(e.style.display="none");let t=r.querySelector(this.settings.indeterminateSelector);t&&(t.style.display="")}else{let t=r.querySelector(this.settings.barSelector),n=e?o(0,this.settings.direction):o(this.status||0,this.settings.direction);i(t,this.barPositionCSS({n:this.status||0,speed:this.settings.speed,ease:this.settings.easing,perc:n}));let a=r.querySelector(this.settings.indeterminateSelector);a&&(a.style.display="none")}if(null===this.settings.template){let e=r.querySelector(this.settings.spinnerSelector);e&&(e.style.display=this.settings.showSpinner?"block":"none")}else if(!this.settings.showSpinner){let e=r.querySelector(this.settings.spinnerSelector);e&&u(e)}}),r}static remove(e){e?null===this.settings.template?e.style.display="none":u(e):(c(document.documentElement,"bprogress-busy"),("string"==typeof this.settings.parent?document.querySelectorAll(this.settings.parent):[this.settings.parent]).forEach(e=>{c(e,"bprogress-custom-parent")}),document.querySelectorAll(".bprogress").forEach(e=>{null===this.settings.template?e.style.display="none":u(e)}))}static pause(){return!this.isStarted()||this.settings.indeterminate||(this.isPaused=!0),this}static resume(){if(!this.isStarted()||this.settings.indeterminate)return this;if(this.isPaused=!1,this.settings.trickle){let e=()=>{this.isPaused||setTimeout(()=>{this.status&&(this.trickle(),e())},this.settings.trickleSpeed)};e()}return this}static isRendered(){return document.querySelectorAll(".bprogress").length>0}static getPositioningCSS(){let e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return`${t}Perspective`in e?"translate3d":`${t}Transform`in e?"translate":"margin"}static queue(e){this.pending.push(e),1===this.pending.length&&this.next()}static next(){let e=this.pending.shift();e&&e(this.next.bind(this))}static initPositionUsing(){""===this.settings.positionUsing&&(this.settings.positionUsing=this.getPositioningCSS())}static barPositionCSS({n:e,speed:t,ease:r,perc:n}){this.initPositionUsing();let a={},s=n??o(e,this.settings.direction);return"translate3d"===this.settings.positionUsing?a={transform:`translate3d(${s}%,0,0)`}:"translate"===this.settings.positionUsing?a={transform:`translate(${s}%,0)`}:"width"===this.settings.positionUsing?a={width:`${"rtl"===this.settings.direction?100-s:s+100}%`,..."rtl"===this.settings.direction?{right:"0",left:"auto"}:{}}:"margin"===this.settings.positionUsing&&(a="rtl"===this.settings.direction?{"margin-left":`${-s}%`}:{"margin-right":`${-s}%`}),a.transition=`all ${t}ms ${r}`,a}},m=({color:e="#29d",height:t="2px",spinnerPosition:r="top-right"})=>` +:root { + --bprogress-color: ${e}; + --bprogress-height: ${t}; + --bprogress-spinner-size: 18px; + --bprogress-spinner-animation-duration: 400ms; + --bprogress-spinner-border-size: 2px; + --bprogress-box-shadow: 0 0 10px ${e}, 0 0 5px ${e}; + --bprogress-z-index: 99999; + --bprogress-spinner-top: ${"top-right"===r||"top-left"===r?"15px":"auto"}; + --bprogress-spinner-bottom: ${"bottom-right"===r||"bottom-left"===r?"15px":"auto"}; + --bprogress-spinner-right: ${"top-right"===r||"bottom-right"===r?"15px":"auto"}; + --bprogress-spinner-left: ${"top-left"===r||"bottom-left"===r?"15px":"auto"}; +} + +.bprogress { + width: 0; + height: 0; + pointer-events: none; + z-index: var(--bprogress-z-index); +} + +.bprogress .bar { + background: var(--bprogress-color); + position: fixed; + z-index: var(--bprogress-z-index); + top: 0; + left: 0; + width: 100%; + height: var(--bprogress-height); +} + +/* Fancy blur effect */ +.bprogress .peg { + display: block; + position: absolute; + right: 0; + width: 100px; + height: 100%; + box-shadow: var(--bprogress-box-shadow); + opacity: 1.0; + transform: rotate(3deg) translate(0px, -4px); +} + +/* Remove these to get rid of the spinner */ +.bprogress .spinner { + display: block; + position: fixed; + z-index: var(--bprogress-z-index); + top: var(--bprogress-spinner-top); + bottom: var(--bprogress-spinner-bottom); + right: var(--bprogress-spinner-right); + left: var(--bprogress-spinner-left); +} + +.bprogress .spinner-icon { + width: var(--bprogress-spinner-size); + height: var(--bprogress-spinner-size); + box-sizing: border-box; + border: solid var(--bprogress-spinner-border-size) transparent; + border-top-color: var(--bprogress-color); + border-left-color: var(--bprogress-color); + border-radius: 50%; + -webkit-animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; + animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; +} + +.bprogress-custom-parent { + overflow: hidden; + position: relative; +} + +.bprogress-custom-parent .bprogress .spinner, +.bprogress-custom-parent .bprogress .bar { + position: absolute; +} + +.bprogress .indeterminate { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: var(--bprogress-height); + overflow: hidden; +} + +.bprogress .indeterminate .inc, +.bprogress .indeterminate .dec { + position: absolute; + top: 0; + height: 100%; + background-color: var(--bprogress-color); +} + +.bprogress .indeterminate .inc { + animation: bprogress-indeterminate-increase 2s infinite; +} + +.bprogress .indeterminate .dec { + animation: bprogress-indeterminate-decrease 2s 0.5s infinite; +} + +@-webkit-keyframes bprogress-spinner { + 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } + 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } +} + +@keyframes bprogress-spinner { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } +} + +@keyframes bprogress-indeterminate-increase { + from { left: -5%; width: 5%; } + to { left: 130%; width: 100%; } +} + +@keyframes bprogress-indeterminate-decrease { + from { left: -80%; width: 80%; } + to { left: 110%; width: 10%; } +} +`;function h(e,t){if("string"==typeof t&&"data-disable-progress"===t){let r=t.substring(5).replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.dataset[r]}let r=e[t];if(r instanceof SVGAnimatedString){let e=r.baseVal;if("href"===t){var n=location.origin;if(!e.startsWith("/")||!n)return e;let{pathname:t,query:r,hash:a}=function(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}(e);return`${n}${t}${r}${a}`}return e}return r}function f(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var v=(0,a.createContext)(void 0),b=function(){var e=(0,a.useContext)(v);if(!e)throw Error("useProgress must be used within a ProgressProvider");return e},y=function(e){var t=e.children,r=e.color,n=void 0===r?"#0A2FFF":r,s=e.height,o=void 0===s?"2px":s,i=e.options,l=e.spinnerPosition,c=void 0===l?"top-right":l,u=e.style,d=e.disableStyle,h=e.nonce,g=e.shallowRouting,b=e.disableSameURL,y=e.startPosition,w=e.delay,x=e.stopDelay,A=(0,a.useRef)(null),k=(0,a.useRef)(!1),M=(0,a.useCallback)(function(){return k.current=!0},[]),S=(0,a.useCallback)(function(){return k.current=!1},[]),E=(0,a.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];r&&M(),A.current=setTimeout(function(){e>0&&p.set(e),p.start()},t)},[M]),L=(0,a.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;setTimeout(function(){A.current&&clearTimeout(A.current),A.current=setTimeout(function(){p.isStarted()&&(p.done(),k.current&&S())},e)},t)},[S]),C=(0,a.useCallback)(function(e){return p.inc(e)},[]),P=(0,a.useCallback)(function(e){return p.dec(e)},[]),R=(0,a.useCallback)(function(e){return p.set(e)},[]),j=(0,a.useCallback)(function(){return p.pause()},[]),O=(0,a.useCallback)(function(){return p.resume()},[]),D=(0,a.useCallback)(function(){return p.settings},[]),Z=(0,a.useCallback)(function(e){var t=D(),r="function"==typeof e?e(t):e,n=f({},t,r);p.configure(n)},[D]),T=(0,a.useMemo)(function(){return a.createElement("style",{nonce:h},u||m({color:n,height:o,spinnerPosition:c}))},[n,o,h,c,u]);return p.configure(i||{}),a.createElement(v.Provider,{value:{start:E,stop:L,inc:C,dec:P,set:R,pause:j,resume:O,setOptions:Z,getOptions:D,isAutoStopDisabled:k,disableAutoStop:M,enableAutoStop:S,shallowRouting:void 0!==g&&g,disableSameURL:void 0===b||b,startPosition:void 0===y?0:y,delay:void 0===w?0:w,stopDelay:void 0===x?0:x}},void 0!==d&&d?null:T,t)};function w(){for(var e=arguments.length,t=Array(e),r=0;r=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var L=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["memo","shouldCompareComplexProps"];return(0,a.memo)(e,function(e,r){return!1!==r.memo&&(!r.shouldCompareComplexProps||function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=Object.keys(e).filter(function(e){return!r.includes(e)}),a=Object.keys(t).filter(function(e){return!r.includes(e)});if(n.length!==a.length)return!1;var s=!0,o=!1,i=void 0;try{for(var l,c=n[Symbol.iterator]();!(s=(l=c.next()).done);s=!0){var u=l.value;if(e[u]!==t[u])return!1}}catch(e){o=!0,i=e}finally{try{s||null==c.return||c.return()}finally{if(o)throw i}}return!0}(e,r,t))})}(function(e){return!function(e){var t=e.shallowRouting,r=void 0!==t&&t,n=e.disableSameURL,s=void 0===n||n,o=e.startPosition,i=void 0===o?0:o,l=e.delay,c=void 0===l?0:l,u=e.stopDelay,d=void 0===u?0:u,p=e.targetPreprocessor,m=e.disableAnchorClick,f=void 0!==m&&m,g=e.startOnLoad,v=void 0!==g&&g,y=e.forcedStopDelay,w=void 0===y?0:y,x=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],A=(0,a.useRef)([]),k=(0,a.useRef)(null),M=b(),S=M.start,E=M.stop,L=M.isAutoStopDisabled;(0,a.useEffect)(function(){v&&S(i,c)},[]),(0,a.useEffect)(function(){return k.current&&clearTimeout(k.current),k.current=setTimeout(function(){L.current||E()},d),function(){k.current&&clearTimeout(k.current)}},x),(0,a.useEffect)(function(){if(!f){var e=function(e){if(e.defaultPrevented)return;var t,n,a,o,l=e.currentTarget;if(l.hasAttribute("download"))return;var u=e.target,d=(null==u?void 0:u.getAttribute("data-prevent-progress"))==="true"||(null==l?void 0:l.getAttribute("data-prevent-progress"))==="true";if(!d)for(var m,f=u;f&&"a"!==f.tagName.toLowerCase();){if((null==(m=f.parentElement)?void 0:m.getAttribute("data-prevent-progress"))==="true"){d=!0;break}f=f.parentElement}if(!d&&"_blank"!==h(l,"target")&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey){var g=h(l,"href"),v=p?p(new URL(g)):new URL(g),b=new URL(location.href);if(!(r&&(t=v,n=b,t.protocol+"//"+t.host+t.pathname==n.protocol+"//"+n.host+n.pathname))||!s){a=v,o=b,a.protocol+"//"+a.host+a.pathname+a.search==o.protocol+"//"+o.host+o.pathname+o.search&&s||S(i,c)}}},t=new MutationObserver(function(){var t=Array.from(document.querySelectorAll("a")).filter(function(e){var t=h(e,"href"),r="true"===e.getAttribute("data-disable-progress"),n=t&&!t.startsWith("tel:")&&!t.startsWith("mailto:")&&!t.startsWith("blob:")&&!t.startsWith("javascript:");return!r&&n&&"_blank"!==h(e,"target")});t.forEach(function(t){t.addEventListener("click",e,!0)}),A.current=t});t.observe(document,{childList:!0,subtree:!0});var n=window.history.pushState;return window.history.pushState=new Proxy(window.history.pushState,{apply:function(e,t,r){return L.current||E(d,w),e.apply(t,r)}}),function(){t.disconnect(),A.current.forEach(function(t){t.removeEventListener("click",e,!0)}),A.current=[],window.history.pushState=n}}},[f,p,r,s,c,d,i,S,E,w,L])}(e,[(0,n.usePathname)(),(0,n.useSearchParams)()]),null});L.displayName="AppProgress";var C=function(e){var t=e.children,r=e.ProgressComponent,n=e.color,s=e.height,o=e.options,i=e.spinnerPosition,l=e.style,c=e.disableStyle,u=e.nonce,d=e.stopDelay,p=e.delay,m=e.startPosition,h=e.disableSameURL,f=e.shallowRouting,g=E(e,["children","ProgressComponent","color","height","options","spinnerPosition","style","disableStyle","nonce","stopDelay","delay","startPosition","disableSameURL","shallowRouting"]);return a.createElement(y,{color:n,height:s,options:o,spinnerPosition:i,style:l,disableStyle:c,nonce:u,stopDelay:d,delay:p,startPosition:m,disableSameURL:h,shallowRouting:f},a.createElement(r,S({stopDelay:d,delay:p,startPosition:m,disableSameURL:h,shallowRouting:f},g)),t)},P=function(e){return a.createElement(a.Suspense,null,a.createElement(L,f({},e)))},R=function(e){var t=e.children,r=E(e,["children"]);return a.createElement(C,S({ProgressComponent:P},r),t)}},7330:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("settings-2",[["path",{d:"M14 17H5",key:"gfn3mx"}],["path",{d:"M19 7h-9",key:"6i9tg"}],["circle",{cx:"17",cy:"17",r:"3",key:"18b49y"}],["circle",{cx:"7",cy:"7",r:"3",key:"dfmy0x"}]])},8293:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("box",[["path",{d:"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z",key:"hh9hay"}],["path",{d:"m3.3 7 8.7 5 8.7-5",key:"g66t2b"}],["path",{d:"M12 22V12",key:"d0xqtd"}]])},8698:(e,t,r)=>{"use strict";r.d(t,{UC:()=>ez,q7:()=>e$,ZL:()=>eG,bL:()=>eq,l9:()=>eU});var n=r(2115),a=r(5185),s=r(6101),o=r(6081),i=r(5845),l=r(3655),c=r(7328),u=r(4315),d=r(9178),p=r(2293),m=r(7900),h=r(1285),f=r(5152),g=r(4378),v=r(8905),b=r(9196),y=r(9708),w=r(9033),x=r(8168),A=r(3795),k=r(5155),M=["Enter"," "],S=["ArrowUp","PageDown","End"],E=["ArrowDown","PageUp","Home",...S],L={ltr:[...M,"ArrowRight"],rtl:[...M,"ArrowLeft"]},C={ltr:["ArrowLeft"],rtl:["ArrowRight"]},P="Menu",[R,j,O]=(0,c.N)(P),[D,Z]=(0,o.A)(P,[O,f.Bk,b.RG]),T=(0,f.Bk)(),_=(0,b.RG)(),[N,F]=D(P),[I,V]=D(P),H=e=>{let{__scopeMenu:t,open:r=!1,children:a,dir:s,onOpenChange:o,modal:i=!0}=e,l=T(t),[c,d]=n.useState(null),p=n.useRef(!1),m=(0,w.c)(o),h=(0,u.jH)(s);return n.useEffect(()=>{let e=()=>{p.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>p.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,k.jsx)(f.bL,{...l,children:(0,k.jsx)(N,{scope:t,open:r,onOpenChange:m,content:c,onContentChange:d,children:(0,k.jsx)(I,{scope:t,onClose:n.useCallback(()=>m(!1),[m]),isUsingKeyboardRef:p,dir:h,modal:i,children:a})})})};H.displayName=P;var K=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,a=T(r);return(0,k.jsx)(f.Mz,{...a,...n,ref:t})});K.displayName="MenuAnchor";var q="MenuPortal",[U,G]=D(q,{forceMount:void 0}),z=e=>{let{__scopeMenu:t,forceMount:r,children:n,container:a}=e,s=F(q,t);return(0,k.jsx)(U,{scope:t,forceMount:r,children:(0,k.jsx)(v.C,{present:r||s.open,children:(0,k.jsx)(g.Z,{asChild:!0,container:a,children:n})})})};z.displayName=q;var $="MenuContent",[B,W]=D($),X=n.forwardRef((e,t)=>{let r=G($,e.__scopeMenu),{forceMount:n=r.forceMount,...a}=e,s=F($,e.__scopeMenu),o=V($,e.__scopeMenu);return(0,k.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,k.jsx)(v.C,{present:n||s.open,children:(0,k.jsx)(R.Slot,{scope:e.__scopeMenu,children:o.modal?(0,k.jsx)(Q,{...a,ref:t}):(0,k.jsx)(Y,{...a,ref:t})})})})}),Q=n.forwardRef((e,t)=>{let r=F($,e.__scopeMenu),o=n.useRef(null),i=(0,s.s)(t,o);return n.useEffect(()=>{let e=o.current;if(e)return(0,x.Eq)(e)},[]),(0,k.jsx)(ee,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:(0,a.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),Y=n.forwardRef((e,t)=>{let r=F($,e.__scopeMenu);return(0,k.jsx)(ee,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),J=(0,y.TL)("MenuContent.ScrollLock"),ee=n.forwardRef((e,t)=>{let{__scopeMenu:r,loop:o=!1,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:c,disableOutsidePointerEvents:u,onEntryFocus:h,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:y,onInteractOutside:w,onDismiss:x,disableOutsideScroll:M,...L}=e,C=F($,r),P=V($,r),R=T(r),O=_(r),D=j(r),[Z,N]=n.useState(null),I=n.useRef(null),H=(0,s.s)(t,I,C.onContentChange),K=n.useRef(0),q=n.useRef(""),U=n.useRef(0),G=n.useRef(null),z=n.useRef("right"),W=n.useRef(0),X=M?A.A:n.Fragment,Q=e=>{var t,r;let n=q.current+e,a=D().filter(e=>!e.disabled),s=document.activeElement,o=null==(t=a.find(e=>e.ref.current===s))?void 0:t.textValue,i=function(e,t,r){var n;let a=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,s=r?e.indexOf(r):-1,o=(n=Math.max(s,0),e.map((t,r)=>e[(n+r)%e.length]));1===a.length&&(o=o.filter(e=>e!==r));let i=o.find(e=>e.toLowerCase().startsWith(a.toLowerCase()));return i!==r?i:void 0}(a.map(e=>e.textValue),n,o),l=null==(r=a.find(e=>e.textValue===i))?void 0:r.ref.current;!function e(t){q.current=t,window.clearTimeout(K.current),""!==t&&(K.current=window.setTimeout(()=>e(""),1e3))}(n),l&&setTimeout(()=>l.focus())};n.useEffect(()=>()=>window.clearTimeout(K.current),[]),(0,p.Oh)();let Y=n.useCallback(e=>{var t,r;return z.current===(null==(t=G.current)?void 0:t.side)&&function(e,t){return!!t&&function(e,t){let{x:r,y:n}=e,a=!1;for(let e=0,s=t.length-1;en!=d>n&&r<(u-l)*(n-c)/(d-c)+l&&(a=!a)}return a}({x:e.clientX,y:e.clientY},t)}(e,null==(r=G.current)?void 0:r.area)},[]);return(0,k.jsx)(B,{scope:r,searchRef:q,onItemEnter:n.useCallback(e=>{Y(e)&&e.preventDefault()},[Y]),onItemLeave:n.useCallback(e=>{var t;Y(e)||(null==(t=I.current)||t.focus(),N(null))},[Y]),onTriggerLeave:n.useCallback(e=>{Y(e)&&e.preventDefault()},[Y]),pointerGraceTimerRef:U,onPointerGraceIntentChange:n.useCallback(e=>{G.current=e},[]),children:(0,k.jsx)(X,{...M?{as:J,allowPinchZoom:!0}:void 0,children:(0,k.jsx)(m.n,{asChild:!0,trapped:i,onMountAutoFocus:(0,a.m)(l,e=>{var t;e.preventDefault(),null==(t=I.current)||t.focus({preventScroll:!0})}),onUnmountAutoFocus:c,children:(0,k.jsx)(d.qW,{asChild:!0,disableOutsidePointerEvents:u,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:y,onInteractOutside:w,onDismiss:x,children:(0,k.jsx)(b.bL,{asChild:!0,...O,dir:P.dir,orientation:"vertical",loop:o,currentTabStopId:Z,onCurrentTabStopIdChange:N,onEntryFocus:(0,a.m)(h,e=>{P.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,k.jsx)(f.UC,{role:"menu","aria-orientation":"vertical","data-state":eE(C.open),"data-radix-menu-content":"",dir:P.dir,...R,...L,ref:H,style:{outline:"none",...L.style},onKeyDown:(0,a.m)(L.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,r=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;t&&("Tab"===e.key&&e.preventDefault(),!r&&n&&Q(e.key));let a=I.current;if(e.target!==a||!E.includes(e.key))return;e.preventDefault();let s=D().filter(e=>!e.disabled).map(e=>e.ref.current);S.includes(e.key)&&s.reverse(),function(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}(s)}),onBlur:(0,a.m)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(K.current),q.current="")}),onPointerMove:(0,a.m)(e.onPointerMove,eP(e=>{let t=e.target,r=W.current!==e.clientX;e.currentTarget.contains(t)&&r&&(z.current=e.clientX>W.current?"right":"left",W.current=e.clientX)}))})})})})})})});X.displayName=$;var et=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{role:"group",...n,ref:t})});et.displayName="MenuGroup";var er=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{...n,ref:t})});er.displayName="MenuLabel";var en="MenuItem",ea="menu.itemSelect",es=n.forwardRef((e,t)=>{let{disabled:r=!1,onSelect:o,...i}=e,c=n.useRef(null),u=V(en,e.__scopeMenu),d=W(en,e.__scopeMenu),p=(0,s.s)(t,c),m=n.useRef(!1);return(0,k.jsx)(eo,{...i,ref:p,disabled:r,onClick:(0,a.m)(e.onClick,()=>{let e=c.current;if(!r&&e){let t=new CustomEvent(ea,{bubbles:!0,cancelable:!0});e.addEventListener(ea,e=>null==o?void 0:o(e),{once:!0}),(0,l.hO)(e,t),t.defaultPrevented?m.current=!1:u.onClose()}}),onPointerDown:t=>{var r;null==(r=e.onPointerDown)||r.call(e,t),m.current=!0},onPointerUp:(0,a.m)(e.onPointerUp,e=>{var t;m.current||null==(t=e.currentTarget)||t.click()}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{let t=""!==d.searchRef.current;r||t&&" "===e.key||M.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});es.displayName=en;var eo=n.forwardRef((e,t)=>{let{__scopeMenu:r,disabled:o=!1,textValue:i,...c}=e,u=W(en,r),d=_(r),p=n.useRef(null),m=(0,s.s)(t,p),[h,f]=n.useState(!1),[g,v]=n.useState("");return n.useEffect(()=>{let e=p.current;if(e){var t;v((null!=(t=e.textContent)?t:"").trim())}},[c.children]),(0,k.jsx)(R.ItemSlot,{scope:r,disabled:o,textValue:null!=i?i:g,children:(0,k.jsx)(b.q7,{asChild:!0,...d,focusable:!o,children:(0,k.jsx)(l.sG.div,{role:"menuitem","data-highlighted":h?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...c,ref:m,onPointerMove:(0,a.m)(e.onPointerMove,eP(e=>{o?u.onItemLeave(e):(u.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,a.m)(e.onPointerLeave,eP(e=>u.onItemLeave(e))),onFocus:(0,a.m)(e.onFocus,()=>f(!0)),onBlur:(0,a.m)(e.onBlur,()=>f(!1))})})})}),ei=n.forwardRef((e,t)=>{let{checked:r=!1,onCheckedChange:n,...s}=e;return(0,k.jsx)(ef,{scope:e.__scopeMenu,checked:r,children:(0,k.jsx)(es,{role:"menuitemcheckbox","aria-checked":eL(r)?"mixed":r,...s,ref:t,"data-state":eC(r),onSelect:(0,a.m)(s.onSelect,()=>null==n?void 0:n(!!eL(r)||!r),{checkForDefaultPrevented:!1})})})});ei.displayName="MenuCheckboxItem";var el="MenuRadioGroup",[ec,eu]=D(el,{value:void 0,onValueChange:()=>{}}),ed=n.forwardRef((e,t)=>{let{value:r,onValueChange:n,...a}=e,s=(0,w.c)(n);return(0,k.jsx)(ec,{scope:e.__scopeMenu,value:r,onValueChange:s,children:(0,k.jsx)(et,{...a,ref:t})})});ed.displayName=el;var ep="MenuRadioItem",em=n.forwardRef((e,t)=>{let{value:r,...n}=e,s=eu(ep,e.__scopeMenu),o=r===s.value;return(0,k.jsx)(ef,{scope:e.__scopeMenu,checked:o,children:(0,k.jsx)(es,{role:"menuitemradio","aria-checked":o,...n,ref:t,"data-state":eC(o),onSelect:(0,a.m)(n.onSelect,()=>{var e;return null==(e=s.onValueChange)?void 0:e.call(s,r)},{checkForDefaultPrevented:!1})})})});em.displayName=ep;var eh="MenuItemIndicator",[ef,eg]=D(eh,{checked:!1}),ev=n.forwardRef((e,t)=>{let{__scopeMenu:r,forceMount:n,...a}=e,s=eg(eh,r);return(0,k.jsx)(v.C,{present:n||eL(s.checked)||!0===s.checked,children:(0,k.jsx)(l.sG.span,{...a,ref:t,"data-state":eC(s.checked)})})});ev.displayName=eh;var eb=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});eb.displayName="MenuSeparator";var ey=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,a=T(r);return(0,k.jsx)(f.i3,{...a,...n,ref:t})});ey.displayName="MenuArrow";var[ew,ex]=D("MenuSub"),eA="MenuSubTrigger",ek=n.forwardRef((e,t)=>{let r=F(eA,e.__scopeMenu),o=V(eA,e.__scopeMenu),i=ex(eA,e.__scopeMenu),l=W(eA,e.__scopeMenu),c=n.useRef(null),{pointerGraceTimerRef:u,onPointerGraceIntentChange:d}=l,p={__scopeMenu:e.__scopeMenu},m=n.useCallback(()=>{c.current&&window.clearTimeout(c.current),c.current=null},[]);return n.useEffect(()=>m,[m]),n.useEffect(()=>{let e=u.current;return()=>{window.clearTimeout(e),d(null)}},[u,d]),(0,k.jsx)(K,{asChild:!0,...p,children:(0,k.jsx)(eo,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":i.contentId,"data-state":eE(r.open),...e,ref:(0,s.t)(t,i.onTriggerChange),onClick:t=>{var n;null==(n=e.onClick)||n.call(e,t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:(0,a.m)(e.onPointerMove,eP(t=>{l.onItemEnter(t),!t.defaultPrevented&&(e.disabled||r.open||c.current||(l.onPointerGraceIntentChange(null),c.current=window.setTimeout(()=>{r.onOpenChange(!0),m()},100)))})),onPointerLeave:(0,a.m)(e.onPointerLeave,eP(e=>{var t,n;m();let a=null==(t=r.content)?void 0:t.getBoundingClientRect();if(a){let t=null==(n=r.content)?void 0:n.dataset.side,s="right"===t,o=a[s?"left":"right"],i=a[s?"right":"left"];l.onPointerGraceIntentChange({area:[{x:e.clientX+(s?-5:5),y:e.clientY},{x:o,y:a.top},{x:i,y:a.top},{x:i,y:a.bottom},{x:o,y:a.bottom}],side:t}),window.clearTimeout(u.current),u.current=window.setTimeout(()=>l.onPointerGraceIntentChange(null),300)}else{if(l.onTriggerLeave(e),e.defaultPrevented)return;l.onPointerGraceIntentChange(null)}})),onKeyDown:(0,a.m)(e.onKeyDown,t=>{let n=""!==l.searchRef.current;if(!e.disabled&&(!n||" "!==t.key)&&L[o.dir].includes(t.key)){var a;r.onOpenChange(!0),null==(a=r.content)||a.focus(),t.preventDefault()}})})})});ek.displayName=eA;var eM="MenuSubContent",eS=n.forwardRef((e,t)=>{let r=G($,e.__scopeMenu),{forceMount:o=r.forceMount,...i}=e,l=F($,e.__scopeMenu),c=V($,e.__scopeMenu),u=ex(eM,e.__scopeMenu),d=n.useRef(null),p=(0,s.s)(t,d);return(0,k.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,k.jsx)(v.C,{present:o||l.open,children:(0,k.jsx)(R.Slot,{scope:e.__scopeMenu,children:(0,k.jsx)(ee,{id:u.contentId,"aria-labelledby":u.triggerId,...i,ref:p,align:"start",side:"rtl"===c.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var t;c.isUsingKeyboardRef.current&&(null==(t=d.current)||t.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,a.m)(e.onFocusOutside,e=>{e.target!==u.trigger&&l.onOpenChange(!1)}),onEscapeKeyDown:(0,a.m)(e.onEscapeKeyDown,e=>{c.onClose(),e.preventDefault()}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),r=C[c.dir].includes(e.key);if(t&&r){var n;l.onOpenChange(!1),null==(n=u.trigger)||n.focus(),e.preventDefault()}})})})})})});function eE(e){return e?"open":"closed"}function eL(e){return"indeterminate"===e}function eC(e){return eL(e)?"indeterminate":e?"checked":"unchecked"}function eP(e){return t=>"mouse"===t.pointerType?e(t):void 0}eS.displayName=eM;var eR="DropdownMenu",[ej,eO]=(0,o.A)(eR,[Z]),eD=Z(),[eZ,eT]=ej(eR),e_=e=>{let{__scopeDropdownMenu:t,children:r,dir:a,open:s,defaultOpen:o,onOpenChange:l,modal:c=!0}=e,u=eD(t),d=n.useRef(null),[p,m]=(0,i.i)({prop:s,defaultProp:null!=o&&o,onChange:l,caller:eR});return(0,k.jsx)(eZ,{scope:t,triggerId:(0,h.B)(),triggerRef:d,contentId:(0,h.B)(),open:p,onOpenChange:m,onOpenToggle:n.useCallback(()=>m(e=>!e),[m]),modal:c,children:(0,k.jsx)(H,{...u,open:p,onOpenChange:m,dir:a,modal:c,children:r})})};e_.displayName=eR;var eN="DropdownMenuTrigger",eF=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,disabled:n=!1,...o}=e,i=eT(eN,r),c=eD(r);return(0,k.jsx)(K,{asChild:!0,...c,children:(0,k.jsx)(l.sG.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...o,ref:(0,s.t)(t,i.triggerRef),onPointerDown:(0,a.m)(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eF.displayName=eN;var eI=e=>{let{__scopeDropdownMenu:t,...r}=e,n=eD(t);return(0,k.jsx)(z,{...n,...r})};eI.displayName="DropdownMenuPortal";var eV="DropdownMenuContent",eH=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...s}=e,o=eT(eV,r),i=eD(r),l=n.useRef(!1);return(0,k.jsx)(X,{id:o.contentId,"aria-labelledby":o.triggerId,...i,...s,ref:t,onCloseAutoFocus:(0,a.m)(e.onCloseAutoFocus,e=>{var t;l.current||null==(t=o.triggerRef.current)||t.focus(),l.current=!1,e.preventDefault()}),onInteractOutside:(0,a.m)(e.onInteractOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;(!o.modal||n)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eH.displayName=eV,n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(et,{...a,...n,ref:t})}).displayName="DropdownMenuGroup",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(er,{...a,...n,ref:t})}).displayName="DropdownMenuLabel";var eK=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(es,{...a,...n,ref:t})});eK.displayName="DropdownMenuItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ei,{...a,...n,ref:t})}).displayName="DropdownMenuCheckboxItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ed,{...a,...n,ref:t})}).displayName="DropdownMenuRadioGroup",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(em,{...a,...n,ref:t})}).displayName="DropdownMenuRadioItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ev,{...a,...n,ref:t})}).displayName="DropdownMenuItemIndicator",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(eb,{...a,...n,ref:t})}).displayName="DropdownMenuSeparator",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ey,{...a,...n,ref:t})}).displayName="DropdownMenuArrow",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ek,{...a,...n,ref:t})}).displayName="DropdownMenuSubTrigger",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(eS,{...a,...n,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";var eq=e_,eU=eF,eG=eI,ez=eH,e$=eK},9196:(e,t,r)=>{"use strict";r.d(t,{RG:()=>x,bL:()=>R,q7:()=>j});var n=r(2115),a=r(5185),s=r(7328),o=r(6101),i=r(6081),l=r(1285),c=r(3655),u=r(9033),d=r(5845),p=r(4315),m=r(5155),h="rovingFocusGroup.onEntryFocus",f={bubbles:!1,cancelable:!0},g="RovingFocusGroup",[v,b,y]=(0,s.N)(g),[w,x]=(0,i.A)(g,[y]),[A,k]=w(g),M=n.forwardRef((e,t)=>(0,m.jsx)(v.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(v.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,m.jsx)(S,{...e,ref:t})})}));M.displayName=g;var S=n.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:s,loop:i=!1,dir:l,currentTabStopId:v,defaultCurrentTabStopId:y,onCurrentTabStopIdChange:w,onEntryFocus:x,preventScrollOnEntryFocus:k=!1,...M}=e,S=n.useRef(null),E=(0,o.s)(t,S),L=(0,p.jH)(l),[C,R]=(0,d.i)({prop:v,defaultProp:null!=y?y:null,onChange:w,caller:g}),[j,O]=n.useState(!1),D=(0,u.c)(x),Z=b(r),T=n.useRef(!1),[_,N]=n.useState(0);return n.useEffect(()=>{let e=S.current;if(e)return e.addEventListener(h,D),()=>e.removeEventListener(h,D)},[D]),(0,m.jsx)(A,{scope:r,orientation:s,dir:L,loop:i,currentTabStopId:C,onItemFocus:n.useCallback(e=>R(e),[R]),onItemShiftTab:n.useCallback(()=>O(!0),[]),onFocusableItemAdd:n.useCallback(()=>N(e=>e+1),[]),onFocusableItemRemove:n.useCallback(()=>N(e=>e-1),[]),children:(0,m.jsx)(c.sG.div,{tabIndex:j||0===_?-1:0,"data-orientation":s,...M,ref:E,style:{outline:"none",...e.style},onMouseDown:(0,a.m)(e.onMouseDown,()=>{T.current=!0}),onFocus:(0,a.m)(e.onFocus,e=>{let t=!T.current;if(e.target===e.currentTarget&&t&&!j){let t=new CustomEvent(h,f);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=Z().filter(e=>e.focusable);P([e.find(e=>e.active),e.find(e=>e.id===C),...e].filter(Boolean).map(e=>e.ref.current),k)}}T.current=!1}),onBlur:(0,a.m)(e.onBlur,()=>O(!1))})})}),E="RovingFocusGroupItem",L=n.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:s=!0,active:o=!1,tabStopId:i,children:u,...d}=e,p=(0,l.B)(),h=i||p,f=k(E,r),g=f.currentTabStopId===h,y=b(r),{onFocusableItemAdd:w,onFocusableItemRemove:x,currentTabStopId:A}=f;return n.useEffect(()=>{if(s)return w(),()=>x()},[s,w,x]),(0,m.jsx)(v.ItemSlot,{scope:r,id:h,focusable:s,active:o,children:(0,m.jsx)(c.sG.span,{tabIndex:g?0:-1,"data-orientation":f.orientation,...d,ref:t,onMouseDown:(0,a.m)(e.onMouseDown,e=>{s?f.onItemFocus(h):e.preventDefault()}),onFocus:(0,a.m)(e.onFocus,()=>f.onItemFocus(h)),onKeyDown:(0,a.m)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void f.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let a=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(a))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(a)))return C[a]}(e,f.orientation,f.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let r=y().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)r.reverse();else if("prev"===t||"next"===t){"prev"===t&&r.reverse();let n=r.indexOf(e.currentTarget);r=f.loop?function(e,t){return e.map((r,n)=>e[(t+n)%e.length])}(r,n+1):r.slice(n+1)}setTimeout(()=>P(r))}}),children:"function"==typeof u?u({isCurrentTabStop:g,hasTabStop:null!=A}):u})})});L.displayName=E;var C={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function P(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var R=M,j=L},9432:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_9a8899",variable:"__variable_9a8899"}},9804:(e,t,r)=>{"use strict";r.d(t,{t:()=>o});var n=r(2115),a=r(5709);let s=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M108,136a16,16,0,1,1-16-16A16,16,0,0,1,108,136Zm56-16a16,16,0,1,0,16,16A16,16,0,0,0,164,120Zm76.07,76.56-67,29.71A20.15,20.15,0,0,1,146,214.9l-8.54-23.13c-3.13.14-6.27.24-9.45.24s-6.32-.1-9.45-.24L110,214.9a20.19,20.19,0,0,1-27.08,11.37l-67-29.71A19.93,19.93,0,0,1,4.62,173.41L34.15,57A20,20,0,0,1,50.37,42.19l36.06-5.93A20.26,20.26,0,0,1,109.22,51.1l4.41,17.41c4.74-.33,9.52-.51,14.37-.51s9.63.18,14.37.51l4.41-17.41a20.25,20.25,0,0,1,22.79-14.84l36.06,5.93A20,20,0,0,1,221.85,57l29.53,116.38A19.93,19.93,0,0,1,240.07,196.56ZM227.28,176,199.23,65.46l-30.07-4.94-2.84,11.17c2.9.58,5.78,1.2,8.61,1.92a12,12,0,1,1-5.86,23.27A168.43,168.43,0,0,0,128,92a168.43,168.43,0,0,0-41.07,4.88,12,12,0,0,1-5.86-23.27c2.83-.72,5.71-1.34,8.61-1.92L86.85,60.52,56.77,65.46,28.72,176l60.22,26.7,5-13.57c-4.37-.76-8.67-1.65-12.88-2.71a12,12,0,0,1,5.86-23.28A168.43,168.43,0,0,0,128,168a168.43,168.43,0,0,0,41.07-4.88,12,12,0,0,1,5.86,23.28c-4.21,1.06-8.51,1.95-12.88,2.71l5,13.57Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M235.21,185.59l-67,29.7a8.15,8.15,0,0,1-11-4.56L147,183.06a190.5,190.5,0,0,1-19,.94,190.5,190.5,0,0,1-19-.94L98.75,210.73a8.15,8.15,0,0,1-11,4.56l-67-29.7a8,8,0,0,1-4.55-9.24L45.77,60A8.08,8.08,0,0,1,52.31,54l36.06-5.92a8.1,8.1,0,0,1,9.21,6l5,19.63a192.32,192.32,0,0,1,50.88,0l5-19.63a8.1,8.1,0,0,1,9.21-6L203.69,54A8.08,8.08,0,0,1,210.23,60l29.53,116.37A8,8,0,0,1,235.21,185.59Z",opacity:"0.2"}),n.createElement("path",{d:"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.94,15.94,0,0,1-9.06-18.51L38,58A16.08,16.08,0,0,1,51,46.13l36.06-5.92a16.21,16.21,0,0,1,18.26,11.88l3.26,12.83Q118.11,64,128,64t19.4.92l3.26-12.83a16.22,16.22,0,0,1,18.26-11.88L205,46.13A16.08,16.08,0,0,1,218,58l29.53,116.38A15.94,15.94,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56a.21.21,0,0,0-.12,0h0L53.61,61.92a.24.24,0,0,0-.09,0L24,178.33,91,208a.21.21,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M247.51,174.39,218,58a16.08,16.08,0,0,0-13-11.88l-36.06-5.92a16.22,16.22,0,0,0-18.26,11.88l-.21.85a4,4,0,0,0,3.27,4.93,155.62,155.62,0,0,1,24.41,5.62,8.2,8.2,0,0,1,5.62,9.7,8,8,0,0,1-10.19,5.64,155.4,155.4,0,0,0-90.8-.1,8.22,8.22,0,0,1-10.28-4.81,8,8,0,0,1,5.08-10.33,156.85,156.85,0,0,1,24.72-5.72,4,4,0,0,0,3.27-4.93l-.21-.85A16.21,16.21,0,0,0,87.08,40.21L51,46.13A16.08,16.08,0,0,0,38,58L8.49,174.39a15.94,15.94,0,0,0,9.06,18.51l67,29.71a16.17,16.17,0,0,0,21.71-9.1l3.49-9.45a4,4,0,0,0-3.27-5.35,158.13,158.13,0,0,1-28.63-6.2,8.2,8.2,0,0,1-5.61-9.67,8,8,0,0,1,10.2-5.66,155.59,155.59,0,0,0,91.12,0,8,8,0,0,1,10.19,5.65,8.19,8.19,0,0,1-5.61,9.68,157.84,157.84,0,0,1-28.62,6.2,4,4,0,0,0-3.27,5.35l3.49,9.45a16.18,16.18,0,0,0,21.71,9.1l67-29.71A15.94,15.94,0,0,0,247.51,174.39ZM92,152a12,12,0,1,1,12-12A12,12,0,0,1,92,152Zm72,0a12,12,0,1,1,12-12A12,12,0,0,1,164,152Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M102,140a10,10,0,1,1-10-10A10,10,0,0,1,102,140Zm62-10a10,10,0,1,0,10,10A10,10,0,0,0,164,130Zm73.64,61.08-67,29.71a14.43,14.43,0,0,1-5.77,1.21,14.13,14.13,0,0,1-13.25-9.18L143,189.43c-4.93.37-9.92.58-15,.58s-10.06-.21-15-.58l-8.63,23.39A14.13,14.13,0,0,1,91.13,222a14.43,14.43,0,0,1-5.77-1.21l-67-29.71a14,14,0,0,1-7.93-16.2L40,58.5A14.07,14.07,0,0,1,51.34,48.11L87.4,42.19a14.19,14.19,0,0,1,16,10.39l3.69,14.53a197.5,197.5,0,0,1,41.82,0l3.69-14.53a14.19,14.19,0,0,1,16-10.39l36.06,5.92A14.07,14.07,0,0,1,216,58.5l29.53,116.38A14,14,0,0,1,237.64,191.08Zm-3.7-13.25L204.41,61.45a2.08,2.08,0,0,0-1.7-1.5L166.65,54a2.13,2.13,0,0,0-2.42,1.5l-3.36,13.24a169.28,169.28,0,0,1,16.75,3.76A6,6,0,0,1,176,84.31a5.71,5.71,0,0,1-1.62-.23A174.26,174.26,0,0,0,128,78a174.26,174.26,0,0,0-46.38,6.08,6,6,0,1,1-3.24-11.55,169.28,169.28,0,0,1,16.75-3.76L91.77,55.53A2.12,2.12,0,0,0,89.35,54L53.29,60a2.08,2.08,0,0,0-1.7,1.5L22.06,177.83a2,2,0,0,0,1.16,2.28l67,29.7a2.19,2.19,0,0,0,1.76,0,2.07,2.07,0,0,0,1.14-1.17l7.58-20.55a171.46,171.46,0,0,1-22.33-4.64,6,6,0,1,1,3.24-11.55A174.26,174.26,0,0,0,128,178a174.26,174.26,0,0,0,46.38-6.08,6,6,0,1,1,3.24,11.55,171.46,171.46,0,0,1-22.33,4.64l7.58,20.55a2.07,2.07,0,0,0,1.14,1.17,2.19,2.19,0,0,0,1.76,0l67-29.7A2,2,0,0,0,233.94,177.83Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M100,140a8,8,0,1,1-8-8A8,8,0,0,1,100,140Zm64-8a8,8,0,1,0,8,8A8,8,0,0,0,164,132Zm72.83,57.25-67,29.71a12.36,12.36,0,0,1-5,1,12.13,12.13,0,0,1-11.38-7.88l-9.15-24.81c-5.36.45-10.81.69-16.34.69s-11-.24-16.34-.69l-9.15,24.81A12.13,12.13,0,0,1,91.13,220a12.36,12.36,0,0,1-5-1l-67-29.71a12,12,0,0,1-6.8-13.88L41.9,59a12.06,12.06,0,0,1,9.77-8.91l36.06-5.92a12.18,12.18,0,0,1,13.73,8.91l4.12,16.22a195.47,195.47,0,0,1,44.84,0l4.12-16.22a12.18,12.18,0,0,1,13.73-8.91l36.06,5.92A12.06,12.06,0,0,1,214.1,59l29.53,116.38A12,12,0,0,1,236.83,189.25Zm-1-11.91L206.35,61A4.07,4.07,0,0,0,203,58L167,52.05a4.15,4.15,0,0,0-4.69,3L158.4,70.38a166.74,166.74,0,0,1,18.68,4.08,4,4,0,1,1-2.16,7.7A176.21,176.21,0,0,0,128,76a176.21,176.21,0,0,0-46.92,6.16,4,4,0,1,1-2.16-7.7A166.74,166.74,0,0,1,97.6,70.38L93.71,55a4.15,4.15,0,0,0-4.69-3L53,58a4.07,4.07,0,0,0-3.31,3L20.12,177.34a4,4,0,0,0,2.29,4.59l67,29.71a4.16,4.16,0,0,0,3.35,0A4,4,0,0,0,95,209.35l8.45-22.88a171.49,171.49,0,0,1-24.53-4.92,4,4,0,0,1,2.16-7.71A176.21,176.21,0,0,0,128,180a176.21,176.21,0,0,0,46.92-6.16,4,4,0,0,1,2.16,7.71,171.49,171.49,0,0,1-24.53,4.92L161,209.35a4,4,0,0,0,2.23,2.32,4.16,4.16,0,0,0,3.35,0l67-29.71A4,4,0,0,0,235.88,177.34Z"}))]]),o=n.forwardRef((e,t)=>n.createElement(a.A,{ref:t,...e,weights:s}));o.displayName="DiscordLogoIcon"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/613-5b9d5c2343ec7cb3.js b/transports/bifrost-http/ui/_next/static/chunks/613-5b9d5c2343ec7cb3.js new file mode 100644 index 0000000000..ddfd7dc977 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/613-5b9d5c2343ec7cb3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[613],{9613:(e,t,r)=>{r.d(t,{Kq:()=>Y,UC:()=>K,ZL:()=>G,bL:()=>Z,i3:()=>W,l9:()=>z});var n=r(2115),o=r(5185),l=r(6101),i=r(6081),a=r(9178),s=r(1285),u=r(5152),c=r(4378),p=r(8905),d=r(3655),f=r(9708),x=r(5845),h=r(2564),v=r(5155),[g,y]=(0,i.A)("Tooltip",[u.Bk]),b=(0,u.Bk)(),m="TooltipProvider",w="tooltip.open",[C,T]=g(m),E=e=>{let{__scopeTooltip:t,delayDuration:r=700,skipDelayDuration:o=300,disableHoverableContent:l=!1,children:i}=e,a=n.useRef(!0),s=n.useRef(!1),u=n.useRef(0);return n.useEffect(()=>{let e=u.current;return()=>window.clearTimeout(e)},[]),(0,v.jsx)(C,{scope:t,isOpenDelayedRef:a,delayDuration:r,onOpen:n.useCallback(()=>{window.clearTimeout(u.current),a.current=!1},[]),onClose:n.useCallback(()=>{window.clearTimeout(u.current),u.current=window.setTimeout(()=>a.current=!0,o)},[o]),isPointerInTransitRef:s,onPointerInTransitChange:n.useCallback(e=>{s.current=e},[]),disableHoverableContent:l,children:i})};E.displayName=m;var k="Tooltip",[L,R]=g(k),j=e=>{let{__scopeTooltip:t,children:r,open:o,defaultOpen:l,onOpenChange:i,disableHoverableContent:a,delayDuration:c}=e,p=T(k,e.__scopeTooltip),d=b(t),[f,h]=n.useState(null),g=(0,s.B)(),y=n.useRef(0),m=null!=a?a:p.disableHoverableContent,C=null!=c?c:p.delayDuration,E=n.useRef(!1),[R,j]=(0,x.i)({prop:o,defaultProp:null!=l&&l,onChange:e=>{e?(p.onOpen(),document.dispatchEvent(new CustomEvent(w))):p.onClose(),null==i||i(e)},caller:k}),_=n.useMemo(()=>R?E.current?"delayed-open":"instant-open":"closed",[R]),P=n.useCallback(()=>{window.clearTimeout(y.current),y.current=0,E.current=!1,j(!0)},[j]),M=n.useCallback(()=>{window.clearTimeout(y.current),y.current=0,j(!1)},[j]),D=n.useCallback(()=>{window.clearTimeout(y.current),y.current=window.setTimeout(()=>{E.current=!0,j(!0),y.current=0},C)},[C,j]);return n.useEffect(()=>()=>{y.current&&(window.clearTimeout(y.current),y.current=0)},[]),(0,v.jsx)(u.bL,{...d,children:(0,v.jsx)(L,{scope:t,contentId:g,open:R,stateAttribute:_,trigger:f,onTriggerChange:h,onTriggerEnter:n.useCallback(()=>{p.isOpenDelayedRef.current?D():P()},[p.isOpenDelayedRef,D,P]),onTriggerLeave:n.useCallback(()=>{m?M():(window.clearTimeout(y.current),y.current=0)},[M,m]),onOpen:P,onClose:M,disableHoverableContent:m,children:r})})};j.displayName=k;var _="TooltipTrigger",P=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...i}=e,a=R(_,r),s=T(_,r),c=b(r),p=n.useRef(null),f=(0,l.s)(t,p,a.onTriggerChange),x=n.useRef(!1),h=n.useRef(!1),g=n.useCallback(()=>x.current=!1,[]);return n.useEffect(()=>()=>document.removeEventListener("pointerup",g),[g]),(0,v.jsx)(u.Mz,{asChild:!0,...c,children:(0,v.jsx)(d.sG.button,{"aria-describedby":a.open?a.contentId:void 0,"data-state":a.stateAttribute,...i,ref:f,onPointerMove:(0,o.m)(e.onPointerMove,e=>{"touch"!==e.pointerType&&(h.current||s.isPointerInTransitRef.current||(a.onTriggerEnter(),h.current=!0))}),onPointerLeave:(0,o.m)(e.onPointerLeave,()=>{a.onTriggerLeave(),h.current=!1}),onPointerDown:(0,o.m)(e.onPointerDown,()=>{a.open&&a.onClose(),x.current=!0,document.addEventListener("pointerup",g,{once:!0})}),onFocus:(0,o.m)(e.onFocus,()=>{x.current||a.onOpen()}),onBlur:(0,o.m)(e.onBlur,a.onClose),onClick:(0,o.m)(e.onClick,a.onClose)})})});P.displayName=_;var M="TooltipPortal",[D,N]=g(M,{forceMount:void 0}),O=e=>{let{__scopeTooltip:t,forceMount:r,children:n,container:o}=e,l=R(M,t);return(0,v.jsx)(D,{scope:t,forceMount:r,children:(0,v.jsx)(p.C,{present:r||l.open,children:(0,v.jsx)(c.Z,{asChild:!0,container:o,children:n})})})};O.displayName=M;var B="TooltipContent",I=n.forwardRef((e,t)=>{let r=N(B,e.__scopeTooltip),{forceMount:n=r.forceMount,side:o="top",...l}=e,i=R(B,e.__scopeTooltip);return(0,v.jsx)(p.C,{present:n||i.open,children:i.disableHoverableContent?(0,v.jsx)(S,{side:o,...l,ref:t}):(0,v.jsx)(A,{side:o,...l,ref:t})})}),A=n.forwardRef((e,t)=>{let r=R(B,e.__scopeTooltip),o=T(B,e.__scopeTooltip),i=n.useRef(null),a=(0,l.s)(t,i),[s,u]=n.useState(null),{trigger:c,onClose:p}=r,d=i.current,{onPointerInTransitChange:f}=o,x=n.useCallback(()=>{u(null),f(!1)},[f]),h=n.useCallback((e,t)=>{let r=e.currentTarget,n={x:e.clientX,y:e.clientY},o=function(e,t){let r=Math.abs(t.top-e.y),n=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),l=Math.abs(t.left-e.x);switch(Math.min(r,n,o,l)){case l:return"left";case o:return"right";case r:return"top";case n:return"bottom";default:throw Error("unreachable")}}(n,r.getBoundingClientRect());u(function(e){let t=e.slice();return t.sort((e,t)=>e.xt.x?1:e.yt.y)),function(e){if(e.length<=1)return e.slice();let t=[];for(let r=0;r=2;){let e=t[t.length-1],r=t[t.length-2];if((e.x-r.x)*(n.y-r.y)>=(e.y-r.y)*(n.x-r.x))t.pop();else break}t.push(n)}t.pop();let r=[];for(let t=e.length-1;t>=0;t--){let n=e[t];for(;r.length>=2;){let e=r[r.length-1],t=r[r.length-2];if((e.x-t.x)*(n.y-t.y)>=(e.y-t.y)*(n.x-t.x))r.pop();else break}r.push(n)}return(r.pop(),1===t.length&&1===r.length&&t[0].x===r[0].x&&t[0].y===r[0].y)?t:t.concat(r)}(t)}([...function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5,n=[];switch(t){case"top":n.push({x:e.x-r,y:e.y+r},{x:e.x+r,y:e.y+r});break;case"bottom":n.push({x:e.x-r,y:e.y-r},{x:e.x+r,y:e.y-r});break;case"left":n.push({x:e.x+r,y:e.y-r},{x:e.x+r,y:e.y+r});break;case"right":n.push({x:e.x-r,y:e.y-r},{x:e.x-r,y:e.y+r})}return n}(n,o),...function(e){let{top:t,right:r,bottom:n,left:o}=e;return[{x:o,y:t},{x:r,y:t},{x:r,y:n},{x:o,y:n}]}(t.getBoundingClientRect())])),f(!0)},[f]);return n.useEffect(()=>()=>x(),[x]),n.useEffect(()=>{if(c&&d){let e=e=>h(e,d),t=e=>h(e,c);return c.addEventListener("pointerleave",e),d.addEventListener("pointerleave",t),()=>{c.removeEventListener("pointerleave",e),d.removeEventListener("pointerleave",t)}}},[c,d,h,x]),n.useEffect(()=>{if(s){let e=e=>{let t=e.target,r={x:e.clientX,y:e.clientY},n=(null==c?void 0:c.contains(t))||(null==d?void 0:d.contains(t)),o=!function(e,t){let{x:r,y:n}=e,o=!1;for(let e=0,l=t.length-1;en!=p>n&&r<(c-s)*(n-u)/(p-u)+s&&(o=!o)}return o}(r,s);n?x():o&&(x(),p())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}},[c,d,s,p,x]),(0,v.jsx)(S,{...e,ref:a})}),[F,H]=g(k,{isInside:!1}),q=(0,f.Dc)("TooltipContent"),S=n.forwardRef((e,t)=>{let{__scopeTooltip:r,children:o,"aria-label":l,onEscapeKeyDown:i,onPointerDownOutside:s,...c}=e,p=R(B,r),d=b(r),{onClose:f}=p;return n.useEffect(()=>(document.addEventListener(w,f),()=>document.removeEventListener(w,f)),[f]),n.useEffect(()=>{if(p.trigger){let e=e=>{let t=e.target;(null==t?void 0:t.contains(p.trigger))&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}},[p.trigger,f]),(0,v.jsx)(a.qW,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:s,onFocusOutside:e=>e.preventDefault(),onDismiss:f,children:(0,v.jsxs)(u.UC,{"data-state":p.stateAttribute,...d,...c,ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"},children:[(0,v.jsx)(q,{children:o}),(0,v.jsx)(F,{scope:r,isInside:!0,children:(0,v.jsx)(h.bL,{id:p.contentId,role:"tooltip",children:l||o})})]})})});I.displayName=B;var U="TooltipArrow",X=n.forwardRef((e,t)=>{let{__scopeTooltip:r,...n}=e,o=b(r);return H(U,r).isInside?null:(0,v.jsx)(u.i3,{...o,...n,ref:t})});X.displayName=U;var Y=E,Z=j,z=P,G=O,K=I,W=X}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/617-7dfbdf69410b1b51.js b/transports/bifrost-http/ui/_next/static/chunks/617-7dfbdf69410b1b51.js deleted file mode 100644 index a9adb00e08..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/617-7dfbdf69410b1b51.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[617],{1275:(t,e,n)=>{n.d(e,{X:()=>a});var r=n(2115),o=n(2712);function a(t){let[e,n]=r.useState(void 0);return(0,o.N)(()=>{if(t){n({width:t.offsetWidth,height:t.offsetHeight});let e=new ResizeObserver(e=>{let r,o;if(!Array.isArray(e)||!e.length)return;let a=e[0];if("borderBoxSize"in a){let t=a.borderBoxSize,e=Array.isArray(t)?t[0]:t;r=e.inlineSize,o=e.blockSize}else r=t.offsetWidth,o=t.offsetHeight;n({width:r,height:o})});return e.observe(t,{box:"border-box"}),()=>e.unobserve(t)}n(void 0)},[t]),e}},2293:(t,e,n)=>{n.d(e,{Oh:()=>a});var r=n(2115),o=0;function a(){r.useEffect(()=>{var t,e;let n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!=(t=n[0])?t:i()),document.body.insertAdjacentElement("beforeend",null!=(e=n[1])?e:i()),o++,()=>{1===o&&document.querySelectorAll("[data-radix-focus-guard]").forEach(t=>t.remove()),o--}},[])}function i(){let t=document.createElement("span");return t.setAttribute("data-radix-focus-guard",""),t.tabIndex=0,t.style.outline="none",t.style.opacity="0",t.style.position="fixed",t.style.pointerEvents="none",t}},2564:(t,e,n)=>{n.d(e,{Qg:()=>i,bL:()=>l});var r=n(2115),o=n(3655),a=n(5155),i=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),s=r.forwardRef((t,e)=>(0,a.jsx)(o.sG.span,{...t,ref:e,style:{...i,...t.style}}));s.displayName="VisuallyHidden";var l=s},3795:(t,e,n)=>{n.d(e,{A:()=>G});var r,o,a=function(){return(a=Object.assign||function(t){for(var e,n=1,r=arguments.length;ne.indexOf(r)&&(n[r]=t[r]);if(null!=t&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(t);oe.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(t,r[o])&&(n[r[o]]=t[r[o]]);return n}Object.create;Object.create;var s=("function"==typeof SuppressedError&&SuppressedError,n(2115)),l="right-scroll-bar-position",c="width-before-scroll-bar";function u(t,e){return"function"==typeof t?t(e):t&&(t.current=e),t}var d="undefined"!=typeof window?s.useLayoutEffect:s.useEffect,f=new WeakMap;function p(t){return t}var m=function(t){void 0===t&&(t={});var e,n,r,o,i=(e=null,void 0===n&&(n=p),r=[],o=!1,{read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:null},useMedium:function(t){var e=n(t,o);return r.push(e),function(){r=r.filter(function(t){return t!==e})}},assignSyncMedium:function(t){for(o=!0;r.length;){var e=r;r=[],e.forEach(t)}r={push:function(e){return t(e)},filter:function(){return r}}},assignMedium:function(t){o=!0;var e=[];if(r.length){var n=r;r=[],n.forEach(t),e=r}var a=function(){var n=e;e=[],n.forEach(t)},i=function(){return Promise.resolve().then(a)};i(),r={push:function(t){e.push(t),i()},filter:function(t){return e=e.filter(t),r}}}});return i.options=a({async:!0,ssr:!1},t),i}(),h=function(){},g=s.forwardRef(function(t,e){var n,r,o,l,c=s.useRef(null),p=s.useState({onScrollCapture:h,onWheelCapture:h,onTouchMoveCapture:h}),g=p[0],v=p[1],y=t.forwardProps,b=t.children,w=t.className,x=t.removeScrollBar,E=t.enabled,R=t.shards,C=t.sideCar,S=t.noRelative,k=t.noIsolation,A=t.inert,T=t.allowPinchZoom,N=t.as,L=t.gapMode,D=i(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noRelative","noIsolation","inert","allowPinchZoom","as","gapMode"]),P=(n=[c,e],r=function(t){return n.forEach(function(e){return u(e,t)})},(o=(0,s.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var t=o.value;t!==value&&(o.value=value,o.callback(value,t))}}}})[0]).callback=r,l=o.facade,d(function(){var t=f.get(l);if(t){var e=new Set(t),r=new Set(n),o=l.current;e.forEach(function(t){r.has(t)||u(t,null)}),r.forEach(function(t){e.has(t)||u(t,o)})}f.set(l,n)},[n]),l),M=a(a({},D),g);return s.createElement(s.Fragment,null,E&&s.createElement(C,{sideCar:m,removeScrollBar:x,shards:R,noRelative:S,noIsolation:k,inert:A,setCallbacks:v,allowPinchZoom:!!T,lockRef:c,gapMode:L}),y?s.cloneElement(s.Children.only(b),a(a({},M),{ref:P})):s.createElement(void 0===N?"div":N,a({},M,{className:w,ref:P}),b))});g.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},g.classNames={fullWidth:c,zeroRight:l};var v=function(t){var e=t.sideCar,n=i(t,["sideCar"]);if(!e)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=e.read();if(!r)throw Error("Sidecar medium not found");return s.createElement(r,a({},n))};v.isSideCarExport=!0;var y=function(){var t=0,e=null;return{add:function(r){if(0==t&&(e=function(){if(!document)return null;var t=document.createElement("style");t.type="text/css";var e=o||n.nc;return e&&t.setAttribute("nonce",e),t}())){var a,i;(a=e).styleSheet?a.styleSheet.cssText=r:a.appendChild(document.createTextNode(r)),i=e,(document.head||document.getElementsByTagName("head")[0]).appendChild(i)}t++},remove:function(){--t||!e||(e.parentNode&&e.parentNode.removeChild(e),e=null)}}},b=function(){var t=y();return function(e,n){s.useEffect(function(){return t.add(e),function(){t.remove()}},[e&&n])}},w=function(){var t=b();return function(e){return t(e.styles,e.dynamic),null}},x={left:0,top:0,right:0,gap:0},E=function(t){return parseInt(t||"",10)||0},R=function(t){var e=window.getComputedStyle(document.body),n=e["padding"===t?"paddingLeft":"marginLeft"],r=e["padding"===t?"paddingTop":"marginTop"],o=e["padding"===t?"paddingRight":"marginRight"];return[E(n),E(r),E(o)]},C=function(t){if(void 0===t&&(t="margin"),"undefined"==typeof window)return x;var e=R(t),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:e[0],top:e[1],right:e[2],gap:Math.max(0,r-n+e[2]-e[0])}},S=w(),k="data-scroll-locked",A=function(t,e,n,r){var o=t.left,a=t.top,i=t.right,s=t.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(s,"px ").concat(r,";\n }\n body[").concat(k,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([e&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(i,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(s,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(s,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(l," {\n right: ").concat(s,"px ").concat(r,";\n }\n \n .").concat(c," {\n margin-right: ").concat(s,"px ").concat(r,";\n }\n \n .").concat(l," .").concat(l," {\n right: 0 ").concat(r,";\n }\n \n .").concat(c," .").concat(c," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(k,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(s,"px;\n }\n")},T=function(){var t=parseInt(document.body.getAttribute(k)||"0",10);return isFinite(t)?t:0},N=function(){s.useEffect(function(){return document.body.setAttribute(k,(T()+1).toString()),function(){var t=T()-1;t<=0?document.body.removeAttribute(k):document.body.setAttribute(k,t.toString())}},[])},L=function(t){var e=t.noRelative,n=t.noImportant,r=t.gapMode,o=void 0===r?"margin":r;N();var a=s.useMemo(function(){return C(o)},[o]);return s.createElement(S,{styles:A(a,!e,o,n?"":"!important")})},D=!1;if("undefined"!=typeof window)try{var P=Object.defineProperty({},"passive",{get:function(){return D=!0,!0}});window.addEventListener("test",P,P),window.removeEventListener("test",P,P)}catch(t){D=!1}var M=!!D&&{passive:!1},O=function(t,e){if(!(t instanceof Element))return!1;var n=window.getComputedStyle(t);return"hidden"!==n[e]&&(n.overflowY!==n.overflowX||"TEXTAREA"===t.tagName||"visible"!==n[e])},j=function(t,e){var n=e.ownerDocument,r=e;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),B(t,r)){var o=I(t,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},B=function(t,e){return"v"===t?O(e,"overflowY"):O(e,"overflowX")},I=function(t,e){return"v"===t?[e.scrollTop,e.scrollHeight,e.clientHeight]:[e.scrollLeft,e.scrollWidth,e.clientWidth]},F=function(t,e,n,r,o){var a,i=(a=window.getComputedStyle(e).direction,"h"===t&&"rtl"===a?-1:1),s=i*r,l=n.target,c=e.contains(l),u=!1,d=s>0,f=0,p=0;do{if(!l)break;var m=I(t,l),h=m[0],g=m[1]-m[2]-i*h;(h||g)&&B(t,l)&&(f+=g,p+=h);var v=l.parentNode;l=v&&v.nodeType===Node.DOCUMENT_FRAGMENT_NODE?v.host:v}while(!c&&l!==document.body||c&&(e.contains(l)||e===l));return d&&(o&&1>Math.abs(f)||!o&&s>f)?u=!0:!d&&(o&&1>Math.abs(p)||!o&&-s>p)&&(u=!0),u},z=function(t){return"changedTouches"in t?[t.changedTouches[0].clientX,t.changedTouches[0].clientY]:[0,0]},W=function(t){return[t.deltaX,t.deltaY]},H=function(t){return t&&"current"in t?t.current:t},Y=0,_=[];let V=(r=function(t){var e=s.useRef([]),n=s.useRef([0,0]),r=s.useRef(),o=s.useState(Y++)[0],a=s.useState(w)[0],i=s.useRef(t);s.useEffect(function(){i.current=t},[t]),s.useEffect(function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(o));var e=(function(t,e,n){if(n||2==arguments.length)for(var r,o=0,a=e.length;oMath.abs(c)?"h":"v";if("touches"in t&&"h"===d&&"range"===u.type)return!1;var f=j(d,u);if(!f)return!0;if(f?o=d:(o="v"===d?"h":"v",f=j(d,u)),!f)return!1;if(!r.current&&"changedTouches"in t&&(l||c)&&(r.current=o),!o)return!0;var p=r.current||o;return F(p,e,t,"h"===p?l:c,!0)},[]),c=s.useCallback(function(t){if(_.length&&_[_.length-1]===a){var n="deltaY"in t?W(t):z(t),r=e.current.filter(function(e){var r;return e.name===t.type&&(e.target===t.target||t.target===e.shadowParent)&&(r=e.delta,r[0]===n[0]&&r[1]===n[1])})[0];if(r&&r.should){t.cancelable&&t.preventDefault();return}if(!r){var o=(i.current.shards||[]).map(H).filter(Boolean).filter(function(e){return e.contains(t.target)});(o.length>0?l(t,o[0]):!i.current.noIsolation)&&t.cancelable&&t.preventDefault()}}},[]),u=s.useCallback(function(t,n,r,o){var a={name:t,delta:n,target:r,should:o,shadowParent:function(t){for(var e=null;null!==t;)t instanceof ShadowRoot&&(e=t.host,t=t.host),t=t.parentNode;return e}(r)};e.current.push(a),setTimeout(function(){e.current=e.current.filter(function(t){return t!==a})},1)},[]),d=s.useCallback(function(t){n.current=z(t),r.current=void 0},[]),f=s.useCallback(function(e){u(e.type,W(e),e.target,l(e,t.lockRef.current))},[]),p=s.useCallback(function(e){u(e.type,z(e),e.target,l(e,t.lockRef.current))},[]);s.useEffect(function(){return _.push(a),t.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",c,M),document.addEventListener("touchmove",c,M),document.addEventListener("touchstart",d,M),function(){_=_.filter(function(t){return t!==a}),document.removeEventListener("wheel",c,M),document.removeEventListener("touchmove",c,M),document.removeEventListener("touchstart",d,M)}},[]);var m=t.removeScrollBar,h=t.inert;return s.createElement(s.Fragment,null,h?s.createElement(a,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,m?s.createElement(L,{noRelative:t.noRelative,gapMode:t.gapMode}):null)},m.useMedium(r),v);var X=s.forwardRef(function(t,e){return s.createElement(g,a({},t,{ref:e,sideCar:V}))});X.classNames=g.classNames;let G=X},4378:(t,e,n)=>{n.d(e,{Z:()=>l});var r=n(2115),o=n(7650),a=n(3655),i=n(2712),s=n(5155),l=r.forwardRef((t,e)=>{var n,l;let{container:c,...u}=t,[d,f]=r.useState(!1);(0,i.N)(()=>f(!0),[]);let p=c||d&&(null==(l=globalThis)||null==(n=l.document)?void 0:n.body);return p?o.createPortal((0,s.jsx)(a.sG.div,{...u,ref:e}),p):null});l.displayName="Portal"},4416:(t,e,n)=>{n.d(e,{A:()=>r});let r=(0,n(9946).A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]])},5152:(t,e,n)=>{n.d(e,{Mz:()=>et,i3:()=>en,UC:()=>ee,bL:()=>t9,Bk:()=>tq});var r=n(2115);let o=["top","right","bottom","left"],a=Math.min,i=Math.max,s=Math.round,l=Math.floor,c=t=>({x:t,y:t}),u={left:"right",right:"left",bottom:"top",top:"bottom"},d={start:"end",end:"start"};function f(t,e){return"function"==typeof t?t(e):t}function p(t){return t.split("-")[0]}function m(t){return t.split("-")[1]}function h(t){return"x"===t?"y":"x"}function g(t){return"y"===t?"height":"width"}let v=new Set(["top","bottom"]);function y(t){return v.has(p(t))?"y":"x"}function b(t){return t.replace(/start|end/g,t=>d[t])}let w=["left","right"],x=["right","left"],E=["top","bottom"],R=["bottom","top"];function C(t){return t.replace(/left|right|bottom|top/g,t=>u[t])}function S(t){return"number"!=typeof t?{top:0,right:0,bottom:0,left:0,...t}:{top:t,right:t,bottom:t,left:t}}function k(t){let{x:e,y:n,width:r,height:o}=t;return{width:r,height:o,top:n,left:e,right:e+r,bottom:n+o,x:e,y:n}}function A(t,e,n){let r,{reference:o,floating:a}=t,i=y(e),s=h(y(e)),l=g(s),c=p(e),u="y"===i,d=o.x+o.width/2-a.width/2,f=o.y+o.height/2-a.height/2,v=o[l]/2-a[l]/2;switch(c){case"top":r={x:d,y:o.y-a.height};break;case"bottom":r={x:d,y:o.y+o.height};break;case"right":r={x:o.x+o.width,y:f};break;case"left":r={x:o.x-a.width,y:f};break;default:r={x:o.x,y:o.y}}switch(m(e)){case"start":r[s]-=v*(n&&u?-1:1);break;case"end":r[s]+=v*(n&&u?-1:1)}return r}let T=async(t,e,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,s=a.filter(Boolean),l=await (null==i.isRTL?void 0:i.isRTL(e)),c=await i.getElementRects({reference:t,floating:e,strategy:o}),{x:u,y:d}=A(c,r,l),f=r,p={},m=0;for(let n=0;nt[e]>=0)}let P=new Set(["left","top"]);async function M(t,e){let{placement:n,platform:r,elements:o}=t,a=await (null==r.isRTL?void 0:r.isRTL(o.floating)),i=p(n),s=m(n),l="y"===y(n),c=P.has(i)?-1:1,u=a&&l?-1:1,d=f(e,t),{mainAxis:h,crossAxis:g,alignmentAxis:v}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:d.mainAxis||0,crossAxis:d.crossAxis||0,alignmentAxis:d.alignmentAxis};return s&&"number"==typeof v&&(g="end"===s?-1*v:v),l?{x:g*u,y:h*c}:{x:h*c,y:g*u}}function O(){return"undefined"!=typeof window}function j(t){return F(t)?(t.nodeName||"").toLowerCase():"#document"}function B(t){var e;return(null==t||null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function I(t){var e;return null==(e=(F(t)?t.ownerDocument:t.document)||window.document)?void 0:e.documentElement}function F(t){return!!O()&&(t instanceof Node||t instanceof B(t).Node)}function z(t){return!!O()&&(t instanceof Element||t instanceof B(t).Element)}function W(t){return!!O()&&(t instanceof HTMLElement||t instanceof B(t).HTMLElement)}function H(t){return!!O()&&"undefined"!=typeof ShadowRoot&&(t instanceof ShadowRoot||t instanceof B(t).ShadowRoot)}let Y=new Set(["inline","contents"]);function _(t){let{overflow:e,overflowX:n,overflowY:r,display:o}=tt(t);return/auto|scroll|overlay|hidden|clip/.test(e+r+n)&&!Y.has(o)}let V=new Set(["table","td","th"]),X=[":popover-open",":modal"];function G(t){return X.some(e=>{try{return t.matches(e)}catch(t){return!1}})}let q=["transform","translate","scale","rotate","perspective"],K=["transform","translate","scale","rotate","perspective","filter"],U=["paint","layout","strict","content"];function Z(t){let e=$(),n=z(t)?tt(t):t;return q.some(t=>!!n[t]&&"none"!==n[t])||!!n.containerType&&"normal"!==n.containerType||!e&&!!n.backdropFilter&&"none"!==n.backdropFilter||!e&&!!n.filter&&"none"!==n.filter||K.some(t=>(n.willChange||"").includes(t))||U.some(t=>(n.contain||"").includes(t))}function $(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}let J=new Set(["html","body","#document"]);function Q(t){return J.has(j(t))}function tt(t){return B(t).getComputedStyle(t)}function te(t){return z(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.scrollX,scrollTop:t.scrollY}}function tn(t){if("html"===j(t))return t;let e=t.assignedSlot||t.parentNode||H(t)&&t.host||I(t);return H(e)?e.host:e}function tr(t,e,n){var r;void 0===e&&(e=[]),void 0===n&&(n=!0);let o=function t(e){let n=tn(e);return Q(n)?e.ownerDocument?e.ownerDocument.body:e.body:W(n)&&_(n)?n:t(n)}(t),a=o===(null==(r=t.ownerDocument)?void 0:r.body),i=B(o);if(a){let t=to(i);return e.concat(i,i.visualViewport||[],_(o)?o:[],t&&n?tr(t):[])}return e.concat(o,tr(o,[],n))}function to(t){return t.parent&&Object.getPrototypeOf(t.parent)?t.frameElement:null}function ta(t){let e=tt(t),n=parseFloat(e.width)||0,r=parseFloat(e.height)||0,o=W(t),a=o?t.offsetWidth:n,i=o?t.offsetHeight:r,l=s(n)!==a||s(r)!==i;return l&&(n=a,r=i),{width:n,height:r,$:l}}function ti(t){return z(t)?t:t.contextElement}function ts(t){let e=ti(t);if(!W(e))return c(1);let n=e.getBoundingClientRect(),{width:r,height:o,$:a}=ta(e),i=(a?s(n.width):n.width)/r,l=(a?s(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}let tl=c(0);function tc(t){let e=B(t);return $()&&e.visualViewport?{x:e.visualViewport.offsetLeft,y:e.visualViewport.offsetTop}:tl}function tu(t,e,n,r){var o;void 0===e&&(e=!1),void 0===n&&(n=!1);let a=t.getBoundingClientRect(),i=ti(t),s=c(1);e&&(r?z(r)&&(s=ts(r)):s=ts(t));let l=(void 0===(o=n)&&(o=!1),r&&(!o||r===B(i))&&o)?tc(i):c(0),u=(a.left+l.x)/s.x,d=(a.top+l.y)/s.y,f=a.width/s.x,p=a.height/s.y;if(i){let t=B(i),e=r&&z(r)?B(r):r,n=t,o=to(n);for(;o&&r&&e!==n;){let t=ts(o),e=o.getBoundingClientRect(),r=tt(o),a=e.left+(o.clientLeft+parseFloat(r.paddingLeft))*t.x,i=e.top+(o.clientTop+parseFloat(r.paddingTop))*t.y;u*=t.x,d*=t.y,f*=t.x,p*=t.y,u+=a,d+=i,o=to(n=B(o))}}return k({width:f,height:p,x:u,y:d})}function td(t,e){let n=te(t).scrollLeft;return e?e.left+n:tu(I(t)).left+n}function tf(t,e,n){void 0===n&&(n=!1);let r=t.getBoundingClientRect();return{x:r.left+e.scrollLeft-(n?0:td(t,r)),y:r.top+e.scrollTop}}let tp=new Set(["absolute","fixed"]);function tm(t,e,n){let r;if("viewport"===e)r=function(t,e){let n=B(t),r=I(t),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,s=0,l=0;if(o){a=o.width,i=o.height;let t=$();(!t||t&&"fixed"===e)&&(s=o.offsetLeft,l=o.offsetTop)}return{width:a,height:i,x:s,y:l}}(t,n);else if("document"===e)r=function(t){let e=I(t),n=te(t),r=t.ownerDocument.body,o=i(e.scrollWidth,e.clientWidth,r.scrollWidth,r.clientWidth),a=i(e.scrollHeight,e.clientHeight,r.scrollHeight,r.clientHeight),s=-n.scrollLeft+td(t),l=-n.scrollTop;return"rtl"===tt(r).direction&&(s+=i(e.clientWidth,r.clientWidth)-o),{width:o,height:a,x:s,y:l}}(I(t));else if(z(e))r=function(t,e){let n=tu(t,!0,"fixed"===e),r=n.top+t.clientTop,o=n.left+t.clientLeft,a=W(t)?ts(t):c(1),i=t.clientWidth*a.x,s=t.clientHeight*a.y;return{width:i,height:s,x:o*a.x,y:r*a.y}}(e,n);else{let n=tc(t);r={x:e.x-n.x,y:e.y-n.y,width:e.width,height:e.height}}return k(r)}function th(t){return"static"===tt(t).position}function tg(t,e){if(!W(t)||"fixed"===tt(t).position)return null;if(e)return e(t);let n=t.offsetParent;return I(t)===n&&(n=n.ownerDocument.body),n}function tv(t,e){var n;let r=B(t);if(G(t))return r;if(!W(t)){let e=tn(t);for(;e&&!Q(e);){if(z(e)&&!th(e))return e;e=tn(e)}return r}let o=tg(t,e);for(;o&&(n=o,V.has(j(n)))&&th(o);)o=tg(o,e);return o&&Q(o)&&th(o)&&!Z(o)?r:o||function(t){let e=tn(t);for(;W(e)&&!Q(e);){if(Z(e))return e;if(G(e))break;e=tn(e)}return null}(t)||r}let ty=async function(t){let e=this.getOffsetParent||tv,n=this.getDimensions,r=await n(t.floating);return{reference:function(t,e,n){let r=W(e),o=I(e),a="fixed"===n,i=tu(t,!0,a,e),s={scrollLeft:0,scrollTop:0},l=c(0);if(r||!r&&!a)if(("body"!==j(e)||_(o))&&(s=te(e)),r){let t=tu(e,!0,a,e);l.x=t.x+e.clientLeft,l.y=t.y+e.clientTop}else o&&(l.x=td(o));a&&!r&&o&&(l.x=td(o));let u=!o||r||a?c(0):tf(o,s);return{x:i.left+s.scrollLeft-l.x-u.x,y:i.top+s.scrollTop-l.y-u.y,width:i.width,height:i.height}}(t.reference,await e(t.floating),t.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},tb={convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{elements:e,rect:n,offsetParent:r,strategy:o}=t,a="fixed"===o,i=I(r),s=!!e&&G(e.floating);if(r===i||s&&a)return n;let l={scrollLeft:0,scrollTop:0},u=c(1),d=c(0),f=W(r);if((f||!f&&!a)&&(("body"!==j(r)||_(i))&&(l=te(r)),W(r))){let t=tu(r);u=ts(r),d.x=t.x+r.clientLeft,d.y=t.y+r.clientTop}let p=!i||f||a?c(0):tf(i,l,!0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+d.x+p.x,y:n.y*u.y-l.scrollTop*u.y+d.y+p.y}},getDocumentElement:I,getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:r,strategy:o}=t,s=[..."clippingAncestors"===n?G(e)?[]:function(t,e){let n=e.get(t);if(n)return n;let r=tr(t,[],!1).filter(t=>z(t)&&"body"!==j(t)),o=null,a="fixed"===tt(t).position,i=a?tn(t):t;for(;z(i)&&!Q(i);){let e=tt(i),n=Z(i);n||"fixed"!==e.position||(o=null),(a?!n&&!o:!n&&"static"===e.position&&!!o&&tp.has(o.position)||_(i)&&!n&&function t(e,n){let r=tn(e);return!(r===n||!z(r)||Q(r))&&("fixed"===tt(r).position||t(r,n))}(t,i))?r=r.filter(t=>t!==i):o=e,i=tn(i)}return e.set(t,r),r}(e,this._c):[].concat(n),r],l=s[0],c=s.reduce((t,n)=>{let r=tm(e,n,o);return t.top=i(r.top,t.top),t.right=a(r.right,t.right),t.bottom=a(r.bottom,t.bottom),t.left=i(r.left,t.left),t},tm(e,l,o));return{width:c.right-c.left,height:c.bottom-c.top,x:c.left,y:c.top}},getOffsetParent:tv,getElementRects:ty,getClientRects:function(t){return Array.from(t.getClientRects())},getDimensions:function(t){let{width:e,height:n}=ta(t);return{width:e,height:n}},getScale:ts,isElement:z,isRTL:function(t){return"rtl"===tt(t).direction}};function tw(t,e){return t.x===e.x&&t.y===e.y&&t.width===e.width&&t.height===e.height}let tx=t=>({name:"arrow",options:t,async fn(e){let{x:n,y:r,placement:o,rects:s,platform:l,elements:c,middlewareData:u}=e,{element:d,padding:p=0}=f(t,e)||{};if(null==d)return{};let v=S(p),b={x:n,y:r},w=h(y(o)),x=g(w),E=await l.getDimensions(d),R="y"===w,C=R?"clientHeight":"clientWidth",k=s.reference[x]+s.reference[w]-b[w]-s.floating[x],A=b[w]-s.reference[w],T=await (null==l.getOffsetParent?void 0:l.getOffsetParent(d)),N=T?T[C]:0;N&&await (null==l.isElement?void 0:l.isElement(T))||(N=c.floating[C]||s.floating[x]);let L=N/2-E[x]/2-1,D=a(v[R?"top":"left"],L),P=a(v[R?"bottom":"right"],L),M=N-E[x]-P,O=N/2-E[x]/2+(k/2-A/2),j=i(D,a(O,M)),B=!u.arrow&&null!=m(o)&&O!==j&&s.reference[x]/2-(O{let r=new Map,o={platform:tb,...n},a={...o.platform,_c:r};return T(t,e,{...o,platform:a})};var tR=n(7650),tC="undefined"!=typeof document?r.useLayoutEffect:function(){};function tS(t,e){let n,r,o;if(t===e)return!0;if(typeof t!=typeof e)return!1;if("function"==typeof t&&t.toString()===e.toString())return!0;if(t&&e&&"object"==typeof t){if(Array.isArray(t)){if((n=t.length)!==e.length)return!1;for(r=n;0!=r--;)if(!tS(t[r],e[r]))return!1;return!0}if((n=(o=Object.keys(t)).length)!==Object.keys(e).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(e,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if(("_owner"!==n||!t.$$typeof)&&!tS(t[n],e[n]))return!1}return!0}return t!=t&&e!=e}function tk(t){return"undefined"==typeof window?1:(t.ownerDocument.defaultView||window).devicePixelRatio||1}function tA(t,e){let n=tk(t);return Math.round(e*n)/n}function tT(t){let e=r.useRef(t);return tC(()=>{e.current=t}),e}let tN=t=>({name:"arrow",options:t,fn(e){let{element:n,padding:r}="function"==typeof t?t(e):t;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?tx({element:n.current,padding:r}).fn(e):{}:n?tx({element:n,padding:r}).fn(e):{}}}),tL=(t,e)=>({...function(t){return void 0===t&&(t=0),{name:"offset",options:t,async fn(e){var n,r;let{x:o,y:a,placement:i,middlewareData:s}=e,l=await M(e,t);return i===(null==(n=s.offset)?void 0:n.placement)&&null!=(r=s.arrow)&&r.alignmentOffset?{}:{x:o+l.x,y:a+l.y,data:{...l,placement:i}}}}}(t),options:[t,e]}),tD=(t,e)=>({...function(t){return void 0===t&&(t={}),{name:"shift",options:t,async fn(e){let{x:n,y:r,placement:o}=e,{mainAxis:s=!0,crossAxis:l=!1,limiter:c={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=f(t,e),d={x:n,y:r},m=await N(e,u),g=y(p(o)),v=h(g),b=d[v],w=d[g];if(s){let t="y"===v?"top":"left",e="y"===v?"bottom":"right",n=b+m[t],r=b-m[e];b=i(n,a(b,r))}if(l){let t="y"===g?"top":"left",e="y"===g?"bottom":"right",n=w+m[t],r=w-m[e];w=i(n,a(w,r))}let x=c.fn({...e,[v]:b,[g]:w});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[v]:s,[g]:l}}}}}}(t),options:[t,e]}),tP=(t,e)=>({...function(t){return void 0===t&&(t={}),{options:t,fn(e){let{x:n,y:r,placement:o,rects:a,middlewareData:i}=e,{offset:s=0,mainAxis:l=!0,crossAxis:c=!0}=f(t,e),u={x:n,y:r},d=y(o),m=h(d),g=u[m],v=u[d],b=f(s,e),w="number"==typeof b?{mainAxis:b,crossAxis:0}:{mainAxis:0,crossAxis:0,...b};if(l){let t="y"===m?"height":"width",e=a.reference[m]-a.floating[t]+w.mainAxis,n=a.reference[m]+a.reference[t]-w.mainAxis;gn&&(g=n)}if(c){var x,E;let t="y"===m?"width":"height",e=P.has(p(o)),n=a.reference[d]-a.floating[t]+(e&&(null==(x=i.offset)?void 0:x[d])||0)+(e?0:w.crossAxis),r=a.reference[d]+a.reference[t]+(e?0:(null==(E=i.offset)?void 0:E[d])||0)-(e?w.crossAxis:0);vr&&(v=r)}return{[m]:g,[d]:v}}}}(t),options:[t,e]}),tM=(t,e)=>({...function(t){return void 0===t&&(t={}),{name:"flip",options:t,async fn(e){var n,r,o,a,i;let{placement:s,middlewareData:l,rects:c,initialPlacement:u,platform:d,elements:v}=e,{mainAxis:S=!0,crossAxis:k=!0,fallbackPlacements:A,fallbackStrategy:T="bestFit",fallbackAxisSideDirection:L="none",flipAlignment:D=!0,...P}=f(t,e);if(null!=(n=l.arrow)&&n.alignmentOffset)return{};let M=p(s),O=y(u),j=p(u)===u,B=await (null==d.isRTL?void 0:d.isRTL(v.floating)),I=A||(j||!D?[C(u)]:function(t){let e=C(t);return[b(t),e,b(e)]}(u)),F="none"!==L;!A&&F&&I.push(...function(t,e,n,r){let o=m(t),a=function(t,e,n){switch(t){case"top":case"bottom":if(n)return e?x:w;return e?w:x;case"left":case"right":return e?E:R;default:return[]}}(p(t),"start"===n,r);return o&&(a=a.map(t=>t+"-"+o),e&&(a=a.concat(a.map(b)))),a}(u,D,L,B));let z=[u,...I],W=await N(e,P),H=[],Y=(null==(r=l.flip)?void 0:r.overflows)||[];if(S&&H.push(W[M]),k){let t=function(t,e,n){void 0===n&&(n=!1);let r=m(t),o=h(y(t)),a=g(o),i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return e.reference[a]>e.floating[a]&&(i=C(i)),[i,C(i)]}(s,c,B);H.push(W[t[0]],W[t[1]])}if(Y=[...Y,{placement:s,overflows:H}],!H.every(t=>t<=0)){let t=((null==(o=l.flip)?void 0:o.index)||0)+1,e=z[t];if(e&&("alignment"!==k||O===y(e)||Y.every(t=>t.overflows[0]>0&&y(t.placement)===O)))return{data:{index:t,overflows:Y},reset:{placement:e}};let n=null==(a=Y.filter(t=>t.overflows[0]<=0).sort((t,e)=>t.overflows[1]-e.overflows[1])[0])?void 0:a.placement;if(!n)switch(T){case"bestFit":{let t=null==(i=Y.filter(t=>{if(F){let e=y(t.placement);return e===O||"y"===e}return!0}).map(t=>[t.placement,t.overflows.filter(t=>t>0).reduce((t,e)=>t+e,0)]).sort((t,e)=>t[1]-e[1])[0])?void 0:i[0];t&&(n=t);break}case"initialPlacement":n=u}if(s!==n)return{reset:{placement:n}}}return{}}}}(t),options:[t,e]}),tO=(t,e)=>({...function(t){return void 0===t&&(t={}),{name:"size",options:t,async fn(e){var n,r;let o,s,{placement:l,rects:c,platform:u,elements:d}=e,{apply:h=()=>{},...g}=f(t,e),v=await N(e,g),b=p(l),w=m(l),x="y"===y(l),{width:E,height:R}=c.floating;"top"===b||"bottom"===b?(o=b,s=w===(await (null==u.isRTL?void 0:u.isRTL(d.floating))?"start":"end")?"left":"right"):(s=b,o="end"===w?"top":"bottom");let C=R-v.top-v.bottom,S=E-v.left-v.right,k=a(R-v[o],C),A=a(E-v[s],S),T=!e.middlewareData.shift,L=k,D=A;if(null!=(n=e.middlewareData.shift)&&n.enabled.x&&(D=S),null!=(r=e.middlewareData.shift)&&r.enabled.y&&(L=C),T&&!w){let t=i(v.left,0),e=i(v.right,0),n=i(v.top,0),r=i(v.bottom,0);x?D=E-2*(0!==t||0!==e?t+e:i(v.left,v.right)):L=R-2*(0!==n||0!==r?n+r:i(v.top,v.bottom))}await h({...e,availableWidth:D,availableHeight:L});let P=await u.getDimensions(d.floating);return E!==P.width||R!==P.height?{reset:{rects:!0}}:{}}}}(t),options:[t,e]}),tj=(t,e)=>({...function(t){return void 0===t&&(t={}),{name:"hide",options:t,async fn(e){let{rects:n}=e,{strategy:r="referenceHidden",...o}=f(t,e);switch(r){case"referenceHidden":{let t=L(await N(e,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:D(t)}}}case"escaped":{let t=L(await N(e,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:t,escaped:D(t)}}}default:return{}}}}}(t),options:[t,e]}),tB=(t,e)=>({...tN(t),options:[t,e]});var tI=n(3655),tF=n(5155),tz=r.forwardRef((t,e)=>{let{children:n,width:r=10,height:o=5,...a}=t;return(0,tF.jsx)(tI.sG.svg,{...a,ref:e,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:t.asChild?n:(0,tF.jsx)("polygon",{points:"0,0 30,0 15,10"})})});tz.displayName="Arrow";var tW=n(6101),tH=n(6081),tY=n(9033),t_=n(2712),tV=n(1275),tX="Popper",[tG,tq]=(0,tH.A)(tX),[tK,tU]=tG(tX),tZ=t=>{let{__scopePopper:e,children:n}=t,[o,a]=r.useState(null);return(0,tF.jsx)(tK,{scope:e,anchor:o,onAnchorChange:a,children:n})};tZ.displayName=tX;var t$="PopperAnchor",tJ=r.forwardRef((t,e)=>{let{__scopePopper:n,virtualRef:o,...a}=t,i=tU(t$,n),s=r.useRef(null),l=(0,tW.s)(e,s);return r.useEffect(()=>{i.onAnchorChange((null==o?void 0:o.current)||s.current)}),o?null:(0,tF.jsx)(tI.sG.div,{...a,ref:l})});tJ.displayName=t$;var tQ="PopperContent",[t0,t1]=tG(tQ),t5=r.forwardRef((t,e)=>{var n,o,s,c,u,d,f,p;let{__scopePopper:m,side:h="bottom",sideOffset:g=0,align:v="center",alignOffset:y=0,arrowPadding:b=0,avoidCollisions:w=!0,collisionBoundary:x=[],collisionPadding:E=0,sticky:R="partial",hideWhenDetached:C=!1,updatePositionStrategy:S="optimized",onPlaced:k,...A}=t,T=tU(tQ,m),[N,L]=r.useState(null),D=(0,tW.s)(e,t=>L(t)),[P,M]=r.useState(null),O=(0,tV.X)(P),j=null!=(f=null==O?void 0:O.width)?f:0,B=null!=(p=null==O?void 0:O.height)?p:0,F="number"==typeof E?E:{top:0,right:0,bottom:0,left:0,...E},z=Array.isArray(x)?x:[x],W=z.length>0,H={padding:F,boundary:z.filter(t8),altBoundary:W},{refs:Y,floatingStyles:_,placement:V,isPositioned:X,middlewareData:G}=function(t){void 0===t&&(t={});let{placement:e="bottom",strategy:n="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:s}={},transform:l=!0,whileElementsMounted:c,open:u}=t,[d,f]=r.useState({x:0,y:0,strategy:n,placement:e,middlewareData:{},isPositioned:!1}),[p,m]=r.useState(o);tS(p,o)||m(o);let[h,g]=r.useState(null),[v,y]=r.useState(null),b=r.useCallback(t=>{t!==R.current&&(R.current=t,g(t))},[]),w=r.useCallback(t=>{t!==C.current&&(C.current=t,y(t))},[]),x=i||h,E=s||v,R=r.useRef(null),C=r.useRef(null),S=r.useRef(d),k=null!=c,A=tT(c),T=tT(a),N=tT(u),L=r.useCallback(()=>{if(!R.current||!C.current)return;let t={placement:e,strategy:n,middleware:p};T.current&&(t.platform=T.current),tE(R.current,C.current,t).then(t=>{let e={...t,isPositioned:!1!==N.current};D.current&&!tS(S.current,e)&&(S.current=e,tR.flushSync(()=>{f(e)}))})},[p,e,n,T,N]);tC(()=>{!1===u&&S.current.isPositioned&&(S.current.isPositioned=!1,f(t=>({...t,isPositioned:!1})))},[u]);let D=r.useRef(!1);tC(()=>(D.current=!0,()=>{D.current=!1}),[]),tC(()=>{if(x&&(R.current=x),E&&(C.current=E),x&&E){if(A.current)return A.current(x,E,L);L()}},[x,E,L,A,k]);let P=r.useMemo(()=>({reference:R,floating:C,setReference:b,setFloating:w}),[b,w]),M=r.useMemo(()=>({reference:x,floating:E}),[x,E]),O=r.useMemo(()=>{let t={position:n,left:0,top:0};if(!M.floating)return t;let e=tA(M.floating,d.x),r=tA(M.floating,d.y);return l?{...t,transform:"translate("+e+"px, "+r+"px)",...tk(M.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:e,top:r}},[n,l,M.floating,d.x,d.y]);return r.useMemo(()=>({...d,update:L,refs:P,elements:M,floatingStyles:O}),[d,L,P,M,O])}({strategy:"fixed",placement:h+("center"!==v?"-"+v:""),whileElementsMounted:function(){for(var t=arguments.length,e=Array(t),n=0;n{s&&t.addEventListener("scroll",n,{passive:!0}),c&&t.addEventListener("resize",n)});let h=p&&d?function(t,e){let n,r=null,o=I(t);function s(){var t;clearTimeout(n),null==(t=r)||t.disconnect(),r=null}return!function c(u,d){void 0===u&&(u=!1),void 0===d&&(d=1),s();let f=t.getBoundingClientRect(),{left:p,top:m,width:h,height:g}=f;if(u||e(),!h||!g)return;let v=l(m),y=l(o.clientWidth-(p+h)),b={rootMargin:-v+"px "+-y+"px "+-l(o.clientHeight-(m+g))+"px "+-l(p)+"px",threshold:i(0,a(1,d))||1},w=!0;function x(e){let r=e[0].intersectionRatio;if(r!==d){if(!w)return c();r?c(!1,r):n=setTimeout(()=>{c(!1,1e-7)},1e3)}1!==r||tw(f,t.getBoundingClientRect())||c(),w=!1}try{r=new IntersectionObserver(x,{...b,root:o.ownerDocument})}catch(t){r=new IntersectionObserver(x,b)}r.observe(t)}(!0),s}(p,n):null,g=-1,v=null;u&&(v=new ResizeObserver(t=>{let[r]=t;r&&r.target===p&&v&&(v.unobserve(e),cancelAnimationFrame(g),g=requestAnimationFrame(()=>{var t;null==(t=v)||t.observe(e)})),n()}),p&&!f&&v.observe(p),v.observe(e));let y=f?tu(t):null;return f&&function e(){let r=tu(t);y&&!tw(y,r)&&n(),y=r,o=requestAnimationFrame(e)}(),n(),()=>{var t;m.forEach(t=>{s&&t.removeEventListener("scroll",n),c&&t.removeEventListener("resize",n)}),null==h||h(),null==(t=v)||t.disconnect(),v=null,f&&cancelAnimationFrame(o)}}(...e,{animationFrame:"always"===S})},elements:{reference:T.anchor},middleware:[tL({mainAxis:g+B,alignmentAxis:y}),w&&tD({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?tP():void 0,...H}),w&&tM({...H}),tO({...H,apply:t=>{let{elements:e,rects:n,availableWidth:r,availableHeight:o}=t,{width:a,height:i}=n.reference,s=e.floating.style;s.setProperty("--radix-popper-available-width","".concat(r,"px")),s.setProperty("--radix-popper-available-height","".concat(o,"px")),s.setProperty("--radix-popper-anchor-width","".concat(a,"px")),s.setProperty("--radix-popper-anchor-height","".concat(i,"px"))}}),P&&tB({element:P,padding:b}),t6({arrowWidth:j,arrowHeight:B}),C&&tj({strategy:"referenceHidden",...H})]}),[q,K]=t7(V),U=(0,tY.c)(k);(0,t_.N)(()=>{X&&(null==U||U())},[X,U]);let Z=null==(n=G.arrow)?void 0:n.x,$=null==(o=G.arrow)?void 0:o.y,J=(null==(s=G.arrow)?void 0:s.centerOffset)!==0,[Q,tt]=r.useState();return(0,t_.N)(()=>{N&&tt(window.getComputedStyle(N).zIndex)},[N]),(0,tF.jsx)("div",{ref:Y.setFloating,"data-radix-popper-content-wrapper":"",style:{..._,transform:X?_.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Q,"--radix-popper-transform-origin":[null==(c=G.transformOrigin)?void 0:c.x,null==(u=G.transformOrigin)?void 0:u.y].join(" "),...(null==(d=G.hide)?void 0:d.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:t.dir,children:(0,tF.jsx)(t0,{scope:m,placedSide:q,onArrowChange:M,arrowX:Z,arrowY:$,shouldHideArrow:J,children:(0,tF.jsx)(tI.sG.div,{"data-side":q,"data-align":K,...A,ref:D,style:{...A.style,animation:X?void 0:"none"}})})})});t5.displayName=tQ;var t2="PopperArrow",t4={top:"bottom",right:"left",bottom:"top",left:"right"},t3=r.forwardRef(function(t,e){let{__scopePopper:n,...r}=t,o=t1(t2,n),a=t4[o.placedSide];return(0,tF.jsx)("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[a]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0},children:(0,tF.jsx)(tz,{...r,ref:e,style:{...r.style,display:"block"}})})});function t8(t){return null!==t}t3.displayName=t2;var t6=t=>({name:"transformOrigin",options:t,fn(e){var n,r,o,a,i;let{placement:s,rects:l,middlewareData:c}=e,u=(null==(n=c.arrow)?void 0:n.centerOffset)!==0,d=u?0:t.arrowWidth,f=u?0:t.arrowHeight,[p,m]=t7(s),h={start:"0%",center:"50%",end:"100%"}[m],g=(null!=(a=null==(r=c.arrow)?void 0:r.x)?a:0)+d/2,v=(null!=(i=null==(o=c.arrow)?void 0:o.y)?i:0)+f/2,y="",b="";return"bottom"===p?(y=u?h:"".concat(g,"px"),b="".concat(-f,"px")):"top"===p?(y=u?h:"".concat(g,"px"),b="".concat(l.floating.height+f,"px")):"right"===p?(y="".concat(-f,"px"),b=u?h:"".concat(v,"px")):"left"===p&&(y="".concat(l.floating.width+f,"px"),b=u?h:"".concat(v,"px")),{data:{x:y,y:b}}}});function t7(t){let[e,n="center"]=t.split("-");return[e,n]}var t9=tZ,et=tJ,ee=t5,en=t3},5452:(t,e,n)=>{n.d(e,{G$:()=>K,Hs:()=>x,UC:()=>tn,VY:()=>to,ZL:()=>tt,bL:()=>J,bm:()=>ta,hE:()=>tr,hJ:()=>te,l9:()=>Q});var r=n(2115),o=n(5185),a=n(6101),i=n(6081),s=n(1285),l=n(5845),c=n(9178),u=n(7900),d=n(4378),f=n(8905),p=n(3655),m=n(2293),h=n(3795),g=n(8168),v=n(9708),y=n(5155),b="Dialog",[w,x]=(0,i.A)(b),[E,R]=w(b),C=t=>{let{__scopeDialog:e,children:n,open:o,defaultOpen:a,onOpenChange:i,modal:c=!0}=t,u=r.useRef(null),d=r.useRef(null),[f,p]=(0,l.i)({prop:o,defaultProp:null!=a&&a,onChange:i,caller:b});return(0,y.jsx)(E,{scope:e,triggerRef:u,contentRef:d,contentId:(0,s.B)(),titleId:(0,s.B)(),descriptionId:(0,s.B)(),open:f,onOpenChange:p,onOpenToggle:r.useCallback(()=>p(t=>!t),[p]),modal:c,children:n})};C.displayName=b;var S="DialogTrigger",k=r.forwardRef((t,e)=>{let{__scopeDialog:n,...r}=t,i=R(S,n),s=(0,a.s)(e,i.triggerRef);return(0,y.jsx)(p.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":i.open,"aria-controls":i.contentId,"data-state":G(i.open),...r,ref:s,onClick:(0,o.m)(t.onClick,i.onOpenToggle)})});k.displayName=S;var A="DialogPortal",[T,N]=w(A,{forceMount:void 0}),L=t=>{let{__scopeDialog:e,forceMount:n,children:o,container:a}=t,i=R(A,e);return(0,y.jsx)(T,{scope:e,forceMount:n,children:r.Children.map(o,t=>(0,y.jsx)(f.C,{present:n||i.open,children:(0,y.jsx)(d.Z,{asChild:!0,container:a,children:t})}))})};L.displayName=A;var D="DialogOverlay",P=r.forwardRef((t,e)=>{let n=N(D,t.__scopeDialog),{forceMount:r=n.forceMount,...o}=t,a=R(D,t.__scopeDialog);return a.modal?(0,y.jsx)(f.C,{present:r||a.open,children:(0,y.jsx)(O,{...o,ref:e})}):null});P.displayName=D;var M=(0,v.TL)("DialogOverlay.RemoveScroll"),O=r.forwardRef((t,e)=>{let{__scopeDialog:n,...r}=t,o=R(D,n);return(0,y.jsx)(h.A,{as:M,allowPinchZoom:!0,shards:[o.contentRef],children:(0,y.jsx)(p.sG.div,{"data-state":G(o.open),...r,ref:e,style:{pointerEvents:"auto",...r.style}})})}),j="DialogContent",B=r.forwardRef((t,e)=>{let n=N(j,t.__scopeDialog),{forceMount:r=n.forceMount,...o}=t,a=R(j,t.__scopeDialog);return(0,y.jsx)(f.C,{present:r||a.open,children:a.modal?(0,y.jsx)(I,{...o,ref:e}):(0,y.jsx)(F,{...o,ref:e})})});B.displayName=j;var I=r.forwardRef((t,e)=>{let n=R(j,t.__scopeDialog),i=r.useRef(null),s=(0,a.s)(e,n.contentRef,i);return r.useEffect(()=>{let t=i.current;if(t)return(0,g.Eq)(t)},[]),(0,y.jsx)(z,{...t,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,o.m)(t.onCloseAutoFocus,t=>{var e;t.preventDefault(),null==(e=n.triggerRef.current)||e.focus()}),onPointerDownOutside:(0,o.m)(t.onPointerDownOutside,t=>{let e=t.detail.originalEvent,n=0===e.button&&!0===e.ctrlKey;(2===e.button||n)&&t.preventDefault()}),onFocusOutside:(0,o.m)(t.onFocusOutside,t=>t.preventDefault())})}),F=r.forwardRef((t,e)=>{let n=R(j,t.__scopeDialog),o=r.useRef(!1),a=r.useRef(!1);return(0,y.jsx)(z,{...t,ref:e,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:e=>{var r,i;null==(r=t.onCloseAutoFocus)||r.call(t,e),e.defaultPrevented||(o.current||null==(i=n.triggerRef.current)||i.focus(),e.preventDefault()),o.current=!1,a.current=!1},onInteractOutside:e=>{var r,i;null==(r=t.onInteractOutside)||r.call(t,e),e.defaultPrevented||(o.current=!0,"pointerdown"===e.detail.originalEvent.type&&(a.current=!0));let s=e.target;(null==(i=n.triggerRef.current)?void 0:i.contains(s))&&e.preventDefault(),"focusin"===e.detail.originalEvent.type&&a.current&&e.preventDefault()}})}),z=r.forwardRef((t,e)=>{let{__scopeDialog:n,trapFocus:o,onOpenAutoFocus:i,onCloseAutoFocus:s,...l}=t,d=R(j,n),f=r.useRef(null),p=(0,a.s)(e,f);return(0,m.Oh)(),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(u.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:i,onUnmountAutoFocus:s,children:(0,y.jsx)(c.qW,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":G(d.open),...l,ref:p,onDismiss:()=>d.onOpenChange(!1)})}),(0,y.jsxs)(y.Fragment,{children:[(0,y.jsx)(Z,{titleId:d.titleId}),(0,y.jsx)($,{contentRef:f,descriptionId:d.descriptionId})]})]})}),W="DialogTitle",H=r.forwardRef((t,e)=>{let{__scopeDialog:n,...r}=t,o=R(W,n);return(0,y.jsx)(p.sG.h2,{id:o.titleId,...r,ref:e})});H.displayName=W;var Y="DialogDescription",_=r.forwardRef((t,e)=>{let{__scopeDialog:n,...r}=t,o=R(Y,n);return(0,y.jsx)(p.sG.p,{id:o.descriptionId,...r,ref:e})});_.displayName=Y;var V="DialogClose",X=r.forwardRef((t,e)=>{let{__scopeDialog:n,...r}=t,a=R(V,n);return(0,y.jsx)(p.sG.button,{type:"button",...r,ref:e,onClick:(0,o.m)(t.onClick,()=>a.onOpenChange(!1))})});function G(t){return t?"open":"closed"}X.displayName=V;var q="DialogTitleWarning",[K,U]=(0,i.q)(q,{contentName:j,titleName:W,docsSlug:"dialog"}),Z=t=>{let{titleId:e}=t,n=U(q),o="`".concat(n.contentName,"` requires a `").concat(n.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(n.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(n.docsSlug);return r.useEffect(()=>{e&&(document.getElementById(e)||console.error(o))},[o,e]),null},$=t=>{let{contentRef:e,descriptionId:n}=t,o=U("DialogDescriptionWarning"),a="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(o.contentName,"}.");return r.useEffect(()=>{var t;let r=null==(t=e.current)?void 0:t.getAttribute("aria-describedby");n&&r&&(document.getElementById(n)||console.warn(a))},[a,e,n]),null},J=C,Q=k,tt=L,te=P,tn=B,tr=H,to=_,ta=X},6671:(t,e,n)=>{n.d(e,{Toaster:()=>R,o:()=>y});var r=n(2115),o=n(7650);let a=t=>{switch(t){case"success":return l;case"info":return u;case"warning":return c;case"error":return d;default:return null}},i=Array(12).fill(0),s=t=>{let{visible:e,className:n}=t;return r.createElement("div",{className:["sonner-loading-wrapper",n].filter(Boolean).join(" "),"data-visible":e},r.createElement("div",{className:"sonner-spinner"},i.map((t,e)=>r.createElement("div",{className:"sonner-loading-bar",key:"spinner-bar-".concat(e)}))))},l=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},r.createElement("path",{fillRule:"evenodd",d:"M10 18a8 8 0 100-16 8 8 0 000 16zm3.857-9.809a.75.75 0 00-1.214-.882l-3.483 4.79-1.88-1.88a.75.75 0 10-1.06 1.061l2.5 2.5a.75.75 0 001.137-.089l4-5.5z",clipRule:"evenodd"})),c=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",fill:"currentColor",height:"20",width:"20"},r.createElement("path",{fillRule:"evenodd",d:"M9.401 3.003c1.155-2 4.043-2 5.197 0l7.355 12.748c1.154 2-.29 4.5-2.599 4.5H4.645c-2.309 0-3.752-2.5-2.598-4.5L9.4 3.003zM12 8.25a.75.75 0 01.75.75v3.75a.75.75 0 01-1.5 0V9a.75.75 0 01.75-.75zm0 8.25a.75.75 0 100-1.5.75.75 0 000 1.5z",clipRule:"evenodd"})),u=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},r.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a.75.75 0 000 1.5h.253a.25.25 0 01.244.304l-.459 2.066A1.75 1.75 0 0010.747 15H11a.75.75 0 000-1.5h-.253a.25.25 0 01-.244-.304l.459-2.066A1.75 1.75 0 009.253 9H9z",clipRule:"evenodd"})),d=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 20 20",fill:"currentColor",height:"20",width:"20"},r.createElement("path",{fillRule:"evenodd",d:"M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-8-5a.75.75 0 01.75.75v4.5a.75.75 0 01-1.5 0v-4.5A.75.75 0 0110 5zm0 10a1 1 0 100-2 1 1 0 000 2z",clipRule:"evenodd"})),f=r.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"},r.createElement("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),r.createElement("line",{x1:"6",y1:"6",x2:"18",y2:"18"})),p=()=>{let[t,e]=r.useState(document.hidden);return r.useEffect(()=>{let t=()=>{e(document.hidden)};return document.addEventListener("visibilitychange",t),()=>window.removeEventListener("visibilitychange",t)},[]),t},m=1;class h{constructor(){this.subscribe=t=>(this.subscribers.push(t),()=>{let e=this.subscribers.indexOf(t);this.subscribers.splice(e,1)}),this.publish=t=>{this.subscribers.forEach(e=>e(t))},this.addToast=t=>{this.publish(t),this.toasts=[...this.toasts,t]},this.create=t=>{var e;let{message:n,...r}=t,o="number"==typeof(null==t?void 0:t.id)||(null==(e=t.id)?void 0:e.length)>0?t.id:m++,a=this.toasts.find(t=>t.id===o),i=void 0===t.dismissible||t.dismissible;return this.dismissedToasts.has(o)&&this.dismissedToasts.delete(o),a?this.toasts=this.toasts.map(e=>e.id===o?(this.publish({...e,...t,id:o,title:n}),{...e,...t,id:o,dismissible:i,title:n}):e):this.addToast({title:n,...r,dismissible:i,id:o}),o},this.dismiss=t=>(t?(this.dismissedToasts.add(t),requestAnimationFrame(()=>this.subscribers.forEach(e=>e({id:t,dismiss:!0})))):this.toasts.forEach(t=>{this.subscribers.forEach(e=>e({id:t.id,dismiss:!0}))}),t),this.message=(t,e)=>this.create({...e,message:t}),this.error=(t,e)=>this.create({...e,message:t,type:"error"}),this.success=(t,e)=>this.create({...e,type:"success",message:t}),this.info=(t,e)=>this.create({...e,type:"info",message:t}),this.warning=(t,e)=>this.create({...e,type:"warning",message:t}),this.loading=(t,e)=>this.create({...e,type:"loading",message:t}),this.promise=(t,e)=>{let n,o;if(!e)return;void 0!==e.loading&&(o=this.create({...e,promise:t,type:"loading",message:e.loading,description:"function"!=typeof e.description?e.description:void 0}));let a=Promise.resolve(t instanceof Function?t():t),i=void 0!==o,s=a.then(async t=>{if(n=["resolve",t],r.isValidElement(t))i=!1,this.create({id:o,type:"default",message:t});else if(v(t)&&!t.ok){i=!1;let n="function"==typeof e.error?await e.error("HTTP error! status: ".concat(t.status)):e.error,a="function"==typeof e.description?await e.description("HTTP error! status: ".concat(t.status)):e.description,s="object"!=typeof n||r.isValidElement(n)?{message:n}:n;this.create({id:o,type:"error",description:a,...s})}else if(t instanceof Error){i=!1;let n="function"==typeof e.error?await e.error(t):e.error,a="function"==typeof e.description?await e.description(t):e.description,s="object"!=typeof n||r.isValidElement(n)?{message:n}:n;this.create({id:o,type:"error",description:a,...s})}else if(void 0!==e.success){i=!1;let n="function"==typeof e.success?await e.success(t):e.success,a="function"==typeof e.description?await e.description(t):e.description,s="object"!=typeof n||r.isValidElement(n)?{message:n}:n;this.create({id:o,type:"success",description:a,...s})}}).catch(async t=>{if(n=["reject",t],void 0!==e.error){i=!1;let n="function"==typeof e.error?await e.error(t):e.error,a="function"==typeof e.description?await e.description(t):e.description,s="object"!=typeof n||r.isValidElement(n)?{message:n}:n;this.create({id:o,type:"error",description:a,...s})}}).finally(()=>{i&&(this.dismiss(o),o=void 0),null==e.finally||e.finally.call(e)}),l=()=>new Promise((t,e)=>s.then(()=>"reject"===n[0]?e(n[1]):t(n[1])).catch(e));return"string"!=typeof o&&"number"!=typeof o?{unwrap:l}:Object.assign(o,{unwrap:l})},this.custom=(t,e)=>{let n=(null==e?void 0:e.id)||m++;return this.create({jsx:t(n),id:n,...e}),n},this.getActiveToasts=()=>this.toasts.filter(t=>!this.dismissedToasts.has(t.id)),this.subscribers=[],this.toasts=[],this.dismissedToasts=new Set}}let g=new h,v=t=>t&&"object"==typeof t&&"ok"in t&&"boolean"==typeof t.ok&&"status"in t&&"number"==typeof t.status,y=Object.assign((t,e)=>{let n=(null==e?void 0:e.id)||m++;return g.addToast({title:t,...e,id:n}),n},{success:g.success,info:g.info,warning:g.warning,error:g.error,custom:g.custom,message:g.message,promise:g.promise,dismiss:g.dismiss,loading:g.loading},{getHistory:()=>g.toasts,getToasts:()=>g.getActiveToasts()});function b(t){return void 0!==t.label}function w(){for(var t=arguments.length,e=Array(t),n=0;nsvg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}[data-sonner-toast][data-styled=true] [data-icon]>*{flex-shrink:0}[data-sonner-toast][data-styled=true] [data-icon] svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}[data-sonner-toast][data-styled=true] [data-content]{display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;font-weight:500;cursor:pointer;outline:0;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}[data-sonner-toast][data-styled=true] [data-button]:focus-visible{box-shadow:0 0 0 2px rgba(0,0,0,.4)}[data-sonner-toast][data-styled=true] [data-button]:first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}[data-sonner-toast][data-styled=true] [data-cancel]{color:var(--normal-text);background:rgba(0,0,0,.08)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-styled=true] [data-cancel]{background:rgba(255,255,255,.3)}[data-sonner-toast][data-styled=true] [data-close-button]{position:absolute;left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;color:var(--gray12);background:var(--normal-bg);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}[data-sonner-toast][data-styled=true] [data-close-button]:focus-visible{box-shadow:0 4px 12px rgba(0,0,0,.1),0 0 0 2px rgba(0,0,0,.2)}[data-sonner-toast][data-styled=true] [data-disabled=true]{cursor:not-allowed}[data-sonner-toast][data-styled=true]:hover [data-close-button]:hover{background:var(--gray2);border-color:var(--gray5)}[data-sonner-toast][data-swiping=true]::before{content:'';position:absolute;left:-100%;right:-100%;height:100%;z-index:-1}[data-sonner-toast][data-y-position=top][data-swiping=true]::before{bottom:50%;transform:scaleY(3) translateY(50%)}[data-sonner-toast][data-y-position=bottom][data-swiping=true]::before{top:50%;transform:scaleY(3) translateY(-50%)}[data-sonner-toast][data-swiping=false][data-removed=true]::before{content:'';position:absolute;inset:0;transform:scaleY(2)}[data-sonner-toast][data-expanded=true]::after{content:'';position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}[data-sonner-toast][data-mounted=true]{--y:translateY(0);opacity:1}[data-sonner-toast][data-expanded=false][data-front=false]{--scale:var(--toasts-before) * 0.05 + 1;--y:translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}[data-sonner-toast]>*{transition:opacity .4s}[data-sonner-toast][data-x-position=right]{right:0}[data-sonner-toast][data-x-position=left]{left:0}[data-sonner-toast][data-expanded=false][data-front=false][data-styled=true]>*{opacity:0}[data-sonner-toast][data-visible=false]{opacity:0;pointer-events:none}[data-sonner-toast][data-mounted=true][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}[data-sonner-toast][data-removed=true][data-front=true][data-swipe-out=false]{--y:translateY(calc(var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=true]{--y:translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}[data-sonner-toast][data-removed=true][data-front=false][data-swipe-out=false][data-expanded=false]{--y:translateY(40%);opacity:0;transition:transform .5s,opacity .2s}[data-sonner-toast][data-removed=true][data-front=false]::before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount-y,0)) translateX(var(--swipe-amount-x,0));transition:none}[data-sonner-toast][data-swiped=true]{user-select:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation-duration:.2s;animation-timing-function:ease-out;animation-fill-mode:forwards}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=left]{animation-name:swipe-out-left}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=right]{animation-name:swipe-out-right}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=up]{animation-name:swipe-out-up}[data-sonner-toast][data-swipe-out=true][data-swipe-direction=down]{animation-name:swipe-out-down}@keyframes swipe-out-left{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) - 100%));opacity:0}}@keyframes swipe-out-right{from{transform:var(--y) translateX(var(--swipe-amount-x));opacity:1}to{transform:var(--y) translateX(calc(var(--swipe-amount-x) + 100%));opacity:0}}@keyframes swipe-out-up{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) - 100%));opacity:0}}@keyframes swipe-out-down{from{transform:var(--y) translateY(var(--swipe-amount-y));opacity:1}to{transform:var(--y) translateY(calc(var(--swipe-amount-y) + 100%));opacity:0}}@media (max-width:600px){[data-sonner-toaster]{position:fixed;right:var(--mobile-offset-right);left:var(--mobile-offset-left);width:100%}[data-sonner-toaster][dir=rtl]{left:calc(var(--mobile-offset-left) * -1)}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset-left) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset-left)}[data-sonner-toaster][data-y-position=bottom]{bottom:var(--mobile-offset-bottom)}[data-sonner-toaster][data-y-position=top]{top:var(--mobile-offset-top)}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset-left);right:var(--mobile-offset-right);transform:none}}[data-sonner-toaster][data-sonner-theme=light]{--normal-bg:#fff;--normal-border:var(--gray4);--normal-text:var(--gray12);--success-bg:hsl(143, 85%, 96%);--success-border:hsl(145, 92%, 87%);--success-text:hsl(140, 100%, 27%);--info-bg:hsl(208, 100%, 97%);--info-border:hsl(221, 91%, 93%);--info-text:hsl(210, 92%, 45%);--warning-bg:hsl(49, 100%, 97%);--warning-border:hsl(49, 91%, 84%);--warning-text:hsl(31, 92%, 45%);--error-bg:hsl(359, 100%, 97%);--error-border:hsl(359, 100%, 94%);--error-text:hsl(360, 100%, 45%)}[data-sonner-toaster][data-sonner-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg:#000;--normal-border:hsl(0, 0%, 20%);--normal-text:var(--gray1)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg:#fff;--normal-border:var(--gray3);--normal-text:var(--gray12)}[data-sonner-toaster][data-sonner-theme=dark]{--normal-bg:#000;--normal-bg-hover:hsl(0, 0%, 12%);--normal-border:hsl(0, 0%, 20%);--normal-border-hover:hsl(0, 0%, 25%);--normal-text:var(--gray1);--success-bg:hsl(150, 100%, 6%);--success-border:hsl(147, 100%, 12%);--success-text:hsl(150, 86%, 65%);--info-bg:hsl(215, 100%, 6%);--info-border:hsl(223, 43%, 17%);--info-text:hsl(216, 87%, 65%);--warning-bg:hsl(64, 100%, 6%);--warning-border:hsl(60, 100%, 9%);--warning-text:hsl(46, 87%, 65%);--error-bg:hsl(358, 76%, 10%);--error-border:hsl(357, 89%, 16%);--error-text:hsl(358, 100%, 81%)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]{background:var(--normal-bg);border-color:var(--normal-border);color:var(--normal-text)}[data-sonner-toaster][data-sonner-theme=dark] [data-sonner-toast] [data-close-button]:hover{background:var(--normal-bg-hover);border-color:var(--normal-border-hover)}[data-rich-colors=true][data-sonner-toast][data-type=success]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size:16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:first-child{animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}100%{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}100%{opacity:.15}}@media (prefers-reduced-motion){.sonner-loading-bar,[data-sonner-toast],[data-sonner-toast]>*{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}");let x=t=>{var e,n,o,i,l,c,u,d,m,h,g;let{invert:v,toast:y,unstyled:x,interacting:E,setHeights:R,visibleToasts:C,heights:S,index:k,toasts:A,expanded:T,removeToast:N,defaultRichColors:L,closeButton:D,style:P,cancelButtonStyle:M,actionButtonStyle:O,className:j="",descriptionClassName:B="",duration:I,position:F,gap:z,expandByDefault:W,classNames:H,icons:Y,closeButtonAriaLabel:_="Close toast"}=t,[V,X]=r.useState(null),[G,q]=r.useState(null),[K,U]=r.useState(!1),[Z,$]=r.useState(!1),[J,Q]=r.useState(!1),[tt,te]=r.useState(!1),[tn,tr]=r.useState(!1),[to,ta]=r.useState(0),[ti,ts]=r.useState(0),tl=r.useRef(y.duration||I||4e3),tc=r.useRef(null),tu=r.useRef(null),td=0===k,tf=k+1<=C,tp=y.type,tm=!1!==y.dismissible,th=y.className||"",tg=y.descriptionClassName||"",tv=r.useMemo(()=>S.findIndex(t=>t.toastId===y.id)||0,[S,y.id]),ty=r.useMemo(()=>{var t;return null!=(t=y.closeButton)?t:D},[y.closeButton,D]),tb=r.useMemo(()=>y.duration||I||4e3,[y.duration,I]),tw=r.useRef(0),tx=r.useRef(0),tE=r.useRef(0),tR=r.useRef(null),[tC,tS]=F.split("-"),tk=r.useMemo(()=>S.reduce((t,e,n)=>n>=tv?t:t+e.height,0),[S,tv]),tA=p(),tT=y.invert||v,tN="loading"===tp;tx.current=r.useMemo(()=>tv*z+tk,[tv,tk]),r.useEffect(()=>{tl.current=tb},[tb]),r.useEffect(()=>{U(!0)},[]),r.useEffect(()=>{let t=tu.current;if(t){let e=t.getBoundingClientRect().height;return ts(e),R(t=>[{toastId:y.id,height:e,position:y.position},...t]),()=>R(t=>t.filter(t=>t.toastId!==y.id))}},[R,y.id]),r.useLayoutEffect(()=>{if(!K)return;let t=tu.current,e=t.style.height;t.style.height="auto";let n=t.getBoundingClientRect().height;t.style.height=e,ts(n),R(t=>t.find(t=>t.toastId===y.id)?t.map(t=>t.toastId===y.id?{...t,height:n}:t):[{toastId:y.id,height:n,position:y.position},...t])},[K,y.title,y.description,R,y.id,y.jsx,y.action,y.cancel]);let tL=r.useCallback(()=>{$(!0),ta(tx.current),R(t=>t.filter(t=>t.toastId!==y.id)),setTimeout(()=>{N(y)},200)},[y,N,R,tx]);r.useEffect(()=>{let t;if((!y.promise||"loading"!==tp)&&y.duration!==1/0&&"loading"!==y.type)return T||E||tA?(()=>{if(tE.current{null==y.onAutoClose||y.onAutoClose.call(y,y),tL()},tl.current)),()=>clearTimeout(t)},[T,E,y,tp,tA,tL]),r.useEffect(()=>{y.delete&&(tL(),null==y.onDismiss||y.onDismiss.call(y,y))},[tL,y.delete]);let tD=y.icon||(null==Y?void 0:Y[tp])||a(tp);return r.createElement("li",{tabIndex:0,ref:tu,className:w(j,th,null==H?void 0:H.toast,null==y||null==(e=y.classNames)?void 0:e.toast,null==H?void 0:H.default,null==H?void 0:H[tp],null==y||null==(n=y.classNames)?void 0:n[tp]),"data-sonner-toast":"","data-rich-colors":null!=(h=y.richColors)?h:L,"data-styled":!(y.jsx||y.unstyled||x),"data-mounted":K,"data-promise":!!y.promise,"data-swiped":tn,"data-removed":Z,"data-visible":tf,"data-y-position":tC,"data-x-position":tS,"data-index":k,"data-front":td,"data-swiping":J,"data-dismissible":tm,"data-type":tp,"data-invert":tT,"data-swipe-out":tt,"data-swipe-direction":G,"data-expanded":!!(T||W&&K),style:{"--index":k,"--toasts-before":k,"--z-index":A.length-k,"--offset":"".concat(Z?to:tx.current,"px"),"--initial-height":W?"auto":"".concat(ti,"px"),...P,...y.style},onDragEnd:()=>{Q(!1),X(null),tR.current=null},onPointerDown:t=>{!tN&&tm&&(tc.current=new Date,ta(tx.current),t.target.setPointerCapture(t.pointerId),"BUTTON"!==t.target.tagName&&(Q(!0),tR.current={x:t.clientX,y:t.clientY}))},onPointerUp:()=>{var t,e,n,r,o;if(tt||!tm)return;tR.current=null;let a=Number((null==(t=tu.current)?void 0:t.style.getPropertyValue("--swipe-amount-x").replace("px",""))||0),i=Number((null==(e=tu.current)?void 0:e.style.getPropertyValue("--swipe-amount-y").replace("px",""))||0),s=new Date().getTime()-(null==(n=tc.current)?void 0:n.getTime()),l="x"===V?a:i,c=Math.abs(l)/s;if(Math.abs(l)>=45||c>.11){ta(tx.current),null==y.onDismiss||y.onDismiss.call(y,y),"x"===V?q(a>0?"right":"left"):q(i>0?"down":"up"),tL(),te(!0);return}null==(r=tu.current)||r.style.setProperty("--swipe-amount-x","0px"),null==(o=tu.current)||o.style.setProperty("--swipe-amount-y","0px"),tr(!1),Q(!1),X(null)},onPointerMove:e=>{var n,r,o,a;if(!tR.current||!tm||(null==(n=window.getSelection())?void 0:n.toString().length)>0)return;let i=e.clientY-tR.current.y,s=e.clientX-tR.current.x,l=null!=(a=t.swipeDirections)?a:function(t){let[e,n]=t.split("-"),r=[];return e&&r.push(e),n&&r.push(n),r}(F);!V&&(Math.abs(s)>1||Math.abs(i)>1)&&X(Math.abs(s)>Math.abs(i)?"x":"y");let c={x:0,y:0},u=t=>1/(1.5+Math.abs(t)/20);if("y"===V){if(l.includes("top")||l.includes("bottom"))if(l.includes("top")&&i<0||l.includes("bottom")&&i>0)c.y=i;else{let t=i*u(i);c.y=Math.abs(t)0)c.x=s;else{let t=s*u(s);c.x=Math.abs(t)0||Math.abs(c.y)>0)&&tr(!0),null==(r=tu.current)||r.style.setProperty("--swipe-amount-x","".concat(c.x,"px")),null==(o=tu.current)||o.style.setProperty("--swipe-amount-y","".concat(c.y,"px"))}},ty&&!y.jsx&&"loading"!==tp?r.createElement("button",{"aria-label":_,"data-disabled":tN,"data-close-button":!0,onClick:tN||!tm?()=>{}:()=>{tL(),null==y.onDismiss||y.onDismiss.call(y,y)},className:w(null==H?void 0:H.closeButton,null==y||null==(o=y.classNames)?void 0:o.closeButton)},null!=(g=null==Y?void 0:Y.close)?g:f):null,(tp||y.icon||y.promise)&&null!==y.icon&&((null==Y?void 0:Y[tp])!==null||y.icon)?r.createElement("div",{"data-icon":"",className:w(null==H?void 0:H.icon,null==y||null==(i=y.classNames)?void 0:i.icon)},y.promise||"loading"===y.type&&!y.icon?y.icon||function(){var t,e;return(null==Y?void 0:Y.loading)?r.createElement("div",{className:w(null==H?void 0:H.loader,null==y||null==(e=y.classNames)?void 0:e.loader,"sonner-loader"),"data-visible":"loading"===tp},Y.loading):r.createElement(s,{className:w(null==H?void 0:H.loader,null==y||null==(t=y.classNames)?void 0:t.loader),visible:"loading"===tp})}():null,"loading"!==y.type?tD:null):null,r.createElement("div",{"data-content":"",className:w(null==H?void 0:H.content,null==y||null==(l=y.classNames)?void 0:l.content)},r.createElement("div",{"data-title":"",className:w(null==H?void 0:H.title,null==y||null==(c=y.classNames)?void 0:c.title)},y.jsx?y.jsx:"function"==typeof y.title?y.title():y.title),y.description?r.createElement("div",{"data-description":"",className:w(B,tg,null==H?void 0:H.description,null==y||null==(u=y.classNames)?void 0:u.description)},"function"==typeof y.description?y.description():y.description):null),r.isValidElement(y.cancel)?y.cancel:y.cancel&&b(y.cancel)?r.createElement("button",{"data-button":!0,"data-cancel":!0,style:y.cancelButtonStyle||M,onClick:t=>{b(y.cancel)&&tm&&(null==y.cancel.onClick||y.cancel.onClick.call(y.cancel,t),tL())},className:w(null==H?void 0:H.cancelButton,null==y||null==(d=y.classNames)?void 0:d.cancelButton)},y.cancel.label):null,r.isValidElement(y.action)?y.action:y.action&&b(y.action)?r.createElement("button",{"data-button":!0,"data-action":!0,style:y.actionButtonStyle||O,onClick:t=>{b(y.action)&&(null==y.action.onClick||y.action.onClick.call(y.action,t),t.defaultPrevented||tL())},className:w(null==H?void 0:H.actionButton,null==y||null==(m=y.classNames)?void 0:m.actionButton)},y.action.label):null)};function E(){if("undefined"==typeof window||"undefined"==typeof document)return"ltr";let t=document.documentElement.getAttribute("dir");return"auto"!==t&&t?t:window.getComputedStyle(document.documentElement).direction}let R=r.forwardRef(function(t,e){let{invert:n,position:a="bottom-right",hotkey:i=["altKey","KeyT"],expand:s,closeButton:l,className:c,offset:u,mobileOffset:d,theme:f="light",richColors:p,duration:m,style:h,visibleToasts:v=3,toastOptions:y,dir:b=E(),gap:w=14,icons:R,containerAriaLabel:C="Notifications"}=t,[S,k]=r.useState([]),A=r.useMemo(()=>Array.from(new Set([a].concat(S.filter(t=>t.position).map(t=>t.position)))),[S,a]),[T,N]=r.useState([]),[L,D]=r.useState(!1),[P,M]=r.useState(!1),[O,j]=r.useState("system"!==f?f:"undefined"!=typeof window&&window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"),B=r.useRef(null),I=i.join("+").replace(/Key/g,"").replace(/Digit/g,""),F=r.useRef(null),z=r.useRef(!1),W=r.useCallback(t=>{k(e=>{var n;return(null==(n=e.find(e=>e.id===t.id))?void 0:n.delete)||g.dismiss(t.id),e.filter(e=>{let{id:n}=e;return n!==t.id})})},[]);return r.useEffect(()=>g.subscribe(t=>{if(t.dismiss)return void requestAnimationFrame(()=>{k(e=>e.map(e=>e.id===t.id?{...e,delete:!0}:e))});setTimeout(()=>{o.flushSync(()=>{k(e=>{let n=e.findIndex(e=>e.id===t.id);return -1!==n?[...e.slice(0,n),{...e[n],...t},...e.slice(n+1)]:[t,...e]})})})}),[S]),r.useEffect(()=>{if("system"!==f)return void j(f);if("system"===f&&(window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches?j("dark"):j("light")),"undefined"==typeof window)return;let t=window.matchMedia("(prefers-color-scheme: dark)");try{t.addEventListener("change",t=>{let{matches:e}=t;e?j("dark"):j("light")})}catch(e){t.addListener(t=>{let{matches:e}=t;try{e?j("dark"):j("light")}catch(t){console.error(t)}})}},[f]),r.useEffect(()=>{S.length<=1&&D(!1)},[S]),r.useEffect(()=>{let t=t=>{var e,n;i.every(e=>t[e]||t.code===e)&&(D(!0),null==(n=B.current)||n.focus()),"Escape"===t.code&&(document.activeElement===B.current||(null==(e=B.current)?void 0:e.contains(document.activeElement)))&&D(!1)};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[i]),r.useEffect(()=>{if(B.current)return()=>{F.current&&(F.current.focus({preventScroll:!0}),F.current=null,z.current=!1)}},[B.current]),r.createElement("section",{ref:e,"aria-label":"".concat(C," ").concat(I),tabIndex:-1,"aria-live":"polite","aria-relevant":"additions text","aria-atomic":"false",suppressHydrationWarning:!0},A.map((e,o)=>{var a;let[i,f]=e.split("-");return S.length?r.createElement("ol",{key:e,dir:"auto"===b?E():b,tabIndex:-1,ref:B,className:c,"data-sonner-toaster":!0,"data-sonner-theme":O,"data-y-position":i,"data-x-position":f,style:{"--front-toast-height":"".concat((null==(a=T[0])?void 0:a.height)||0,"px"),"--width":"".concat(356,"px"),"--gap":"".concat(w,"px"),...h,...function(t,e){let n={};return[t,e].forEach((t,e)=>{let r=1===e,o=r?"--mobile-offset":"--offset",a=r?"16px":"24px";function i(t){["top","right","bottom","left"].forEach(e=>{n["".concat(o,"-").concat(e)]="number"==typeof t?"".concat(t,"px"):t})}"number"==typeof t||"string"==typeof t?i(t):"object"==typeof t?["top","right","bottom","left"].forEach(e=>{void 0===t[e]?n["".concat(o,"-").concat(e)]=a:n["".concat(o,"-").concat(e)]="number"==typeof t[e]?"".concat(t[e],"px"):t[e]}):i(a)}),n}(u,d)},onBlur:t=>{z.current&&!t.currentTarget.contains(t.relatedTarget)&&(z.current=!1,F.current&&(F.current.focus({preventScroll:!0}),F.current=null))},onFocus:t=>{!(t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible)&&(z.current||(z.current=!0,F.current=t.relatedTarget))},onMouseEnter:()=>D(!0),onMouseMove:()=>D(!0),onMouseLeave:()=>{P||D(!1)},onDragEnd:()=>D(!1),onPointerDown:t=>{t.target instanceof HTMLElement&&"false"===t.target.dataset.dismissible||M(!0)},onPointerUp:()=>M(!1)},S.filter(t=>!t.position&&0===o||t.position===e).map((o,a)=>{var i,c;return r.createElement(x,{key:o.id,icons:R,index:a,toast:o,defaultRichColors:p,duration:null!=(i=null==y?void 0:y.duration)?i:m,className:null==y?void 0:y.className,descriptionClassName:null==y?void 0:y.descriptionClassName,invert:n,visibleToasts:v,closeButton:null!=(c=null==y?void 0:y.closeButton)?c:l,interacting:P,position:e,style:null==y?void 0:y.style,unstyled:null==y?void 0:y.unstyled,classNames:null==y?void 0:y.classNames,cancelButtonStyle:null==y?void 0:y.cancelButtonStyle,actionButtonStyle:null==y?void 0:y.actionButtonStyle,closeButtonAriaLabel:null==y?void 0:y.closeButtonAriaLabel,removeToast:W,toasts:S.filter(t=>t.position==o.position),heights:T.filter(t=>t.position==o.position),setHeights:N,expandByDefault:s,gap:w,expanded:L,swipeDirections:t.swipeDirections})})):null}))})},7489:(t,e,n)=>{n.d(e,{b:()=>c,w:()=>l});var r=n(2115),o=n(3655),a=n(5155),i="horizontal",s=["horizontal","vertical"],l=r.forwardRef((t,e)=>{var n;let{decorative:r,orientation:l=i,...c}=t,u=(n=l,s.includes(n))?l:i;return(0,a.jsx)(o.sG.div,{"data-orientation":u,...r?{role:"none"}:{"aria-orientation":"vertical"===u?u:void 0,role:"separator"},...c,ref:e})});l.displayName="Separator";var c=l},7900:(t,e,n)=>{n.d(e,{n:()=>d});var r=n(2115),o=n(6101),a=n(3655),i=n(9033),s=n(5155),l="focusScope.autoFocusOnMount",c="focusScope.autoFocusOnUnmount",u={bubbles:!1,cancelable:!0},d=r.forwardRef((t,e)=>{let{loop:n=!1,trapped:d=!1,onMountAutoFocus:g,onUnmountAutoFocus:v,...y}=t,[b,w]=r.useState(null),x=(0,i.c)(g),E=(0,i.c)(v),R=r.useRef(null),C=(0,o.s)(e,t=>w(t)),S=r.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;r.useEffect(()=>{if(d){let t=function(t){if(S.paused||!b)return;let e=t.target;b.contains(e)?R.current=e:m(R.current,{select:!0})},e=function(t){if(S.paused||!b)return;let e=t.relatedTarget;null!==e&&(b.contains(e)||m(R.current,{select:!0}))};document.addEventListener("focusin",t),document.addEventListener("focusout",e);let n=new MutationObserver(function(t){if(document.activeElement===document.body)for(let e of t)e.removedNodes.length>0&&m(b)});return b&&n.observe(b,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",t),document.removeEventListener("focusout",e),n.disconnect()}}},[d,b,S.paused]),r.useEffect(()=>{if(b){h.add(S);let t=document.activeElement;if(!b.contains(t)){let e=new CustomEvent(l,u);b.addEventListener(l,x),b.dispatchEvent(e),e.defaultPrevented||(function(t){let{select:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=document.activeElement;for(let r of t)if(m(r,{select:e}),document.activeElement!==n)return}(f(b).filter(t=>"A"!==t.tagName),{select:!0}),document.activeElement===t&&m(b))}return()=>{b.removeEventListener(l,x),setTimeout(()=>{let e=new CustomEvent(c,u);b.addEventListener(c,E),b.dispatchEvent(e),e.defaultPrevented||m(null!=t?t:document.body,{select:!0}),b.removeEventListener(c,E),h.remove(S)},0)}}},[b,x,E,S]);let k=r.useCallback(t=>{if(!n&&!d||S.paused)return;let e="Tab"===t.key&&!t.altKey&&!t.ctrlKey&&!t.metaKey,r=document.activeElement;if(e&&r){let e=t.currentTarget,[o,a]=function(t){let e=f(t);return[p(e,t),p(e.reverse(),t)]}(e);o&&a?t.shiftKey||r!==a?t.shiftKey&&r===o&&(t.preventDefault(),n&&m(a,{select:!0})):(t.preventDefault(),n&&m(o,{select:!0})):r===e&&t.preventDefault()}},[n,d,S.paused]);return(0,s.jsx)(a.sG.div,{tabIndex:-1,...y,ref:C,onKeyDown:k})});function f(t){let e=[],n=document.createTreeWalker(t,NodeFilter.SHOW_ELEMENT,{acceptNode:t=>{let e="INPUT"===t.tagName&&"hidden"===t.type;return t.disabled||t.hidden||e?NodeFilter.FILTER_SKIP:t.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)e.push(n.currentNode);return e}function p(t,e){for(let n of t)if(!function(t,e){let{upTo:n}=e;if("hidden"===getComputedStyle(t).visibility)return!0;for(;t&&(void 0===n||t!==n);){if("none"===getComputedStyle(t).display)return!0;t=t.parentElement}return!1}(n,{upTo:e}))return n}function m(t){let{select:e=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t&&t.focus){var n;let r=document.activeElement;t.focus({preventScroll:!0}),t!==r&&(n=t)instanceof HTMLInputElement&&"select"in n&&e&&t.select()}}d.displayName="FocusScope";var h=function(){let t=[];return{add(e){let n=t[0];e!==n&&(null==n||n.pause()),(t=g(t,e)).unshift(e)},remove(e){var n;null==(n=(t=g(t,e))[0])||n.resume()}}}();function g(t,e){let n=[...t],r=n.indexOf(e);return -1!==r&&n.splice(r,1),n}},8168:(t,e,n)=>{n.d(e,{Eq:()=>u});var r=function(t){return"undefined"==typeof document?null:(Array.isArray(t)?t[0]:t).ownerDocument.body},o=new WeakMap,a=new WeakMap,i={},s=0,l=function(t){return t&&(t.host||l(t.parentNode))},c=function(t,e,n,r){var c=(Array.isArray(t)?t:[t]).map(function(t){if(e.contains(t))return t;var n=l(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)}).filter(function(t){return!!t});i[n]||(i[n]=new WeakMap);var u=i[n],d=[],f=new Set,p=new Set(c),m=function(t){!t||f.has(t)||(f.add(t),m(t.parentNode))};c.forEach(m);var h=function(t){!t||p.has(t)||Array.prototype.forEach.call(t.children,function(t){if(f.has(t))h(t);else try{var e=t.getAttribute(r),i=null!==e&&"false"!==e,s=(o.get(t)||0)+1,l=(u.get(t)||0)+1;o.set(t,s),u.set(t,l),d.push(t),1===s&&i&&a.set(t,!0),1===l&&t.setAttribute(n,"true"),i||t.setAttribute(r,"true")}catch(e){console.error("aria-hidden: cannot operate on ",t,e)}})};return h(e),f.clear(),s++,function(){d.forEach(function(t){var e=o.get(t)-1,i=u.get(t)-1;o.set(t,e),u.set(t,i),e||(a.has(t)||t.removeAttribute(r),a.delete(t)),i||t.removeAttribute(n)}),--s||(o=new WeakMap,o=new WeakMap,a=new WeakMap,i={})}},u=function(t,e,n){void 0===n&&(n="data-aria-hidden");var o=Array.from(Array.isArray(t)?t:[t]),a=e||r(t);return a?(o.push.apply(o,Array.from(a.querySelectorAll("[aria-live], script"))),c(o,a,n,"aria-hidden")):function(){return null}}},9178:(t,e,n)=>{n.d(e,{qW:()=>f});var r,o=n(2115),a=n(5185),i=n(3655),s=n(6101),l=n(9033),c=n(5155),u="dismissableLayer.update",d=o.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),f=o.forwardRef((t,e)=>{var n,f;let{disableOutsidePointerEvents:h=!1,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:y,onInteractOutside:b,onDismiss:w,...x}=t,E=o.useContext(d),[R,C]=o.useState(null),S=null!=(f=null==R?void 0:R.ownerDocument)?f:null==(n=globalThis)?void 0:n.document,[,k]=o.useState({}),A=(0,s.s)(e,t=>C(t)),T=Array.from(E.layers),[N]=[...E.layersWithOutsidePointerEventsDisabled].slice(-1),L=T.indexOf(N),D=R?T.indexOf(R):-1,P=E.layersWithOutsidePointerEventsDisabled.size>0,M=D>=L,O=function(t){var e;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(e=globalThis)?void 0:e.document,r=(0,l.c)(t),a=o.useRef(!1),i=o.useRef(()=>{});return o.useEffect(()=>{let t=t=>{if(t.target&&!a.current){let e=function(){m("dismissableLayer.pointerDownOutside",r,o,{discrete:!0})},o={originalEvent:t};"touch"===t.pointerType?(n.removeEventListener("click",i.current),i.current=e,n.addEventListener("click",i.current,{once:!0})):e()}else n.removeEventListener("click",i.current);a.current=!1},e=window.setTimeout(()=>{n.addEventListener("pointerdown",t)},0);return()=>{window.clearTimeout(e),n.removeEventListener("pointerdown",t),n.removeEventListener("click",i.current)}},[n,r]),{onPointerDownCapture:()=>a.current=!0}}(t=>{let e=t.target,n=[...E.branches].some(t=>t.contains(e));M&&!n&&(null==v||v(t),null==b||b(t),t.defaultPrevented||null==w||w())},S),j=function(t){var e;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(e=globalThis)?void 0:e.document,r=(0,l.c)(t),a=o.useRef(!1);return o.useEffect(()=>{let t=t=>{t.target&&!a.current&&m("dismissableLayer.focusOutside",r,{originalEvent:t},{discrete:!1})};return n.addEventListener("focusin",t),()=>n.removeEventListener("focusin",t)},[n,r]),{onFocusCapture:()=>a.current=!0,onBlurCapture:()=>a.current=!1}}(t=>{let e=t.target;![...E.branches].some(t=>t.contains(e))&&(null==y||y(t),null==b||b(t),t.defaultPrevented||null==w||w())},S);return!function(t,e=globalThis?.document){let n=(0,l.c)(t);o.useEffect(()=>{let t=t=>{"Escape"===t.key&&n(t)};return e.addEventListener("keydown",t,{capture:!0}),()=>e.removeEventListener("keydown",t,{capture:!0})},[n,e])}(t=>{D===E.layers.size-1&&(null==g||g(t),!t.defaultPrevented&&w&&(t.preventDefault(),w()))},S),o.useEffect(()=>{if(R)return h&&(0===E.layersWithOutsidePointerEventsDisabled.size&&(r=S.body.style.pointerEvents,S.body.style.pointerEvents="none"),E.layersWithOutsidePointerEventsDisabled.add(R)),E.layers.add(R),p(),()=>{h&&1===E.layersWithOutsidePointerEventsDisabled.size&&(S.body.style.pointerEvents=r)}},[R,S,h,E]),o.useEffect(()=>()=>{R&&(E.layers.delete(R),E.layersWithOutsidePointerEventsDisabled.delete(R),p())},[R,E]),o.useEffect(()=>{let t=()=>k({});return document.addEventListener(u,t),()=>document.removeEventListener(u,t)},[]),(0,c.jsx)(i.sG.div,{...x,ref:A,style:{pointerEvents:P?M?"auto":"none":void 0,...t.style},onFocusCapture:(0,a.m)(t.onFocusCapture,j.onFocusCapture),onBlurCapture:(0,a.m)(t.onBlurCapture,j.onBlurCapture),onPointerDownCapture:(0,a.m)(t.onPointerDownCapture,O.onPointerDownCapture)})});function p(){let t=new CustomEvent(u);document.dispatchEvent(t)}function m(t,e,n,r){let{discrete:o}=r,a=n.originalEvent.target,s=new CustomEvent(t,{bubbles:!1,cancelable:!0,detail:n});e&&a.addEventListener(t,e,{once:!0}),o?(0,i.hO)(a,s):a.dispatchEvent(s)}f.displayName="DismissableLayer",o.forwardRef((t,e)=>{let n=o.useContext(d),r=o.useRef(null),a=(0,s.s)(e,r);return o.useEffect(()=>{let t=r.current;if(t)return n.branches.add(t),()=>{n.branches.delete(t)}},[n.branches]),(0,c.jsx)(i.sG.div,{...t,ref:a})}).displayName="DismissableLayerBranch"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/62-2bb67bacb7d964db.js b/transports/bifrost-http/ui/_next/static/chunks/62-2bb67bacb7d964db.js new file mode 100644 index 0000000000..1dae666dc1 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/62-2bb67bacb7d964db.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[62],{4582:(e,t,r)=>{r.d(t,{UC:()=>eD,In:()=>eP,q7:()=>eL,VF:()=>eH,p4:()=>eA,ZL:()=>eE,bL:()=>eN,wn:()=>eB,PP:()=>e_,l9:()=>eR,WT:()=>eI,LM:()=>eM});var n=r(2115),l=r(7650);function o(e,[t,r]){return Math.min(r,Math.max(t,e))}var a=r(5185),i=r(7328),s=r(6101),u=r(6081),d=r(4315),c=r(9178),p=r(2293),f=r(7900),v=r(1285),h=r(5152),m=r(4378),g=r(3655),w=r(9708),x=r(9033),y=r(5845),S=r(2712),b=r(5503),C=r(2564),j=r(8168),k=r(3795),T=r(5155),N=[" ","Enter","ArrowUp","ArrowDown"],R=[" ","Enter"],I="Select",[P,E,D]=(0,i.N)(I),[M,L]=(0,u.A)(I,[D,h.Bk]),A=(0,h.Bk)(),[H,_]=M(I),[B,V]=M(I),G=e=>{let{__scopeSelect:t,children:r,open:l,defaultOpen:o,onOpenChange:a,value:i,defaultValue:s,onValueChange:u,dir:c,name:p,autoComplete:f,disabled:m,required:g,form:w}=e,x=A(t),[S,b]=n.useState(null),[C,j]=n.useState(null),[k,N]=n.useState(!1),R=(0,d.jH)(c),[E,D]=(0,y.i)({prop:l,defaultProp:null!=o&&o,onChange:a,caller:I}),[M,L]=(0,y.i)({prop:i,defaultProp:s,onChange:u,caller:I}),_=n.useRef(null),V=!S||w||!!S.closest("form"),[G,F]=n.useState(new Set),K=Array.from(G).map(e=>e.props.value).join(";");return(0,T.jsx)(h.bL,{...x,children:(0,T.jsxs)(H,{required:g,scope:t,trigger:S,onTriggerChange:b,valueNode:C,onValueNodeChange:j,valueNodeHasChildren:k,onValueNodeHasChildrenChange:N,contentId:(0,v.B)(),value:M,onValueChange:L,open:E,onOpenChange:D,dir:R,triggerPointerDownPosRef:_,disabled:m,children:[(0,T.jsx)(P.Provider,{scope:t,children:(0,T.jsx)(B,{scope:e.__scopeSelect,onNativeOptionAdd:n.useCallback(e=>{F(t=>new Set(t).add(e))},[]),onNativeOptionRemove:n.useCallback(e=>{F(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:r})}),V?(0,T.jsxs)(eC,{"aria-hidden":!0,required:g,tabIndex:-1,name:p,autoComplete:f,value:M,onChange:e=>L(e.target.value),disabled:m,form:w,children:[void 0===M?(0,T.jsx)("option",{value:""}):null,Array.from(G)]},K):null]})})};G.displayName=I;var F="SelectTrigger",K=n.forwardRef((e,t)=>{let{__scopeSelect:r,disabled:l=!1,...o}=e,i=A(r),u=_(F,r),d=u.disabled||l,c=(0,s.s)(t,u.onTriggerChange),p=E(r),f=n.useRef("touch"),[v,m,w]=ek(e=>{let t=p().filter(e=>!e.disabled),r=t.find(e=>e.value===u.value),n=eT(t,e,r);void 0!==n&&u.onValueChange(n.value)}),x=e=>{d||(u.onOpenChange(!0),w()),e&&(u.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,T.jsx)(h.Mz,{asChild:!0,...i,children:(0,T.jsx)(g.sG.button,{type:"button",role:"combobox","aria-controls":u.contentId,"aria-expanded":u.open,"aria-required":u.required,"aria-autocomplete":"none",dir:u.dir,"data-state":u.open?"open":"closed",disabled:d,"data-disabled":d?"":void 0,"data-placeholder":ej(u.value)?"":void 0,...o,ref:c,onClick:(0,a.m)(o.onClick,e=>{e.currentTarget.focus(),"mouse"!==f.current&&x(e)}),onPointerDown:(0,a.m)(o.onPointerDown,e=>{f.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(x(e),e.preventDefault())}),onKeyDown:(0,a.m)(o.onKeyDown,e=>{let t=""!==v.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||m(e.key),(!t||" "!==e.key)&&N.includes(e.key)&&(x(),e.preventDefault())})})})});K.displayName=F;var O="SelectValue",W=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:n,style:l,children:o,placeholder:a="",...i}=e,u=_(O,r),{onValueNodeHasChildrenChange:d}=u,c=void 0!==o,p=(0,s.s)(t,u.onValueNodeChange);return(0,S.N)(()=>{d(c)},[d,c]),(0,T.jsx)(g.sG.span,{...i,ref:p,style:{pointerEvents:"none"},children:ej(u.value)?(0,T.jsx)(T.Fragment,{children:a}):o})});W.displayName=O;var U=n.forwardRef((e,t)=>{let{__scopeSelect:r,children:n,...l}=e;return(0,T.jsx)(g.sG.span,{"aria-hidden":!0,...l,ref:t,children:n||"▼"})});U.displayName="SelectIcon";var z=e=>(0,T.jsx)(m.Z,{asChild:!0,...e});z.displayName="SelectPortal";var q="SelectContent",Z=n.forwardRef((e,t)=>{let r=_(q,e.__scopeSelect),[o,a]=n.useState();return((0,S.N)(()=>{a(new DocumentFragment)},[]),r.open)?(0,T.jsx)(J,{...e,ref:t}):o?l.createPortal((0,T.jsx)(X,{scope:e.__scopeSelect,children:(0,T.jsx)(P.Slot,{scope:e.__scopeSelect,children:(0,T.jsx)("div",{children:e.children})})}),o):null});Z.displayName=q;var[X,Y]=M(q),Q=(0,w.TL)("SelectContent.RemoveScroll"),J=n.forwardRef((e,t)=>{let{__scopeSelect:r,position:l="item-aligned",onCloseAutoFocus:o,onEscapeKeyDown:i,onPointerDownOutside:u,side:d,sideOffset:v,align:h,alignOffset:m,arrowPadding:g,collisionBoundary:w,collisionPadding:x,sticky:y,hideWhenDetached:S,avoidCollisions:b,...C}=e,N=_(q,r),[R,I]=n.useState(null),[P,D]=n.useState(null),M=(0,s.s)(t,e=>I(e)),[L,A]=n.useState(null),[H,B]=n.useState(null),V=E(r),[G,F]=n.useState(!1),K=n.useRef(!1);n.useEffect(()=>{if(R)return(0,j.Eq)(R)},[R]),(0,p.Oh)();let O=n.useCallback(e=>{let[t,...r]=V().map(e=>e.ref.current),[n]=r.slice(-1),l=document.activeElement;for(let r of e)if(r===l||(null==r||r.scrollIntoView({block:"nearest"}),r===t&&P&&(P.scrollTop=0),r===n&&P&&(P.scrollTop=P.scrollHeight),null==r||r.focus(),document.activeElement!==l))return},[V,P]),W=n.useCallback(()=>O([L,R]),[O,L,R]);n.useEffect(()=>{G&&W()},[G,W]);let{onOpenChange:U,triggerPointerDownPosRef:z}=N;n.useEffect(()=>{if(R){let e={x:0,y:0},t=t=>{var r,n,l,o;e={x:Math.abs(Math.round(t.pageX)-(null!=(l=null==(r=z.current)?void 0:r.x)?l:0)),y:Math.abs(Math.round(t.pageY)-(null!=(o=null==(n=z.current)?void 0:n.y)?o:0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():R.contains(r.target)||U(!1),document.removeEventListener("pointermove",t),z.current=null};return null!==z.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[R,U,z]),n.useEffect(()=>{let e=()=>U(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[U]);let[Z,Y]=ek(e=>{let t=V().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),n=eT(t,e,r);n&&setTimeout(()=>n.ref.current.focus())}),J=n.useCallback((e,t,r)=>{let n=!K.current&&!r;(void 0!==N.value&&N.value===t||n)&&(A(e),n&&(K.current=!0))},[N.value]),et=n.useCallback(()=>null==R?void 0:R.focus(),[R]),er=n.useCallback((e,t,r)=>{let n=!K.current&&!r;(void 0!==N.value&&N.value===t||n)&&B(e)},[N.value]),en="popper"===l?ee:$,el=en===ee?{side:d,sideOffset:v,align:h,alignOffset:m,arrowPadding:g,collisionBoundary:w,collisionPadding:x,sticky:y,hideWhenDetached:S,avoidCollisions:b}:{};return(0,T.jsx)(X,{scope:r,content:R,viewport:P,onViewportChange:D,itemRefCallback:J,selectedItem:L,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:W,selectedItemText:H,position:l,isPositioned:G,searchRef:Z,children:(0,T.jsx)(k.A,{as:Q,allowPinchZoom:!0,children:(0,T.jsx)(f.n,{asChild:!0,trapped:N.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,a.m)(o,e=>{var t;null==(t=N.trigger)||t.focus({preventScroll:!0}),e.preventDefault()}),children:(0,T.jsx)(c.qW,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:i,onPointerDownOutside:u,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>N.onOpenChange(!1),children:(0,T.jsx)(en,{role:"listbox",id:N.contentId,"data-state":N.open?"open":"closed",dir:N.dir,onContextMenu:e=>e.preventDefault(),...C,...el,onPlaced:()=>F(!0),ref:M,style:{display:"flex",flexDirection:"column",outline:"none",...C.style},onKeyDown:(0,a.m)(C.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||Y(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=V().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,n=t.indexOf(r);t=t.slice(n+1)}setTimeout(()=>O(t)),e.preventDefault()}})})})})})})});J.displayName="SelectContentImpl";var $=n.forwardRef((e,t)=>{let{__scopeSelect:r,onPlaced:l,...a}=e,i=_(q,r),u=Y(q,r),[d,c]=n.useState(null),[p,f]=n.useState(null),v=(0,s.s)(t,e=>f(e)),h=E(r),m=n.useRef(!1),w=n.useRef(!0),{viewport:x,selectedItem:y,selectedItemText:b,focusSelectedItem:C}=u,j=n.useCallback(()=>{if(i.trigger&&i.valueNode&&d&&p&&x&&y&&b){let e=i.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),r=i.valueNode.getBoundingClientRect(),n=b.getBoundingClientRect();if("rtl"!==i.dir){let l=n.left-t.left,a=r.left-l,i=e.left-a,s=e.width+i,u=Math.max(s,t.width),c=o(a,[10,Math.max(10,window.innerWidth-10-u)]);d.style.minWidth=s+"px",d.style.left=c+"px"}else{let l=t.right-n.right,a=window.innerWidth-r.right-l,i=window.innerWidth-e.right-a,s=e.width+i,u=Math.max(s,t.width),c=o(a,[10,Math.max(10,window.innerWidth-10-u)]);d.style.minWidth=s+"px",d.style.right=c+"px"}let a=h(),s=window.innerHeight-20,u=x.scrollHeight,c=window.getComputedStyle(p),f=parseInt(c.borderTopWidth,10),v=parseInt(c.paddingTop,10),g=parseInt(c.borderBottomWidth,10),w=f+v+u+parseInt(c.paddingBottom,10)+g,S=Math.min(5*y.offsetHeight,w),C=window.getComputedStyle(x),j=parseInt(C.paddingTop,10),k=parseInt(C.paddingBottom,10),T=e.top+e.height/2-10,N=y.offsetHeight/2,R=f+v+(y.offsetTop+N);if(R<=T){let e=a.length>0&&y===a[a.length-1].ref.current;d.style.bottom="0px";let t=Math.max(s-T,N+(e?k:0)+(p.clientHeight-x.offsetTop-x.offsetHeight)+g);d.style.height=R+t+"px"}else{let e=a.length>0&&y===a[0].ref.current;d.style.top="0px";let t=Math.max(T,f+x.offsetTop+(e?j:0)+N);d.style.height=t+(w-R)+"px",x.scrollTop=R-T+x.offsetTop}d.style.margin="".concat(10,"px 0"),d.style.minHeight=S+"px",d.style.maxHeight=s+"px",null==l||l(),requestAnimationFrame(()=>m.current=!0)}},[h,i.trigger,i.valueNode,d,p,x,y,b,i.dir,l]);(0,S.N)(()=>j(),[j]);let[k,N]=n.useState();(0,S.N)(()=>{p&&N(window.getComputedStyle(p).zIndex)},[p]);let R=n.useCallback(e=>{e&&!0===w.current&&(j(),null==C||C(),w.current=!1)},[j,C]);return(0,T.jsx)(et,{scope:r,contentWrapper:d,shouldExpandOnScrollRef:m,onScrollButtonChange:R,children:(0,T.jsx)("div",{ref:c,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:k},children:(0,T.jsx)(g.sG.div,{...a,ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...a.style}})})})});$.displayName="SelectItemAlignedPosition";var ee=n.forwardRef((e,t)=>{let{__scopeSelect:r,align:n="start",collisionPadding:l=10,...o}=e,a=A(r);return(0,T.jsx)(h.UC,{...a,...o,ref:t,align:n,collisionPadding:l,style:{boxSizing:"border-box",...o.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});ee.displayName="SelectPopperPosition";var[et,er]=M(q,{}),en="SelectViewport",el=n.forwardRef((e,t)=>{let{__scopeSelect:r,nonce:l,...o}=e,i=Y(en,r),u=er(en,r),d=(0,s.s)(t,i.onViewportChange),c=n.useRef(0);return(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:l}),(0,T.jsx)(P.Slot,{scope:r,children:(0,T.jsx)(g.sG.div,{"data-radix-select-viewport":"",role:"presentation",...o,ref:d,style:{position:"relative",flex:1,overflow:"hidden auto",...o.style},onScroll:(0,a.m)(o.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:n}=u;if((null==n?void 0:n.current)&&r){let e=Math.abs(c.current-t.scrollTop);if(e>0){let n=window.innerHeight-20,l=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(l0?i:0,r.style.justifyContent="flex-end")}}}c.current=t.scrollTop})})})]})});el.displayName=en;var eo="SelectGroup",[ea,ei]=M(eo);n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=(0,v.B)();return(0,T.jsx)(ea,{scope:r,id:l,children:(0,T.jsx)(g.sG.div,{role:"group","aria-labelledby":l,...n,ref:t})})}).displayName=eo;var es="SelectLabel";n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=ei(es,r);return(0,T.jsx)(g.sG.div,{id:l.id,...n,ref:t})}).displayName=es;var eu="SelectItem",[ed,ec]=M(eu),ep=n.forwardRef((e,t)=>{let{__scopeSelect:r,value:l,disabled:o=!1,textValue:i,...u}=e,d=_(eu,r),c=Y(eu,r),p=d.value===l,[f,h]=n.useState(null!=i?i:""),[m,w]=n.useState(!1),x=(0,s.s)(t,e=>{var t;return null==(t=c.itemRefCallback)?void 0:t.call(c,e,l,o)}),y=(0,v.B)(),S=n.useRef("touch"),b=()=>{o||(d.onValueChange(l),d.onOpenChange(!1))};if(""===l)throw Error("A must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,T.jsx)(ed,{scope:r,value:l,disabled:o,textId:y,isSelected:p,onItemTextChange:n.useCallback(e=>{h(t=>{var r;return t||(null!=(r=null==e?void 0:e.textContent)?r:"").trim()})},[]),children:(0,T.jsx)(P.ItemSlot,{scope:r,value:l,disabled:o,textValue:f,children:(0,T.jsx)(g.sG.div,{role:"option","aria-labelledby":y,"data-highlighted":m?"":void 0,"aria-selected":p&&m,"data-state":p?"checked":"unchecked","aria-disabled":o||void 0,"data-disabled":o?"":void 0,tabIndex:o?void 0:-1,...u,ref:x,onFocus:(0,a.m)(u.onFocus,()=>w(!0)),onBlur:(0,a.m)(u.onBlur,()=>w(!1)),onClick:(0,a.m)(u.onClick,()=>{"mouse"!==S.current&&b()}),onPointerUp:(0,a.m)(u.onPointerUp,()=>{"mouse"===S.current&&b()}),onPointerDown:(0,a.m)(u.onPointerDown,e=>{S.current=e.pointerType}),onPointerMove:(0,a.m)(u.onPointerMove,e=>{if(S.current=e.pointerType,o){var t;null==(t=c.onItemLeave)||t.call(c)}else"mouse"===S.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,a.m)(u.onPointerLeave,e=>{if(e.currentTarget===document.activeElement){var t;null==(t=c.onItemLeave)||t.call(c)}}),onKeyDown:(0,a.m)(u.onKeyDown,e=>{var t;((null==(t=c.searchRef)?void 0:t.current)===""||" "!==e.key)&&(R.includes(e.key)&&b()," "===e.key&&e.preventDefault())})})})})});ep.displayName=eu;var ef="SelectItemText",ev=n.forwardRef((e,t)=>{let{__scopeSelect:r,className:o,style:a,...i}=e,u=_(ef,r),d=Y(ef,r),c=ec(ef,r),p=V(ef,r),[f,v]=n.useState(null),h=(0,s.s)(t,e=>v(e),c.onItemTextChange,e=>{var t;return null==(t=d.itemTextRefCallback)?void 0:t.call(d,e,c.value,c.disabled)}),m=null==f?void 0:f.textContent,w=n.useMemo(()=>(0,T.jsx)("option",{value:c.value,disabled:c.disabled,children:m},c.value),[c.disabled,c.value,m]),{onNativeOptionAdd:x,onNativeOptionRemove:y}=p;return(0,S.N)(()=>(x(w),()=>y(w)),[x,y,w]),(0,T.jsxs)(T.Fragment,{children:[(0,T.jsx)(g.sG.span,{id:c.textId,...i,ref:h}),c.isSelected&&u.valueNode&&!u.valueNodeHasChildren?l.createPortal(i.children,u.valueNode):null]})});ev.displayName=ef;var eh="SelectItemIndicator",em=n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return ec(eh,r).isSelected?(0,T.jsx)(g.sG.span,{"aria-hidden":!0,...n,ref:t}):null});em.displayName=eh;var eg="SelectScrollUpButton",ew=n.forwardRef((e,t)=>{let r=Y(eg,e.__scopeSelect),l=er(eg,e.__scopeSelect),[o,a]=n.useState(!1),i=(0,s.s)(t,l.onScrollButtonChange);return(0,S.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){a(t.scrollTop>0)},t=r.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),o?(0,T.jsx)(eS,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});ew.displayName=eg;var ex="SelectScrollDownButton",ey=n.forwardRef((e,t)=>{let r=Y(ex,e.__scopeSelect),l=er(ex,e.__scopeSelect),[o,a]=n.useState(!1),i=(0,s.s)(t,l.onScrollButtonChange);return(0,S.N)(()=>{if(r.viewport&&r.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;a(Math.ceil(t.scrollTop)t.removeEventListener("scroll",e)}},[r.viewport,r.isPositioned]),o?(0,T.jsx)(eS,{...e,ref:i,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=r;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});ey.displayName=ex;var eS=n.forwardRef((e,t)=>{let{__scopeSelect:r,onAutoScroll:l,...o}=e,i=Y("SelectScrollButton",r),s=n.useRef(null),u=E(r),d=n.useCallback(()=>{null!==s.current&&(window.clearInterval(s.current),s.current=null)},[]);return n.useEffect(()=>()=>d(),[d]),(0,S.N)(()=>{var e;let t=u().find(e=>e.ref.current===document.activeElement);null==t||null==(e=t.ref.current)||e.scrollIntoView({block:"nearest"})},[u]),(0,T.jsx)(g.sG.div,{"aria-hidden":!0,...o,ref:t,style:{flexShrink:0,...o.style},onPointerDown:(0,a.m)(o.onPointerDown,()=>{null===s.current&&(s.current=window.setInterval(l,50))}),onPointerMove:(0,a.m)(o.onPointerMove,()=>{var e;null==(e=i.onItemLeave)||e.call(i),null===s.current&&(s.current=window.setInterval(l,50))}),onPointerLeave:(0,a.m)(o.onPointerLeave,()=>{d()})})});n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e;return(0,T.jsx)(g.sG.div,{"aria-hidden":!0,...n,ref:t})}).displayName="SelectSeparator";var eb="SelectArrow";n.forwardRef((e,t)=>{let{__scopeSelect:r,...n}=e,l=A(r),o=_(eb,r),a=Y(eb,r);return o.open&&"popper"===a.position?(0,T.jsx)(h.i3,{...l,...n,ref:t}):null}).displayName=eb;var eC=n.forwardRef((e,t)=>{let{__scopeSelect:r,value:l,...o}=e,a=n.useRef(null),i=(0,s.s)(t,a),u=(0,b.Z)(l);return n.useEffect(()=>{let e=a.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(u!==l&&t){let r=new Event("change",{bubbles:!0});t.call(e,l),e.dispatchEvent(r)}},[u,l]),(0,T.jsx)(g.sG.select,{...o,style:{...C.Qg,...o.style},ref:i,defaultValue:l})});function ej(e){return""===e||void 0===e}function ek(e){let t=(0,x.c)(e),r=n.useRef(""),l=n.useRef(0),o=n.useCallback(e=>{let n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(l.current),""!==t&&(l.current=window.setTimeout(()=>e(""),1e3))}(n)},[t]),a=n.useCallback(()=>{r.current="",window.clearTimeout(l.current)},[]);return n.useEffect(()=>()=>window.clearTimeout(l.current),[]),[r,o,a]}function eT(e,t,r){var n,l;let o=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,i=(n=e,l=Math.max(a,0),n.map((e,t)=>n[(l+t)%n.length]));1===o.length&&(i=i.filter(e=>e!==r));let s=i.find(e=>e.textValue.toLowerCase().startsWith(o.toLowerCase()));return s!==r?s:void 0}eC.displayName="SelectBubbleInput";var eN=G,eR=K,eI=W,eP=U,eE=z,eD=Z,eM=el,eL=ep,eA=ev,eH=em,e_=ew,eB=ey},5196:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(9946).A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},6474:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(9946).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},7863:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(9946).A)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]])}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/822-002f831ce65c92b1.js b/transports/bifrost-http/ui/_next/static/chunks/822-002f831ce65c92b1.js new file mode 100644 index 0000000000..a871bb6cf4 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/822-002f831ce65c92b1.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[822],{704:(e,t,r)=>{r.d(t,{B8:()=>R,UC:()=>j,bL:()=>I,l9:()=>F});var n=r(2115),a=r(5185),o=r(6081),s=r(9196),l=r(8905),i=r(3655),c=r(4315),u=r(5845),d=r(1285),m=r(5155),f="Tabs",[h,p]=(0,o.A)(f,[s.RG]),v=(0,s.RG)(),[b,y]=h(f),g=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,onValueChange:a,defaultValue:o,orientation:s="horizontal",dir:l,activationMode:h="automatic",...p}=e,v=(0,c.jH)(l),[y,g]=(0,u.i)({prop:n,onChange:a,defaultProp:null!=o?o:"",caller:f});return(0,m.jsx)(b,{scope:r,baseId:(0,d.B)(),value:y,onValueChange:g,orientation:s,dir:v,activationMode:h,children:(0,m.jsx)(i.sG.div,{dir:v,"data-orientation":s,...p,ref:t})})});g.displayName=f;var w="TabsList",C=n.forwardRef((e,t)=>{let{__scopeTabs:r,loop:n=!0,...a}=e,o=y(w,r),l=v(r);return(0,m.jsx)(s.bL,{asChild:!0,...l,orientation:o.orientation,dir:o.dir,loop:n,children:(0,m.jsx)(i.sG.div,{role:"tablist","aria-orientation":o.orientation,...a,ref:t})})});C.displayName=w;var T="TabsTrigger",E=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:n,disabled:o=!1,...l}=e,c=y(T,r),u=v(r),d=x(c.baseId,n),f=S(c.baseId,n),h=n===c.value;return(0,m.jsx)(s.q7,{asChild:!0,...u,focusable:!o,active:h,children:(0,m.jsx)(i.sG.button,{type:"button",role:"tab","aria-selected":h,"aria-controls":f,"data-state":h?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:d,...l,ref:t,onMouseDown:(0,a.m)(e.onMouseDown,e=>{o||0!==e.button||!1!==e.ctrlKey?e.preventDefault():c.onValueChange(n)}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&c.onValueChange(n)}),onFocus:(0,a.m)(e.onFocus,()=>{let e="manual"!==c.activationMode;h||o||!e||c.onValueChange(n)})})})});E.displayName=T;var A="TabsContent",k=n.forwardRef((e,t)=>{let{__scopeTabs:r,value:a,forceMount:o,children:s,...c}=e,u=y(A,r),d=x(u.baseId,a),f=S(u.baseId,a),h=a===u.value,p=n.useRef(h);return n.useEffect(()=>{let e=requestAnimationFrame(()=>p.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,m.jsx)(l.C,{present:o||h,children:r=>{let{present:n}=r;return(0,m.jsx)(i.sG.div,{"data-state":h?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!n,id:f,tabIndex:0,...c,ref:t,style:{...e.style,animationDuration:p.current?"0s":void 0},children:n&&s})}})});function x(e,t){return"".concat(e,"-trigger-").concat(t)}function S(e,t){return"".concat(e,"-content-").concat(t)}k.displayName=A;var I=g,R=C,F=E,j=k},1243:(e,t,r)=>{r.d(t,{A:()=>n});let n=(0,r(9946).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},1362:(e,t,r)=>{r.d(t,{D:()=>c,N:()=>u});var n=r(2115),a=(e,t,r,n,a,o,s,l)=>{let i=document.documentElement,c=["light","dark"];function u(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?a.map(e=>o[e]||e):a;r?(i.classList.remove(...n),i.classList.add(o&&o[t]?o[t]:t)):i.setAttribute(e,t)}),r=t,l&&c.includes(r)&&(i.style.colorScheme=r)}if(n)u(n);else try{let e=localStorage.getItem(t)||r,n=s&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(n)}catch(e){}},o=["light","dark"],s="(prefers-color-scheme: dark)",l=n.createContext(void 0),i={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=n.useContext(l))?e:i},u=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(m,{...e}),d=["light","dark"],m=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:a=!0,enableColorScheme:i=!0,storageKey:c="theme",themes:u=d,defaultTheme:m=a?"system":"light",attribute:b="data-theme",value:y,children:g,nonce:w,scriptProps:C}=e,[T,E]=n.useState(()=>h(c,m)),[A,k]=n.useState(()=>"system"===T?v():T),x=y?Object.values(y):u,S=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&a&&(t=v());let n=y?y[t]:t,s=r?p(w):null,l=document.documentElement,c=e=>{"class"===e?(l.classList.remove(...x),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(b)?b.forEach(c):c(b),i){let e=o.includes(m)?m:null,r=o.includes(t)?t:e;l.style.colorScheme=r}null==s||s()},[w]),I=n.useCallback(e=>{let t="function"==typeof e?e(T):e;E(t);try{localStorage.setItem(c,t)}catch(e){}},[T]),R=n.useCallback(e=>{k(v(e)),"system"===T&&a&&!t&&S("system")},[T,t]);n.useEffect(()=>{let e=window.matchMedia(s);return e.addListener(R),R(e),()=>e.removeListener(R)},[R]),n.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?E(e.newValue):I(m))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[I]),n.useEffect(()=>{S(null!=t?t:T)},[t,T]);let F=n.useMemo(()=>({theme:T,setTheme:I,forcedTheme:t,resolvedTheme:"system"===T?A:T,themes:a?[...u,"system"]:u,systemTheme:a?A:void 0}),[T,I,t,A,a,u]);return n.createElement(l.Provider,{value:F},n.createElement(f,{forcedTheme:t,storageKey:c,attribute:b,enableSystem:a,enableColorScheme:i,defaultTheme:m,value:y,themes:u,nonce:w,scriptProps:C}),g)},f=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:o,enableSystem:s,enableColorScheme:l,defaultTheme:i,value:c,themes:u,nonce:d,scriptProps:m}=e,f=JSON.stringify([o,r,i,t,u,c,s,l]).slice(1,-1);return n.createElement("script",{...m,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(a.toString(),")(").concat(f,")")}})}),h=(e,t)=>{let r;try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},v=e=>(e||(e=window.matchMedia(s)),e.matches?"dark":"light")},9196:(e,t,r)=>{r.d(t,{RG:()=>C,bL:()=>F,q7:()=>j});var n=r(2115),a=r(5185),o=r(7328),s=r(6101),l=r(6081),i=r(1285),c=r(3655),u=r(9033),d=r(5845),m=r(4315),f=r(5155),h="rovingFocusGroup.onEntryFocus",p={bubbles:!1,cancelable:!0},v="RovingFocusGroup",[b,y,g]=(0,o.N)(v),[w,C]=(0,l.A)(v,[g]),[T,E]=w(v),A=n.forwardRef((e,t)=>(0,f.jsx)(b.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,f.jsx)(b.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,f.jsx)(k,{...e,ref:t})})}));A.displayName=v;var k=n.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,orientation:o,loop:l=!1,dir:i,currentTabStopId:b,defaultCurrentTabStopId:g,onCurrentTabStopIdChange:w,onEntryFocus:C,preventScrollOnEntryFocus:E=!1,...A}=e,k=n.useRef(null),x=(0,s.s)(t,k),S=(0,m.jH)(i),[I,F]=(0,d.i)({prop:b,defaultProp:null!=g?g:null,onChange:w,caller:v}),[j,L]=n.useState(!1),D=(0,u.c)(C),G=y(r),M=n.useRef(!1),[K,N]=n.useState(0);return n.useEffect(()=>{let e=k.current;if(e)return e.addEventListener(h,D),()=>e.removeEventListener(h,D)},[D]),(0,f.jsx)(T,{scope:r,orientation:o,dir:S,loop:l,currentTabStopId:I,onItemFocus:n.useCallback(e=>F(e),[F]),onItemShiftTab:n.useCallback(()=>L(!0),[]),onFocusableItemAdd:n.useCallback(()=>N(e=>e+1),[]),onFocusableItemRemove:n.useCallback(()=>N(e=>e-1),[]),children:(0,f.jsx)(c.sG.div,{tabIndex:j||0===K?-1:0,"data-orientation":o,...A,ref:x,style:{outline:"none",...e.style},onMouseDown:(0,a.m)(e.onMouseDown,()=>{M.current=!0}),onFocus:(0,a.m)(e.onFocus,e=>{let t=!M.current;if(e.target===e.currentTarget&&t&&!j){let t=new CustomEvent(h,p);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=G().filter(e=>e.focusable);R([e.find(e=>e.active),e.find(e=>e.id===I),...e].filter(Boolean).map(e=>e.ref.current),E)}}M.current=!1}),onBlur:(0,a.m)(e.onBlur,()=>L(!1))})})}),x="RovingFocusGroupItem",S=n.forwardRef((e,t)=>{let{__scopeRovingFocusGroup:r,focusable:o=!0,active:s=!1,tabStopId:l,children:u,...d}=e,m=(0,i.B)(),h=l||m,p=E(x,r),v=p.currentTabStopId===h,g=y(r),{onFocusableItemAdd:w,onFocusableItemRemove:C,currentTabStopId:T}=p;return n.useEffect(()=>{if(o)return w(),()=>C()},[o,w,C]),(0,f.jsx)(b.ItemSlot,{scope:r,id:h,focusable:o,active:s,children:(0,f.jsx)(c.sG.span,{tabIndex:v?0:-1,"data-orientation":p.orientation,...d,ref:t,onMouseDown:(0,a.m)(e.onMouseDown,e=>{o?p.onItemFocus(h):e.preventDefault()}),onFocus:(0,a.m)(e.onFocus,()=>p.onItemFocus(h)),onKeyDown:(0,a.m)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void p.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,r){var n;let a=(n=e.key,"rtl"!==r?n:"ArrowLeft"===n?"ArrowRight":"ArrowRight"===n?"ArrowLeft":n);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(a))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(a)))return I[a]}(e,p.orientation,p.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let r=g().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)r.reverse();else if("prev"===t||"next"===t){"prev"===t&&r.reverse();let n=r.indexOf(e.currentTarget);r=p.loop?function(e,t){return e.map((r,n)=>e[(t+n)%e.length])}(r,n+1):r.slice(n+1)}setTimeout(()=>R(r))}}),children:"function"==typeof u?u({isCurrentTabStop:v,hasTabStop:null!=T}):u})})});S.displayName=x;var I={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function R(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=document.activeElement;for(let n of e)if(n===r||(n.focus({preventScroll:t}),document.activeElement!==r))return}var F=A,j=S}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/830-ff62672a2ba99b18.js b/transports/bifrost-http/ui/_next/static/chunks/830-ff62672a2ba99b18.js new file mode 100644 index 0000000000..52bb0dafe6 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/830-ff62672a2ba99b18.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[830],{4432:(A,E,C)=>{C.d(E,{FO:()=>w});var R=C(5155);C(2115);var g=C(1362);let i={xs:24,sm:32,md:40,lg:48,xl:64},B=A=>"number"==typeof A?A:i[A]||i.md,I={anthropic:A=>{let{size:E="md",className:C=""}=A,{resolvedTheme:i}=(0,g.D)(),I=B(E);return"light"==i?(0,R.jsx)("svg",{width:I,height:I,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.1315 4.10742H20.335L28 23.3341H23.7965L16.1315 4.10742ZM7.66383 4.10742H12.0587L19.7237 23.3341H15.4373L13.8705 19.2963H5.85317L4.28517 23.3329H0L7.665 4.10976L7.66383 4.10742ZM12.4845 15.7263L9.86183 8.96892L7.23917 15.7274H12.4833L12.4845 15.7263Z",fill:"black"})}):(0,R.jsx)("svg",{width:I,height:I,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.1315 4.10645H20.335L28 23.3331H23.7965L16.1315 4.10645ZM7.66383 4.10645H12.0587L19.7237 23.3331H15.4373L13.8705 19.2953H5.85317L4.28517 23.3319H0L7.665 4.10878L7.66383 4.10645ZM12.4845 15.7253L9.86183 8.96795L7.23917 15.7264H12.4833L12.4845 15.7253Z",fill:"white"})})},azure:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",xlinkHref:"http://www.w3.org/1999/xlink",className:C,children:[(0,R.jsx)("g",{clipPath:"url(#clip0_2482_3252)",children:(0,R.jsx)("path",{d:"M28 0H0V28H28V0Z",fill:"url(#pattern0_2482_3252)"})}),(0,R.jsxs)("defs",{children:[(0,R.jsx)("pattern",{id:"pattern0_2482_3252",patternContentUnits:"objectBoundingBox",width:"1",height:"1",children:(0,R.jsx)("use",{xlinkHref:"#image0_2482_3252",transform:"scale(0.00166667)"})}),(0,R.jsx)("clipPath",{id:"clip0_2482_3252",children:(0,R.jsx)("rect",{width:"28",height:"28",fill:"white"})}),(0,R.jsx)("image",{id:"image0_2482_3252",width:"600",height:"600",preserveAspectRatio:"none",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAlgAAAJYCAYAAAC+ZpjcAAAACXBIWXMAAAPoAAAD6AG1e1JrAAAgAElEQVR4nOydB1RU19aAN70zjW5XOkqHYZhKU+lFozH503sx1mCJvTfE3ls0vdeXl2ZiAQUs0Zj68vLSY6WDNdn/OufODDO00aAB4v7W+haIQoiPd+fLuefuA0AQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEEQBEFYxsrKqlUJgiAIgiCIawwoSxIEQRAEQRBtYCmkrK2tW/VqsG7m1WJ9FRLdj+v7v93V/JS0/U+knyeCIAjiutJmTFkD19rm6pSI3Mx1F4HYzZ3r7urGFTm7ct2dnLmuzk1K3CVtKnWTgNRd1Koebvr3RVIQi9tWIpFZUEJeR2XNlIrELZTpZe8bfkba0kMq48pkrSj1hB5+fczs6Wuu+e/3MrOnXy/wksj0SrgeUnMN3LgAo/+EIAiCuKkDy8bWqoV2NlYt4qp5YIldWgaWaWT9lcBicWWQBVZ7ysSy9m0lCsjr59UFlkiv5cAy/NqgEEt/PbC8xTLBVgJLJqPAIgiCIK4RS7cAbWxsBFtElY2ZhhdL44ummwQkrmKu2EXEFTm7c90dXcHVqUlnFl4iUZsagq35KpnU3aCoxT+/uZ5iyVUoIq+DMklLpWL3tuWBJQJ3F4mgMbSabB5UhpUmgz169ADfnoLsfS6Lp569ua1FlWAP6O3bA3xFMi6LLLaSZRpzEpkM4IZvM6TAIgiCuDkDS6+dnR3X3tbcFoHFgqidwDKLLL6C1U5YtRJX5oHldh0Cq/PD5J+mpcASSwQNgSV2lgjqf15MbbqFJwNvqQdfaTLIAqunny/06GFqDyGeevTksvfNbT2wDJHFA8vklicPrBsaWRRYBEEQ/yiah1XzoDILK1uHlupjy3jrR//iKRO5G2/lSVzduew2oemtQlNl7dxCEoLNrYUebk16uovb1UsksaCIvI62iC2Ru5ktgsvZDaTOIr1uLezB9llJZeAnk4GvVGrUWybY28+X26eHn6BfzzYVoqu30T5+vXlU8cASN/0smIbijYcCiyAI4uYMrNbiykRhM7mH+cZy/R4qd3cx181VxHV1cQc3Z1PFIBZ5tavEzRMk7rLWdfO0/PliH8tKvMjrpFhqrkjs0abs54bdGjSuYLWir8SH6y3xAQ+JN8ik3vzruuv16dEPfP36gV/P/uBr1L9NvXs1yX4tkfYAmcRX+Nr6PXmmAXjjocAiCIK4SQLL3syWUeVk1MbOCdylfuAm7WnUVeIHriJfrpO7D9fRzZvr4OrVTB9wFvcHZ7F/mzqJ+rWrg8Qf7KRtay8LbF8Pf/I66igz10Hav00dJX3B0a0HOLr56t8KOrn35Lq69wJ3t17gJuoNruK+4MQ+z9sfbH39wdo3EKz8AsGpbwS49IkC177R4NyvSdf+MYJ9o02MbKGtVxA4eASBk8cAcJL1BheZH7hJPEAkEXP/OlcbSBRYBEEQ3R6zSzZ/NNAJwN4DwMEXwNHPDhz9XMHBTwIOfp7g4OcNDn6+4NjDr8lePcCpV09w7tULXHr1Adc+/cA3MgB6RAeBX2Qw1zciGHwGCXoPFPQKY4aAZ6jegSHgwQwPAR95CPgoBH1b0SeubX3jQsBPEQI92rFnYvv2Suh+9rxKu8L31kNurl8zvSJCwGuQ/q2p0YI+MaHgExMMfnH+0DOuLwSp/CBE5QOhKl8I1fhCaJIvhKb4Qliq3mTBgSmCocnmhumaDNX5Ql+5N/SJ84I+MR7QK1wMvYJdoEd/O+jRG8C3J4CtI4CVvV5bs/8fNeVPa0FEgUUQBNGtGTCgH7dfQC9B/wEwYECA3gGgUMghUZkAygQFKGLjISEmFqKjYyE8TgEB6hzokfsUuOctBJvBU31tU6dEOw+dMcR56LRbXIdMu8Nt8LT7JIOnPyQZPP0R96HTH3FJn/m4a/78MV73rZkYMvWlpyIX/Wt+1OqPV4av+XhT9LqPt8Vu/GRHzLoPt0eteX97+Jp/7YhY+96OyJXv7Ahf/taO4KK3ng4sevPpgMVv7Axc9NbOsEXv7By48J2dIYv+tTN48b92hix5b2fQ0lYs+reZAcvNDVn5oZnNfz9gxfvtGlh8Yw1a8UG7hq3Zbe6qj80MXfFhCwdepaHXwZDiD1q1+Z8z/V5Nf9/w7zFw9W6u6dcIW/7BzpDl7+0MK2rdkOXv7fIveu8Zn7mvbPWZ+1Jxv+I3ZyS+XPao6rXye9Rvld+nebvifvWbh8zUvfvZ/bp3jxgd/OHnZmZ++vX9mZ9+yXwg+5Mv78v/5Iu7CnZ/MWr47s/zh+8+lpz+5qfhQ974yPvOks/g0Y8PQuH2V2Dehudg/qZnYemmHbB+/XpYW7wEtqxbCetXr4AH77sf7r/vYe599z8M9z3wINz3wP1w//0PcgmCIIjuHFj+fWCAfy9uwIA+ENB/AAT2C4CA/gEQExMHsfEJEBevhmh5EoCVxAYce7qBbQ8/6JUUIBq5Nsru9mdSne545i7HUTsnOY/asczl1h2bXUZt2+U+ctuLspFbX5WN3Pq66Nbtr7vcvv0tl3ufeVc27s0P/BeV7onY+EVF9HPff5X49skfkndX/ZK6t+635H01vyaX1f6aXFHzm66s6jddydnfNCVnfkvYd+Y3+d6zv8n3Vp5U7qk5qfu0lqvZU3tSvbf2pGZfXQtV++tOqksazFSVCqoPNHI1pYK6A+e5SQcvmJlcfvGkrh2Tb7ApFZfa1PBnTL/f1ENXTg6uaDKt/FILB5ddna197tWaWnaRm8z+Dtn3xv5uW9Hw+239udZ+X2die99DSsWlU0lHrpxOLGv8ObGs9oT2s4b9Gd/++Ubmd5efz/7f5Rdzf7z8Uu4Pf5iZ9+OfbfvTlZeG/YoGX77lV3xx1C/47O2//Lnt9l/+XH/7L1cW3X0KJ95fiXfcX4kphWcwyvGWhwNAEuAHAbGuIOtts3zzdli9ejWs37AWNm5cL4QUD6xHTQKrSYIgCKKb0s9fWMFiYRXcvxeE9OsBIf16QUhfFllBII/TQmRsCoTGpUGvhOEAwSOl9oNnyJ3TZj4izS9aI7ptx/u2BduOQu7Gr2zyNv3XLnfDT/a5635zzFl30ilnzWnXnNVnDDrlrT5rl7PynG3B6kqHkZuq7W/fUud0z9ONzo88f6Hnwt0Xo1/67lJaWcPFwccuXkw+3ngpoeLspcTPqi7Jj1ZeijlceSn6UOWl2IqaS/EV9ZcUFQ2XlOVNaioaW6iqaLykPnTeTG07ss/Rljde0pQ1NNnK1zV87b/D5t9/czVHLhg1fsz0+yxraKHmKlX9RQ3/bMPfq+7wBW7SkUtmGj5u+mea/9nWPq49Kmj676063FL1kQuXlUcvXE48cv5i4tGGBuVn9TWq4zVnVcerTmm/qD6t+6rqtO7LmtNJXzSpO1F9Wnei9rT28xozNceruGYfP153Ovl446mU442/pxxv/DXleP2Pqopz3w39qvHLwV/UHrnl+4v/zi//eZXmtf0P3V7+XWz69tfFE7e+Cks3Pw8LN+yARWs3wV0PCiFliCy+kvXAg3AP88H7/4Y5WgRBEMQNDazA/n0gpG8fHljB/fpAQL8Q6N0/DgLi8gGcBjqATaAvBA+PkN62aZjbnS9OF9/+3Otut2z/xi5305+OBVvRMW8L2masQZec9eiasxbds9eie85qFOesQnHuCqOi7GJ0ySpGu6FL0Dp1MTplrkAYsgQhZxnCHWvRbcYbGLTzKKbuP41Dj9eh8lglxh47i5FHz+Kgo2cx7NBZHFRRiVHlNRhTVoOxZVVceVlNqyaU15qZWGau4mCNmZqKejPVhxtaVXXE3MSjN0blZ43tGl9Ra6aios5MS//+lmz++Vdr8+8j8XB9qzb/38vw8eaf30L2Z9ifbefvTn6kvsmjtRh/pArjDp/F+KNnMPH4WVSeOMd/vgwmfnYOEz+rQsXRyjZNOFxlov77PdTY9D0fYh+rxYSKSkw8UvlH9v8ufz3spz9eGfX7H1NH/9RY4Dz8wXBw7+kLAdEOYzfthOGPjoU7HxRWrx68T5BFFgsvJgUWQRBEN6H59ldDYAX36wchfftBsH8Af2zdNyARnAOzwCnxSbDWzOpjp33qfpeMBZud89cdtMvd8L1D1voz1kNXNTpkrUemY9ZadM5ajc4ZK9A1fQW6pS9Ht/Rl6Dp0EbrrFQ1ZhJLBBpegOHUxilOXolvqEnRNW4QOQxYhpM1CKFiMsrE7MGj9J5i4/2dUfl6F8i/rcOCRMyaBVYWxFTUYV86svCrlZe2raMXE8mpMqGjd+GbGHbr+xh+uuWoTWtH0+0v4i8Z3Ia/1+27+96E4Ut0smM6ZWIWJh6u5ikNVZrJgYl+TBRRXH6/xFfUYV1YnWG7y932okht94FRj/KGzZ1K+qv2+4D81B5Wvf7Q5Zusz9z18/Ovet73+L9A+Ph0K7p8Adz7wEDzyyCPw0L0Pw4P3Pgr3PMAi62HaqE4QBNEdYGMVbMBcfnuwvz6u+rKN7eHgHagCcBhkA31HSCFlaaTj8F33yUY985Jb/vrvHbLXol3WGnTIXIVOGauEqMpajS6Zq9EtYyUPK9HQZVzJ0CUoGrKAKxm8AGWDF6BHmqBX6iL0TF6IspSFKEtawJUmz+N/zjltNlqlTEXImoFOU57G4Fc/Q/WRKow9WsUDa+DhcxhdUWMMLEvh1NbqVms2X9Fqa4Wm+crRjTLhUN012VVWsG6klr430983+/vQry6ZagwmvcLHW66gtVyZa8CE8npMKGtE+cEGwbI6/c+R8HPHop5H7uEalB+tRu3nVfhoI37/xHl88eH6y/eNO1kfJb5jnBTEA2yyHx4NI++7Hx54QIis++4XVrUosAiCILrJkTbNA4vFVaA+sAL6hYGPvxocAnIBQu9zd8hakWyXs3YTDFl53Hpw8SmnjFUX7IcWo0PGcnTOWI4uWUXokrmSh5UooxjFGUU8qgxKhy7kwSS4CGVpi9AjVZAFFosrSepCFKfMQ2nKHJQkz0Zx0gwUaaagu3oyOiZNQRg8Fe0fWodB28swdu/vGHHoHA46UolRh2owtryOR1DigSblB6rMFEKJ/Tn24tdSw++1JX8R7UTZC/nVqixvaWJZvVHlwb+m6dfoClr6vkx/v/nfh6aikavS2/z32/q48LVrUVlRZ5R/7OAFVBw4r7dB/3NTYxJ4DZhwqAETjp7HxKN1mPZN7YWM/9aeHnbyyol7KnHbEz+fT7O9a6wkYdwsyHm8EO556DF46N4HeWQxrSmwCIIguibNzwu0bWZgvwH8acEB/cLAd4ASwC7SFoLv9bXPWDHYrmDLQhi84jvbISvQcUgxOqQWoShrLbpnrTLe/uMrVvq4kqYvNYaVQUNgsdUr08BiylLnoyR1PopT56A4dRZKkmeiNHk6ynTT0FM9GcWaSeigLkTQTULInYU9V3yIiQfPYtRhFlh1PLAMq05tB5Z5MF3vwLrhMdFKNLWnqszc5rGkPnBt/tUo+7tsK64MNv/70JZd4GrKBVVl57nKcsH2A6u+RWApD1zAxNLzggcauGY/P2WN3PjyC/x2ovZEI78dmfT1RRz6/eUf7jiLSx7+tTHd9ZHJPuDZ1ybn0Qlwz4Oj4aF7HoVH7mGBRRAEQXQJ2AXZsDrFAsrwtoVWttwklQ7i5ckQHDcMwC7WCsIellgPLs6wz9v8im3mph/tM1addxq6Al2GrkDXISymVqI4XQgqpvuQJVy2v6q5LKzEafNRkjZXUB9UBmWpc/mqleBMvdN5ZEmSpqJYN5nrrpuMLimFCBmTse/GT1FefhZjDtXzyGJ7sWLYfiz9Zvf4g4KG95sHV+srXDfOa70ld71VdlDT1cFO0VKAWvz+69rVUmBblAVVM423DJsZV9bAI0txuBGVRy+g6ljDBfWJmp+G/9r48v2/nxvqXjhNAtL+Vkte/Ah27XoNXt31PAT7D4CggAEQEBBgZpC/IEEQBNEFAsuOnQ1ooo2NI8THD4Xw+Nugv3oyQL9HPKzTVg+2zdteZJ216aRN5jp0yliDrumr0G3oCi6Pq/RilKazFauiVsOqKbAWCTFlCKzWbCWwmOJkIbCk2kKUaSeip2Y8OqdORLhtPoY+exgVpVUYf7QRIyqquIbIMg2sq4ksCiwKrOtpW3HVFFnnuWxFS374AkZVnMPBP134/f/qriy9+9ezaY6j53hMfLcc1r36ATzNAis4GEKCAiEkKJi/31yCIAiikwLL1hpahJWdjRXYsVM7bNwhRvkwDFDMA+gzy8ZR94LcJfPFp+0ytv1snb3hkk3mKnTJXsNvCYozmfrA4rcDhVuCNzKw2MqVWFeIUt1ElOrGo3vSRISkiehyz0qMfOEEf8KPxVX4If2ohgNVmFBSyY07IEgrWBRYXTGwmLHlDRh/tB5V3zReyjn9548jzl7Z8X+/N8TD6KnWU97bC4uefRV6BYdBQECQccWKrV75BzKDuHyMA41yIAiC6IzAalq5sre1MxNs+kD/2PkA3gsdIe7lEMchH4yxG/rCN7bpm9A2ew3aZi7ns6xE2atRkrWSa7g1yOLq7wwscdJ4LlvRskl6Et3HbMO4t77D+IPneGSxlSq2qqXYX8mNLxWkwKLA6kqBJT/YFFjcikaMOVyL8Z/Xouq7um8yz1164taT1SFw6z0OE9/5CKThcdA/eCAEBgZDcGAgBOoNDgjmciiwCIIg/ubA4vus7MHO2p6vWtnb2oCjjQM4WrmBI3gDgBJk4S8DhH7oC8r3x0PSKx/aZT9TZZOzHu2yVqFTJntSsBjdMov5RnaRPq7EGUJcSdMXX3NgCRvam2weWOKkaVwWVyLtJJRqJ6NMwyJrPNcr+UkUJ09G0E3AntNfQV1JJR9nwDYdy/efQ2VJFZfFFgsoQ2i1ZWcH2I0OtO4eWJaCxvLXaD+w5PzBiOtn/IE6M+WlzTx43twDF3loxRxqxMhjNdXR31V+nNNw5cnhpyt98/eWAMSrwWtgDPQPDjXGVWhAIAwaEMylTfAEQRBdKrAk4Ai9ACDN2mHQW04QV5Fgrfv3S5C687RN7rbLNjlr0SFrBR/FwOJKCKwifWAt1QfW4r8lsGQaIbBk2vEo041FL91E9NAVol3CaHQcvghjX/rSGFQsCJoHEgUWBVZXCqz4Aw1cQ2ApSi9zY8suYsThuiuhX1aeUZyqf3Vo48WEe86ecwJlirU0XA69Q8L5KlZgkD8PrPD+wRDePxRsKLEIgiC6UmCJhBUsK4WTdfiWIJuUTx62S3/1GAzZdMkuZ8ufdtnr0TF7pT6wirg8sDKFuBJnCHH1d65geWrHcn2049FLMx6lqvFoP3gaSqe+jLHv/oyaMuE4FjbckW14Fza311BgUWB1scAytcEYWGwViz0VO/B4zeX4nxqPZV3CB++qrA0C5RAncbgS+gZH8VuCLLCCA/0hzD8YBvUPpTlZBEEQnbYHy8rWLLCcrIXAsoMeANZKmX3C5nyboe9tssvcdZo9NWifswnZtHY2nd3VNLAyl+oDa7FRIbAWtBNYC1rsuWoZWDPN9l+ZBpabdpLxSUL2FCELLC8Nczz6aiaia9KTCMMXYsC6/Zh6+DzGH67D2AohsGIPshc7CiwKrL83sFrcErQQWPKSi4IHLmJ0RQNGHK3HxJ+vnEqtw/WjTtXkgSpT5h6uNgssJgssJuUVQRBEJ2H6SDd71DsiIAQGBsRBP/8MAKesPk7aXfNt0t8+Ypuxs8Eha6NwpmDmWnTLWM1nXhlWrlqTRZbhGJxWHTKvRVCZO8sYVFw2mkGveWCZj2tggeWjHs9/baUeg+LHNqH801N8ujtbweKjGg5cbWCda1fLAdC1A8tigFka5NnBf/+OBhR/cKFda9rV4iZ3C5/fES0HmCGwLmN86WWMOXgRIw83YuSX9fXKs3ho8H9OzoMITe/bZhfB40/NhImFhVBYWAiTniyEaROnwJTxhRRYBEEQnYUwQ0cwLFDYHAsgtQKIsYHA8TEOaS++ZpP+ZpVtxo4rjlnrm+Iq/WoCiz1FKIRUW15VYJmEVWuBZYgsfqtQ0xRZ7K1YOw5t8qZh8MvHUHH8vPHQZmNkUWBRYHVSYLUaWe0EVmzpZYyqOI/hxxoux/x46VzqD7Wvwuhp0RAYYQOuIqvJ05+CyVOnwOTCSTBlYiFMnjCRAosgCKIzYBffsKD+EBHUDyID+kJ4gD+EBkYB2AfbQL8H3B0zn8mxS3+1wjr9pct2WVv/5KtXWau7QWBNNAaWm+pxhCETsEfxvzFh/ylUVtRgQkV109BRCiwKrK4UWM1iK770PMaXXhQCi90mLL/IbhP+OfDLustJZ7BiePXl7Igdz7uDyMvmyckzoHBKIUyaPAEKCyfy1SyCIAiikwJrYCALrD4QFdALBgYGQu8BUQBeGieXrA1BTqPee8I68+XvbdOfQeH24Gp9YAmHNxtGM3SVwDKNLC+1sJLlkTQebVPGo9UDyzH4ucOoYRvceWCd4zOy2LBRCiwKrC4bWOypQn1kscBiTxOy24QhR6pQcxq/11Sef0JbWhEEfUKcniicCYVTJsPUyRNh8uRCHlsEQRBEJwXWgN69IDwoAEL9e0FwWCj4hCoB+mR4OOZty7W79Z11kP3sb3ZZ2/nGdv7kYNbKprEMbYTVtQRW+5vc2QHP01GS8pTRFoGlnco1D6xCHlhsFUuiHI0e6VMQ0guxf9F7mH78AsYdqsa4irMYd+A0jyzD8TnN5ZvYyyox8WA7djQwbnAg/dMDq6Ob2Ds7sCzFl+lmdxZZcQcvYkzFBRx0pA7jv2v8La3y4tr4Dz/Ngd6hskemzIMJTxbCU5Mmwszp02DcuHGdfYkhCIK4eQNrUHAohAcFQWhgXwgYGA6+UakA/vm9RKOeKYThr3xsnf10lV32RnTIYXFV3DRYlEfU4i4ZWMZVLLbZXSsMIAX1Y9hr6nM4+HAdJp44j4qjlRhz4HeLgdVuXFFgUWDd8MASIkteel4fWecxtuw8m4mF0V/UVqWdufLRqFN1hfb3j+85YtEqeGz6LJgyZQpMnToVZk6f0dmXGIIgiJs3sIL9B0BYQH8YFBIIfYPCQDowBWBAXoDT8M1bbEe88It1zuaLdmywaE4xOmcX6QOLrV4tRlHWwnYjq7MCS6p+0hhYfroJKFU9gbbyh1F0dxHG/vsHVHzewAMr7uBJCiwKrG4QWOx2YYMxsvgq1qFGHHSk5mLkfxp/zarDraNqMTB063MwbFExPDF9Nkx5aio8NYmeIiQIgui8FayQYG6QfxCAo68VuMfZQvgjcocRO96H/O2XrHPX89Urx5widM5eii5Zwtwrt6y/MbAMNgsskaXAUk9Eb9UYrkQ5Bl0LZmPfLft5VCkPnUNFmeVbhBRYFFhdJbAUJed5ZBlXsQ41YNjxhssxP1/5MObUeXnWj6dtIVZj9eCMBTDxqadgUuH4zr7EEARB3LyBFRsRBfLYRIiKSQNwCLOB8HESu5wdBVYjXzsK+bv+FAKruJXAEm4RirOWoSSzScNROQYlQxeaKQweFWSzsMSD55opSp1j1DBoVJqkl0WWbhqXRZVIMwWlmqlGxZpJPK6YHqon0UM9AT1V49BTPYbPxXJMLUTx1Bcw4aPfMPlQFWoOCZvYb2RgWQyYiroOecMD6wZrOZBubEDd6MBKKKnukHH7qzBuf43eOqMxJTUYWVqDAw9U/hn5dd1RRe2VgpT//iSG2GSbWVueh2Ub1sHaDas6+xJDEARx8wZWXFQkxMaoYGBMPoBbirNT2sYw2+HvTIDhb/wX8nahde5aY2C5ZC01Tm4XAmupWVxda2Axrymwkma2H1jqKShVTzILLA/1OB5ZLLDckgvR7t5VOGjXUUwtr0HtZ3U3fAWLAosCq2OBVdOmPLIOVGH0F/X/ja+6Mj7ph19DQZnhPHnTC1C0aROsWL28sy8xBEEQN29gKaMjIS5SDYNi7wLwGOnhmvlsgU3+WxvsCl76zSZ7K9rlrDYJrKJuEVgS1URjZHmqJqC3PrDckwoRsmZiQPHHmHqkDhM+q+PzsORlNRRYFFjdMrDY8Tnhn9f/Fn3u8obkX87lgy7PY9z2l2HZls2wadO6zr7EEARB3LyBpYpOgJiITAiImQTgN6GXQ/qLU2zy3/jEMf+5Kjb7yiF7NTpmGza4d8fAehK9lRPQh31MNxFB/jj6TXkBVSVnMPHERWNgMflMrGaRRYFFgdWVA4ttdg8/1lAVe+rPT3S/1U/pu+W5Xre/8BrM27EVilct6+xLDEEQxM2JNdiDKmoIREQ8CLLIDQChOwNtMl7dAdm7frfJ3nxJeHpwZacGljRlFsqSm2T7sAx7sfjmdpPAMuzDEvZiTUIP1ST0UrOZWMJcLHY2oV3CaHQetQwVH/yK6i8vY1x5DcZX1HKjS8/x4DJoCCzVgbZt/oLfIiCuc1Bdbymwundgsc3ukYcbL0V9c/FU4i8Xns6qaQhM3v0hjN2+CdZv2QBgZeka0LoEQRBEB7AGR0iMzAVr2wwru6Dn7Dxzvk6wSX/9Y+ucrVdsctbrbw9238BisqGjniZH6EhV49Etdx6G7TqG8rI6VH7WyOOKhVbMwUouBRYFVrcIrP11GHvgPD8+J/Lo+T+jvq3brahpSMj49gtb8PO0WrF+LQUWQRBE5+AMqtgRADDEFno+6yFO+2q4w9DXP7PL2myc3M7iqisHFtNw25BpGNfA5KGlLeSy1SsWWB6KcSjOnIuyGSCmXE8AACAASURBVG9j9PunMOmzi5hwmMXVWYwrr8SY8nNcw1E61zrJnQKLAuvvCKz4klqML6nHuJILGFV6AaMqLmL4sZpjKdVXhqUcqpCBr7dN8bp1bQZWW2FFgUUQBNEBmi6krhAz8DYA69tdwPelCBt52ZMOQ1/9nk1uF84d1K9e8QnuJnH1NweWqXxPVnuBxVayTAJLOKfQEFjjsZduIrqnTEYYtghjX/4eteX1qDhSi9EHzgihRYFFgdWNAit+/wWMKb2AEeXn2eDR75PPXZoY9f7Hg6BXX+clGzYBWDXPJWuLcUWBRRAEcRVIJDKQSCQg0+vr5Q1eEhl4iSTgIw4CeTQ7EHa0J7jtGOGYWLbFOv2V362yN6Bd1ip0yFrB48rsiBx2BqFecUZRi8Bqrih9YZvy6Gp++HOz4Gp+ALQoZSaPLHHSDK5EZ64husxkK1maceihGY0+midQpBmL1oOnYdjST1C77xwqP6vnK1j8EOiKSqNsRYsFVruRZSGwmqsqr7smb3hkWYogC4NGOxxZlr6+xUGn/+zAku+radWE/bWYsL8eE/Y3CqtYZQ046Ejl70Nq/9icsL9sOPQJ9Vz90jsQEBYJURGREBUVARERERARHgWR4REQHR7GvZrYai+4rvbzSdL6L0gQXRpDWJnqKZKBt8gXPEVxEBW1GsChqDf0e3eaW1L5PquMF6ohdx0PLKfMFc3iqtgYVuK/KbBMV7S4KTO57skzuM0jq2VgTdMH1hgeWL7asShOfBxtlePQ+9FtOLi0CrVfXTILK9PAklNgUWB14cBS7GvE+P2NGHOwASMOV1Yrfq7bO/xM3TT3CTN7T35zN/SLU8HA8AgIGzQQBg0aBBEDIyBi0CCIGhTC7egLXWe/AJPwj5YguizsB9RTLOKyVSyDMpEPeLr6g5PdYOg/8HUAv/cDrcNLnrbWfHjaKnPnZatc/epVxgrj2YP8/EFjWC1Fabpglwis5JlNmtwuNG6EZ0foaMejh2YMP5vQXf4YOrJjdB7ahIkf/IiJJxow/rNqjD1ahbEVZ43GVZw1BlZbUmBRYHVWYCn21aJybz0q9zbyI3SiK+oux/2v4Uxq1ZVdBWcbAoeXHAZXhQ5CouMhPCYKIiPZalY0X9GKiRjI7egLXWe/AJPwj5YguizsB5TFlUwiAolUBGKpBDw9PcFb1gvcnfsDQKqVba8X7CD0sALk+3fbpL73p3XmNrTNXsFXr1wzlvOVK0NcCYG1tBsGFnuKcDw/MkeqeBylqrHoqp6ATgULcdCzR3lIsbiSH6sxhpVpYLUXWRRYFFidGVjqPfVctpIVe7ABY75swJifGj9R1/yh+L/TdXYQEmnVOzIOwuPiIDQ0FAaG6A0N5Hb0ha6zX4BJ+EdLEF0avmrF4komBJa3hydI3b1AJu4H4KS2tQl/xhMU+0daJ39wzHboK2idtUV/e3C58dag6d4rw63BvyuwWu7JmsU1RJZZXOk3wJs+aSjTTeUHQHtpxhtlx+ewIaR2KVNQOu0ljPngR0w4LARW3OFKHlZxf9MKlqU/f6MHlVJgdc/A4pG1twYT9zDr+F6smNJGjDrUgDHfXDimqcER2T/WeEBssq1fvBbC5Qn8FiHfj8UN53b0ha6zX4BJ+EdLEF0aFlcG+R4sV3ceWCKZP4C7ysVWtSMK0j6YYpX+2v+sM3eibZawwb3p6UFDZJlvbjc+JdiVAytpKsp07PbgRD5olB2XwwKLH5+jnICuukloe0cxBm2v4OcSKr9sNAssefnZduOKAosCq6sElnxvA8bsb+CDR2M+v/C98ixOyvipIRIUQ108VGngHxUHAwcO5BvcmRERg7gdfaHr7BdgEv7REkSXhf2AekrcBMUi/uSgr0gGHtLeYCMLB/BK97IbsvlWyHplu1XmzpM22ZvRNnsVHy5q0HQGFpONZjC1KweWNPkpHlgeukL01RTy43JYaLHA8kucwAeRWg+egf6LP8Khx87zfViGwLK0ckWBRYHVFQJL+WkdN3FPA4+suLIGjDha+3v8Sdw25JeGkaDJ8XKWp0BgnJI/RRgVFcWfKBTeRnX4ha6zX4BJ+EdLEF0W9gPKw0rsBj4iIbDYE4QO0r4APdQAsY/2screMBOyd5RaZW+qMRyNww53FuKqKbCMg0azrl9gcYcsuIGBNd0YWD7sNiGLKzbRXTUBfRIn8HMKreTjsdf45zF5/1mMP6y/RWjy9CAFFgVWdwos+cHzOKi8uib2ZyxJ/vXiTO8V2/pAWg74RMshKCQMQgYaDOFCB1/oOvsFmIR/tATRpUnRJcHgpGQYotNBWkoqaDOyISj7TrAfMRN8Jr8VZDNy+7PWOZvPWmWtucICyzF3FTrlrECXnBXols1cbtQ9azmKs5YZtRRXrdnRQaRmm9+TZ7cIrOaxZbhN6KFXqpmAHmoWV+N4aDnHjUa34YtR9c5PqD120TgLix2dww6AthRYHQ2Ma9303twODwrtYOB0NMBudCDd6ICypLKkfRX7q81M2Fdl7t4aM+V7qs00BFYCiyvmgYsYfejClfAvLp2L//HKc1nVl4MjX3oNHlu/FeYvLYaFzGVFsLBoMSxetpBfI9p/YaOXQIIgiBawyx+Lq1RdEqRpNKDVaiE+LR3Ab6CVx4Sn7R0nvqW0unX7pzY5G9E2ax06ZK9Gp5xVxrhyz1phFldCYC3/y3H1dweW8alCw14sfWAJkTWOyyLLJXMGhm2t4C+47FzC2IoajCur41qKLAosCqzODCy2/4pvcme3B/c1YHzpRYwuv4yDjlzCsK/r98aeqVfe8tNPdtCnv9XColWwqHglLFleDEuKl8LS5UuN1wkKLIIgiGuAXf74ypVGBTqVggdWYvJQAK8wO5tRi72dnnhjlM3I7cftcjfxwHLKW9tKYDW9z2SBJck0tXsHlkgxGt2ypqPn9Fcw9t8/8ShhgRVbToFFgdV9AkuxT5jqzo7OYWcTDjp0EUOPVx9Prb08auT333tDr952y1atgiVFywSXLecarhMUWARBENcAu/wNTVZDqkYBKVoVpA3JBFVaAYBXtKvt8MWxXoXvT7O9dcf/rjawxJkrmsVV9w8sceIT6D70KYRRCzH8mWOoPshuEbJ5WDV8NcvSXiwKLAqsrhRYCfsu8KNz2NmEA49W/m9I9R9TNXtLYsDTx3X24iJYvLQIli1bBkuXFMHSJcX8ZEIKLIIgiL8SWKlaGJKihsFJOkhQpkFkym0AXmpvt7vW3y4Z89bTNrdsPWWftxkd8zfxwHLJXY2uuSvRPWclirLNlWStRGlWsZmdHVitHQbdXmCxkQ2Gg5+ZXrqJ6KAag5A+Bfsv+RdqSypRfkQ4AJrtx0qoqMbE8na0cBhxRwPMYqB0MLBufMR07mHNnR1YzQPKkn/9FqFwm1Cx94KwinWgEQdVVJ5Mr8Id8g/23wa+gV7TlqyFhUtXwoqiFbBscTGsXrFOn1eWriIUWARBEC33YCUnQmqSEnS6ZEgccgv0yxwNoHmir/PdG2c73fvcQauCzbUO+Vtu2sBiuqjGolXyBPQa/zTqSipRfeISKo5UY/yhSgosCqxuE1jsLTs2h0UWGzoaWVZZm/LbHwfuPn15tv1tj/R5YMVWmL58LSwtWglFy4qhaOnyq7yKUGARBEGYwS5/6ToVpKclg0qbBqGZdwLkTQG/ae8E29295XnIX1tpO2zTFUNgOeevayewilGSbQirIpRk6+3mgcXOJ3RXj0EHzVh0/L+lGPPu/1B5/DyfhRV/6CwmVAiR1ZoUWBRYnR9YhmGjwsBR9Z5GVO5hq1iNGHWw+or2+z+qhlfi8/lf/xqS9uxrMHr9DphTvAYWr1gBy1cUXeVVhAKLIAjCDHb5y0jS8icJE3VDAHrGWPWc/IK906R3VHDbxr1WBWvQoWCDEFd5G4TAylvJA6v56hULLCGyiv7ewEqb32ZguafM5jOx2gsscZIhsPSRpSnUB9ZEY2BJNWPQTfkEOuXPwcAtBzG+9CxGlf6GiqMsroSZWAYpsCiwunJgKT9tEGZi7avD6NIajD/aiKpvGvdlnb2kLjjytT0ExVnNWrkZ5hUVG58itHwVocAiCIIwg13+ktVaUCdqQaXJBPCOsfcZvcPX9vGXb4fbNn5uN3wNOhasQ9e8deiWt8Zk5coQU8JbU41hpdd0LlZrWgosUfoSM92HLjIqGrII3QfPb1W3tHk8sERpwuBR0wGkpvLDoPUHP7PIkmr1kaUPLbbR3UszFn3UY9ElpRClk57HhPd/QeWhcxhTccrswOfmtjZo9Fq90QHW8cBq//tXlda1a6cHTmfb0cBqpnxvpZmJe6sE9ZHFI0w/iDRufx1G76tnT8R+nnkKb7vlxE++EKq1n7XyGZjL9mKtWtXZlyiCIIjui0alBq0mDeJVuQBuEW6ud66Jh3t3zoARG36wLVjLV63cctehe87qFnHV2YHFbSewXFP1twrTZhl1T51p1BBYppHFAssYWfpbhSyweqjGolg3EW1uXYrBmw+i7kg1Kk7UCLcKD54z2iKyDlJgUWB1RmCd5ZoGFouruL2VGLuvEuP2VmPc3lqM/bQB4w/U/TD0lz+mj/ji93iIGOo2d92rsGzlJihauqyzL08EQRDdh+YL92q1ElTJ6RCquhXAJ83bdsTyO+GuHc/AsM386UHXvA3omrPWcmDlFHGFsFqKohzB7h5YMq1wALSfaiz/NQx+CvvMewfTjtVjwok6/VT31qXAosDq/MA6105gVWPs3lqMK60+lfH9xV13flV5B8Tkek9e9SKsXLUZ1hSxMQ0EQRDEtQeWFYAqJQWiUwugR8qjANGP9YVhq+ZZ3769wiZ/a619zhZ0yVl/jYG19J8TWCarWH4qtul9IkLCE+g5ejuq95xC5RcXKLAosLpdYAkKgRXFPlZaXZvx7Z/lw0/UzoXbJvZ7bNs7MG/lJiheVESBRRAE8dcCyxaitJnQJ+VusEufA+73vhRiN+rplxxG7Kixy9lyxTZrg8XAMobWDQosS8HVfNO7QUNkNQ8sU9merBaHQDcLLKlO2PDuoxZWslwSxqBt3myMf/u/qP38EiYerWs3sOQHqlBR2rYd3aN1owONAqtjWjqs+e++RSjfX8UV9mLVYfieWjYT60rikYs1SccaXtKU/BCW/tJuGLtqGywvXksb1QmCIP7aLUJ7iFBlAfTUWLvcvtnB5p7XNTYjni5xLNiK9jmb0CFjHbre7IGlFVaxWGAxJcox6JY3BwM2sKcJq1F1pIECiwKrWwQWj6x9poFVg1H7azGitAEjSxswtryhRPefRq32vTIHkPazWrJiPQUWQRBEWxiOumj6tekl0xZiFWkAbuEOjgVrejrd++Zd1rdsP2GXK6xcOWet5nF1MwcW01NTiF5q/SqWbjw6ZTyF9uOfwdiPzqD6cAOf6G6QAosCqysFlmJPpeCn1dzmgRVdWoURJdUYvq8OI0trvkj7H945+MNjPUDSz75oxYa2A8tKL0EQxM0dWE0XSfaejfGyaQ8KdR6ANNHdLX9tou3tL8+BvI0/2uQIZw4KUWVw5VUGlqDh1105sLgpTTOxWGCJtVNNIkvQEFjsaULfpHHomDIBYeRiDHv2C9Qdqms1sIxnFLYTVxRYFFg3ekyDpcCSl9VhxL4qHLSvGmPK6n4c+sOfszRvlynAK8ht4fKN/D/Cml9ROBRYBEHc7HjKvLgeHh7g4SEFT5kUvPVKZb1BnvQAgO8wH6fc9fc43vHK85C78bR9btPMq6aJ7cV/SXHW8o55rZve9boNXtgUWO3IZ2UlzzaGlrtuKo8ssc4QWVPRUz3ZGFg9Uiags/pxhJQJ2H/Ru6gpOYOqz8+j6piwkmUaV4kHKzGhpH0tBdi1Btn1D6iO2d0D6HoH0rUGkyUN4dSqe1oGVvNBpGxUA9vozm4VRpWcPV3wCz435P3P7oaeUT7rn/839PYPg8DgYAgNDYZg/nYgBIeFQtDAQC5FFkEQNyXsvzW9peaBZYgrb6kHuHkEQlDSOICoJ/vZ521daDvyuUPWuevrWGCxie2mK1bdMrBSF6AodZ7FwOKRpR88ygKLR5ZushBZmqn6VSwWWOPRTzcOJeon0E47Fr3HbEHVJ7+i+sQFjD9cg1GlpymwKLC6TmCZRlY7gcVGNUTvq8Xo/Wfrsr6/dGjU8TMLHG55vP+cV3dDv+hECAobCCEhIRAaGsoDKyg0BALDArgUWARB3JQ0Dyzj6pXUAzxkfmDrFQmi1KfALndTmHXBzpchb0etTd6GKw75q4UzB5vtu7qpAoutYmnZ+0JoCXuxJqK3agxfyXJVj0OHEfMw8o2vUPF5A0ZVnMPIg2ea9l7pI4sCq/Mj6mYOLPmn5wQ/qRJsEViGyKrH2H3VV1K+uFQ74sc/Xrnrm6qBd//7ILhEKsF/YCSEDAyDgSGhEBwUyle0/EP9uRRYBEHctHjKWFgJccX08ZCBh8QTpB79ALwTrCUFqx2sRjyvs8p7tgRytqNN3gZ0yFuLLrlsczsFFgssJnuakO3F8laNQ1+NcISOc+5sDNhcgomHa/k8LLaKxQKLTXSPLdNPdy+lwOrK3uyBZVjFitvTyCMrpqQGk06cL83/+bLujmM/OEC/QdY9w6JhUFQ0BAcG8pUsZlBoAJcgCOKmxTSuhBUsMUgkXiD2DAWQaR0keZv7OIx4/W77/Be+sMvZgbb5G3lgGZ4c7Mj+q+sRWJY2wVsKrOaHQVsKLHb4s+EAaKY4WXjroZ2KXtrJ6KOayAOLPVHokjoZ3Sfuwui3v+cHO7PIMoRVVwksyxvhKbD+yYF1Ncr36ANrzwWUH7iI8RX1X6T998rdI46f7A2hCgfvCAWERsbAoNAwY2CFhARxCYIgblpM44orcQOpzA+cPcIBXJTu7rlbNfbDX5vnWPDiT3Y525Adj+OUK8y+EmVTYDHZIdBemqnowy3kgdWTzcRKmoy2I5ZhwNpSTK6o4xvdWVjFHThrlAKr8yOKAqu9uNIH1qcXeGBF7WlAxaFLP6b+F+cWHD+jgohkd88YLfgPjOa3CCmwCIIg9PAnBz3Exv1XXlIReHr1BDtpJIBXhq9z3ob7rUa8+LLtLc+esc/bik45W9ElZyO6Z6/tEpvcOzOwWFh56CbzuPJVC/JVLK0QWOx925SZOGDGu5he0YAJ+luEwupVFZ+B1dl7sCiwKLDaiyvDHiy2gsUiiwVWfHnjmZT/XHlx5FfV94Eix1cUlQT9B8ZCkH+AMa5Cg0O4BEEQcLMHFosrfrvQ2wecvYMAvFMAIp/o71CwaYnVyF2f2d/ydL1D7mZ0ydnMp7cLs6+Ku3VguaYJ87D+UmDppgmBxW4NspUr9TS+gsWiim12Z2cTstENNvIJ2OOxnaj74CS/JUiBRYHVPQOrXoiskkaMLq2p1564cLTg6/rFPWasHgAJ6dAzPAFCwiL4E4RCYAkSBEHctCgVcq42UQGJSi1Eq3PAT3k32KcvBem974bZFux4zX7Y1jrnvA1XhI3twuZ219zi6xJYEgtea3CJMorMbT541GTzO4ustg6DFmw6DJpNdecaD39uOgBaiC3hIGjD04QsrthbB/lodCyYh7GvfI2JZbU8sGLKz2FMeRXGHqy5DrcIry0YulsgKUvat8Of38EA6nBA7a1p344GlumsK5NxDG1ba2bzyIrZX8e8ElfWUKc93vDGnadxoOrZN+G+JetgzqKVMGveIpgzbx7MXTAb5i2a09mXN4IgiM6DxZUqQQ4quQLi5ToYpMgB6JVu7XHf647OD+1Oshm+66Bj/ibjpnY2YFSwGN1zi/7hgTXfQmDNMK5ocfVPE0o1E9BDPYG/dVE8hm7D5uGAlZ9i3O6TfDwDBRYFVncKLOOThPqZWCyyokvqMLaipjzlp4bkYUe/dQSvAOvp81bA3PmLYd7CBTB/8VwuQRDETYtaqeCBpYiOh/hYDcQqhwJ4Jzq4FKzvazfqtftsC3Z86ZC30TiWgQKreWAZbBZYqif5W5FmLLpkTUPHxzZj4r9+RmWZ4bgcth+LAosCq/sFFh86WlKH0QfOfJn/26V7h5Uc6wM+AQ7zl6yGhQsXw5JFC2DhwoVcgiCIm3bQKLs1qIxPAEVMIiiVQ/gtQvBSipyzinVOo15caJu39ScKrGsMLPWTQmCpn0SJeiw6phYi5M/GyJ2HUXOg6bgcJgUWBVZ3DCx2dE5M6bmfbvn1jwVJb3yiBVk/0dwla3lgLV24ABbNXwSLFyzu7EscQRBE5wWWWpEIWpUOEuSJEClPg2DNnQC9cv3s04sech317Kv2eZvPsrEMrQZWN9iD1d6h0CyyWjsEur3AMhz83DywDMfnsMBi+7CEg6AL0Sv5SbRXjkZIGocD5r2NQ8pqUHWkDhVlZ1F+8AzGlwqjGgx2tcC60QFFgdXVA0uwtcCK3n/2zIjf8NWsDz57EHzCfacs3gDzFxbB0oWLYPG8RVC8ZLnJMfIEQRA3GepENSQqNKBQp0CQIgv8kkYDxD/pb5e1psjplp3H7PM211NgXWVgaafyje5CZBk2vI9HN+UTaKsZg76Pb8ak3SdRc6QeFQdOYey+XymwKLC6cWBV1md9ffHYPV/VLLMteHTA/SufgWlLVsOihcv46hWLLAosgiBuWpQJClBr0yBGnQ79tXeBfcoMsL/l6UE2w3e9ZVuws94+b/MVQ2Dx8wcpsFoNLMPohuaB5aEZg1LVE+iaOBpdCuZixPOfo/pwHSaWnca4/b9RYFFgdefAujL4+Pn6gq8b38oo/zEieeebMHrNDpizZAUsXLwIFi+hPVgEQdzEJMTHgSJRBwPlQwG81NZOeasdHe96M8VqxPPl1gU7jZPb/7mBtegvBVZTWLUfWCyuWGRJlGPQNWsm9i3ejUkHazCp4ixqys9gQgkFFgVW9wosQ2TF7qtGbXkjpn5xoSL1f41pGaVfOYJ/lPWM4vUwZ/FimL9ofmdf3giCIDoHtnyvlMdCglwFCbrhAOJER8mwTQOc7nzzASjY/pXN8O0mgbUaXfJWGm8Tsri6HoF1vQPN4qZ3vW7py9B9yJLWJ7zrbT6EVJI2t2mze+oslKaYBxcLLLFmkonsScIxXA/lWHRMnoSyCc+j/PX/YvKB06guO42KA8J5hG3JhpGa2jywOhognR1A3T6QLARO4p6adrUYWBZs7XBmUy0OEzUc8tyG8Z/WmBlrZh3G7K7HxIpLX+t++uPBoYd/6A8hSofpq7bCwlVrYenyos6+xBEEQXReYKWqlaBO1EKc6hYAsUYsHb45xeG2lxdD/rafbYdtQfYEYYvA4lPcV3b7wHIdaimwFrY4Ssc0sJqvaPFbhuopZoEl1o7jgeWpGoeuSU8iDFuIwWv2Y/rhOlQdZgFFgUWB1X0Cy8xP6jD643qMO3jxJ+0PuDjz89+TISJZNHXdLpi9bCWsWLWqsy9xBEEQnRhYGgVoVckQlTgCwDfTTzpiyyN2tz7/hlXetrN2BU2B5ZRHgdVeYDGlSTNRqjFsdNfLRjaox6GnegyKdOMQUgrRd/rLmHn0PB/XYDgyhwKLAqu7BRZbwYr4pBZjy86fTf7vH68P/7LqYYhL95208UVYvHI9rFqxorMvcQRBEJ2HSpEICapMCNA+CBByv7/rsM3F9iOeOWGVt6XeIX8LOuVSYF1tYPGVLG3zwJrEp7qzwBJrxyAkPo6u969B9SenMa6szmJgNZcCiwKrKwVW5Kf1GFNaX5/81eXP805UL5eMW+L/yM63Ye7KTbByGY1pIAjipsUW4tWZEKS5DdyTp4JLwfoIp1t2vm1bsKPeJm/TFXZEDgsstsG9tcASZa/s8oHV3mZ4vg/rBgSWQbaaxTa7e+rHNch0Y9FB+Rja5s3G6Fe+RfWRS5h4qBHlZTU8tGJKz2FcSfu3DFtsgrcUARRYXTqwLAVSR73RtwhjPzmPsXsuXEkou1CfcuzC28O/ro/MfHE3TFi5DZYXrdGvkxMEQdx02EOUMgfAI8HaJWe5k+3IZ9Lshj1dYZu3lW9ub9p/JQSWU95KvheLnUkoxBUFVnuBZVjNMszDYrrIH0Xn7JnYY9lHGPXhaVRVtB9Y7NemUmBRYHW1wIr59DxG723E+PLGQynfXBisea3UCSR9rJctp8AiCOKmxR6ilVkA3hpH9+Gb/J3vefthq+HbvrbN34yOecLtQZccCqxrCSz2JKHRJDbdvRCluoko005ET81ElKrGo/PQaQgPbMToN39EbXk9JpTXYvyBGowpESJLiKuzfIQDBRYFVpcOrE8bMObTBozYW4cRJdVfa768+FDS24cGgKin4/KiVU2BZaXXQPNfEwRBdHesTQRwhGjVcADvNLFT7sY0x7veLIJhW3+xzd+oX70yBJY+rvS3CG+WwGptVIM4dY6FwJrRIrDELLD4KlYh+uomoXvqUwi5czBi21FMLqs1D6wSYT8WiyumfD8FFgVWFw0sw6iGPXUYxQJrX9XP6T/g0sRXSlLBo6940fLVrQRWG8FFEATR3fD09jDq5e0Bvh5e0MPDA3w9pSDz6gtxqQ8DeOf7ueRsftzu1hfftinYfM62YD3a569Hhzy2ub35gFG2uf16xtVKC17b13PPWm7m9Qgsg2w1iw8e1ctiS5Q826gkebbZ8FFDZMl0U9FDOxV9NJOxV9IUFCvHISSNx4A5r2Hy/rOYcKiOB1ZcaTUPrLj9VTysEvad4W9Nvd6BlVBSfUPt7ABS7Ku9oXZ0E/uNDqj4T6vataOBJd9dx1eyeGTtO3cu/X9/vjVk95ePQZ8Iv+IdL0GvfkEQEBAAgSGB4B8YAP6BQcLboH5cgiCIf05geQqR5eXlA27ewRCQOhEgalKAc+6OlfbDn/3SNn9jg33+WmQ65LFbg2vNnhpsCqzimy6wjJPdTTUJLGbzCe8ssmS6afrAmoo9NVPQUzUBHTVPoNej9eW4ugAAIABJREFU6zHxg59RcbiRh1Xk3rNCYJWwmGJxRYFFgdV1A0v+SQ0qdtfxyOIrWXurGlK+uPDFLcfProTBtwZMevZN6D0whkfVgAB/CiyCIP5ZeHp7cb28vMDHy4PL4srd2x+gRyK4ZcwHx+FPR9oN2/WuTd7TDfZ5G/9gYeWQ37TnigLr+gWWj4rdKpyIrtqxaDtiLgY/+zkmVFzEmAPVGLn3NMaVnEF5ySlBCiwKrG4QWEzhVmHNH2lfYEPmF43/Stn7RdSwNz8Eu7AY6BMQCv2DAnhk9QsIhH6B/jAgsC+XIAii28LCiseVZ1NgeXr58dUr6Jli7T5yi5PDPW8Ntcrfddg2TzgaR7g1uFqY3k6Bdd0Cy0szFb3UheilLeRDRx3y5qJP0aeYWHoeE9hm94pqjCsV4oq95bHVLLCaS4FFgdXpgfVxA8Z/0mCILNR8dv5Ixo8X09M+LHeCPgOte4VEQWhUFF+5YnHFYoutXgUE0goWQRDdGB9PH5O4koK3TAreXj1A5BkAIJU7iUduCXK64+3HbHJ3fGOfvQ3t87aiQ+5mdMnZiK76JwjbCixJFwgsce4KM1v8voXAYoc+m9o8uEwPgmaabXg3bnpv0mxkg/4QaDaugc/DUgsjGzx0zIloP2Qquox5DsNf+Z4PDY0uOY3xB07r40rY1N7RwLrRAdXZgWXxwOMODvK05E0dWPq4Msh+LS+5iLEHG75J/fbKY9n7vw+CgAQnrzA59A4Khr4D+gurV+x2oX9/CPTv39mXR4IgiI4Flq+HD997xQPLUwYyzx7g7jMIwD1B4j58y1D7214vtsvZ8Ytj1jZ0yN2KTjlb0SWHRRYF1vUMLK5uMg8sL91EdE+eipC3CP1XlWDSgTq+ghV/UAgr083upsbtO2smBRYFVqdtcv+E7b8S4kr5sXCrkB3+nFB26efBX2NxXunvQyFqiEQUlgC9Q8IhICjQeKuQxVXQgP40JYsgiO6KNfh4+oGvB9OLR5a3jyeIvPqAvV8iQK/8Hi7DNo+xHvnSv2xzd1U65WxHl+ytfDwDu00obHJv+xYhBZblwHJPnobuupaB5aOdyN/aJE3C3pNfwdR9lfpxDXUYs78O4/bXYey+apQ3iywKLAqsrhhYwl6sGozbXYuKkrpzQ0788e6tR6qegPg8P5dQJfQPj4N+/gP0K1j9Iai/P5cCiyCIbh9YPQyB5esDrj3CAHoMAYifHGift3m1/YjnvrbPfbpRWLkSZl81bXT/hwfW0GUWAss8sgzjGgyKUueZBZYopa0VrKnmgaURdEx4Ar3uWoOK1/6LmopGVBxo4HEVt68BY/fWUmBRYHXpPVgssHhksduDn7B/5zr2fTWkHDn/1YjjjavdH1sYAAnp4BkWA339hT1YfAVrAAUWQRDdGmtQytWgkitBp1CAVq2BBF069FXfBo7Js8Hjjlcj7fJ3/Mshf1uDQ+7mP9jKlWveOnTNW4PO+eu47H23vDUoyl2FotwV6JbH3q7iMSPNWYHinFXt2yyAWmjp869Ry8HWpCRrZauHQBtk8dU8uJqiS2/qAh5ZgnPQPXUmjyxRynQuGzwq085AD62w0d1wNiHf7K4uRJliAsqGLULF819jUlkjJh6ow/iSWozeJxi7r7JFVJlqMTCaec0B08kBZWmTucUA2lvVvh0MpA4PErUYOB3T4tffXWnB6jYUfo+tWhniim96/7QW5Xtq/1CUNDToDje+l36iOjp+x5twX9FamDZ3IcycNw9mz50Dc+bMgTlzZ3X2BZIgCOKvwf7rkMWVWpEI2oQESJAnQpwmE6CXztrj1h3OTre9OdQuf+cRw7E4fOZV3hq9LK7+2YHFbSewWnvKsEVo8cBqiiz3lNk8stxTWwusaXyjO9MQWF6J41GaORv7znsfE/59EjUHajG+tJoCiwKrGwRWpT6w9KtZBvfUYuzeeowpqzuq/u5Chnb3EWfw7ms9fcESmDt/IcyfPx/mLhAkCILotoGlTVSAWpEAibHRkBCvgIj4ZABZvLNr3oYQh9vfHm2Xv/NbFljOeZuMK1YUWNcvsNhtQhZYwqiGacanCQ2rWN7KCfzoHNu7V2Psy9+hrlQIrKj91ezoEQosCqwuHlhVXNPA4kfo7K3HqJLKb4f+cGV0+u7PQqBfsPOMeQtg3rx5MH/uPJg3dwGXIAii26JRK0ApjwVVXBxoNSkQpcoC8NJK7dPXZDmMenO1Xf7OXyiwbmxgGc4nZJEl1Qqb3VlgsYGjHsqxKBv8FELePAxddxBTS+uEwCqpxIj95zB2f9txRYFFgdWZgZXwcSUqd1dxTVexWGCxo3Oi91f+kvPTn6t0b5dkgWdf6bQFy2D+vIWwaO58mD9nASyYt7CzL48EQRB/HbVSDqrEeFDExkO0PAlCNbcB9Mnv6ZK/dbzjyNfed8jbWdleYLndZIHVwnaeMmSBJU5bqNfkrMK0WShKmyFo3PQ+HaXJ043nEnroJvOBo35JhShLKkRQjcO+M97ANLbx+UANf6IwppQCq6sHlsXDlG+mwNLvxTIeAr33XGXmd5ffT/vgs/HQM7LHpIXrYNasxbB07hJYMGseLJm/mDa5EwTRfVGq5JCgiAWFQgkD5UOhl+4RgNjxgc7529c5DH/pW4e8HY0UWDc2sITImi5oOPzZJLCkmnFoqxyHng9vQc2/f0fFwTo+Dytiz28UWBRY3eAWoT6uWgRWVWPWf/HbUSeq1kHuA0H3LH8anpy7AubPXsYDa96s2RRYBEF0XxLVclBolRCXoIEQ1S3grpsMDhnrYpwKnn3fvuC5Roe8HX/81cC6qkC6yQPL9KlC08AyjGvokTwJZYlj0F01AZ0KFmLYrs95YMnLKjFi7y8Yu/80j6zWpMCiwOrSgbWn5g/t0fONud9cej+j/MdY9ZbX4OFl22DG3GKYM28eLFhITxESBNGNkSvjIFYRB2ExCgCPGBtpVrGLfcFzmXb5O4/a525Hx7xtaAysvA0mgSXYWmAJkUWBxR3cFFds8GhTYAkK+7GaIovNxWKRxUMrqRB9kgvRQz0OPdQT0CljJvZe8hEq95xDZUUVxpedosCiwOrSgcVuEyZ8XI3xH9dyeWB9Yjj8uQ7lpXWoPlr/me4/9VlZB79zhl5R1pMXrIGn5s2G2fOndvblkSAI4q+jUsaCSquCGPUQAPdIF2n2qjD7gufGOuTt+A87c9AxfxM65m8wCSz9Klb+Km5HA0v4vL9PYSBqk5YCyy2zqE35pveMJWa6Dl1kVAgsIawMtnkYtP5WIZvszoePJk9FcfJklCRPRKluPL9d6JoyDcX3b8G4577EwUdYYP3OD3xuL7DkeyvNbB5UwqDStu1oAFkKEEvBZzFwLH2+hYDq6CZ1S/98SwHV0UDqcEBZ+hoWA6t14z4xD7CEj4TAYrJp7uzIHGY0i66DDf/R/u/i2KyjP4VBWKrzjDXPwuL1a6Fo9RIAq86+QhIEQfwF2P4GnSoeVBodRGlzATxUMlHOulzb/OfW2edu/9UQV5YCS5S7Rh9LN1dgcW9AYAlORfeUyShOZpvcJ/Kp7mxVyyFzAQ5avgeHHK7CmLLfMKa07cDikUWBRYHVSYHF/UhQ/mE1t3lgxX5Uj/LShl/V355fm330ZA4MGiqdsuYFmFVUBCvXFnX2JZIgCOKvB1ayRgkKdQpE6G4D6J3Ty6VgY6FVwXMf2eQ9XeWQv61DgcUjiwLrLwcWW8WSJJmfTQiKsdhz4nOYfrgOE47XYvSBM/xpwuj9Z1tIgUWB1dmBFftx+4EVzVa39tdWpX51/sMRx88+CZE5PZ9c8zwsWrkKVhXTU4QEQXRbrEGjS4VITQ70T3sMIOjeILuCbRuh4NnvbAt2nrfN24oOBRRYnRlYbMO7l3YyDywv3US0SxiNkrtXY8K/f8T4w3UYXXqOAosCq9sFVpw+sGI+qcWE/fXnU09c+i7vaNVGyeOLgh/c8hrMLF4NK5YtpcAiCKK7Yg/xmjzop7kL7NKmgVX+hljrgmc+sC547rxtwc4/bPM33/SB5Z613ExLgWUq3/g+ZAFKhswzahpbXONB0LO4hjMKRalPoSTlKfRImo7euqfQV/ckeidNQJHyCZSOXIwRz55AZXkDKirqMO5AJY+sqH1nuNczsK51k3wLu3lgWdyk3uzvt7k3OqC6emCZ7sEy3YcV/3G9PrIaMW7vxT/+n737gIrySvsA/jAz9KFXewOkzzBD772o9G5P2WTzbRJjpyhIU+yaZmLvvStgAVRsMaaYtul1LUgHe4nPd+77zgwDKqMiGUbuP+d/ABV3z8nO8Nt77/tcz3O3bwZfuFU++o+7bqGby2Di+6tg/sKlknV2GhoaGpWLFrgHpgGY+HM1E9/XhZFboyFp4wVewnpkVq/iV3a4RchCigKrq4FlHpiNFoHTGWQZ+76NBtG52KugBEWHLqPvpxRYFFiqCSz38pvoVnGbQZao6ia6n7/+deQfd6PDyz/XBfMh3AWLl1Fg0dDQdN9w2r1Ftf1aA0QeIwCMvHQ1Yt935o7bO0ktae0v6gkrUSOu9QlCCizlAcs4mCCLACuTQZZF0FTUCclAzpj3ULjlJwxkho42ovh0I7qcZJFFgUWBpRLAkpSsZImOt5Crc36O/O3exOjjXzuB8UDdRYs6ABZ5upA+YUhDQ6PMcCT/tH4tjywt8PBNATALNdGI/TBB55WDH6klrbzMS1jG4Eo79mMGVWTAKIurxwOLBUwrsPTiKLAYZD0xsFhkSedhMYNH5YDFrmKxyNILnoZqMbPRZnEVBp29hq6fNMsBi5zHapAhiwKLAksZwGo/J+vxwGLPZBFgCavqLqXU4DLPHcfiwcTKZM6CjwCA99A7GhMKLBoaGmWGwMrCqDdTMxNzMDMxBQsTY6ZmJsZgZNIfPMNeBzAd0U8rbmUGb9SOY5yk5U3qiRJQxbKrVuwE97aT21vnX7UFFvkoD6x/GlDPHWQKgMUftqBNdaPmycoedJ/NIEtacuhdvuQCaMOQQhmypIfdpZPdyf2E8sAi4xqMgzMR/CfigOydGHi6AT2+uImCk43oduY6upxqQZdT7GXQzCrWiXp0P/74KgKConb6kLiC7/c52dJhFQGqs4M+lQ2gzvZ5AUla6dgF2fiF8ro2dT9SL6vr0fpHjmmQzcMqb0LXiibmSUKXqmbywEZT5K83K0MOfTYd+gr7Ld1wEPpZO4CNrS3Y29uCra0tWFsPBSsbaxhsO4gpRRYNDY3SgNXLsDdTGbCM2ZKvdcxsYWj4VADhZDvtxHUreambf+ckfXRbPel91Er4sHX16lHAiv0QDWI+RMMYsj3IAotF1buyz+W/7pnAkk52ny2rXkSRrE8OLOk5rGzmiULzoOmo6T8JTV5bhp5ll9Dz/C0Un25GwfEGOWBJtgkpsCiwlAQs0icDVgMDLPGZ+tvhP938bdSPTSsg9l92UzYeBEsHMQyytoEhQ4aAtbU12NjYMuCysrdiSoFFQ0OjlJDF9F5GpkxZVEmAZWQJxsYDQc3CHYyiikA7eb07L3lTBYeMZkhc/jcLrPdRJ56UAqs7AEu6ikWAReZhkW1CbkIRDvroc/T95B56nb+FTidq2K3B0+T6nBpmkntHuKLAosBSNrDI75FRDuTqHLdTzX8HfH3rVtyvtyvjL1zyGHX4LGgKPGGgnSMMtbcDWxsbBljWQ21giN1gphRYNDQ03QJYstUr495gYGIFYOnPNUldwdd9+WAsJ2HjN7yEtchLXI7qiR+xK1gSXFFgKR9Y5CwWmYllKrkE2iQ8G9VH5KFexj70PNKEbqca0fVcI4pOV6PLqSsoPnkVXatqKbAosLoVsFhUSSv9/gbmPJZH1Q10P3sN/S60fBt78V5czOlvdKHvUK6FjSMMdXCEwQMHMduEpDZ2VkxpaGholHgGyxJ6GVmChbE5UyM9PpiaWIKOmQ2AsZeuSeoqgd64A1N5cWt+IaMZeIkrkTxFqBO3suMzWD0EWAbRi9v0acClF7XguQCLlP2cIItsEWaiaXAmaofnovr45ei84Uf0Pd2I4jNXGVy9SMBS9P1eJxo6LgWWUoFF8NSmEmgxq1lH6tHzaB16Hm1Az3L22hxy2N3j3LVfw369PyX6/B8CsPfSNbF3hcG29uBk7wA2zCqWDdgMtWJKQ0NDo7QVLAZWBFgSZPUyMwUz876gYeoAYBxgapiyOklrzN4VvLg1lzXiVjG4IvOvKLC6H7BImcnuQZlM9UNnIkTl4eC55Rh8pgE9z5MzWFdQWFWNwqoaFJ2oUfkzWBRYLxaw3I80yupxpB69j9Qx9Tjagm5Hr6NLeTN6nrt9OfgXXD78/MVEcAoyNRb6MYfdHe3sKbBoaGi6T8jTgtKtQUsTM+htbgbGZgOAZ+4K0Ce2n07yymzOqO0n1OLXNfPi1kiGiy6XjGSgh9y7C7CkoxvIKhbBFXmikDxNyAmZhmYTVmPYyWp0P1uDglO16HyqHp1O1qFzleofcqfAenGB1bqCVYeeR1rQ4wh7fY772WtNAd/ePJH0VW0WuIT10xMEQH87FxhqZS3DFTmPRUpDQ0OjVGBJkUWeHDQysQANExuAfpEA9q/bqSetWM0ZueUPtfh1t8kWIcFV+1Ur6eyrh0czsLiiwOoKYLUiy6gdsMj2IAEWgZam70Tkj5qLPgd+YQ62k0GjglP16HCqjkGWuIoCiwKruwOrgQXW0Rb0OnUHxSeab3t91vxH3Lctqy2mL7EDrxFgYS8GO0cn5oA7BRYNDU23iJ+PD/h5+4GfbwB4+oSA0H8E9PMbBVqR+aCVus6dl7KuUiN1/W1uwoq/1ROWs3cPJnwoO+SuF/8B6jN9Dw3jSD9A49iHS35PP36p5M+wn5MqHUhdPKi0PbjaA4uZ5i5XFlzSzn7sZdD6obltG5zDXAItGz4azALLxD8DNUfko+O6C8xQUa8zjQy0mJWsk4q3CBVVEWAUAUURcBRVEbC6GkgKAdPFgOoskDwrOu7Tfn97ULUHlyJgkQcy5Cs9l8WMbChvQdfjN9Dt5I2/3U9fv+1//npl/C+3Pb3WHoQ331sNeXMWQP7sIiggLZoD+YWzlf32SkND09OB5evlDT6ePuDuHQDiwDiA3n5c/ZEr+DB6exwvecM3GomrkBf/MfP0oGbCh0zbA0sKp1ZUkc9bv6bAehZgFUsGjhbIqheWz5QfmitrK7ByZIfdGWAFZqOZXwZqh+eh8cz96HTgT/Q9XY9uJ2tQXFX7RGewKLAosJQKLLmnC5mZWBVSZN1CtzMt3wb8eCthxNkf+dDLmpszeyEUFc+BwjmFUFA0F/ILi+k4dxoaGuXF39cHfD09wFcsAh93b3D1CgMwFvN1Ej8Q8cbsmc5L3vArOdhOVq8osLo3sAyD5IAlnYvln4VaQZkIKfPRaeN3zNOEbqfrmScIxcdrOoUrCiwKLGUAi1RMkHWq+deYvzAjuvIrEfS24ucXL4Q5c4qguKgQCguKoTB/HgUWDQ2N8p4iDPD2An8PN/B3cwVfDz8Qe0UBWPqZ6cR/mAopO1ZzkzZckQKLbA9KcUWB1X2B1f4SaL2gDISIGTh08XEMIFfmnK5H9xO16EaBRYGlosASVraguKrxStzvuDpoz8lUsLQxy8qbB7Nnz4Z5s4tgdsF8KC5c9PjLoGloaGi6MuStx8fDHbxcXSHA2wc8fSLAKWAUQO/h/XUTV83UGr3/tHrihmbmycHEFaiV+DHqJC5jqpvAlgLr6YAlf+DdYNjCZwaWXvgspvzQPNQPyUOD4Dzm4LtRMKn8YffpaBAwGcFvMvadshXDTzahzzkygLMexUcvM0gi24SPquygewdVNrAUVdmH0Cmwug5Yosq65pif752KLLkwE4zt+2fNWwF5+cUwr2guFOfPh0XFS9tcZE9DQ0Pzj8bLw5055O7mHgB2HjHQJ+A/AJ6Z9vqpW9ZyE7f+TyNh3e3HAUsvfpnkgDsFVrcAVnCeBFi57IT34Ey0DJiCZgHvoI7vJDQd/z76HPgT3Y7VodeJOvQ4XqsQWB3higKLAku5wGq4Hfcz/jX66+a1EPWaw6tLN8P0oqUwu2gBFBcugOL8uRRYNDQ0yktAQAC4efqDi+8IGBL0OmiEzgbdtB1eemn7jnOiN9zWSlj3t1bCKgosFQQWMw/LdwL2CZqExv4TUXPELBz0bhV6HavHwDMtFFgUWKoOrL/DLty9nfjDvRPRn1/x8V+5D/5v6RqYWbQIiubMheJicsidhoaGRkkJ8PMFkbsvCPwTAPqEcvVS1+vpvlSepJG44zuNmA2olbAOnwZYrWMaWoFFfo2McWgd5cB+TtqTgcW03TmsRwNLWjlgyc5idbyCZeY3AfsFT0Zz/3eQHzEDjaZuR99DVzHgZD2Ky/9izmJRYFFgqQqwmFEN5SyyRJVN6H3mFgZ/ffe7EZcwecQnv+jDEA9u5twPYebs2VBYnK/st1caGpoefcjdww0C/YPANSgewDJAzyBtjSt/fEm2evz63zRjV6F24jrUTlqD2kmrZMCSHnAnA0alwJIvAZV8H/VnpJUfSvqoyibDP2MV/f2KwKT47+8YWAbRbas/YkmbEmDJl1wALS0Bll74nNaSAaRhhXJlZ2KRkmGk0nNY5LC7YdAMNArKQjP/SWgZMAl7+U9C/ZAM1B6zDEVrv8GQT2rR8+xlFJ+o7hSwFAGgqwHV1cDp7kDqLKAUt6nDPjwotP45t3XwqOvRthUdbUZh5XV0O3/799A/H2SN+Px/rmDjz896dwPMXfYBLHh3Ln2IkIaGRjnhAkCknzeE+AeDMCARwDLIXC9t9SjNMXvXcePXVGvGr34mYD1NKbAeDyzSNsAibQOswnbAKmCQxT5RyALLNHCaDFjkImj14UVoQ+4mPE2uzqHAosBSHWC1LwGW4Nh1dDl7szrwp7tr4y5cHQnCEWZZy3ZA3sKFsGAJ3SKkoaFR4gpWVKA/BPiHgSBoDMCg+AFaaWvyYNTuT9Ti17Wox6+lwFIhYElXsWQjGwJnoHlABnPQvZf/FAZbWuFZaP7OGgysqka3s3WyYaMUWBRYKges8kZ0rmxG8ZnrLSHf3T6b/nVDLrjGD8hYtgvmLnkXFs0rokfcaWholBUO+PsFg9g/Fqwi3gZw/j8HTvK69TBy1yW1xI132gNLJ0FyBkvugmcKrO4NLNPADLT0n8YAyzxwCmr4vIXaI4vR88Cv6PXJNRSdYC98JhUfb/1cWgosCqzuDCzh8evocqrlTtBXty7Gf9G43uD1IsfXVu6F/KUfwML5ZNAoDQ0NjVKiAV7B8TAkaDwYRheCetIqb07q9uNqyTvucBLWP9BIWMcASzdxDeomrkLdxBVy86/aHnLvqcBqPdwvObz/lMBiniSUa3twdXzovQgNw1pLLobWD5rFVrJNaBKYheYBZJuQBZZx4DuoHTMTBau/RL/TN9DrTDO6nmxgoNW+BFzMQfZjj29ngdHVpcB6wbcIK2+i04mbD1zP3roT+MX1kyk/3PCL3lkJkz9cA3MXLqGDRmloaJQVDfAITQXoFcA1SP9Ynzt6R7JayrZvuYmbUT1RgqsECixVBhY5h2USNI3BFalp0CTUicxCy6y96LbvIvqeagWW8HgNBRYFlsoAy5UAq/wGOh1jkIWun1z7fvjvd9NCS84agaU1d96SZRRYNDQ0yooGCHyiAEw99fiJyzx4Y3bN5KZs+o2XsJoZzcDAigKrWwOrPbbIyAamobloEDKTeXLQMHgamgSRM1hT0DxoOuqEZCAkLUDxuu8x4GQ7YB1vYCsBlsJzWN0AURRYPRdYLuXX0LniGjodb0Hnqobfh/9yb2bMkS88wHSI3oLFHQCLPF1InzCkoaF5nuHIlQDLNTAZwDzIQif+w7Fa4/Zt4iatq9ZgMLUK+VJkSYDFlwBLiisKrO4FLKZywNIPnYn6wVloGJzBrGKRQ+7kTBb5NQibiQ7zT2BQVTOKTjUxqBIeq3siYLlX1smqbEBRYPVkYDWiy5EmFlmVzeh0oq467s8HG4L2nBwDJoPN8+e9CwC8R7wDUmDR0NA8h5hZmMpqbmEKvcxMoY8p+9HIYiB4DHsToHfCQJ2EVYW8tB3nuUnrrmlJDrWzyFrDVg5XfDlgdBZYnW1nAdbVgHto8Gg7fLUfPNr+Mmh+ZLGsD83FCp+D+rLKAUtyATR7N6HkXsIgtmRUg1FIJmoFTMV+72zEgGON6HruFopPXUPhMQmuJBUfb2gDLHlYyYCl6itcXQycrgZQ+8GeD7ehU3WrqOuwnQWW6+E6BW14bMVljSg+3IIuh68zk91dTtZfC/ux5dOA/acKoK/zwLnLN8NgW0ewc3QAJ2cHcHBwANuh9mBjawtW9lZMKbJoaGg6DyxLYzC3MGZg1cvUHMzNLUHX0h5sh2cBuGc6aSWs28RN3lLNTVp392Fgya9efUCB9ZyARdoRsJjKAYv/DMBiJroHtdYwMAONgzNR338Smo9dim57/kTBsSZ0rbqOrlUt7YDVdgVLiiq3ihpZKbAosJQKrLJmBllksru4qv5u6A/XriR9fWmzRuqbTpmby6C3sxsMthkKVlZWYG1tDdbWQ8HKxhoG2w5iSoFFQ0PzzDGzMGdKcGVpTmoK5ma9Qd/CCqCPNxjEzAfd9C2+vKQtJ7mJm+9oJG14oJG8BrWSV6B20grZViEFVvcElvyUdwKs1nsKc9AgLEeygtVa8lQhuULH0H8y6kTn4YCFJ5lrSPzP3kM3KbBkh9xrmKt0mB6vZy6JJnWtrJGVAosCS2nAOlSPosP1KD7SwF6jc7z5QeA3t++Ef9dyKvbzi/5J+6pAW+gFg+ydwdbBHuyG2jIrWEPt7cDGwZopBRYNDc0zh6xUmZubS3DFAsvMvC/oWdgC9A3hmoxeZ8j/1+E0TtLm/2okbUKNpA2okbyuDbB04wmuPqbA6uajm8H5AAAgAElEQVTAYq/SaQssctBdHlnM2IagTDT2n4wGIwpQb8I29DlYjwGnbqGoUn5MA3misIZBlhupBFcUWBRY3QlY4kO17NdHm9H92A10qWrEgG9vfx/1x930uNM/GsMAJ25vOwHYCwRgM8QKbG1tmdrYWTGloaGheeZYmpmzNTdl2s/SEsxMe4GRxVAAMz99s1EbvHRfLs1VT9zwO5l7xSJrEzOiQSdBgisJsNjhou+zwIr9kGlPB1b7excfuodRAbAUXgY9bF6bPnToXdbZbMMLUD8iD/UjcpnyQ2agfvAMdmRDoGQuVlAmWgROZw7Ba476AB0+/BKDTlxD33M32KcJq2qYtgeWPKykfdS5LJU6BE+BpbLAInU/1ITuZS3ofvgGcxaLXAAtPt34R+jPt3Njz//pBbae+qYObmBl7wTWg4fIgGVra8OUhoaG5pljaWbJnLkiZ69YZJGzWH1A19wBwNDXwjh97XitsQe2qCduuKqVsA61EjcxlQeWTtxy1In7iAJLRYElRZYUWBaBmdgrcDoahWSjdtw8HFJwGP0ratHtJLtyxQJLspJ1rBpdK6sfiSsKLAos5QKLxZXroevoWnYTxeSw++FGdD/dcjXsh7ubYz79azwIQizMxAEw2N6F3SKkwKKhoXk+4YClWW/oZWrJHm43MwZTU2Mw6jUIuJZuAH1iB+qmr56jNmbXF9zEzdc1EjagbsIm1CUfE9mrceRXsKRbhKT6ccvYUmB1a2DphrYFlnlgtgxY5CyWekg2Gr+xEgOP/g99zjUxwHI5WY/CE5LD7sceDSsKLAos5QOrgTl/JT7cxCLrEAssz1Mt18K/vf15yme1s8EjZqC+MBCsnN3lgGXDfE5KQ0ND84zhgKVpXwmy2K1CY/NeoNXbHqD/MADRJCdeypqt3DHbarhJG+6RFSw+UzL3akUrsCS4osDqCmAt6RhYZB6WHLD4TwwstrohOW2ARUY1sFuEmcxHLb8pqJUyF913fY9ep+tQVFWNLidrJcBqYs5lUWBRYHVHYBFcuRytYw+5HyIrWS3MOSy3yqa7AZ9evxr/ReNWs8kLnEEcApYObmDn6MSMaCAl0KLAoqGh6UQ44OMdBH5eQRDoEwA+fkEgDoyBPgFjQSNqLuiM2RnITdlwmpfCjGZ4IHtikBkwSg64r2A/lwHrg9YBo90EWN2tT30Ivv3lz8MXt2n7Q++6UfKXQbOH3uUHjRpFkq8LmMPu/FD5qe7SmVhyc7HIuAbfyWgQPxutl55GnxON6HW2FkWnq1FcVcsOHlW4gvV8geFV2dimikDU1cDqLIA6//c/3aDP593nPzj0+a9gMZ9LgEXuJ3SrbHngcbL5rv+55jOJv9wMslqwSu21+R9Adt5syM7Phxl5uZCdmwMzcmco+w2ahoZGdcMBH58A8PXyhwBPb/DyDADXoESA3oE8ndHrTWH8wdFqKZt+kM69IqMY9BPYMmMZKLC6JbCkJch6NLDI04SFyA8tkE12J8CSIqvN8FHfqagfNQuNJm5Dl92/o8+ZWhSducwASxGuKLAosJQNLOlZLCmwyHYhQZb4WAs57P6j/4/Xx4Qd/9oM+tnwMvOKIHPWLBZXeblM6ZgGGhqaZ46/rx8EeHqCv0gEfm7e4OYzAsDY3UAj6WNf7isHC9RSNv2pCFjkc37ix8hPXIb6CR8zNYxnq2zQdLeqHLACM5hzWhA3D51WXUDf07UoOnuV2SakwKLAUkVgMdfnVDSS84R/hv14PT/y8Gc+0GuQfkZOHoOqmbNyIScvnykNDQ3NM4XcuhXk5w3+Hm4Q5OoKwd7B4BGQCNAvzFInddUr3Jf2beembKihwOqZwCIlV+fwQ8jdhDloPaccA07Wo+hMPXvQnVz+TLcIKbBUEFjCow0oOHa1Jva3e9uC9556GSytLDIKihlUzZo1C3Jz82DWLAosGhqaTgArIiQAArzcIdjLC3z9IsExcCxA7+hBOqlr5vHG7PmKm7LheofAkrU9sFZQYD0HYCm6DFrRXYXkgLtBxGxZ21/+bBCaz9QwdBbT9sAi57DI3YTqIZloOWEDBhytZ4Y1Co5LRjUoAJaiQ9CdBUZnAfe8Afi8gdXVh9S7GlCKgdTZPjuwnCuqr0d+f/NCWMnnc8HCaVDm3I+gYPYiKMybDbkzZ8Hs2cXKfoumoaFR5fh6u0OAny94efmA0C8O+oW8BeA+xVkrddMO3qhddbzkDfda7x5sBZXskLscrh4G1gp6DusFABa5m5AfOB2Nx7yHTuu+Z86vuJ27gQ7HqimwKLBUAFityJIHlrC85l7EN7frRn/btF0t9nVBetHHMCl/McyYORtmzsiFvLw8Zb8909DQqHL8/HzAy8cX3P0jwDp4DGhG5IFGysZAjbSdZzTTd93lJW940DGwCK4osF5kYJmFZKBh4DTUiZmDvWafQEFJI7qdu4WCMw3MNiEFFgWWSgDrcBMLLIIrBlh1D0K/vHM39vs7ZxIvVAfpv5XLGV30PmTkL4DsgllQMCdX2W/PNDQ0qpwAP3/w8vYHkX8UgJGYp5XwoZnm+NIx6qm7ftBI2crcPfjswKJbhN0DWNI+G7AsgjPQJGAKczeh7pvb0GXnJXQ92YROZKo7BRYFlioB64h0PhYDLPQ40YS+nzb/EP7LnbHDT/9sAYPceRMLFkJ2YR7kFGbTpwhpaGie/QxWsL8f+PkGgVdwPICZt4FB4soA9bS9hdyUTX/ykiUXOz8CWG3PXskBS4Is2SF36a89ptI/97hKB5c+vss62Q86VUWgMkxY1qZPA7BHXQatF72kbRUBK2Jea9sNHiXgIvOwGGSFscAyDM1BY6Yz0CRkBpqFZDHAsgyehgbhWQgJc1Gw/Ev0O1GP3udamC3Cx5UFVsftLFC6uoqA40aGbXZQ98qmDtvVh9SVfwj9+ZZc3ixf90N1bepWVitpPVMprForN+H9SAOKDtejZ1Xzn6E/PiiKP3/VH5xDDKYs+BCyCwtgzrxCZb9F09DQqDKwAr28ICgwDMQBSQB8D0vDpDWv8dJ27eSmbKrhpaxrAyztpPYH2+XOXyV9wLQ9nCiwnh1YpJ0HlrTtkcVOdifAYpAVNkuCrBwJstoDawoah2UghGfj4PxS9K+4ih5nGymwKLBUEljSCsvq0P14c03Itw92JnxW9y9wDracvHg5FCxYCEWFs5T9Fk1DQ6PSwPLxgYDgYeDgNxbAPHqwXuraBZC67VtI2nqDl7SlzRahFFiPenqQAutFB9Y05iwW+E1F/deWo195DXp/dlM2qoF8lH5OgUWB1f2AJQ8rdmuRrGAJj9Si64nGG8Ff3/0m9cvG+SAePmjC0tWQP3c+LJxbxLxH0tDQ0DxDOOAfGAruIcnQP3gigHCiUDNt3S5I29KglrLtPjdxM6onPryCRYHVE4GVgRbBWcgPzET1hHnovus3dD1RL8MUBRYFVncElriske2heqbyZ7eYLcLyRgKs+0Ff3K2P+6xpp94beUIwH6I2Y+4imJOfT4FFQ0PzrNEA96AEGBj0GkBgDpeXujGEk7b5E7WULfc4SZsfEGDRFSzlAssg9t02ffgy6EWPvQzaYNhCNIhcJOkCpo+8/Dm8AA3D89jKAYtBVmgWs3JlIQGWofd01IspxsELqxiAeJ1qQreqBhSdqCODG9Gl8upTAUvxIe627SyInncVAUtR6SH1fxZY0t9nvi5rZEY3uJW3PPCsunEv+Py1T5K+bQjrM3U27+25H0Bx4TzJOj8NDQ3N00ZNC4T+yQD9ojT0x27qxXul7CW1tK0/8pI3oXoigRUpXcHqycAyDs1Ck9AMyUrWDDT1nc78eYMJW1C47Vf0q6LAosDqvsASlTawLatjKv09KbzcSpvZS6ArWtDtVONPYd9fezmy5GxvMOirUZi/gAKLhobmycNp85ahBd6hIwHMAg210tYEq/+rtBhSN/2lnrQGtRLWoF7yOtSmW4Q9GliGYVlMyXYhAZaZXwbqB+cgRM9Dx2UXMPAEBRYFlgoDq6wRRYca0bm8gdxO8Ff4DzeLo0o+DQKTIYZzi5dSYNHQ0Dw+HMk/rV/LI0sLXPxSAczDeumkr32D92rJXrXUDbUaiauQn7SauWdQ+xG40n3MiAbZmAa5eVgUWF0NrCWPBRbTqMcBi0WWXkRRG2TJn8MyDJvBjGZggZWDFkE5aO6fhfqBWQjBuWhTUI5Bx1qYmVjCEw0oqKylwKLAUg1gSbYIScmoBqejtehYWV07/Jd7e3y2Hfs3mA7tVTT3AwDgtSMWBRcNDY0EV2YGlkxNDE3AxMgIzAwNZNU36g+uIa8DDEofrJmydjHvlb3fc1PX3NRKXoH85JVtQKWbJMXUk1eGrE6084Dq6nYOYIq+tz24+DHvyaof895Dh951RyyWlbkQOmpBm5ILoFtbjLoRcxhkSaHV/sC77LB7cA5T80B2AKlmYAb2fnM9+h9pQLfT5GnCFrQ7dAVFlXVMZcNGy2s7rPvRjqsYEYoQ1NXfr9pAag+Up21nwaTo728F0+PKQkr21GBpXYeV/7NSdJGho4LjDSisqrkx/Nc7//Xbe3oR9HYZVPzRNrCydoJB/frDwP59YciQITBgwCDo168f9O1nyZSGhqYHA8tSz5KpmYEUWGyNjExAy9gGQNdHDYTThFppW/fA6O1N3NQ19wmwWmdePT2snieyejKw9BQAi99pYM1jgCWPLPmnCsngUTJ0lKxemQXPkiBrBjPdXS9wKhqPehdFm39D5yONDLCYH1LH5C+ArqPAosDqtsAiX0uBJTzWRLa570f+eLsx/rOLeyDqFRcwGKLWd6gYBg8YwqKqb1/o27c/87Ff/17Qf0BvZb/F09DQKCtcAOilZ8TU3EAeV+agZ9wfwMwVwG0az3D8wTD1MQfPQcr2+9yUDQ80U9Yig6zkj59p5YoC68UAVusqFgssskXInMMKyWLuJtSOLkKL/EoUHqxFr7M3UHSK3E1ILoCulqxiUWBRYHV3YNUw4xpcK5pQfKzpQfDXt++N+P7mp4lfXAnXfWWqhrq1C/QdaA39BvSXAat///4waEAfpjQ0ND005LSApb4RU3lgGRpZgrbxYAALfw2j1HV9NF86/Apn5N6fIGYdkicImentyasosCiw0CDsYWBZhmSjccA01IsuQs3X1qHL9j/Q82Qj2WJBwbFL6FJ5BV0qalFUXk+BRYHVrYHlWlrD/D0eR1vQrfI6iiob0P+L6z9H/Xzj1YhD5/tCP0cN0/42MGAQ2R4cICsFFg1Njw8HTAzNwczAnDmDRbYJydkrsoKlrjcAwCLIyDh5daj2uIPzeOlb/sdNWYfS63Fa7x6kwFImsDoziJQcgGeeJJTrw+AqZtr+qcJWYEm2CoNy0TxwJgMsMg+LVC88B3nJS9Du/fPoeuQyik4TYF2RA1bHuOoJwOoskCiwug5Y7qX16FFSg+5ltehaQq7NaULR0WYUVzX+L/Sn+/NjP/kzFAa7G5lZi6DfIGuwHswia9CAATCkfz+m9Mg7DU0PDnO43dBcAi0T6GVmCsYmvUHH1BHA0L+3SeqaN9VH79mvnrapjuCKGdGQtAZ1yZOEFFg9Hlh64exHAizTIBZYlkEssMj2IW9YIVpM34Wehy8yK1jOFdUolKsiZFFgUWApG1ikriVNKCptQkFJI3pU3agL+eHB/uhPLv0HHIN76wxxAcv+1tC/T1/J9uAAsOrXjykFFg1NDw158ZMVK7I9KN0i7GVhBkYWA4FjIgLoFz/YaPSmd2Hkrp8gZdstDjNYdAPqJrLAoitYFFgyYIXMeghY5AlDTuA01Bi7BD1KL6LHJzfQuaIOnStq0LnyMgorLqOo4ioFFgVWtwQW05IaSRsYZAkIuk5euxn07Z0fky/ULwXhsMFa1u5g0X8oA6tBgwbBoAEEVwPApu8ACiwamp6aVmCRsQxGzGqWkZklaPW2BzDwUQPXySKdUZv3w8gd19RStv3NSVjPDBZlgUWfIlR1YEnvKnw6YLWOa2AqByyyimUmt0VIDrtr+U1BjaQ5aLvmArpVtTwVsBThigKLAuufAVadDFiuZIvwWNN9v89vtMRfaNqn/3q+CMxtOfwBdjBoyFDoP3AQs01IgEVKgUVD04Pj6+UNPp5e4OnpCSJPHxgs8gMwcFBTiyjU1B63I1Jz5LZPNVO33Cd3DvISVzKDRaWrV5094P68ZmGpNtAUIarj71cELH7s0jbVjVki65NcBq03bB4aRLVWfsq7QQS7osVOeM9nkEVGNpgGZTPzsEgJtLSH52OvwqPoU9EsmepewwwdFZbXyc5iiZ4SVrJ2EhiqDiSPTrazgFIMrIYOK70D8HFVBChF308OqbetImA1tiv578BemSMua2amuovKGx+4VbXcDzp3/dOYC/VR/XKWagO/l9qrb06Ct96ZBhMnToap70yCaRMmUGDR0PTk+Hh5gJeHO3i6u4HQ3ROsvMIA+vprqo9cNQBeOvi6Rvr2n8m2IJnerpG0QjK1nQKrpwBLHletwJK7TkcOWNK5WGTQqBRZFoGZqBOWi9r/3oDCrb+jR1Ud+zRhZT0KjzagS0V9mwPvspWpI2wpsCiwlAsstgRXUmAJDzcyh93dqpp+Dvnv9df9D54dCGYDNf89KQvempwBEyZOhYkTJsGktyiwaGh6bMiL38dDBL7uAvAUOYFY7AYOHiEA5u7GeuPWRfBeLVmknrbtovRCZ2Y0AwUWBdYjgGUUViADlhEZ0yBBFhk6qhvC3k049IPz6HWiDp2r6lhgSVawKLAosLo/sCTX5kiARepSUXsx/IebC0PKzkVAr8FGr0+aCv+ZOAXemjAR3nqLLb06h4amh4a89L09BODlag/eLk4Q4B8C9h7DAEx9+mikrHhb49XSEm7KpnoKLAqsRwGLbBEaMsAqeCSwGGQFZyI/ZAZCWB4OmnUYfY9JgUW2CGvaAEseWRRYFFjKABYZxyDfjoAlPHK1ftiPdw567ax8CyyH9B4/YTL839sEVhPgzbemwJsUWDQ0PTfkpe/l5gQBXiLw9fACkXsYDPRMBRiQaKWZsvYDzph9v/KSN91igEVwlbISdZJXMyV3EfKTl1Ng9WhgFaNhWJEMWEZhZKuQHTxK7ickNQ7OZMDF9c9A09dWo/+ROhQcr0P78svoePQyewH0Y1ax6BmsJ2gXA6mnA0ta2aXQh+SQdaT2Vvi3t38JKbvwPvRzHjJmQja88eYUmDxhKkx4ayq89eaUpwYW+dOUZDQ0L0DIC9nXS8ycw3Jx84YhrlEA+n4c8MgQ6Y7afZCTtueGRsrmvymwKLA6BFZYkQRY7CqW/CXQJqFZDLJ0/aaiQdpitF31FYupU3Voe+R3FBy7KkPWMx10p8Dq1lU1YIkP1repAmD9HfU9Xk++0HgQIkaJgd+HM/7NDJg8KZvB1aSJ0yiwaGh6ctxdReDl7c+evdK2U4OAXC3Dfx2K1B176Lx6yp6/NZM3o3bKWtROWU2BRYH11MAyC8tmxjXo+05E9WGz0Ci3BB32X0TxmVp0PnUJnSmwKLBUFViH6zH0i7//Tvjx78/iP/9rGP/VKdqg35fzn7ezmacJp0zLeOr3YwosGpoXKF4enuDq5gtO3sMALAM0+ekbBmqMK39dI/3Az7ykHfhoYBFcUWCpBLDInYSPARZT5k7CRwNLflSDdFzD0wCL1Cx0Jnv5s89E1I2aieqvrkKHLT+gqOoSOp68SIFFgaVSwJKew5LWrbIF/c5e/yX6l1tvRFd+NQj6u2i9/k4uc9j97YnvPPX7MQUWDc0LEvJCDvD2ggDfYPAIiAcw8TU2S9s8TGvUoSXqqTsu8pI3oGbKegmwVkqAtVIOWCtRP2l5p9pZgHUWeJ39z1c+0NqWH/dhm3bmMmjS9tiSXgKtHzGvDbCkh91bgSWpZDaWWUgGGoRnITd+Ljq9/wl6nLiCrufqOw0shYe4FYCqqwHU2UPmXT0ItOuBpNwqPHP1DGeyZKtZBFyHW9C1ouFi2De3liSc+iMKbAOMM+d/DFn5syGvcNYj33OfpR29h9NCty1NDw75H0Cglxf4eQWBu18KgFFAH4vUzRM10g8c4qVsrddIXd8WWKnLKbB6GLB0hi9gKoOWPLDC56Fh2JzHA4tMdw/JR5PgWcwqlnFYBmpGzMSBmbvQu/ISOp+socCiwFI5YMlDy+lAHbofu1Yf9vW9svhTFyeCaHift+csY4BVPHf2I99zKbCgx5SmB4f8DyDY3w/8A4aBi9/LABbxVsYjN38E6Xt+56Ruv81L3SwBFrs9SIFFgfWkwDKUrl4FF6JZUD4z0d0kdBpqB05D/Zc+QPdD/0OXT5qYJwopsCiwVBVYtvuuoKiy4Xbol7f+SDtf+xE4Rlq9XbwCMvOKIL+ArmBxenhpenQ44OsXCgLfOAAdPy44TXLTTd9SCmk7b3JSdj7gpWxtAyydlOVtcEWBRYElA5YUWe2BFTSbARZZwTILnYb6QdNQL30h2m34Gp2P1aLwWCuwyFys9qMaXI/UtCkFFgVWdwKWc0ktCg7VPQj49Prt1C+ulZm/PscVzB242fOWQFFR0SPecSmwOD2oND06GiDwjgbQc+OATw5fN31btEbazs85qdv/5qVsR42UzaidvJ492E5wlbJcDlbSUmB167YD1kN9LsBqXcUyCM1nLn+WX8EyCc5nxjWQc1jGgVNQe8Qs7FV4mAGC+HgDgyxyATQzePRoDYpJj9QxbQ+sh8D1lEDpalBRYKkWsMQltR233aH3tm1Ez6O3mSt03CtaHoScbvrspW9vRltNX6gLXENO0dxFD/2YVfQDmSspBRa8EKXpyVHTAnHQSIBeEVo6yWutuWNL3+Kl7fpVg6xckacHkzeiThIFFgXWEwIrrIgFluReQmayewi5BDpfNhPLJGgaakdko+6/16DThh/RvbKB2SYkwHIqv9qKLAmwxIevtikFFgVWdwKWx6FbKC67huLDTehzsumX2O/vvBlX9qUVmA/VmpE/lwILenZpenS0wDM4FcDI18Ro9KZozZfL3uOkbr9EcEVgxU9aizrJpJLtQQosCiwFwNILy5etYhmE5UhWswi02Gt0CLK0w2YgDC9Cm8Vn0KeykQGWY2W1HLAkuKLAosDq5sASlbSgqLQJBaW16HG8/tLw726/m1Tx/QgwszHJL1r41MB62h/UygYELVBg0Twc9l++Brj4JwMYB/TVSlwxhTtu/2FO6tYGcu6KwIqfxA4VpcCiwHoUsJiGz5G0iCkBFtPwWbK2RdYM1A2dgRA0A/tn7kP/cgKsBgmwrrAXQFNgUWCpCLCEBxpRUNKIzmW16FpZ0xDzEx4O3HFuMhhZ980pWAwAvEe+91JgQY8ozQsevr4hWwN94Bvwmeob6ICRng7o6puCMGwMgFWClW7a2o+54/b+oZa+8TYvbS1qppKD7c8DWCs7rEHi8g6r6Pv5iSsUtOsR1pWAUwy8jgeV8snB9seUAEs/ZmmbtgdX+0nv0qGj0rYOHp3NNrxAVim2+KG5qB+aiwYhucy9hIZhM1DTbxqav7IC/Uvr0e30bXQ6UYd2Ry+h89FaZkI2qehwrUJgtR88+bRA6SxgOvv3d7biQ7UdVhFAOjvos7sDSmEP1nbYjoDlQmB1sBGdS5vRsawRnSvqbod9fedP3+3nl4Olm1Xx+9sgJiYVkhOTID4pFlLSEyEpKQES4hMgNi4a4uJjHnq/pj+YaWhUKPr6hpLymfL5OmBopA/6fF0AnqEa6Aq4IH7TTXPUpjK1MbtuwciNDzjpa1EjbbUcsiiwKLAeDSx+ZDHbqNlM9SIkuIooQn54oQRYeTJgGQaxE971/aegYepidFrzAzqU1jJPFJJVLHlgPQpZFFgUWN0FWGQFy+VgswxYjkfqHgRduHc7+lzNIV7SBDfQG8IFLRO1uIQkSEyNh2Ex4QysEuLiIDE+FpIS4h96v6bAoqFRoejr64OhPh+M9Njq6eqAgZExaOmbAWgO4oLbBAO9sdtiOWP3fA6jd/8NI7eiWvpGCbDI9HYKLAqspwMW20cDSz8wC03CZqJh4DTUHp6Pxtn70X7XH+h6sgEdj1+VAcv5CAUWBVb3B5b4QDNTZjWrrB7dP735YNiv9z4ffel6jOearfpg2o87PG0cxCUkQFzMMEiOi4WU+HhZKaZoaFQ4hnptgUU+5+sbg4ZBXwBTd23j9NW26uNKJsDonb9CymaE9M1tgCW/RcjcPdgGVxRYFFjtgVWkEFhkBYsAy2BEAfLGLUOHNd+gS3k1DpXbIqTAosBSRWCJz1xH3x/u/hpeffvt9F+vDAWBn3Zo2msQn5gKyTExbXBFgUVD84JtERoZ6IG+gRnw+AMBLIJMDdLWxGqMO/Chetqmy5yklchJW4/yW4QEWLKLnZNbwWOQyJYCS7nA0k9c1qZPA67nCixJWWDJVXIOS3bQXXIRNHmaUC98BkJMAXM3odexehSeaGCeJCTIosDqGcDqNJA6WfGBqx3W5UBtB61ntggFJWSbsJHZJnQ42ojCM82X/X65/cGwLy/GgH2wiXfyGxAbOxJGxadCUkIixCfFQ2JiIlMaGpoXBFhk9cpYXw8MDC2Bo2cHYB7RTy91/TTemH0VmmkbGjVSViE3dRXy0lZTYFFgdTmwDMJnoGZUDlpO2YLuhy7J5mE5H23dKqTAosBSJWA5lregw8mWRtE3N8ojvm2ZpvvWnL7WoybAsJRXITk2hUEVAVY8+UiBRUOj+luERnx92RahCZ8P2toWAHwBwIB0a520zSth1P6LnPRtd7gp65CXsorZGmTPX7FbhBRYFFhdASzj0CzUDc1A9bS56LzzJxSfbpZNdHeSrGI96klC+VJgUWApB1j1bYDFbBESZFVeQ9uqljvWZ5suefz3xqrR9WijMWEGeI55HYaPYFetyOF2BloUWDQ0qhuyvy/FlQlfhyFJrRoAACAASURBVMGVsY4RgJqFGugF8MBlmjsvZethGLnnLid9G3JTNqBmytrWuweZi50psF5UYDGNee+pgMV/amCx57DaXKETyj5JSIDFD5iEmnEFaPXxp+h4+Aq6VF5FYYXkacIjtSjqAFcUWBRYygaW9AwWOY9F5mHZHWpGm4pmHHC05p7DhetHA5vRY8zVZh7YCNTiU8dDYkIys01IgUVD8wIAS+TkBGInBxA524HISQCe7qEAPHsu17fQUDNlVzyk7PgSUrY9UE/bhhpJm9jrcciQ0ZQ1rU1dhfzUFaiXQroKDZKfvJ0FGIOodhdMt71sWrlVjKh/FoC6Ccva9GkHkcpfBM2Ca1Gb6o548hUtMh+LIIsdQlqAhuF5MmRJoWUemonaw2aiyYz96LzvL3SpvIKCY1eY63KEh2pQVFb9VMBSBK6nH7TZ1UCq71TdDzV0qqoOpM4OElV0yN2FQZZ8W5El3l+P7vsbmboeaJStYtkfaUK7o00PBp2s+9L+6r143x/+MICBAu6swvdgbvFimD93LsydNwfmLiBX6dDQ0KgusJwdGGC5OdqByFEMQmE0gG6IDidklb3uS6cmQcquX9VStrAXOyeRK3LY+wf5KeseAhaLrFVPhazOAqsjXFFgdS2wSNmVrLbAkvZptgylw0fZK3RaV7LMw6YjP2IGary6Am1WXUDXymoKLAosFQFWLXrsa2TqTlazDtazU93JVuHhJhx0vO5Xx3qc2LfyUzsYINDJLv4ICucshnlzimH+/Lkwb2Gxsn9E0NDQdBZYbo4O4GnvBGI7P7CzHwugP9qUG7gxQW/sqY8gZddlGbCYy50psCiw/jlgmYVlonZYFsKwAhw4vwrdCLCOsxc+E1y1B5b016SlwKLAUgawCK5IW1ew5Ka7Sw68W1XWXXapwY+cvvglHkRBpm8vWg7585YwK1jz55MVrDnK/hFBQ0PT+RUsJ/CwcwOBXTQMsJsKYDilH7hvzOTFHT2mlryrEZI3oEbKRtROXs/g6nFbhBRYFFjPE1jkyhzjsAzUDc1CCJmJfbIOoHdFHfM0IbuCRYFFgdW9gUW2CdlKVrZKJHcTljaizdHaRpvvbhz3+a0lE97O7pe6bitMfvcjKFiwEIrmFUPxfAosGhoVB5YduLq4grvLCBg09BXQd1oGINxlwwssXasVe/gKxG2+y0kmTw+uQ21ywD1pDWonrZIccG8dNEqBRYHVFcAyCc9G/eAs1AjKQoOXlqPb7ksoPNaEDmWX0O1YncJD7q6lNW36vMHV3YHVWSBRYD37FuGjKjxQj84H2doeqr876FjDVdEPd9YFXm6xcdh3EEat3gBTl7wPM+cvhMLi+fRiHBoaVQ156bo42YFY4AF29jEAnGFqMHS1Onge9+QGlVdoDC+5D7EbUS1pNfJS1kiAtQq1k1bIrsaRQosCiwLruQMrNAdNw3NQPzAD9QIyUTdpIQ569wsUkJWVqiZ0Lr+EoiNXKLAosLotsIT7a9r2QL2sDqX1OORQwwO7z29VOtXd84qqa+LBsDi1t5cug5kL3oX5i9+nwKKhUdWQl667QABOtm7g5JwEoB7Hg/7vm2r4nEhSDzpygRO5F9sCa7UMWNqpy5lSYFFgdS2wZqFxcDYaB2SgBrkoOqMUbbZfRPfTLSg6USMDFlnJetRqFgUWBVZ3ApZsPpZ0JaviBjp8evsrYS0mDa+9YQKBEdx3Fr8PeQuWQuHseRRYNDQqvUXo4ABCBx9wdBoJoDNKFwavcNbwOTYVfA/8BuE7EOLWo1rSSmbAqFYy6QoKLAqsJwIWKX/Ygo6BFT6nzaiG1nlYLLLIxc8EWCb+05Afno/qL61Fq5X/ZbYHHSquoOBwNXMWS1oKLAosVQEWWcVyOtSCTudu/+ZSg1MiLl93Ao9gnXeWfgSz5i+B4jkLKLBoaFQ15KXr5eoKIkEgOLr8G0DzZTOwWZ/M8SxfAf77rkD4ZuQkbUBOygpUT1ohARZbMmhUOsm9I2BJv35cFQFJ2e3+QOu47cH60O8/dDl0e2R1POmdH7u0TXVjlsj66EGkC2TVi1ogm4elHzkbDSJmS+ZhsTOxjMJz0Sg8G41Cp6NZSBYDLhhWhLYLTjKH3Z2P1aLj0eo2yJIebneVtouBpaidBVBPH/TZ1YBSNEhUUUX7ajqscH9dm7YeemeB5VjWjDbHm67Y/fL3crdvrySBR5jZhI/WQe6iD2DR4vcosGhoVDcccBW6g4dHEli5ZAEYzujPsd+TzfWqqIKQvU0wbBOSA+5SYGnIIYud5s7eRUiB1TOBxe8ksJjKho7OZivZKiTAMgzPRcOwLDQKyWSARcY26ETmoNlb69D94CV0rKhDh8NXmAnvzoeuoKDsCgUWBZbKAIvZJixtRuvypiarCzdOuH9bl2WYM7//qJUbIfuD5bDgXXoGi4ZGhaMBruJIcBK9Dn1FHwHHaqsNT1Cxjut5rJobte8eOX/FSV7DAItc9Cy/gkUueqbAosDqSmAZheUxdxOahMxggGUSmoH6YZnIS5qLwp2/oehkCwUWBVa3BpZoX12btgcWuafQ7nDjvcEnamu8v29Z/6/mezbBO3bC6x9+xDxJCGoUWDQ0KhotELnGA6iHqcGApeoc4VEvjsvxSp5vxd+86D0I8WuRk7KKAosCS3nACpmFJiE5DLDMQjLQOGQ6qscWoM2KL9Ch7AoDLHlkSbcJKbAosLo9sPY3osvBa8w5rMFHqtHjvzeOpd9ErynNLeow2EYtZ8l7ABwKLBqabh/yMn34paoDQ0UxAIYxPBCsMOMGVqXy/E98xQ0+hDB8M3JT1iE3dQ1zwF0KLOnWoFbaGtRJVTxolAKLAuvZtwgJsgrQJDQPzUOzmXsJTYOno2ZUDvbKL0PB/v+h27EGFB6rQ2F5jewsVkfA+qfBpWxgKRs4ym53BpZ4XyOKD1xDQVkLDj1Sj07n6r+KacKUlP/+bgp9rXk5C98DUOM90fv640pDQ/MP5NEvOD4M9RwFYJqiC34bXTRiTmdwIyp+V4vcj2pxm5A3kgBrFQUWBZbSgEUOvBNkmYXOZJBlETYD9SJzUf2lD9Fp/XfoWUGBRYGlusBy2d+CgpJrZJsQ7U7U/hZejdO9Kj4TQi8b3dxFyyiwaGi6d9iX2aNfcIZg7fsGQJ9XzHlRW9M0006sVostq4bYnczTg+rpa2TAkm4JUmBRYP2TwJJ+TbYLzUJz0TIyD/UjchHCZuLQ+cfRp7yuHbDIHYU1FFgUWCoDLOk2oc3R2ituP95c7XL4fCrYuJrPWLocgEOBRUPTjcO+1Nq+4Djs3j7PHPS8/wMgmD6Am7A9hze67DQk72mGpO3M9qBGGhkwqhhYLJYIriiwehywyDysxwCL6YgnBZYEWcw8rCJm5YrASo8MF5WsYpGtQrOIPDQIy0GN8BzsPXkb+h8hwGp4GFgEUBRYSgeOsqsKwBLuv47OJdfINmGzzbn60wFfXM2FgIQB/165FUBd52EqqbV/d6fAoqFRSoQCEVMXgRBcBM7g5OQEDi6uYOXuBeaBSaA3agHo/N/uodxxuzdyR++q46Rvu89J28xMbieoIpCSYupRVTRUVNlAUnVgKW7Hg1o7C7T24OLHfdimHQ4ijV3aZgjpoya9S+dhkRpEzWOgZRBRjPrhcyQtQsOwImYAqWFoPppFFTFDSHWDs9Bo3DJ03voLOpc3MPOwnI5Uo6CUXKhbiy6lV5mKS9pWEbieFmCdPUTe1e32wOniKhoUqqiKgVXdrh2D66EzWPta0GXfdXQ62IK2ZY33HU5fqxd/3rLZdN0x2+EHzoLr2DcgIjoOEuITIDkxARKSkyAmMQFi4qIhNi5aIbBooVuXRsUjFBJYtdbVRQQubp7QX+QOYOWtpvvGCg3taUd8OC/tPA6pm5Azkpy92oAaqWs7hJX86hUFFgVWZya9yyNLP2Ie27C5TA3D5siARWoaUcQ8WWgUOAP1kxfgkA8+Q+eyWubyZ/vSixJg1cuQRYFFgdXtgbW/BZ0PtqBdaSOZiYVWJxur3H7620ew77w6DBSohcanQWxsPAOsmLhYpiNiR0BcfIzSgUALFFg9OfK4EjsLQeTgBEKBK1iLvQH6uakb/Ge1hdbkQ+mccdu/huQNyEvfhOrpFFgUWN0PWNID79LRDVrDCtBkxkEcuuUXFB65is5HaxlsCUrrWWhRYFFgdWdgyW0TEmA5lDaiXWUL2lQ1fm37WUt68Jm/LMApSN0/fgxEx6fAiGHDIS46BhLi4iAhIZapsoFACxRYPTXkX6DY2ZmpFFh+bp4gFLjDELcggP4+fO2XP3bVevvgDPVxO39nDranscDSTFtHgUWB1a2ARWoSXigDlu6wfOS+9AEO+vBT9KpsRLuSSxJg1aKg7CrT9siiwKLAUiawHnkmS4Issk04tLSBXJ3zu+Cru1nu5b+IwSmS75n4L4hMGAkJ8SmQHJsEyXEJFFjwYpRGhUP+Bbo5OzOVR5bAIxDMvaIB7GMtDN7YOErr//av0xy9/apW2lbUSt+MWukbUSd9PVsKrB4NLIWH4LsIWAbhbKXAYu8nbF3BIk8UknENMHwW9issRa/Dteh6/Bo6lV5lgOX8GGApKgXWiwWszh5i73Jg7WUr2tuAgv1NaH+wAR2PX692+uLuWq+qyyPBNsrcY/Q0CE0YB7FxKZAQm8CuYMWRlayHtwi57apsQNACBdYLDSwnoQxYQqEziFzdYKBbIKgHjgUYljmQ/3/b89T/tesTzZHbWnRSKbAosLojsFqRJXuaMDQXDSNmIiciC43fWY/uB6+g0+E6CiwKrG4NLJe9tW0q3lvDImtPA4r2NqHt3lq0O9rU4vDpzbPen7fkGWetGDD45Rngn/4GRMYkQ2x8K7CSYimwOCpemhcBWE5CEAscwdnFERxcxWDsFQEQ9hYY5h621fzP3i28sVsbtNI339dN30KBRYGlMsAyCp+JWuEZqDVmEdpt+h5dKhrRqfQKgyumh65QYFFgqQCwatBtTwODLIe9dTi0tO6+1cnmRvG3N7eM+OOOHXdSATiOfgNC4lIhOj4J4uRWsB71nk8LKlMalQeWCNwdpcByBns3T4Bejmrm2bs19ArP+HJe21XFG83CigXWxucGLFWYc0WB1T2AJUUWP1JyBktauXEN7ABSCbLCctEkbCYaR81E3dRi7LvwOAoOXEbnEhZY0rsJKbAosFQDWOwqlrjsGtqW1uGQI7Vo/2nzSe/fbvqFnvlOA3rZqYXEj4YRCSkMsMgThBRYoPKlUeGQf4GR/iFMwwMCICgoCHxDRwD09dQwentLL+2MqlFqr+z6RmPUFtQeueWxwGKmtT+uqYqHiXamygaW6gOuY4Ap+v724NJNWCarokGkBFz6MUvblAWXtFJwzWeqN2I+8ofNQz25SgeR8qNmo25kEepFFKFeWD4ahM1Cw7AZDLIMYuegxmsr0XHtf5nhni5H65iZWE5ll2TbhI+r4qcMOwYEHfTZtcByOXC1w4r313auTw2odt1ztcNKAdXaunZt/XXmTNaBZhSUNKNDaT06VzZ+4/P1tZERlT/0gv5ijUnZ8yAzKx+ys2dCTk4OZM/IfOj9nv4Ap6H5h0Lmt0f6hbHACvSDoKAQ8A1NATDy1DN4bYe71sSqHLVxu/6QAksnbXMbYOmmre8YV7Jrch5fCqwXF1gssjoDrCVtgKUrAZZ8daOK2Q57BLBCc5g7Cg2GFSAnZRFaLz2NnodqKLC6USmwngxY0kPvLvvJBdDNKDzQiMKyhj/Cv7k/02vrWXcwstfLzH8PcnKLIXfmLMjOzoas7Ay593oKLBqafxxY4f4EWEEQGeADQYFh4BH6MoB5tIXey3vHqv/nxEa1MTuussDaJMOVlmT1igKLAqu7A8s0PAf1wnMQovKwf9Fh9DpUjS5HaxhgkS1CCiwKrO4NLMlThBJgCfc1MMByOdiMwoO1V8O+uLfBf8fnY2CAl8XkgvchO2c25MyYyeBKHlg0NDT/cMj/gwkNCIFwyRahT3As2IRPAnCaPNDglcOFWq8fP88dvaNFc9SWh3BFgUWB1a2ARSoDVqHk6pxZzN2EuqEz/obwmbf7ZO+57nPoYrNLefV1weHq+xRYyi8F1tMDi6xiSYDV4nOy5dOYk1cLIHT8oLTCj+GdWQshe0YBzJw5E2bOzFb2jxgamp6d8NAwCA0Kh8DA4eAUOh6MYxaB8auH7IzfOL2dM6akmTdqx32N9k8Opq9lcEWBRYGl6NB81wNLWvYsFgGW9DJow/A81AvKQn7YzNsQmnXJ9O013/sdufiV2/Ganx1K/7opKLuCwpK2VQSsh8HVs4Gl7EPqXQ0shYBSIrAEJY33nSvqmv0+adou2P2Fg+u7u2F80SrIzF0MGTNyISNrurJ/vNDQ9OwEBwQyW4O+wQkAxh5qWsmrNDX/XeWn9XL5ad7Ifag+cju2BdZaCiwKLJUBlknELNSPnNnCCZxy3uj1D/YHV17c5l51pcK59H8NFFgUWKoILKYHGgmw0I7cTHCy8bTHV9cC/Mu+04A+HmqTZrwLWbOKYGrGVGX/eKGh6dlbhMH+fhAeNgzcgmIBzH01+CPX9IGxJWPVxx/4ljdqB6qP3EqBRYGlssAyipxFBo5e5QZM2W762nuFkVWXM71OVy8XHPrfZeGhagosCiwVBlYz2h+oReHxlm9dvrw2JuzUX33AOkhjYvYiyMmfA7NmzVL2jxgamp4NrHA/fwjwDwNBUBJA71A9/qj1XmovleSpj9/3J3fUVlQfSXC1GXXSKLAosJ4vsJjGvPcEwJL2yYDFIosFlm5wBuqHZf6pHTilqN//fZww4tTVSN9PaqYJjlz8la5gUWCpLLAkyHIk33Os5Q+XL2/Mciv9zhOGhupNylsGmTOLKLBoaJQZclVCuLc/BPsNA8fglwD6JVjqjt7+ktpLZVt4Y/bVcEduZ1awpMBiUUVwRZAlB6wuBFR3b08HnqJBpO0Pvbefk9V+8Khu9LutjSHAWizXhagzfEGbag+bx1QGrPA5bYBlHJWLRhGZP2h6/GescNqmfsMrLpt5VVUnCo789Z3dwT/QufRSlwKru7fLgdPZdvaQukJA1Si3CgDWfvCofAV7a9GttBldjzZedf2keVNg+e/jwXqE5aTiTVA07z0ozKfAoqFR7gqWbzAEhqbCkIhJAMIJg7TH7pnDGXvoM+7oPdfY81cUWBRYSgIWaRtgLX4yYEkmuxuG5z0wi8q723t47mkN57FBjv9arGYydQUElv/uLTr6Z5XDof/dcS699IACiwJLFYHFltytWX9NfOraZyGnm2Yb/GfJ4PRF2yF7wYcwZ84cZf+IoaHpyeFAaEgkuISOAoPoPOAkr3HQGHdgB2dMSQtn5O77FFgUWKoNrIJ7ZlFFtb3DM7dzBoUL3EdnwcDXC8BhyV4Hn8r/bRQfb7jsXHLlDgUWBZaqAousYjkfrL/vXHGjxfv83Z0jfrjn6LvhMLz53krIK55Hx4nS0CgvPPALiwHQt+dwoxdoqr9SFsAdW3qaO2ofqqfvRo307aiVtlUOV+2BtbbLz1h19yobQBRYjweWfnjRdePIoq+Mfd+eB6augyLHTQW312YAhIwf4F3yW56osu6cc8mVFgosCixVBZZrSQMKy5rQsfQaOh1vOePz491A78PnNcG8Pyd/3iIKLBoa5UUDvCNSAYy9NfVSN/bnjqsYzxlT8h1v1B7UTdmJesnbmetxpMDSS10rByz2IwVWzwbW014e/dBdhU90GfTjDr23nsliLoSOnMfgih82mxk2qhdWWGMUUbjD1PfN10DHxjJh3AQIeHkagEeCuX/Jr6OE5XXrnUuuVKsysLr9IXMKrA7rsru6wwp21zy+e6pRuL8axQfr0bWkBYWHG7/z+/rW+NCjF/pDXztN8iShImDRK3RoaLoqalrgFj4awDJSXz91hy9v3PECtdF7/iRbg7op21EvZevDwEpfzZQCiwKruwGLeZowog2w/jSIzC80C3g7ADQHGkSn/RuCX5oCaiFj9UJKfnN1KruU5Vxy5TcKLAoslQTW7hp03kueVqxD1wPNKCpt+DP8+/sF7ltP+YKhlf7s+cuYXYqOQoFFQ/Mc8sgXjpoOCMJfAhiU1Esvfdcrmi9VbOeO3lHbOppBMp6BAosCS0WAJd0m1Ge3Cb83Hl4w2jxkghloW/MSX54Gvq9mAz95IjfhVK2e+Gh1krDk0rdtgcUiiwUUQQQFFgVWdwVWHQp2N6BgVxMK97agS0ljbeDnt7e5bjrzMvRytcya8zGzS/EkPxcosGhoninsS+bhFw8PgGvKPj1o/3+DdUftnav1ypEvuSO3X2cHi7bOv9JN3Yh6qRRYFFjPF1ik/E4Ci8BKL6otsHQj5jzQC59z1zA875RZ+PQAn7H5MGLkRIgb8xaEvDwZHP41A8ynvg9Bpb95uR3487jLwUu3hQcuP3A5KAXWFQosCizVANauJhTsakHn3U3odKDhus8nN78YfupqMYS9Mnj84o0A6voAarzHsokCi4bmmcOBoXZOTO1tHcBxqB0I7ezA1toWhjq5g7FTNBjELgH++AMOGuNKdnNH7bvGHbnzfuvh9icAVicHjSr7+/WS13RcCrSnqm7iijbt7GXQ/NilbcrMxpJUf8QiNI6az9Rw2EIWWiyw7upGFlWbhGdvht6BTvp9RGBg2h9MLftA30F2oNHPDsAhADgpU+x9dny3zutQ9UX3/ZfuiA+Qy5+vILkEml3FqkUGXXJVBK6HAHawtuMqAJRbScdVBCDXA/UdtqcDp9NA2nu1wyo6xK64tY/v7noU7W5El93N6Ly7AR33198XVNZf8zhbv0dc+ZNjxL4zYJP2OviNSILwEbEQNSwCIqPCmUZIyv6UUNzH/4Sh5XRhabp5hto5gJ2tA9jb2oGj7VAQOTiAs4Mz9Ld1A7Dw4RiO3qKl++bZIM6YA59w0naxTw+m7aTAosBSOrD4zwqsyKJr2pFFn5mHTS8CDeuBZqZWYGHRCyzNTaGfuSX06msF0M8RwDG8f8Tu/+YEHWk8432gpsX9QC0FFgWWygGLQdaeRgIstC69gvanG865/XQnOPCT37TAzofjGZ0GITHREDUiHCIiQyAiIgzCIsOYj539Qa9sgHBe8NJ089jbDpXV0dYa7Ib0B8f/Z+8uwJu8+jaA30mqSZoaFId6kzRSd3c3rC74BhvupbhvYxtzYWiBUldcJ2zvN3dXoN5SdAx2vut50pZi7baONYFzv9d9tWNr4QVCf5xznv+RSGEucQHMvHT7Tyw015l8bDxSS77gpRYS7ZRC1XiGjutxKLAosNQUWOy2YfQmYhD9JDGM3kgMotayFUStqhNErcofEDYvG7wRA0xNLTBw4GAMGTQQ5gOHwGywObSHywG3hP6JVT+nhB+/ssW/8kKtV3krcamuJ041tcSppr7zLBYFFgWW2gOr+DyRlbUQcXU9kb/d9oXTZ1fHhf/vzAhIfXR9ElPhExuO8PgwRMaGIDo6DDFREYiJiqbAgnqXRo3D/ALJ2mHV8dZRYgO51B5DpR7AkEBDUeauAN64/WuRUvSLVhqzgkWBRYGlGcBiG/0MiyyjqI3EMHItEUYzwFrzozBy1dIBYfM8YawQGZupVrCshg/DsIGDMXCIFbSGyQGnOOHYQ2edo976Y37A/svfe1WeZ9FCgUWBpRHAakcWs3rFAEte2kKkVY1EcaLtF6ePrq4JOPGzP8QBhq5xqfBPiIVfmA/Co4IQFRGC6PAwRIdHUGBBvUuj7sCyY85eqc5fKezs4GhjAztrCQbKw4Ch0YOMJ5RM4o3bX8RNK2xQ3T3YMb29/XJnCiwKrN60h0PvvV7BinqGGEU+Q0win2SRZZz4PDOQ9HOT2I3JZqHzjdHflWcwQAyzAUMwfPAgDB0wEP0GWUBruDNgF8qLKP9SGH76SoLHwbZPHataiFMNA6yOVazaO8D0d7cMewJWj0Dq4eN7fdkxBVafAqunQ+6OxfXdtuuThMxBd2VNG1EcamtwOH25KPBE7SQ4JA5ySJwE/+ik9jNYIe3AikB0WBR7H+3dSoEFtSiNhgBLYctUAkepDMOtXcB3TAU851vyJ5Ru5ORUfcxL33dRK2U30U7erVq9YnBFgUWBpc7AinmWGERt7gKsJ/8URD/zuzBiwwk9jxk+wwKngWPmCNEAawweNBTDBg5kgdV/kAX0hyoBG39EF7yH4ENn3AJPXDrqdfTyVaea+hsUWBRYGgusqgtEvr/tovx428e+J5qeEE172mr42FnwictAeFg0i6zoyFBER0YiNjyaAgvqXRp1B5bYjl25Yt4yTxJaix1gLI8A3OZAMPWwjDuhphRZZRe1MoquM/OvtJN33Vy9osCiwFJjYLFX6URvZlexDKPYc1i/G8RsPGMctmQHhgbIZL5JMOo/gj1/NZRdvTLDILMBGDBwKPoNsgLXXInsnceg++gmSeih+i0Bx9t+ct1fd9V1fx1h6lJTy57JosCiwFJ3YDkWqsY1OJRfJPLKtuuyA20XXd+8UBr0XrMcOblQJkxARMRIRERFIyI6HJGRkYiOoMDiqnlp1DjMLxCDK4Wd6gwW8zQhe7jd1I0rmlSmx5n+bhDG17zLySohWul7iVbKLqKdsoPosbhS3TdIgUWBdX+B9WK3wBLEb/5LZ7DagdVmnPT0aX3v6cugNXyEq3cIzMwGYtggM7bMIfeBg8wwcOBAFl3CoXaYtrUK8M4YFrv/7OKIU1dOutU0nHetaSBMGVxRYFFgaQqwHAvbiGPZRSIvbyX21S1EcfT8e+4fXQl2KXxPDwPk3MjoZIRFRyMiKhKRkdEssJivERRYUNvSqHGYX6Awf39E+PmzbwMDg+HmG8k8PahnNKXCCo++NRHZZV/yMvYSrfTdhFnB0knd2QksZnp7r4Gl4e0RYPe7T9DegAAAIABJREFU9xl49xuAtx96v/UA/Kt3HHrnJ75wS/UTNrPI6mz7JdDs9mD74NHOpwhjNtYKE5/dxg+cnwY9czMXL3/mugJweYAWV1UOUw6HLbQEeHTzdsA7tV98ya+jQw9dec2t6vxZ55rzxHl/k+qgOzOqoUsdKutuaU/A6fGQey97vwGk6UByLu1de/w+enmIvWdgdY+vW4HVSpxK24hDWStRVLYQxcGWL70/vDYxdP83lhio0J2fuw65ecuQl5eH5XnLsXTJMvoFnobmn4Z5gTC46gRWQCjc/JIAU38jvYzCYEx+cz0yi35lcKWTtptop+0kOqnbKbAosP4TYAn+IrBuQdbdgBWzUQWs6Cd/EI16ZTE/eIELuAMNHN29VC8Ezj1eIBxdzHh6K+A+VjCy4oxD2NHf57lWX/jOuebCXYF1O64osCiw1ANYjcSxqJk4M8AqbmGB5VDRQhTVLb/6f/Dneq997wfBVGq4cOmTWLJ0JZYuycPy3DwsW7yEAouGplcrWAG+iPBXNTAgEs7+E4AhKYP10ssfwcTjpcgsauSl5bPAYlavWGClqrYHKbAosNQfWBu7AGvT58KEF0b1i10pgsiS5+ztzy5ZcbV44Glx2DK3hqhWtLgAj485T2wD1yudl3DwrDDgravxTvvPf+q0/zz7NCF74TMFFgWWxgCrmX3rVNqsAlZlU2PAe3+U+Bd9OgWWfoPmLN+MxXmrkJe7BEsXLWRLgUVD8w/DvEBCAlSrV8xb78CRsA1ZACgWW5tOOrmJk3P0M05G0UUKLAoszQUWeyfhDYPoJ68aRG043j9+o5dZ4GOwdg2Dq6cPu3zF4XFZVDFF+zYhj1nW4upi/qoXMeGJAgS+fhL+NWdc3WoajjjXtFxxrK670RVYd8MVBRYFlvoBq5E4ljQRZXkzkVc0XvQ8dfnT6JONTyEoxzp9zSuYvnQDFi1eiqWLFlNg0dD0NmHB4QgKCoNfYCTkIdngh62DfmqFUjjurQq9nOMXeelF17sCi9kepMCiwPqvgNXTIFJ+4nNsOw++t18CLWov8wShQcyzVw1HvfCzQfTyN2ATKZX4JMLVzR8+7p7sa6ADWAysugKLBx7WrnkSize+hpSnCsAbu1Tisfeb1zxrGn90rqq76twNrCiwHgxg9Qig+zxI9N8GlmrwaBNRljYR+8rm6+KaFuYC6AqfQ187eDxfgJz1L2PR8iewZPFKLFmQS4FFQ/PPw0WQXwgCAiLhFZIAmLpy9cds0eflHA3VTj/8P63UKsJL30duB1bH+SsKLAos9QfWZmIQ89x50eiXTomicnMhsh2udA+Ar4cPvJ2c2K1ABljs4fbbgKUFDp5YvRZr1m/GIxu2AZLoYUEFXy/wOdh4zLmqrrW7lSsKLAosdQEWs2rF4Op2YEnLm4i4po1Ijrb+X8A318Ki3/pWHyOcuLPznkTe0nXInc+cwWL+R4FFQ/O3w7xAgnwDERYaA9fAeGCgt55x5h5rZB2cwksv+YqZ3M5N38MCSzeNGTBKgUWBpZHAOica9coWUVTeWGib91e4BsDXyx8ejs7gMmetuJy7AovpxjUbkLdyE2Y9tRNwHm0aVvZ9ks+x1pecaurPOlSdo8CiwNJYYDGXP0sqWojjqatf+X1HJid+XG8Fsa/erCVPYNnytVizbBVdwaKh+adhXiDBfgHw9QuHMnAUMDTUyCinOJSTfehJ7azi33Qz9nSOZ9BPvRVYf2WLkO3YvkcQBdbDAyx2LlY7soRxz7ODRgWxz30vHP3KAlFUnhNEUqHSLQhenn5wd3VTjWPoBlhrVq3FstWbMH39FvZpwsianxV+py7Nct7f8J2yopYCiwJLrYHFnrnqAizmfQZdipJGIittZMc1KI+c/9Xzsz82+p/4IQTSYKNZK59jD7uvWkHHNNDQ9CrhoWEIjEiELHw8YDFmsGBc5TTkHKnQTilu0kve075ylU8EKbtVlzt3HTLaw6DRjlWs7sp8zP1sXwNM7YHXW2CN2tJtew20HoF1+6H354kg/mb14l4golGvfGqStiXRLGG1EEYyntItBPZKZzi7urC46g5Y61avweKV6/H42hcBz7G8iJpfBZ7HL8a6H2r9iNkiZJDVtXcgq7yWOJXduz0OAn3IB33e70PmPQHp/g8K7V0dCuvuWseOdgMspg4VTUS5v7HJ6e2m8tATv0yFbejgxzduQ+6qdVi1Io8Ci4bmn4eLwKAwuEWkwDxmHuAy10Z3XM0zyDz0hXZy6SW95AKin7KX8JPziTB5NwspCiz1KgXWncDq0ht6SS9cEY56/ggCFrgbBUyFrWcCFG5+kDm7wsndrUdgLV26BLkrV2P26meQsn473F8+Af9DTS6uVfUHlWXnrigram/cC1gMkLrDFQUWBdZ/DSyHwga2iqIGIi9uIA7ljcShsuGS45GGzwOO1z1jOusFm+RnCzFr3SasWElXsGhoehEt+ATHQRI2CQYjNwEpBQ68nMNVnIwDl3hpZTe0kvcS3VQKLHUuBda9gaWb8PxV/phXfjRK2vgazEMlQ9xjYefgDYWTKxTuHhA7OgK8boDFAVavWY5lK5Yib8VaTF79HKKeLUX/3J12vpVnXnbb38hsEzLIosCiwNJIYDmWtBBlacsNeVXLJffjF6sjP7nq6L39IKZt3oJV6zayLwgKLBqafxQd+ISMAvp5cXXGbtXXe/zdCOQcep+TWUWQVkwwdjcFlpqXAqtbYLXqj375mFbQvAUwFg+zdvWGg5sbXNzcIHV0/EvAWrl8CVavXIEVS5dh3ppnkPL0XiB25rDgyt/m+Ry+cNihvLaFAosCSxOBxZS5RkdR3ErkpeeJ4tDFD9w+uxbhWfOBPgbYcPNWbqDAoqH559GCb0gS0M9H3yCtwA4TTkxFdvXXnMwygvRCopW2jwJLzfugA0s06tYy9xN2bQ/gOmsw5vWXeT4zk6Bl2k/h5QYHNyWcXJVwcnFm290WITOmYe2yZVi3fBVWLVuOBaueRPq6rUDYY6axFY3xgYeuvqAsqzsjLz9HOnoLtno4f0WBpf7AUpbUdtv7DajeAsu5sPGWdoDr9sPuypLzzNU5X3t+cu1Rv4Of2MLIQp95uIP5GkGBRUPzj6ID34g0wCzYWC95T4TOI+9sQlbFbwyuuGkFRC+jkD3kToGlvqXAujuwmPf141/8zjhl+2yDsDwFdMwEclcnOLk4wrlL/wqwmK5ZvgILV27EpI3bgMBHBFFldfY+1ZdmKMvqvqXAosDSZGAxZVay5BWNv4Z8TZ5y2PtWOPpLjVdtfJkCi4bmr+SuLwiOEM6RU4ARY4bophdN13v07WpOZkUzUveyg0X5GXvY8QwUWOpbCqwX71ndhBc/1hu7I9406SkBjOx5zIBRZydPuDk5w9VZCWcXZfsL495bhCtW5rV3GRas2ohJG16Hfux0XtKRNoHXocvRDpUNH3bdFqTAosDSFGAx092VRa1s2ffL6pr8P7xS6ZT/9uMY5jF48RoGWDp3BRUFFg1Ne5gXAnPNWvtVaze/ldcPI8LnAfJZtvxx1Zt1Jp/4ipNedpkZMKqXyYxo2EX0U3exwGLGNNwTWO1DR1lgtcOJAosC678ElkGiqoKk55neEI58+Ype/LOHTMe85KrvPRMDlZFwdAuCq6Mn3Bxd4erMrGAp21F1J7CY+VhMl69apurKFVi4aj2mrd6MtE374PH8cYQcanZ2LDtzQF5+7rK8/NwtTxNSYFFgqT+wGoljoQpY7Fms0tpL3qcvfhlx8uxmeKXYTH5mN6Al7PyqQUFFQ3Nb7KxtYGdjBam1hapiO1hZ2cBaqoShNAwDUrZAK73KUSvnYDU3q/qSVlrJDd30IqKfVsBuDzLAEqS0N3XHHRWmdN+egNXXAFOtvN27DzvQevv5+aO3dNu/C8C7HYIXJb1MjBNfZCsa+TwRjNx8RTDqxe9EsRtewbAYMfTEgK4ZdPVE4OvqwUBPH3y+EHp6/E5I3atyubKzUoUjbBxc0d8pEBz/VHAz19i6Fnz3onNNy7fM04TyylrSUWVFPXEoZ77I94SsHoCh4UDqLaB6fRnzfR/0Wd9De/fx9wLUHYfZe+q+BlXb/1n18e1PExY1sU8USkvrbsj2N1wKeP9yjev+b5ySKv8PyuSJCIlPQnRcNGLjIhETE8U2KlZVGho87MASW98EllwshUSsxHArJWDkzNUZk8/XmvJeBDIPfIC0UqKbVkb000qIbuo+dgbWvWBFgfVgVPOB9erdgNUiHP3SYaPo1XMhchwKrQHQ55vCyMAIRkIBhHw96OsbQFtXAA6H1w2weFDKHNmqkCWHUqmEtYM7jN1iAHnCUP+iH2Z7HGw76FjV1OJQyQwerVe1vJFtz8iiwKLA6itg1XWOa2CBVdJAJJV1RHas6UOfb25ERZz+mQ+pNzcwPhmRCXGIi49AdHQYoqMjEBmjKg3NQxtmSVdsbQOpVXst7WA93Aa21o4YYeUCGLnzdcfulmDim9OQXvkNJ72M6LbjigVW6m4KLDVAEAXWvYElGPm66lqdUS+yFY1+iVnVOiMc/drzJlFr46BjZwIdMwiEphAJDWHI50Ogp8+uXunqCbsFFg88ONo7w9GeAZYccoU9HJ3ksFM4YZhTNOCSahJZ9kuM/9Erm10rW884lTUSx/IWtg4V7aXAosBSc2B1rGLZFzcQ++omBljf+Hz152PR79VKYB/MD0rKQUhsPOISo5EQF8M2Jj6OLQ3NQ5tbgGVpB6mlBDJrBSTWLhhu5QWYBpjw0wpitKacfhYp5b/xssqJTvtoBqaqK3IosB7kajSwRm0hgpFvqJA16mUVsEa9wqxqfWs4+tXpxlHLpRBJ+Tx+f+jpG3RuDwr5fHaLUF8g7GGLsGMFS8niSq6QQCK1gtTBFcMVEdByz+LHVZ2TBJz84zGXqtZvHMqaiWN5WxdgNVFgUWCpNbA6Z2IVMsBqIvaVjUR5rO03j0+uPxNy8lw0JJEmPvGTEBY/GiHhYYiNjmIbExPDlobmoY5qi1CFLJmlHZzt5LAZLsMw22CgX9hQ4/FVszD++AGklTVrZZQQnbS97Wev2s9fdYMrCizN7/0GVm+//1t+LO0H51WrVqoKk94gwqTX2W1Cdqtw7DZiNPa1D41TXow2iZ7Ph6EllycwhK6+auVKpM//G8DiQKa0h0wpgVIugVJhB3uFGDYOzhioDAfHI4s7+sR5vt9b1yOcD1z8QFrSRJRV54myqoUw9xQ6V/U8aLSvgdPXvd9AosDquarho02qs1jlrUR2oLVZ+faV/SEnmmbCLnGI18jZCItNQ1xcQucZrNjoGMRHxdGD7zQPd5gD7uwhdysryCxtILOQwMrWBwLxaMBxlq1gwv4XkHP4G2SWXWZmXzHjGToOt1NgUWCpP7BeJ6LE14lRInMW69UbBqPfuGw46qX9HP/ZzpZxMwHDQeAK+NDjMwfbVbj6q8Bini6UdgLLni0DLFulA4Y6BEHHYyxC9n6C4BPnHdwOtlQrKpsuK6rP32CAxeDKpZICiwJL/YGlWt1qIorCFnaiu7Sy9bL02IWvfY+3PD9g+it2liPnIjhhHOKiE28BVmwU3SKkechjY2sBO9sREFtbwM7aDuaWShjYRACOc6GbXe3MnXj8ALIPXEZW2Q2k7m4HlgpX+mnd44oCS/P7IACro4KRr18Wpmz7RpS06QUMCbN1iMgGhEbgGehCX8C/DVh89tu6wxVTmULJVi5nzmE5wl4uhUQhg53cBWbOIUjddRL9luy0DT5U95zv0bavHGpaLztUtxHXqmbiXtlIgUWBpdbAct5XR5wLGohjQQtx2HeeyIrbiF1Z6w3b/S2XnU61HUj84ncX/cnL4MwCayS7Lah6gjAGUTEUWDQPeWxsR7C1s7GAjbUEQ23cAIErT5BWLNB7/KNojD/6IXKqCTKLCDc9n2in5quAlbaDAosCS/2B1TEPa+TrRG/0682GWfkH9CJXzwJfMdQ1IBE8oQF0DPR6BywGVzLndmDJIJNLIZMpMMLBC1O2VgOhE4dE1vw8I/hYW41TdWszAyyXqlYWWQyimHlY956J1ffIocCiwFIBq4W9l1Bc0kJsy5uJ/dHmjwK+uRaT8Na3fJhYciMjR7OoosCioWmPX5APAgK9EBTgBz//CDh5JQFmEQJRdqU9Jr89Azk133KySgjS9xBeWv7NFax/DVjb1bq9BVjPQNvWQ3uLlPv9+dULgF2HmDKDRw1HvsKWP/o1oj9my2+ijN3PcvwWxkAgMfH0iwI4WqpBogya7nqbwW1th9WtZZ40VBW3DOoVYtrzu4CAVOORNb9Gxr75xzOula2/OVW1EceqJnayu7z8ZpVld14S7Fh6rttqOpB6BFRP30efA6l3gOoJSA5F57ptz+en/m5Vlz13HnrvbBN7Dkt1+XMzsS9tJrKapm/9P/59Rszxb+3RX8Kfu2gNcvNWIC8vD7l5y9jS0DzUUQHLB0EBPiyw3INyAJNIU9G46njOpDdf4GaVn+Fl7GVXr7TSd996BosCiwJLQ4DFPFWoP2bLN0bpux/jh6+QgDeC7+nHzOnRurkq9Y+B1WVlqzNcgMvHo0+8AviP1U8+es4u9MSlaa5VzV87VrUQeVUDkVbXEmlFHZFRYFFgqT2wVO2KLGV545moL8nzbntOx8FEbDJ/xVPIXboaS5cuZbtk2dL/8ksZDY36JSDAj8VVqL8XCyzXsEeA4anDDCfUzOVOPHqIm1nSwkvbowJWxi4KLAosjQEWi6yRNyscteVDg9SdUWZjnubDxInrHRQPrpYetLW12fJ4PLZcLpdt51ZgL4D1+JNboBWezU093cgPefdKhGNVw/vyqiYirq4ldjUUWBRYmgssWWl9S9Qn5JBPwftzYe45dOaKzVictwZLl+Sxq1hMaWge6qiA5Ydgfz94BSTAImQ24LzQTjCh+mV2ezCj6AoDLGb1igKLAkvTgCUctZXpDdHIrZdESa/WDEx71alf+ALIgzKg2iLUvguO/q0VLD3MXPc8Mp7OR9CO4wg+dsbBsfJMlX1V7SXJ/robDLK6AqsrsiiwKLDUFVjMTKx2YF3xfevKd0nvnn8ZvinilNUvY+aKJ5C7ZBW7PUiBRfPQJyg0CAFBwfDzj4EsaDy0wtdDd1yVCy+76iAyyi7z0vfd0Erfq9oeTN/F4qrzDsIecEWBRYHVa0D9zYcS7vgczIXSo7ddMkrd86VR0oubOU45NpYBGfDwj4W/TxALofsGLHCxev0TWPTsK0h9cR84mbk2joVfPONypPkLRU3DJQZXHcC62yqWqt0Dq6fLiHtqbwHV4+fvLYDu9+enwPpHwGJmYklLGm7IDrRe9nrnwmH36s9cXTbvRta6l7Bg+VNYuGQ1Fi5igEUnYdE8xPH394VfQAh8AkYCxr487ZQdAq1pb8ciq+ojpBUTXvo+wgCLWbnqANZfuSKHAosCS12AJRzzRpNB+p4qo8RNj8PAYbBTUCKCgqMQEhAIHu6Go38HWMyXlvWrV2Hlxk2YuP4lQBYxxKvk82mex1srnA40NTGo6oqsDmDdiiwKLAosdQVWE7GtaCTS4y2fBHxzLTb8+JcCDHPmzVy6CYuXb8C8BbkUWDQPb5jf+oE+PggNiYSb7yjALFggzCpUcB99cxayqr5DeiHRStvHTm+nwKLA0khgMVfmjH39N4OM7U8ZJa0Ph0hm7BIQA0/fQPj6enePq39jBWv1aixf/yTmbtoOyCKNQ8u/DfN588KTzgcbf7MvP0uBRYGlscBirs6RlDUS+8NN33p8cW1m/Ie1ctj5CWYteQp5Kzdg2YqV/8WXMRoa9QzzJSDIzxc+viFw9E8GBkSa6mUUJ3GmvPUSsqrOMrOvugKLGc/Q9Zocfsp2CiwKLLUGFjOegT/29a/5WdsfNRi13hbGcn33wGj4h0bA29f3PwHWyvVPY96G1wBljH5E9Q82fqevPOJ4qPErCQUWBZYGAavjyhxFB7KYy5+Zn8PD58+4f3bjRa/D3yZCHGo6e8ULWLh0DZYvX/5ffBmjoVHfhIeGwD8kBp7x04CB8cNE46oXYOKbx5BV08rNKOsElm7nBPebwPo3Drn3tuoPtL6tpgOqt4NmdRNfI7rJ2/6Pl7Mn3DjrRX0McOY6+kTB0c0PPn5B7fOrugFWT7kdWx0QawfWkkVLsGTZOsxY9RzgFMcNqvxe3+d/18KUR5v+Z1t+hthX1rOVV9YTZUX9HcBSlpy9pX/3kLvmD+q8363v0/59AN3anoCl3FfbbR0Kuq9yX/09Ky+sJ8rieuJ8oLXV7b2rR4OOnJ0P6+hhMzfuRO6qdVi9hgKL5qEOF8HhUXCLSMHwqFmA23yJcPz+1zg5R39EZtVVBljaGUUUWBRYmgqs6/pjtl40zsyv1B71nFIvbB4kIRlw9QmHo4sf3D397zuwlufmYdnSVWBmBGVt2A6HZ/dDXPiV0vl4c4X0UP1FaXXtdQosCixNBBbb4kbm8vKrjicu/eB7rPFVwaQnJKnPFGDehk1YsmzJv/i1ioZG08LRQkD0WIijHoVg5Gbm6UE3vfH7j/AyK6/wsspvaGeWEp20fUQ3lQKLAkvzgCVI3nrRdPzuz/qlvrAJNqOsrXxS4eQZAg93H3h6+MPJ0e0+AwtYt2IFVuflYWXeCsxa9Syi1uQDOeusPQ6f3SQ7Wv+ZtLr2IgUWBZYmAku+r5HIi1qIvLz1hvRA2xWnU21Hk378w91jRxkmbnoBuavX0EPuNA9zdOAfmwGYBfBMJlcI9We8H6+VU/0pAyumWhlFRDe9gAKLAktTgdVokLWrVDdixSPgywY7uYXD3c0b3h6ecHfxgoe7330H1pJ587B+WR7WLl6C+blrkLl2KxD5+GCvg78+4vz2xVJpdW1jB7DY3jaqgQKLAkv9gdVGpJWtRHqk6bOAn64lBJ74PwFG2PKYbUIKLJqHODoIiEgH+vkJ+k+tVmLSsbmcnKrveFmlRDurmGhnFKi2B1P33kQVBRYFlhoBq7vyU7b/IppQtIEXviIE2jZGnp4hcPPyhrunN7uC5e3e+y3COy6B7hLmS8vKxXlYl7ccq5YswcLlazFx3RYgfJqRd83ZYOXJS+slNQ2/MtfmsL1tFUtRWsuiSlF8phto3d9D4BRYDxewlHvP3lJFQd0tvf0MFvM0obK0iTiUNRNFTd33wV9fnhNw4B0lBlsJlq56okdgce9RGpoHIHoIipkA9A/pZzK5ahR32luvYlzVWR6Dq6xCFlgdq1cqXHUA69+77JkCiwLrfgFLL2X7VwZTyicJE5+yhr5Yz82NAZYviywVsHz/E2CtzlvGbhMuXL4aE9a8BIRN1gs73mLlcPzyRElNw5f21bcCq2MViwKLAkudgdWxisVcneNYwl5efjbi62uvOOcfHAkzm355azaxd312Fwosmgc4QvhEPwYMHzPM5JEDi3mPvX0COeXnedmFRCuzgB0w2nUswy1lgbWNAosCq0+BxU9RVZCyRdVbgfU//UllocaZr+vD1Ivr7hUHd49AeHp6w8fdk23HoNH7BazlS3KxOo9pHhYtW41xzNOE/pncsGP1esoj54Ptqxveo8CiwNJIYBU0Evm+ZqIoPE+UJReIsry5Nfjjayc89r6zCMNdhi1a+zy7S9JdKLBoHsAwv4W1AE4/iKPmA7IZkv4zTm3hPHLiJ+SUX2VWsO4KLAZVFFgUWGoELNXP8x3Aus5P2X5RL/mNctPxu5T6YUswxHUsXD1j2JUrBlZ+7u7w8XD/T4GVu2wlpq56Gonr3oD7y8fgWvGzXFF1rty+uuGifXXDdfvKRiKvaKTAosDSKGDJC1qJoriNyMparrqfuvBTxMmzW+AcK8l+8nVAS9gtmSiwaDQ6dtZ2bG1sbNhKbKWwsZBAYueMfuIIDBj7CkwfO+VmOPPto8ipvorsyhvczBL2ipyO8Qy9AVavB5H28PHMsNPu2tfA6n17t03W06BR/tg3etWeANXTx/duDMN2Ihi7sx2yW4lBMnstDvPrflGYXfCxcPRLT0CaYoV+roCBOYSGAyDk82Gop9de/n0HlsxGCoW1GDJbW4jFYphLZDCRewIeiUD6MmuHku+fVBxu/Vha1XhRXtVCpOVNRFbecHPoaE+H3HsCTC8B1uOw0j4HUN8CqrdA6glAvW1Ph9h7ApZyb90tdSio72znQff2w+6yspYbioMtV31Ptx21L/mfR1TxUTimTkRIbCJi4mMwelQCkhLiEBcXg+i4aLYdr5Oeeq/8lY/lPsSluc+xs7ZR1caKrUwig9ROCSsLJWDkyhNl7BXyZ36QwJt89FNkVxJOZgXhpJfcMmC065mrrriiwKLA6ltgdZ2k3/7Po5nPub1BkFNQJBy1eRJEzoPAHwZdoRmEIiMYGwhhIhDAlG8AE77hfwIspva2tpDY2cLKwhyWClfoygMAh4TBHqU/THY42lZkX93UaF/Z3A4s1cFhx9IGoixRrWJRYFFgqRuwOpFVWM9OdpeVNBPbsgaiONH2mc+3vycFHvtMCEsnXkDMaMQkxiMmNgxxsZGIi4lmwUWBBQosTY+djQXE1haQWjNvrWBpbgFbWymsrBSAkZPQOGufk/aj78xHVtX3nJwKggxm9aqo84LnO4DVWQosCqw+BFbyFlW7fJto7FZiOJrZdtz+i35OwRrh6Kf9oS825Aj6Q09kCpFIBCMDEUyFIpgKTGAsNAGPIdZ9AhYTZsWYrZ0KWDKJGBYSB5goAwGX0YYBVb8FuJ78fa2iuuUXBlaSiiZmJYA4FZ8nLkUtLBIosCiw1BZYBY3tW4WN7N2EzF8QlMfavvf9+sb80Ld+coSVt8AvMQuhcQmISYhCQlwUEmKiERvLNLbXUOhrwHDVvDT/EbBkVhaQWVpBYieGrZ0CI6ydgH5e/Y2z9o0VPP7eFmSWneNmlRNORlFoFek0AAAgAElEQVT79mDH3KtbtwQpsCiw1ApYXZAlGrOdGI7aRgzG7vxCd1zhOMHop0fASKqrbzQIQiNTCIVCiIQGMBIwNWR7P1ewmKhwJW6vLRQyKSzFMgxQ+ALSCN2Qg3Xmbm/dGK+saf1CeguwWohLcRMFFgWWWgPLoR1YLLKKmoiisoXIDrSec/6/y68HHf91LKRR/dzjJyIkcQyi4mLZ1SsGWHExzPsUWFwKLM0Oc+5KbG0DuUV7rWwhtnXCQGtfwDRwuNnEiiVaE4+/xcmsOK86e6VavboFVxRYFFjqBqzbDsF3AEs0djcxzCp5T39yVZBR1qt66OfA5TPAEvWDUCCCgYEAIgP9znK4KiT90zBA69rb/4CztxVDZiNm3zK1tbOGpVgKM3t3wDWW613xo57LaRJov//8aVnNecJsEzIH3R3KG9svUz5HHMvOdILqjjNZPQBDtcV471JgPdzAuhNU3QOrs3sa2DLAUrV9LlZpC5HVnD+vOHXpzeCTTUsgHzXceeRMBCemIzo+gd0aZM5gJcbEYWR0Anjsa+jOUmCBAkvzgGUHqaU9zG29IZSPApwelxpOqNrKGXfwV05m2VVmcvvNs1d3P9ROgUWBpV7A6vJzNXbndVF60QVRxr5SfsZW2cAx64D+EnZ7UGBgDAOhIQssA5E+DES67Nv/ClgdyFIBS4whUmdwncPhu/dDKA/U27ueuFwsq2m5YF/ZfJ19kpAd2VBLlOVnKLAosNQWWE57G9l2nMdSFDcT+6q2q9Jjl37xPnF+q9HsV+yHpS2AZ0IWohJHIjohhkUWBRYosB6EMAfbO85gSS3tYDFcjn7SGMBhOowfPeCpM/HwcfZi58ySG8zK1c2zVxRY6lEKrO4PuO8kgrH5hJ+8k+il5F8UZJR8aJq+Yz3kaVaOiVPBNR4AvsgAApEBDAw6KoBApOq9tvb+LWCJxaqnB7uuYNnYiWFpp4CR3B9jth3HgBX7LP2PtWxwPHz+I2l5y0VpeQuRVtQReWUtUZbduiVIgUWBpRbAakdWB7Cc9qq2DJmzWNLylht2+y9dVZy6dCLk84veeHwFJElZiEwcjciEuPZVrDgkxMZRYIECS+PPYHWcw7KzlsDcxhUQOPH00/MNDOZ/PBLjD3/OPDnIrl51xdU9xjJQYFFgqd2YhnZg6aTkNwgnVOzlhq8fD5HDIJ+IUdAzNISAWbFiVq46gaUCF9P7CSwmthJb2Io7zmCpgGVrawsbWykG2rtjxvYjQNjUQX7VZye4H7+6T1bW0sCcwZJWNBD7KgosCiw1BtbeursCi3maUFJ9kUiOX/jc/dtrowPf+kqEwRJeRHxyl21CCiwuBZbmJyQkCKHBqoYER8DdLw4w8hT2n1rtrD39f4uQeeAHTnoZ0c0sVl3snLHnlvNX/LR8VdN3En769n8dWL1tT8B68AHWu/LHbuuhvQNS79vDj5+d5K56Xy9l58+iKVUrEbTMB7oWIg/fUKhvuABPiPEbtgOuGSLvot/8XA5cWSUvbflFXtbEAktSXktkpbXswNG7lQFST8DQ/EGfvfv43gKot4M+e/wcPV62/O8eYv/7wLpt8Oiec7e0Y6uwA1yqmVjM3YStxOHA+R+9P76+KGD/Vy4Y5CCcPm8VFi5ahtyFi7CkvXfDFAUCjcYkJCSELQOsoOAoeIUkA/18zYwmVabqz/pgK7Jqam8Hlk76rk5kUWA92H1QgMVUJ3Xn5zoTS7P1Rm8aDoGVrl9Q+G2vBk6XvyMz7//zlat/JVw+HtmwDZzAR3QDi8+NcKi6nC0vbfm8A1ji0joKLAosjQEWO+m9oJGdieVY1EycK87XBn5Itrrt+TAV/RT9ZyzaiAULlyJ3/sLO0hUYGo1OaLAKV6HB/ggIiYJXRA4wLH6E0ZSqZXrT/+80smramMGiuhmltwFLNQOLAuvBrsYDS3X2isEV4aXvfIc/tSpg0CPbdTHIhevuHwFweexBdnA5qvehrSp7yTMDrT4Ml4+Ja14HN+hRbmDxGV1F1YUAu/Lmt+zKm4mkrJFIKbAosNQcWLdfpaPY28Aiy6GQWcVqbvN/j7zjUfjlUlj6jZiS9yTmLFqKxQsWdpYCi+aBWMFitgq9wpIgjpwByB61N512dIfWIyfPILPq99uBxaxeUWA9HNVoYI3dSfjJ+UQnZc917dT8C1qp24pMJu6WGcYuhV1IKryCIrqsUnHUcAVLD1OXb8aYDXvg/sLbcCurs7cvbdwnKWtuExfXX7cvqSPyYqbnOkuBRYGlKcBSlDT+7n7y998Cj9Rvh3+mLH7Zs5iauwbzFuRiwYJFWDR/AQUWjWYnJDgMQSFhCIuKhTQkDXqRayGacsBL8OjR49wJB37Xyqn+UyujjGinl3RejaPaHlTdQUiB9WBXk4HFrF7pJu8i2ql7Luhnl/6f/pjX1kKRYWkXNg6eoXEIDut6BksNgQUucvNWYPrq55DwTCW0Jz1vYb/t27WK4ub3ZYWNFxQlje3AunsVRXXEoehct+17QD3YwLrfQOrxIPvfBFLPgDrTQ2/bIrxjEGnHXKxGIits/FNc1fy784nzJ2VFH3o7PJGP9KXPY/7CDViycDmWLVxMz2DRaHaCgoIQFBKB0KiRgKGCJ8zeIxLM/Wi01qSjn3GzKolOTjWhwHp4q9HAStlOdJN3ME8P1uvnFOcLRz2fg35eA10CE+EfHIbgQN/bXg3qBSzmC8jqvFwsXLUeGU/sAZwzB7ps+ybHqbR5j7yoqZ4Blqyo9pZSYFFgaRCwiHVpM7E73PqF5yfXxvhXfWYIMyfe7HlPYOniNcidM58Ci0azExoajIioaASEJgIiZwOTqRXuvFn/twTjD//Ayay6CayMIgqsh7CaDCymzKgJQfL2nwU5e5aLRj/hCYHEwDsoHoGBgQgJuBuwurbvs2b1UsxethoTni4AvCaLfPJ/8nKrurTCvrTxZ2lJA5EWq2DFvGVKgUWBpd7AunmNDvNEoXVRC7E9eOFHp8+uLQk7fcYNNr4GMxZsQF7uGizPXUa3CGk0OxGRIewWoWfQSMDYe4BoUlkmHj+9E+MO1CK9oh1YJe3AUuGKAuvhqSYDix00OnoHM2z0c8Os/EzTkRuGwESpExAaD39fP0SEBN7lFaE+uGKyamUu5q9YjXFrtwHeU3QDis4MdT14NVNS0fKZTUkjERfXd+KKAosCS92B1bWyggZiu6+JSA5erHX+/M8dLge/yoA02Gz68ucwd8EyLFm0hAKLRvOBFRgeA4+wHMA4zNxoXPUqTDr5HsbVXNCaUEW0xpWzQ0bZA+7qCKyUXd23j4HWW8A9+EDsHlDClG09tLtBtLsIf1Q+MRyz922ztAJ/s8h1utATc9w8g+Hh5glfTze1BhbzBSR37mzMXbwCmUtfArwncH3Lf9N1e+uGn3lZ61uWpa3EtqyBfZqQOfB+89C7CleaAazeAcixl73fh8T7uvcbWA67u++dn+MmsJgD77LCZiKrvnBB+d6l97yP/rgStuHmU9dsx8Jl67Fu9RoKLBrNTnhkFHyjUqFMzAUcZ8mNpxzexRl/7ByyK64hax/RGl9MtDIL7g6slL2En7aHAosCS12BdV2YvLfNNLlgn7bvansz3zmw9x4JT88gFlg+Hu5qD6wlc+Zi0cJlmLL4acSu3AGHl07C6UCTRFx9scC8rPW8TXnDdWYeVgeyKLAosNQZWLescO1m5mI1E2V56zXZsZZzHkdr83nj18pHPpGP2aufwdKlyymwaDQ5WggNHwVF5FQIEp6B8WPHffQePXIK46p+52aW/MlL30d0xrUDix3PQIFFgaVRwGozTi/+37D0nasxJN7Cyjsdcs9QuLp7wsfTBx5udwOW+oT5ArJo9jwsmDEXeUtWYerK5+C7cje4U7eYKypbVllWXfifTXlDGwUWBZbmAOvW7USHva1EUdz2p7iq9XeHE61vxnz1h5/DKyUYv/Y55C1bw74KKLBoNDQ68PRNAERevEHTDhjpznw/GTlVXyC7hGhnFRP9nGKim3MnsFTX5FBgUWCpPbDqDDMLd5ombs6AgfMAB784uPr4wd3LHR7uXggOCIY6h13BYq4MmTMfKxYuxOwl6zByxU4gbOEAh/LGTIvKtp025Q11FFgUWJoKLMXeJgZYxK6sldgcbPjS/aurKa6V75qgnyUvb/l6CiwaTY4OgiMzASMfkdnECk+MP7oUGeU/IrOIaGcVsmWApZ1xE1gddxAKUnYTAQUWBVYP7emy7p4B9c+BJUjZ9ZPxuJI83bDVbtAyN3D3CYabt2cnsLw9vKHuYe5lWzR3PjsTaPaSDchcXQhErzTw3H/B3aL6wlKr8qafxKUNhHmi0L64gcjbqyhq+EvAut8A6/H76OUhcnUH1r8NnP+6PR1qvx1Uivzfbml3+GKAxRx0ty9uIpKyZmJXU/+T51e/Lw0+9pknzGxEK1Y/SYFFo8nRg39YFmDoP6D/+MpswePv7UZmWR0nq4TwsguJVuYeCiwKLE0G1qcmk6vSREmbBkHPUsfNyx/uXp7w9HRncaUpwFowbz6WLFYBK2fFXiAyT8e1snWw9cEr6VblTZ/eG1gNKohQYFFgqSmw7Pc2EGlhM5GWNBG7qro638+u5st2Hc2Goc2A3OWb2GMsFFg0apzufhvy4RU+GRgYb242af9ag5nvfYCskovc7GIWWJzMvRRYFFhqCqyePu8O5vfpKcHEMt/+6a/rwNSN4+YbCzfPQBZWPu5MPaHuyV20AAvmzW0H1jpk5b4K+D3GcSpr1BleddHHqrzpJAUWBZYmAsshv44o8luIbO8FYl90nkjK6y8Efnrjfenrx9agv7N53prX2EUAbpfxvxRYNGqWe/025AIcE0hjFgKSx+X9px7fw5t0vB7ZFX8wwOJmFt0FWLtUeEq915iGnRRYFFh9Cqz2X7PrgtQdLcKUHbvNxu+TCMOWYZDLKLh6x8DdIxDe7r7wc/OGn0YAax4WzJ+NxbkLMT93JSYtfAqJqwogf+40hm39Xmxb1rDbtry5WVzacF1W2ngLrugWIQWWRgBr93ki29fK/CXhmuvJtrqIk7V74JWmyFy7FeAZta9ice+KLBqaPknHb0A7azvY2NjAxtaKrVRsBxtLK0jt5OgnCcTQ9DdgPO3NAP5j776FnMPXkFX9JyezjAUWc7i9A1f66UzziX7Gzs6yqOoA1u1tB5cwLb9X7Vgxu1/tEWj3u/cZeL0GbC8B2NPn/ysrUT3NumIqSla9FWTsITqpO9t0k3e8Y5q6dTnPedoI9PMB19gGOgJTGIpMYSw0gqnACEYCQ6h7bKxGsLWysoCFlQ2sbBUwFfsADilA6pPmitLa5TbVbaftShrblOXNnbDqqLLwbLftNcD+BeTczz74QLr3IE921tTtly//zfZ0iN1h97leVbmngT3oLtvbQiT7mv60K6+/5vPulbddDnwTiOSZHPuRkxAaORpxsUlIiotFQkw027iYaMTGRvf1y5PmYc1NYNmoamPFVi4RQyqWwMpSAhgqtUSZhf34c79K5z5y+iuk7yfIrCLcjDLCyypWHXLviqtbgLVdhax7Aau9FFgUWPcbWAyuVN1BRFnMvLZdtaJxhVv1Y55Ig8DdjCeSQt9oCESGpjAyUMGKqbHIGOoc5vVrazmCrY2lBfsXIxsLc4ywdYRAHA64Tx7gWHgmze7g1W3ikpY6eVlT5wqWQ6Gq7EoMBRYFlroCq/3/g2JPC5EWtBDmdgLJ0dav/X8kGcGnvusPGy+tgOgURMcnICkhBnFRYYiLjEBMVASioyP6+iVK87CHWb1igCW1soHM0grWI0bA1lYMC2sZYORoaJi9z0dn+kcrMf74z8ioIZzMCsLLKmXHNNyxekWBRYGlVsDaRURjd6vK4CplGzFMyycG6fk/Gk4qWqwdvdoF2tZCPdFw8A1MoaurDwOhIQwNjWFobARDExE0DVhWw0fA3FYJI9tgwDpe6Lj3NxfJ4eu50vLzPzJnsJizWPKiJuJYcJ44F7SokECBRYGltsCq61zFkhY0EWl5C5EdO/+z22fXVsR/UO8NOx9RUEIawmKjkTQyGolxEUiMjUJCXAzi4uL6+iVK87CHWbUSW1tBbqmqva0txHZSDLdxAPp5DDSdXDZef8aHBUirqedkHyC8rPJOXDGXO6twRYFFgaWuwNqrajuwmPsRBRn5n+hm7Uk1GvvMABjItLn6/SAyMYNIZMTiysjIhMWVugOLiQpW7atXTM0tYW5lj4GSQMA2Tlu+56cBkiMkRVJ98RPmsDtTBlqOBS0UWBRYagMsRf5Ztt0BS1bQRGz31RFJTVO93xdkb/CxX8fBJmCAZ1w6IhITEBEZhNiYMMTGRCA2OgoxMTF9/fKkeZjD/A2YwZXUisGVBWRWFrAzHwpzS2sMsnZlLne2GDTtwAatR97+GDmHLmqPO0C0MsrYi52Zq3Fu4ooCiwJLPYElTN5NhMl721exdhGDzN3EYHzhSb0J5T4maVt0YODK0RKaQ0/UH0KREUwMTditQUNDZiVL/c9gWVm1w8rSCrbWlrCztIa5hRgDLJ0BaTRHVvCjzvCD17wtKtuOW1c0E9sy1dBR9oD7XZ4g7AlYfxdg9xs4FFiaCawOUPXY3XXtbSCyPQ1EWtRI7KtbLrqevvFR+Inm9ZDGWrgnTkFYQjJ75ioqNgIxLLBiEBtFV7Bo+jBdgcXgiq3YDkNtHSCQxQPySYqB04/t40451Yjsg38gvZRoZZTcBVcUWBRY6gisrshixobsvq6TtrtJNKEkn5f0qqRf3AbAyAk6BiMgEJmxwGJw1QksIwOoe6yYg+1WNu3IsoCthRWsLO0wzFIBjjQU3gVfw3Z/m51FVfMuq/3NjVYVDdcZZNmXnCOK4jtBRIFFgdUXwJLvOsO2J2DJChuJrKzlD8WRK40BRy8UmE57XinOWIiApGxERscjMi4KkXEMsmIQE02BRaMmW4TM+SuppR3Etk4wlkQAjtOgM6k6QDD97bc5449d42Qf+BNppezqVQeqGCBRYFFgqTewVGMbmJ9L3dS95wUT9r+lN2rbUlhlmDvEzAbXkMFVPxZXHVuETIXGBuCbCKDuj6mwTw6ytYKVhTmsLCxhOcIGVhb2EIl9kbj9XRitrh5hU/bLUutDLW9bVjSdtylrIsz1OXdDFgUWBZZaAGtXraqdwKojsj11qsnupc1/SsrPX3M5duXtxM9vBJrMeZrrnvwY4hLTERkbh/D4KITHxbDvq8m97DQPO7CYVSyxlQR2tp6AnpOWcEJJf/7CTzMw6ehXnHEHiVbOfqKTVdG5etUBpHsDq31UAwUWBVafAWsbEaW8wVaYxsxgKzinnX5wC8JeHAt9T7OQuEnQN2TOXok6y+BKZGQMvonmAEuFLCtYWlpixIgRsBzBPE1oh4ESV0x8dT8QMNHMds/HydIjTW9YVjTVWpU3EZvyOiIuO0fkxSpkdVROgUWBpebAUhQ3E2lxC5FUt3zl+8WNzNCj3wyAqVSLGdcQGZuAyNgYhMfFUWDR9H2CA/0REuCP4IBABAaEwz8wCRC6G5pOqvDXn/XBKs7EAz/zxlcSnRzV4fab24P5f6k9AatjHtY929PH97L3G2gPOvD6uvfClUHqTmKYup0Yp2xly7wvTCn6QZB+cj4v8DUH6LsIvAMT2fs20WUoIYfDA7hMORoyqfBeIxW5AJePxze9Adj5Czz2vusY+tG1hVYVdT9aVjQRq4o6FbKKa4m0uJbIim5WXnizPQ3a7HEQ576z3ZYC6f4O+uwZSPe3f/ms1b16+495bwNRFDIXQDcTWXnDz/4f/7E6qPpTP/STGk6bnYfps+fh8ZkzMH3mbMyZt6APXo80NF3CwKqjAYHhcPcfCZgGDBTllE7SfuzdQu6Emnqt8aVEO6eE6GZSYFFgqVe7W8Finhw0TtlOTJJVNR5T8bHRqI/HaHsV9INBsJanbwIA7bu8KjRCVncHFvM39o6/tXN1MG/TFkAZqpV86sf+ER9eHmtVce5jFbAaWGDZldR2IqsrtCiwNKMPG7CYVSxlQSM7y01WWlsf/NH1Qtf8dyZioGLgtAWrMH32AkyfPh2zZs3C7Llz+upFSUOjSmBgMFsGWH6BkXAIygSGJVqaPnr4Cd6j73zGG1d9SWdcx9yrbp4epMCiwFJDYInGbiVGo7cTk1H5xCT+8DEtjy88deXHtMEfzXHxTQU4AnA4nM5yudzOdnybRgCrA1ZdgcXTw4Ln8zFozEzOzB/+1A794IqnZeW5o+aVTX/alKtGNjC4osDS3D7owOr8PB3A2nuOKAqYp2AbiKK09lLgu5c/ddt5eiOGuVtMnL8W8xetwNxZszFnzhzMmDGjj1+bNA95uAgIDFXVPwRuwSOZ7UEOnOY49Jv+ZhF3yqlm3vjK68zqFQUWBZamAYs5A2YwdisxGL3jD8OkooZ+Mcd2wPqY7UDHw7D3WgFHj9HsheaanW6AxdXBwqffQNZz+xCy8wTi32+ztan8eZt5VV29bVnDHxRYFFjqDqzbV7IYYDGVF9YTeXHddfdj55tCD/9WCO+xDhAM50yevxyz5yzCgkWLMXv27D5+bdI85OHCLygUASEx8A2IgiQkBwheo2U4/a1g/tS3TnPHH/qDl1PxJ3MtjlZGEQUWBZZmASt1B9FL3Ur0xuxuFSZVnRSFlufCbO1wicezcPYaD2/fKPai2AcWWOBi2bqnMHX98xj1UiGGrdw63Lnmu1yryl9P2VbUt0oqVE8TMnOx7EtU7QlYioKzt7S3wOotkCiwHg5gyXerat/RveeIeN+5P8XVjX+4nmw+7VLxcShGTtYauXgjHp29DLPm5WHu/MUatt1P88AlMDgEQaHR8PKPBYzddEQTKwYJ53+ZrTX51Ne87Br2WpybuCpinsSiwKLA0hxgpWwnumP2neMnHnlVFFo+CqaP9nfwmA1Pn1Hw9g18AP4A7g5YwPo167FkwzPIeeoNQBnRX7Lj1Bjvd9tes646e05c3dg5eJQCSzP7oAOr4+nCewCL2FY0Eovqs9/4fXV1XMCBjwbD0l1n8pxVmDlvGWbPWfAAvL5pNDbMb72IkEAE+QfAPygOMPUyMplcEcib/v5arXFHftHOqmEHi1JgUWCpa3saMioYm0/4o8p+0Et4Z44oZL8cgjS+k8cUePklwtPLD5qfewOL+TdPrX8Sy9c8jbnP7gTsQwQJx79TJv1A5kqPnvvBsvIMsS0/R4GlwX2YgSUpOEck5fVEcbTlF++vr68Le/unQFh6Gj0ymwFWHh6bPrOvX5w0D3OYP4ADvFwRGhwCD/9EwMRnkF5mwRQ8+nYJcg41cLOqCTeTAosCS4OBNaaA8JNqPubHvT/SKPigKbQTeE7uOfD1j4Ontw8edGBtXLkGK1Y/iZlPbAE/Iltr0lcX+/l/0DRKfKL2o6GVvxCb8nO3bBP2NKaBAku9+rABqwNZzDksBlmywnricKi1wfWTayUeB76eAnHooEcWPIHH5yzG4sVL+vrFSfOwJzTMHwFhkXAJyQLMoixNJh3YhEdPf4kJhy8ju4Jwsu4NLN2MfwFYGt6+BpjaA+0+A67bLcKU3cz2INEbeeCYdtCbHrqOe7XAH8mxEsdCrvSCwlEBjc/tsLoNWXNmTMfsxUuRnvcUbKev40yrI9rO77d6WJ2qPzLiUP11y/LaW4AlL755T+G9UNW1DzuQegZO7wDU08f3NYD+NUDdqzvP3VHZri4taCKy8qZLylPnvwg49PNTsI2yyFmwGbMWrsC8efP6+tVJ81CHA/iHBMElNBHgu3DgOMvBYMqhEkw+2YoJB64jq4xdwbqJqyLCTysg/DQKLAosTQDW3mv6KQfqtWNrtsPqRVtD2SYMEU+ARBEFe5kT7O0leNCBNX/uHMycvwgTlj2JkOXPw2bzPgR82GyreLdt6+Dqs+esKur+oMCiwNIkYN2EFjOJvoXICpuvyw80t/gdqi0RjFvviP4OnGlL1mLhQuaQOw1Nn0UL/uEJsI9+BPDJ1TKYfjxUe9qRdzF5/3VOTtWfnHRm9YoCiwJLQ4E1tqRFL/n0cUFEzSLopA+zkk2CvTIa9jIXOCpc4KJ01PwjsN0Ci4sF83PZx9YXLlqGKUvXI5Y57J4+b7h8/4+L7E9dPM48TcgMG6XAosDSNGDJd9YRRX4Lsd/T9Ke0pOkPt6Ot70V/2BrGf2yZzrhVz2LBwqX0kDtNX0YHPiGj2KcHTabtH6Iz/6PxmHroG+7ECsLLKidaaSVEK63r9iAFFgWWJgGr7KxWwnsvcb2Kk4DwfjJlErs1aG9vD2eFA8TWNg88sObNXYT5cxZg6byFmDpzHpJXPg34ju7vc+zMSPnJtpfF1fXn6AoWBZamAku+q5FIdzcTMbNVWNP0beDXVyb4VZ8eChMLnYW5ax+AMSw0GhwdeAQnAgP9jfs/tj9Uf+5HGzhTDv7KG1+uWrlKV61eUWBRYKkvsHa19y7IGlPxPT/uw1l6XpVSaEXyh9tGQKr0hlyphINC1Qc9C+bNxaJ5c7Fg1nQ8NnchUpY9BeOcBfzAd+vs7U42zBbvb/hBUd1CFJVNdwCrK7Lu2R4AQoFFgXX/tgjPEfvd9US6u55I9jYQ+7LaXwM+v7IxqOb9EBiNMJ67YAUFFk0fhqMHr+hMwCxgcP9pB6cJ5n5QzplY08jNvjlY9FZg3YorCiwKLDUH1oe64R8m6bhWGYEbwbNVxrUDyxFKFllyPMhhVucWzZvNdt6s6ZgxZz6yF64G3KJ53kXvGDsd/TnJvubch4rqlj8psCiwNBFY0l11LLCkuxuJtKi+MeJLUu686/hUGFoNXrR0IwUWTR+Gw4c8JBMYEG5p/NjhZzD1za8xofIyAyzmahzmcmcVsApUE9w7nyDMJ7oZqlJg9T2iHmZgdXyeuwDrumh01WGtwI/cYV2gBfLFtwAAACAASURBVE44x8YuBHK5N5QK5/YVrIcBWMwK1mx2BWverNmYN38FwB/CgXeslnhTobtrxc8HFNUt1yiwKLA0cYtQtrOByHc1E/tdbUSyt+lyyP/I1+473nsGZg6WMxavZ3dpaGjuY+51yoQLcE0APQcOPOY6mc5+swyPHG/DuPLrDLCYCe6q+wcLOoF185ocCiwKLHUE1jb2/kFB6o7f+ck7zxqOLtkCyU5bA/sXYa3IgUIeAKXc/eEC1tz5yJ2r2iJcMHMmVsxfiunzVyB5xSbAa5SNd9n3r9lXN/ymrGr5XQWsBvYiXQosCiz1B1b7OawdTUS+q5U5i3Xd4/DltqRTLWXwTXOCwTAutIQAp31OHA3NvxsuzIdZwnyYOcyHD2U7ZMgQjBhhwX47hNYc+OXqms05FWE47733OI8cu46cyj+RXU642aWEuYNQO6uQ6GYWEr0MVfkZBYSfsYfoZarKvN+r9gSYHgB369DTu/XBBmBPgNF4oP0FYDG4EqVsI6KUN4ggeSvRT9vRopO2+4gg8dX50E8cBm1P8HQHQ0+PD11dfeho60FHR4ftgw4sm+EWbC3NVbW1sILZcGsYyL0B75HD/Mq/mWdfU3dEWd3UItl3hsiLmoiisIlFFnOh7u2H3P8usHoLtL4HUk8A6ttBnl0HcN6tag+oXla5QwUtxa565jzWn7LS+usBb154z73ik0iMmaIPg0EcpZcvfIP84OXtBl9vT3h5e8DT2wPeft59/RKl0fQwuLIYag6LYUNhMWwwhg8dDAsLC4wYbgMYyHRNcvaMMFr06WStx05+i4kHCMZVEW7WPYCVeRNXulkUWOpQCizVf8MAyzB1KzFIY4F1Vjer4IWBmW/EQ+jWT0d3CPT1BRDoa0NPT49Flq6uLtsHHVh2w6zYdgDLxtICg61sIBQ7Qycss1/UkZ/jlQdqX1BU1Z2VldYT++KG9lWsus5J7hRYFFhqC6ydqip21RJ5fm37ZPfmb8O+vTE55Ohn5hgq01X6hcHD3xdu7g7w9HCBj5cKVz7+D8JNDjR9+gdsB6zYDh+IIYPNMHzEUAwdZgEI7Uz6TywI15l5+inOlMO/YXwV4eRUEF5OGdHOKSE62SUqYGUVsGWAxa5cZeUT3ax89i0FFgVWXwKr88fIHnjfRgwythNRdv73etn7ppsmvyiGgZO+tu5AdvXqJrB0HyJgWbDtWMmysTDHMCtbCOwUgF+Cflj112KXw3Uz7Ktqf5BWNLSPazhH5CXMatZvRFnYw9U4FFgUWH28gsW0A1i2u38jjgdbf/P+6PKT0W/+Eg5rP2OHgHi4+vnD3d0Zvp5u8PfyhJ+fD/z8HoS7SGn6HFhWwwZ31nzYAHYFa4i5GDByGMJP3/641rQ3q7iTDjYhu+wWXOlkFxHtrAK2N5FFgaVOpcBS/XfsvYPMP6dt+7PfhN0fGKa9Es8PnGsIvh2Pp23Cbgvq62pDR0erc3vwYdki7ACW9QgLWA0fhqEWFjC1kwHWTjzPV/cb+uz/KcGlpvYD+7LaP8UlZ4m0+CyRFf92V2DdcRchBRYFlhoBS7qvjiiqW5pcTl+ojDj222OwDB0s8xkFN79Q+Pv7s1uEAd7e8PPxZUtD0/stwmHDYTOE6VDYDR3Cnr/qb+kKmHhbG40reE7r0ePfccZXX0FOKdHOLuvEVQeqtDP2dJYC6/72/9m7D6ior+wP4HcqM0Nvgl1AOthFURF71KiJDay0oXeQoqhJTEzfTXazm/xTbSBVerN3Y+wlxvTEgiCWZKMmm91o7v+895tKmdElZAZ575zvgaAUlcPvk/fuu9dMEQashzwiVDQbtVikaC4aXvybffimneA0xw/ELgKQ9uQJxGYUU2pgqZH1mIx6bjcD+/enR4O0LMDJCfr27Q1ubm7QZ4ArgGlPHvhOFtivfG/kyJKvdgyrvP4fn9JGOvCZHLWQh5VPSceApet9HwpoHQZSZxehM2AZBFgti923XkOfrdfQo+g6elbe+vfIT377ZvKu5n9Cv5kuPpPk4B8wC8b5j6PAIgkcMxYC/QO6fqNhtoyjBosAy61XP3By7A0O/bwBTH35MChqmFlkeTU/euc9Xnj1A4Fi50oSWoqSsBIGLAasLgMsy2C6i/Ufy5iqBtmCNz8EiZdrwMwlABILEEoUNVciIZiYiBR5PI4I9QHLeUB/cHLqD/2dXCiwnJ0H0DosNydXsBngCeHvFgKMDR44uvjiB76lV656bbvyH69tDei5rRm9Sm6iT3GzFoh8iq5phQGLAcuYgOVe0ITu5bceeO+5d2/s7h9qpKGvDwfr4fyhY+dAwJhAGDuOAYutP3CRm4PkmJDsXrn06QdOzt4AkoE8CMiQWCfUTpfE7jzBk9c9oLtX4RyupKElNFwxezEKQxiwGLCMFFiLttDjQYvgAjRbUvyDdULtTsn8NzLA1LfP6GlBABIZCKUKUIm43avuBiya/i40bgMHgItzP3BzdoJ+3kMg/J+bAMbO6zO84HzG4KprOz3LLv3gWXoFPUsb0GtbY6sdLAYsBiyjAFZLZCl3sAqa0K2kGZ2rf3ww7OAvJ586//NMh/S/SMGkJz/AfyKMHTuWIou+HMuOCNn6g4Dl0qcP3cnqPcAHwN7PxCw8b4BF9vEYfvTOr3nhtYraq9IWwNLewTLRAJYyDFhdH1gGR5QeYOmcN6gAltmiAjLG6Zokquwty2XvzALbYbZ+k+YATyalwBKaKOuuuh+wyDGhaz8XLk4DwN1lAH2b/QAXiPzb+wBPhNiOLv10tlf5pX94ll265ll2CQmyyE4WAxYDlnEDq1mRJhWwPEqasV9hE/ruu/dN4Of/jZux64IT2HtIRvtNoqgiwBozLoCGLbb+50V+wE6ZMBGmT5wCE8eNh0mTptGzaLDzs7GNK5sB8fvehPCaBkF4NYoiOWCRlgxtRbNNg7JVwx/SpkFvinVGP7A6N2R0kO60DahHjT6QPer7aQLNrCNZmqczej//Q4zCsVjUdsyD89A8eAuXJQT7xd+aJ29PtAh7zxWsfSQjJk4Hq56OYOVgD5Z2tmDr2IPG3qEH2PawV8SWxsbehsbOTjvWdtZasbXVjrWNpVZsrbmo3mZtTWNlw0X53+3FtmWsbLWjeLuNpZVWrC0suViaq2JlYQbW5mZgZWoONjJLGmszC7AyMwUbmTmYmNtAUOZ64E1eIplUfdF12PbGJK+yhm/pEWEbwFKiyruwQZVHBcvjBiRDA8bY0hJBen89t0FnfHSmEX1yr9N45zWid14DBZZXISl2pzdiGwJP3//bE9u/mAGOg2yiE7IhMSkNUlPS6UuS9htxs8WWnkW+daZNmAJTxgXCpIBAGD9hGowKnAtgP763RXRlqiz7bD2E1d0mu1cmclLcrgdYndFolAGrU4GlLx0BFn1f+nHaA9ZD7sDpLF7XDSyLIIIs+vl+N12ed8ouJn82f0q6GZg78UcGTARbB0ew6eEAlnb29HV7RWztHSiw7O252NnZtRlbW1uwVsS2jbSNIw1k6QGVTlzpyMMAy8bCnILK1swC7GRWNARWVlIzGqmpJcRkrwMYMILv9mKu2cjSz2cPLb9yyqek4QHBFQMWA5ZxA0uJrEYVsLzyyQDo6zi4kE4kuD3xFNYP3fxJGvQY2jsu43mIiU+FhIQkSE5Nh5S0FYZ+RLPV1VdgwHiKq8mB42H8xBngG7gYwH6Giyx6xzvi9DPfQ1jdvxmwujCwlhTqjPliHVmiGzjqo7qCdqP/69b996PreFDX7pVqB2sBffm72dItv9ovf68efBePBFM3weCxT8DYgInQw74XONj2BHsbR3C076UKeZuDnYMq9rY92oydtT3Y2qhD/lszLXeY7C1twd6qNYha7nC1F3urh4utpYVWCKa4WCrC/beVTEYxZSOxoCGvW0pkYC2RgIVUBmkrMmBR6kqAgWME5nF/GRlQ9l3dkJKGXwYVN/7e3vEgAxYDlnECqxE9tzZqAuvX0Yd+veS14di70C9gYETWK5CYvgri42MhJSUBkpLjDP14Zqurr0mTJsGkwAk0gTMXAVj5C2Bk1gjz5I9rIf6TXyCs7gED1uMJLIIoSx0hv64fWAU6o4Ram1msG380iwp07pIRSJEbgm2F7l4t2IqmwXm/ypZtueS47O13wdx34OiJ82DChBkwKXAS9LRzBEeCKWtH6GnXSxXyNkdbB1UcbHpoRRNYmsh6KGBZ2uoBVvs7UwRnrUBlbc5FL7CUuFIjy1IiUQCLQxbBlRJY1hIxZKckQOKKTFi4+g0A3zkDh39w/N0RpY3fDy5q/HUQvUGovkXIgMWA1RWARXaxKLC23f59cP2dX6ft+Vc9TEsYARaugoj0tRATl0CBlZwUbejHM1tdbWkWuJI1ceJkGD9hCowLmAJg4sKHic+bmScfnm2aeuqUMO7wAwitowXuDFjGASwlTlod5WlcCCCvm4cU0cgW5aMsuFAVsyXFqpgvLkaL4CKtWC4qVocASN9RIAHQoqI2w33MAj0p0vn+5kH57cZiYT5aLczTGdslRWi1rOi2ZVR5vf3St9PAZkjvUeNnwdTJs2FSwEQKLCWWHO0dVeF2ruxVsbe1axXlEaGu6Dria/840LbNtKyzannkqImzdo8ILawV4eqtaM2VCljc0SDd1ZLJwEYqgay4aEhNSoOQjJcAXKf09v/weNr4uh+3jyi7fXtQ0U30KWpqM2qEMGB15zxqYXpLIClH3bSXhwWWEllKYNHX866jR/Ht3wN2/3pySMGZ2TAj0hRk/flxyTmQlEJqsOIN/LRmq8utlreIJowPhMDxk2Fc4AwAiyESU3mZq2TV50n8uI+/5ct3IYTVMGB1AWDRG5WKW3+SxXmK5KP50m1a0cQWBVcL1BB0acZqWQlaL1Wn5S6X9dJSrWgBTQNqbWaR9udqK7qQZhlcgNZBW9sN7X21cCvZCbtiFln5F8vgt6eCY4DFsHHzIHDyAvAf+yTY2DmBte0AGlt7Z1XI22ns+9NY2/ZrFUu7fmBh27dVLG3UsbDu00b6KcL9t7mNZpS/1n6srEj6qGPdq1UsrRy1YmHhoEhPRRzAzLwHmFnYgbmZLViYcjGT2YCZqRWNucwCMpNSIT0tB8LTXwFwmWru//6JqaOqbv9lyLabV7yLmhmwGLC6DLA0d7Lo67nX0aPgB/Qqv/3NpHP3E2fs+Hwg2PhIYpKeg6TkTEhNTjH045qtrrJ4PB6NJq4EADB1/HiYMWU6BATOArAcYWsXXzlLkH78LYjadY3gigx2ZsDqusAyXVyEpotK2o350jKtSIKKtELeXxfAzIJLtGK+uFQVMxKNHbO2IltSqjP0628nZPdMVw0WQZhsYRFaLK/6wiK2Nsxs4bs9XKathMGBMeA7PhwGBYaB0N4PTHqMAonDaK2Qt9G325OMBBO7ETRSW3XIf4tth7eKiY06YuthbWSEItx/i2y00/b7qCOxUmYISKwHgcTap1VMrLy1Irb0VMRdFaHlQBBaOoPI3AnEZlyEZgNAaNaPRmTaD6ISVkNSzl9gedZbMG31Fhif+5ndqJoflvlsu3GRzHXzLmqiYcBiwOpywMprRNetTehWefPamE8fvDXz4JVZ0HuUbULyekhKzIIVyensDiFbHQPW7ImTYeq4aeA/bh6AbUAfi8jSFbzkwztAXvsDhFYiP4wbj2MiV4zH0cAUa9PwJwNLUZdE3k+6tBhNlpEeZKVcQsu0wo0zKkdpRDXKwmvbjDS8Fk3CalAcro5EXqeKLKKO/h7NkN+vGX2/bhJepTOan7vNhFbqjCS0HKUh7aUSTZZWP7CK3fuZZdrBKMGyPE/wTXWGAcudYMASJ+i/2An6BDlB30VO0G+xdvos4tI3iPs9vReo00sR+vr81umpEcd5evK0E/TUiKOeOGjEcY4TOM5qkZlcHGZop8d0J+gxjcRZFftJzmA/wRnsApzBJtAZbMnLcc5gO8YZbMa40PQY4wI9A12gzzQX8I8d6PzKfm/3zd9EuRU0XHQtuva7R1EjehWSwmEuDFgMWMYMrJbYGrTtR/SouPmD/7nfd4zb/s0KcJnQJzr9VUhMXAmZqRmGfmyzZWxLjSee3giBB09OfAKmTngaxkyVA/SYPtAurv49iDt0CcKrfyXd24XyChRHlKFJxDbasZ1DFIkCWaohz1xMQ4vQNLQApWFcOgqkrh79ANPTqmBZHg3ZmRIvLkTRkmIULi9H0puMH7kD+XH7UJB4AE1SjqA07SiKkg+pIkw5hMLkI+2Gn3IEeam6I0g9pjP8tKPtRpB6VOfnf5iQr7G9kF8nf06TpHbzuyj50H/EK459I8k5t8Fszblnbdece852zbl1Nms+XWe9+vw6q5wz66xWn1pnveb0OpvVrWOW+ck6ixaxyuBCXrfMOt4q1pnqKH+vrrT8uIo8z+VjddKPkLxgmXaYxiL10AuWKQdesEjeT7JelZS9682Tdr9IYqmIecKuF80Td5C8pIxZQt1LFgk1L5vHV79sFVv9CpfKV6ziyl+xiS19lcQhte41u9Tq12yTtr0uiyt4DcI3vW61bl+he37DZY+yW795FDX+ToCliSztZpYNWmkJnI420uwogDoKJGNv5NnVgaWvyN1381Wd8d5yTSvayLqOvlt/QK9t//p19Cf3L0/cfe19cJ4yMPGVjbD6hVfh+eeegT59ekGvviR9oE8fLv16k/Sj0axnZqsbrEcDlgCeCJwOwO/FA4mfAEatGmkRt7seovf/G8Jrfm8JLFFIvhawKLIU3dwZsDoHWCZLc9FkORk9VMztSkXWoTh2F0UVJB1CSD+GvIxTKMg+02b4K9sPkKzSHd6q8zoDOWfbDW/VWZ2f/48I+TOKstrLqd8F2af+w1956jo/58Ip/uovD5qsv3ZE+FLTUf5LzUd5LzcfFbxy/ajo1eaj4tdu0pi8qh3Ja7e0InvESF+5+cgx5fKJ6SvNWpG+3PSJ6UtNx2QvNtJI1187Jnvh2jHp8w0kx6XPX1FFsu7yCcm6709In+MiefbbE5LnviY5qYzJs1+clD7zxUnpms9Pmq7+/JRpzoVTpjnnT8tWnTltturUGRLpytNnTbKPnpVlHThnnrXrLMjzT/MTS7/o9c8Lt90Lr/3mXnjtd48C0iH7GnrlX2sDGQxY3TnGBqxBWxppVE1I826jb/G/fh+y896v4/be3C5N+utI8AwQgIkF78UXX6SYUsJKE1j9e3FhwOpmqz1gCfl8Gu23iyBg7BMAQlcB+K2ytEg6/JQo/tApiNj1QBBWi6IQgisGLMMCq4AewYqjqlAYV4/i9IMoWHEYhVmfID/rOPKyTyIv6zQKVp1tMzw90QUkEn7OBZ3hrT6vOw/xNXRKcsjfyWkU5px9IMw5+x/ByvN3YeWn/xI88+1PvGe/vwPPXr4Dz12+Azlf3oE1X9+BNd9oZ+23inxHQ96nrfCfu6Qz7b1fexE8o5lvtbPmGxr+6q+5rPqKhrfyS0UuqgLZn93lZ3+qCi/r/F1e1lntZJzikn7yriiN5PhdSDp0j5944B4/Ya9Gdt8TJtbdkybV3DOJKroLIZt/sX/x4988tlyhuHIvZMBiwOqKwGqkY3S8i27iwLLbvw8//POpudd+n+Pyj00WYNlD8Mza52GAY18Y4Ngb+vTqDb17cyGvk7cNcOzNcNXd1qMAiwciGD/paQC7cdI+Kw55SLO+SOHFHvmWF7ETRaG1aLK8Ak3CGbAMBSzy68KlJfSSAT9+B/JS9qJo1ScoyDmOvJyTFBFaWFp55pEh0tnA0vfx9eV//vpXn0b+6rMoXHMOhTnnFTt25xBWXURY/RXCGkVyvuRerv267azRHf7ab7QCz7RIex9Xx+fjr1bmS63wcr5A/qovkLfyIg1kf4b8rM+Ql3mBS9Z5VSDjHELmGeRlcIEVpxFWnNRO+jFuBzT1KPJTuONciNuLELcbIW4n8uN2oThhD4rid6IwthrF0WVoGl2CvNDNKE6tQLf3vqSoUgKr9fEgA5ahgWPoGD+wyCWNZhxQ0IxeB+59G9iEyZ5VB9zBwU26+rm/QF+HAdDPoQ/0duwDvXr1oundsxf0c3SkYcDq5m0YNOutWgZ4JuBHgNV3ql3f9ENPiZLPvcOPPNgoCN+J/NAaRXF7JQrCtqGI1lpp12AxYHU8pGdVe6EXB+R1KI7fh6L0j1G06jjyV59GWH2SAgJyTnHHfNmnuSiP/TTSUWB15Ijwj8gfuasFq84hrLmAsIYg64uHyxo9Wfuldta0yKN+Hq23XdROzgUuKz/lQiBFkkkwdQ4h64w6GacRMk6qs+IEwopj2kk/wiX1MPKSDyMkHUBI3oeQuBt5CTso6sWxJPUojqlGSUw5WkaXomlkIYqit6LTGydw+LZb6FF0Hd0VHbJbwoIBq3sB6VEB1dnA8t18TStKYCmRRT4nmU3oTHaxan9sHPnF/bc9K47NgZ7DbFNeeBt69BwIvR37Qa+efVS46t3TEfo6cmFHhN1sPRqwpDDmyTCAPrP6OiQdzJKlXtjDjzjwIy9sB/LCq1EYUcWAZUBgkaNBUdxeWkwuyjqFYsXRF4UVxdVJCityRNhe2kKXVvTUYNFdH13R+/6GTUtI8lZf0MhFnWkFnLay9nPdafH7H+Zja38d6q8Xcghoz6v/7rPPcsk8o5FTXFS4Os5FsVsFK46qQ4F1CCH1IPKSDyI/aR/yk/YgJO5EXkI98uPrURxXiyaxtSiMraTAMpcXo3lkIYrlm9Hh2V04KL+BAssjvxm9Cm6okMWAxYBl7MBSIstrazO6Ff6AzuW3f/Q6fGf35DM/ZpnEP99n6Tv5IOnvBfa9B4BjLw5ZBFgUVz17QO9ePRiwuttqCay2YKUGliX4TEsC6L3U1Sp2/4eC+BMNvIjd/6HNReUkVSiKZMAyFLBIuwVB8kFVETsp3CYvKZwUu1b8LD3pYJF7h4DVyQXuqj+DrrTYCeOvPq+O3uNP/eGv+UxnuB2z9tPmx2z5tSi+XtWfQfFnV0E645R2Mk+oYZVxHHkrPkFIP6oRxc5V2iEuqftRkLwfBYnkRuoe5CfupLgSxteiOK6aRhBXieLYcpSGc8AShH6A0pRidN/4LbrlN1JcuW+9rrWLxY4IDQ8kBqxrOkOPCrc2o3f+D+ha2Pwfl9rr1wK++s9Hc27+180zfxuA1yAw7+8Mtn36gWMvBbAoruygV287Qz/u2TI8sJTRxhUpcAd+Tx5IJgph7Bt+ZrGf7BAmnPwvhHO7VwRXgvBy2v+K4KotYEnaBVYRShVhwHp0YHF9xIqR3OKkD8fss8jPPIvCDC7kdeXDlSBKmNl29AHroZD1BwCrvRuO+tKZwCJ1WW3lUdGlD1gPg7SHwZUSWIIWwCL/xi1xpQks8v2jDSwFrtJJG45DXFL2ozCpbWAJ47WBJQ4vQtPwfBQs/xBNEgrQ9d3P0HNrAz1mIcAiL7XbNTBgdeV0B2CRju4+eTfRo/AG9in47jePIz/sGnrz/qgJ3zcIYbAfT+zkAVZ9nRmw2NJeBFiuTn1o3Ps7g3v/geDavz+4Ow+EPv29ACTeAhi13kq87MBcq7Qvz/Cijv/OC92DwvA67vZgWCmKw0tQEqYdaejDx9CAMe4QUOWj+TKSQi4hBWgato1rj5G0l3tYtrFTRYGluEHY3u6VrqND1RGi8pipvegD1kOEn/2/5Y/43IaO7vo13aG/p8URsOoIUJlWhesnNHKM1ldBikaSD2kncT9Cwn7k0+xFXvwuWn8F8XXIo7CqpseDgpgKFMWUoVhejCbyQhSF56EwKh8dXjiAg3IvocfmBrqL5VHQxN0oLLhKo6/RZ0eBw9JBIOU16Y6e99fXCLSjw5r1gar1r+sGle/mJo2Qwver6Jl7FT1ym9E1rxkH5Df87rzjxhmv7/47d+J3/7KEYVMFC1Ofg2XRqRAbnwxRUVEQFR0O0bFhEBUdauhHPFuGXi7O2sDyHNAfPFzcoa/TMACr8TKz4HIvccyn6aLYc99C+GEUhO9GcXgdvT0oCS1thatHxZbhEWO8oUOZl2kDyyK0kP69iaJqUJhyAPlZbSOK4koBrI7kzwBWd47+SwK6gdXq3+tRgJV2AiH54/aBRfqoKXAljOfCi9+DkLALIW478uLqFMCqRlF0Bb1FKInahmJ5Id3JEsgL0DyzBt3++Sk3fqT4NrozYBlVGLD0ACv3MkUWAZZb7k10L7iJztU3v/W4+FvakBONnjB6vuzJlBcgJD4LomISICY+DqLjIiE6PgKiYsMM/Xhny9DLxWkAuA7gcOXR3xm8+zuBa1936DnAH6DHLDuLpbXz+BGn3oWIw40QsRcFEXUoJiNMQivRJKRML7IYsBiwWLoXsEwiS9AkohgF5KhQvhX7vnwUh5b+gN5lPzJgGVkYsLTjvbFRnU3cx6O7WFua0WMLByynsubG/kfvvOt7+NpcGBdkNyHjZViakAUJiakQmxAP0QkxII+LoCGlzGx14+XiNBBcBwxUIMsZfJw8wWnAKLByDgboF99XuKBmFS/i6D4I3fUjRNRzhe3hpO6qjAHLAMCyDCtCs/BSNImt5251MWB16TxWwIqqQEmUAlkRxSgOL0BByGa0z9mNXvlN6FnCdrCMLQxY+oFF3765GT0338SBmxvRueTGj451N/Z7Hbq+qs/75X29nnkd5qauhMioOLqDFRMfQ5EVEx9j6Mc7W8YBLGdwderHvd5/KPQYMBfA7SWAkfluoqUHN0HYviaI2PFfiKhGnrwUReEltP7KGI4ITUNKOpSuDiyuWFn9AFUWM0PWCRq9gGr5QG4ZfcDq6jE0svR+fTqSffbRgZV2TJ3UY/qBFb8PeXH76ExLEtpkNH4nQmwdQmwN8mOqUBBThcKochRFlqNJZCndwSJHhCah+SgN24qmCeXouekKehbdpEXupPmoBwXW5VZFzm+SVgAAIABJREFU7q2K3o0AId2pyLyrAUt/EXuLxqKbGnRHA1ccsBT42tRMkeVT8CO6FNz4r2NJU7PH0Z82T7l1383srX/CxIxsiEtJg/jYOEiMjYH42BiIi4sz9OOdLWMBFjkqdBngAf37+gMIpvDAa4tQtuCL0YLlR/ZA+I77EFmHIK9UA6uN4nYGLAasLhcGrA4Diya6nENWVGtgSaKLse9fz6NHbhNt08DNJryKHoWX0buQAYsBy9iBxdVkEWANyv8R3bbewr75N3533v/TXu/rv/hP/u47ITgP5EXEJlFcJcdEQWJMHMUWW918EWApjwld+g8Cl96TAGCGAHwKbCVBX88XhBw4y5PXIMirubYAKmAVoSSMhAGLAasLhwGrE4BVSm8TisLyURqRT4verVYdoA8u33wOWO6FV9G9iAGLActIgaWIZtE73cEi7Rq23sYBebfQqf7HcyOaf18w5synttDHRRAZmwxxcTGQGMsBKzEmgTUZ7e7LxclZhSyXfsOgb48nAYTLZeBT4mu65NsMYdje78jOFcEVCel9xYBlGGCR/7YMK6HAksbU0p5EFFiZ2sCiD1YGLAasTgeWElk1yI+qRGFUJT0mJBHLt6EorBClEYVoElWE5mnb0ePtr2nvJzKb0LVIP7BIF3hDA8bYw4D1ZwKriRa7+xT9hK55t9Gp4uZ3g777T4ZzzX5f6OUuC4lLozVY5HgwPjaBhq1uvqZNmQoBY/0hcPwYGDvuaRg+cjWANMMehtUslAZ/9oEoZE8TL6KSOx6MqFQAq1SrButR+l49ajobSMoGqJ2VDgFrWTFaLC+iMV9eQkPeTv9u5OUoiK5DSDvCzZWjw3oVD9gsDWC17OLdIvqAxcs6qzN6gaCch2eodBBgev/8nfz5H/Xr0x6Lc6bjwFIWuccd5IrcCbIS9qgGPvNid6IgZif9XiQ3W0XyajrdgfTJI9+j0vBtKIvchuLobdj3lRM4tOQmem5rpsAaWHgJvYoaKLI0ocXBqnsAy9BAGpyrO/o+fsvRMq1HzTxakfojp8XnazX6Rk+R+/8CLM88MpXgBvYraWjy/fzX93sU7lkAvb3tU197B5598RV44bl18MrLf4Hn17/CBuV090VxFTAOxvmPg5Gjl4G3/3sAlm/2gzH7Vlssu3hQFLLnX6Rze2tglaMktByloaUMWJ0ELBKCKgsFrpR/XvL3QnaxxFE13EOQ3AhTPkAprhiwGLA6AVhxBzlgxSt2suJ2Iy+WCz96O0WWMLKaIos0wiVzSk3Cy1AqL0FRRAHardmDnrmX0aOkCT1KyC7WZfQoalAhSxNXQ7ZyMTSAGLAYsDSB5Z17gwLLM+86OhU1/Mv1yK0D48/fzDFNebbf0rc3wqo334YXXn4Nnn/hNXjl1b8yYHX3FRAwFsb4j4dA/6dh6KhscBy1HcDzoBtMO7VZEHSyWRC65zcGLMMCSxnln5e8JMCSRFZxD7eUI+rZci2BxIDFgPUnAosfVc0hK7KSA5a8nLZsEIXkoXlKFQ549yK6Fl1Dr7Lr6FF8heKKAYsBy1iBNWhTE40aWNdpCLAGFjT85rqj4caM7+9vkf/rvtvYrcWw/I13YOXLb1BkrVv3gqEf72wZegUGBlBgjfdfACB+kgfe5SKY8q0/f+6ne0XLjj0QhO6iswcJrkhIDyw6IocB608BVlt/XvLSPKwUTSOqUBS1nc6Io/PjMj/hdq4YsBiwDAAsfgwBVq1qF4tDFgcs4fJc2q6h99/OoNvWqzi47AZ6F19lwGLA6hLA0kSW5xYu5PvYueR7HHHs9r45d9A/pKFZBF4jeenr/wYvvfYmvLT+ZUM/3tky9LDnKRMCIWBMAIwNmAVgNUUonV5lJ17yVZAg6ORZcchhFIXuQAEZ7hxOdq/UwCK4MgZgdTRdDVhmodtUMQ0rQ5m8BoUxOxGSFchS7WJxD1h9wNLfbLSTgbXy005Ox4rMuxqwWn19ehqN8lKPIi/1iCqa2OIlH35oYEHMdg5ZFFi1qmNCWvQeUYTSsAJ6TGiWswfdN36Pg0uuo3vBJa5dg6LpqE/+VdWDW1kErfcB382BpQ8wZFixrnQYSAYGlv7RN/97kbvvxkYcsrFJFa2dLAKt3Gvont+A7jUN5578FwYtvHzDDjxHC7NeeQ/WPPsqvPri6+yIsLsDK3CMP4wNmAjDx88GsBhrarKgbIgs9mK2KPTod7wlu1AUWo+iMA5YorBKunPFgPXnAavl3wOBlUUIF7PQMpSFV9JaLFJsDEkHuAG+pOg985wiepDFgMWA9QcBi4QXVavaxSLAEsrLKLAk4QW0s7skuQb7vXEOhxRcQ+/CKwxYDFhGD6yhG7iQ1301ft1rUyO6b7iKvlXN3034/vfs6ecbh8DAsaYrXv0Innvx7/DSC68CnwGrewPL338U+E2YBi6TFgEMeKqHaHlpsCTp1AaefN91WF6LgrBaBiwjAJby70IJLEsFskzDttHbWgRZgpjdCElHENJPIWScR8j8lAGLActgwCJHhARYwshibgC0vBD54cVo/8whHFrYiL7bGhXAuka7u/towIEBiwHLGIBFYDX8I21gaSFrQwMOLb3V5Hf07kfTjlwPghEL7BP+kgvPvfwWrF+3XvWcbbXIjEI2p/DxW5q4ImvU2HHgNXEO2M2MBwjM6C+OqnpGGL//CITV/8STb2fAMlJgWWgCK3wbSiMqURxZxz0ACbLSSP0NV5PDgMWA1SawSHQAiybxIELCQeTHc6G40gMsDlnVtC9WS2DxQgrQIn0Hem76ToUrJbA0kcWAxYBlLMBquYOlCazBuc04qOjmT941PxweXdf8DMx/tl/YO3Ww8rV34MX1L7d63qoWA9bjsUNlYWbebkzNrWHavMUwJDgZLCLfAumKGndhXH0eL6r+Fshr7/PkdbT+ypDA4j6+rnTs/SXLt+lOJwOsw0ikwCqj9VjSsAqKLGHsHgWySMH7Gfqg5WeeRWHGWRSsOMOlnSL3RwaWwQHVzaMPXxlntKLql0ZzkgJLKykfq0MK4JOOID/xkCpkR4tG0YCUJn4PPaImoYXuMVwDUl40aT5aSoFFCt25AdAlKI6vRLcN36FXSTNtOqqJLM1drD8inQ2cDjfq1FeErq9RZycDyeDpMLB0F7X7btSdwRsaVVHiShNZtA6roPm+e+md275Vd/KHlDZ5jP2/AxD10ge0VYO1hSXYW1mCnY0tWFtb01jZqMOg9RgDS2ZhDVPmLwUY4M+zW1Uqljx3dCzE1eznRuPUIkTUMmAZPbA4XHGF72VoFlaJEjlB1j7kJx5BXjrp7n6GAetxTYeAdZq7SagXWEfaBJYWsuhOFgcsIImrQYipRH60GljS8GLamJigy/Evp+ktLAIsJbKUwPojkcWAxYDVEWC1RJVmSA2Wa24DumxtxoEFP6J76b2Dw3b/NnbQ+5+IwNqdl/Pcy2BpaQ32VtYMWN1zB8sSZi5YAuDgKzJPz3fgrTm4GGKrz0NkDdLjwQjDHxEyYOnfwSLhjgwJtCrQLKwWJfLtKI7Zh4KkjxXI4vCkbt+geOAyYHXtGBmwQBNYsVXIiyEzCrn5hLIIbvIDL6wQJSt3oesGckzIgMWA1ZWB1YguudfRLfc2uhfcPD9q778Xj9x0zAEcvEQ5614DC0tbsLXWBhZFlq0lDVuP+Q7WzEXhAL2Hm/HjNo4wfenkaoit/l4TWKJQDlgEV0pg0RE5DFhGByzL5WVoEVKBZiFVKmSJ4vbTYmXeik+Ql6nZI4sB67GI0QGL1GKp5xQSYJFB0GQItFReSr/nyYxCcUoV9v/npxRVHkWN9Lo7AxYDVlcCFjkidN/SiK5brqP75hvokdv0vf/euznDPzw8HOx9zLKffwPMLB3A2toWbG3s1cCysVSFrccMWFam6ogt7cEvKBrAaVIP22fql8qeP7YZ4iqbeZFVKIioQ2H4dhSH16FJWA2Kw6toTMIruJqf0AoaBizDAkvZE4vsXpFYLq/gkEX+bcKqUBS5k86QEyQfREG6JrKUzSgZsLo1sEidHmntoYwGtugNw+SP6S6oIOkwDT/xAI0SWnxFaB2WRi0WnVMYR5qPktutVSiOqkBZZBlKQ4tQEpqPktgitF+3H4cU30DP4mZ039qIAzddRp+tTTQPO0yYAatrA+tRi9Rbx7DAIrtYHptJrqP7lobrkw/9usnvoyNLwH5EjxXr3wMzqz5ga91TBSyym2VrbQm21uZgbWNuaC6w1ZnA4lv1BrdlKwGmpPe3eWbvOsjY/THEVN4RyKtQJK9X4UoJLCWuVMAihdWdiisGrIcFFqm/4pBFgMW9TgEcXkuRJYrbi8LEwyhKO66ov2LAeixixMCiialDQXQNiqKrUBJVhubhJWgauhWlEXlonlmD3luuokfRdQos181XGLAYsLoMsDSR5b75OqnHuhO47+7RGXVX18HkuP4RfykAkd1AsLbpDVY2PbidLAWubG1MaViXrMcYWGDrBOahr4HF2t0e/PT6fIitvs2Pqr5PujCbRNRyobDS3r1S3lpjwDI8sCxCi9UF7qT+ir4kxe7F3A3DsCqUhtejRL4TJTH7UZzwMYrSuMJ3BqzHIEYGLBWsNIBFdrEosCIr0CJiG1qE5aMsdAuK44pwwLtfoFt+I3oV0h0ABiwGrC4FLF8NYLnkNd4fvfPOjzOO3CuYe7DJ84n3agB6eYKlbW+wsnbUApa9tRTsrTlgMWQ9ljVYlgB2nrzeqyrEZi+dGQdJ9QcgopT2r6FzxAiySJTAiqjQABY3poUBy/DA0hybo842NA3ngMUd5dagLEwDWVo7WZrHhVxLh0cJA5bxAosm848G1iE9wNrdBrC4XSwCLPMIsotVRHexhFH52PuN0+ieewV9im+iRy4pdG+i+aNqsRiwGLA6G1jeG6+jx6YbtODdt6wZR+28fWjy0Z8Cpm87KYbeQ3nm1gNUwOKOCRW7WNbmDFhdfY0ePVorpHP78OEjYcSoQACbIeL+q7b3NH/+zFKIq/0UoqsQorlGgaQTMwcsDlbtAYsreG8/+oHUuYDqfOB17uc3DSnVkxa/X1H0roxyZ8s0tAqloTW08F0SuxcliftRkvoJRRZkKMfqnGvVJPNRwdUKYPoafRoaKI95Wv17aGKagIsASzO06F0jyR9TZClDB0CTKBqQtix6VzYgVQNruwpY4qgqlEVWoCyinGvXEFmMlqt3ocu7n6Nn7lX0LriOHgVNir5YivE5egCjDxCdDiQ9768XSHqKuDvaKPRxA5I+MOmL18YrWvHZ0IF8xPXJ8t1wHb033uDqsMiw8rKmTwP33V0yu+zrntB/knhOUCIEB4VC8LwFEBy8VJHFNGx18eU/ajTN6NF+XPxHwOhxgTBo3AwA21Hm9mk1fqZrTz0DiTsugbwcIUYNLOWxoBpYHK4YsIwHWK1+vxau1MXvXNF7BUojqmmfLFnMboos7eNCbWDxaBiwujuwtKIJrETdwKJ9saK3oyBqO4qi6ug4J0lkFZrIyW3kUhTKt6EkpQIdXz1KgUVrsQqauN5YRZfRo/Cy1nxCBiwGLGME1uCPrlNkeW26jp5byXF346Vx2++sfbr6mh+4P20+Z1k2LJi3DEIWL4WghUsgaOEyWLRgGSxauITtX3XlRf7pxvqNhrGj/GDsqGEwdvQQGDnCF4aPCwDnMU8D9JvpYJVcFSLMOJIHCTuaQV6htYOlDayyFsDiwoBl7MBS9sfiOr3TI98I0sKhju5kcceFJ7mdLPLgfcgRLAxYXSPGCizys0Qs34b8iHy6i+VV2IhupLO7cger8DJ6FTBgMWAZGbA+atCKZpd3UovlnddI2o00j6m/m/t0/c3l4D3fYcqyDJgbHAKLghYodq6WwrIFy2HZgqVsGPTjAKwAPz8IIMAaNQxGjRoO3uOfgB5TYgACsgZIEmvXQ/K+ExBbd4cUo6qGtUZU6QCWor6HAauLAIs7KlSO0+EK37k+Wdo1WSeQryhuJ53fSRiwunaMGVgmEdtQGJqHsrQqHLjpe3QiTUcVwCK4UgJLF5gYsBiwDA0szduE5IKG59bGO35VPx2fUfPDCz2j33IaFfk8PLEoAubPWwgLFwZD8PzFsGQeFwasLr7I8SDZwRo/cgSFlt+YQOg7fiHA9LVglrHbk5+0pxgSdv0E0bX3SZ0ExVVkrQJXDFhdDVja78vdMuSApUCWoh5LWZNlElGvaOOwnytkTj+OwszTKmgxYD3ewKJd/jXSEly00F0zpGlt8mEVtFreKlS1a4jfg/y4PciLqkd+ZD39mcJdnKlUAYt0did9sUwTKtHl/a/Rq+QmrcGizUcLrqJn/iX03nrlIQYaGw5YnT3M+HEH1qMCqaP5Q48IN1xRFcMrgeWde51c0rg/qKD5J//ym8Uzam9594r7B4wOToF5C8Jh4YKlFFjBC4Jp2HocgOU3GsaPJC/HwKCREwAcRvBs0ypNzNd9GgBJe4+Q/9skhajkWJD8IBRGKPteMWB1ZWCRkHYN6lYOGu0cQtTIIm0cSN8zfvRO2iuLIIufdRIhmwGrq8fYgWUaWoSy2HLs8dIx2qaBu0WoANbWK+id10B7ZSnDgMWAZczAok1Hc7lWI4MKmo+MrLwd6P/+CTHYDeXNXhAJ8xcsp7tY84MW0rDVxZf/qDEUVmNHjgO/0eNhaMA0APthYtu0yt6yZ8+GQMKeC+SmjyCaAxb5Iag+HmTAehyApUSWsh6La0bKdXunyApT72YJYvbSnSzIOI6w8nSH67EYsBiw2gKWVF7OzSYMKUSpvAQlaXXo8eEl+mBS3iJ0z2fAYsAyVmBdovHdyCGLfuzNDYqu7o3ouYW2G7ngV3t3+aTcC73BYbj4qSA5zA1eBvMXBcHcxUH0JRv0/BgAi2T0qHEwfPQk8B43G6DvRHPLpEp/Sc6ZdRC39zK9Sh1Vi6SDO8EVA9bjByyKLBWwFDMLQzUSwiGL7GSRuXKQchAh85MOHxMyYBkvsGhWdB6waF+s6HoOWYqLM7THXqQaWaKQfJREbUOThCp0+fvnFFj0FmEhAxYDVlcB1hX1x1eNziE7WdcuBez97bkxm86PBvuR5jPnRcCcBcHw1IL5MGfhfPqSAauLr6fnzYMnZkyHGU/OhimzF8GQJ6MBBsx1tFmxL9xk5fkCiNl9g/wAFMhrUBBerULWwwJLHzA6CjB979/5wOvq0Y01bn6hGlykCJ48BMWx9ShM3kuHRJN6LGVNFmSd4UJ6Z2Wce3RgtWyEyRqVdm5a/n0q+53RcMDSSvoJddoAlmbBO4GWElgqaCmL3ckgaEVndzo+J247CmLJ/8hV0wijKlEUWU7H5wjCC5EXVoh9XjiGvgWNdPizy9ZLqiPCjtRgdRQ4HUZIZ3/8TgfSn1uE/qjp6Of/w44IWwCLdnff0tA8vP7u1pEbzoWB1UjHlDV/g7TsNZCekQar16yCrKwMQ/OArY4ugquZs+bA5BlzwH92GHguWg8wbo2T5YpDL4vSjp+E6N13+ZE76HBnBqzuFQIsgisOWGWqm4b0hpe8HE0IspIOKgrfTyqAdYoDFnlAM2B1bWARJNOO7v8rsD5WdXZvC1jqW4UcsGiiq2n4UZUojCpHcXQZiiKKUBhSiHYr96H7xu+5Haz8KwxYDFhdHVh3/Xb8fHJq7Y2XYGy007J1H0HqM69B1socyM7OpMhiq4uvWTOnwxPTZ8Gk2cvAZ14mmC5+H2xzjnmbpB4ogajtdyBm5/1WwJJXUGA9TJsGBqyuG+UOlroZqaKVQ7gSWdVoEr0HxYkEWWQn66RiZqFiFytL/2gdBiwGLF3AEkWVoklkCQWWJLEa+751gfbE8t1GmjYyYDFgdTFgbVbHY3PD/WEVd+6Mrb2zLaDksvfoVyphSc4/IXXlC5C5KofuZLHVhRfpsPHUk9Nh+hOzIHBWOIDTbL7dir0mFs9/EchP2nME5FW0Tw0pQtU6ImTA6jYhqNLElRJYHLIqaENSgixuJ4uM1jnBIUuxk8WAZeQxcmAJIkpQFrmNAkusuE3oseUKDipuZMBiwDJ6YCmjquvSAJbXpkYcVHAbfYpvf+y3427g6NxzJmA/gh+f+SJkr30WMldmGpoIbHUYWDOmUWBNfDIcoN+TJj1WHuwnXns+DCJrPyONRUkTQE1g0SJ3BbDYEeHjH65tgzawVMjSGK1jErMLxYn7KbJ4mQpkKXezdAyL1juMmAHLoMDihkBzQ7/p4G8NbJGid37aMa1oYoufcrQ1sJSNR1XDoPciL34XHfpMp0S0PCKUb0NZJPdzhYzOMc/ahR4ffIueWxvoThYDlmGBZOzAetSi9j+6TYNm01GvDQ3ouZELed1rQwO6b7yOXgW3Phux8+ew8SVf9AWXCSbJq1+H7LXrICcnx9BEYKujwJo9YzLMePIpCHgyEsB+qoV16q5x4lVnX4DY7ZchopprzyCvp72vBOGVHK7o3EEGrO6QtnDVcidLGlGJsggOWZo7WfSBzIBl3DFqYJHbhFy7BhKCLXpM+Nez6J57BX2KmxmwGLCMGljeH17VihJWHLoa0fPDJvTaevPysPq7LwSWfjMWXKdaxK39OyRnrIW1a541NBHY6uiaPWsaTH7yKfCbkwTQf35Pq6Q6uSDtSDFE774J4fV0B0vZXFQbWNphwHo80xastJG1jft3j6hUHReS0Tqk8J0BqwvEyIFFWjWQ7zGz8FI6OgciCtHmuQPcDlYJAxYDVtcGlveHTTho662bfrV3i6ZWXo0Az3mO8mc+gNRVr0DOqmfYsOeuvuY8/RSMnhkEnsHPA4xe5WyauP1VSNhzBuT193hROzSAVYWC8HIUyssUmGLA6g5pD1bqgnduuDfZyZKFV6MsYrtWTVZLZGkDi2tUyoDVNYHF1WS1Dyxak5WkA1iJezWAtV01SJ4DVnWrHSxZRAnyQrai9cpd6LbhO7qLRftgaYQBiwHLmIHVclahz0eNODi3+d7oqjunA8ubXrGJesd5wcvFEJvzV8jMWsuAZexLKjVVRKodmQlIpOYw/aklMOjpVLAN2QTihD0+JilHyiBu912IqrwPsTWKETkcsET/C7CUx0gGSkcBZuyA6+zPr28HS6tGK7QCZeGVKJPXoDSmHiWJe1XIooODMxQPbtrGgRTBn1A0Km0vD9GoVB/QDA0YIw9v1QWtaGKLR6IPWDqGQXONR7l+WFzIAOj9CEl7uSTuRUjQ7OzOQYv8zCEhs09JLyyTSA5XMnkRCpdvRbPEGvR851sctJXcJGxE962k4J2Ldx4XdbPNDgKLAUlnBm3SnY4CSx+A9EXfx9cLpI8u604LQOlLS2B5ka9xy7X7Qwtv3h1Zfqt82r67PmPe2QPy9e/BmmdfBpGJFExMTNoNWwZdfA1gaSBLZqIC1tRZywD6TePbp+6UyHIuTuQlf/wJxOxEiKlGiKlEUujeClhy7liIAYsBq61bhrKIcjSVV1BkCZNI4ftxFKh2shTAynoYYOlHFgOWEQMr5ZgCWGpkqYG1m3up0XSUNh4lO1kKZBFg0YajUaUojSyiwJKE5qNpdCn2fuEEfcARVLnlq5HFgMWAZczA8v2ogUZV9L7pCpctTeQ24bHhe3+ZNDL/hARsB/JXPfsSSE3NQCaTtRu2DLb4CmCZK9ISWCL6+uyZiwHsxprYxFT3F2acjYCEgxcJsMgPOB65OUh+yJEhz20CS40sBqzuC6y2CuEJsiSRVWgSs0N9u1DzuFDVJ4sBiwGrfWCJoqtUvbAIskzDudmEstQ6dP2/rxmwGLC6NrA2NqD7pgZ03XQdXfOaL/of/FU+rvB4f7DuZ/Lc+lcYsLoysCQyU5g1OxzAZrylXVxtoGnOhZd4cfuuCGJ2oihqO/LCa1EUxQ15JsXtDFgMWI8SclwoiayhyOJ2spR9shQ7WZnKTu8MWAxY7QNLs+EoPSqMKkZB7Dbs89pJWnelCSzP3Gs03lu4MGAxYBkrsHw+akD3DVfRfVMjDtx0A51yG69MOP7gpaEfHQwE24GWOc+9TJ/Rrcp7NMKWER8RimTWMP7pZADH2T2tYuqjRWnHS/lxe24KY7bTob4k9HhQA1gEUkpgEcAwYDFg6UxEFd3JIlAnD05e6hHuQa2YVchhS9kz6xQDlpEBi595VjVrks6b1MAWTXr7w6D5qSdaAyvpAELyPoTkPdxLncCqQ1EUd0yonE1oHluBorB85Efkof2ze3BQ4TV6m9CjoKkFsK4+VPQNG2bA6trA6mgRe0eB5fPBNa34ftioiveH19Dzo6vovuEaum++gW5bb9z0P/LvbSPyTkaBvV/PtNVvgFhmyYBlzKvtfxgOXGDaG3zI7cHJ650tUw79RZRy7Bwvduc9+oNNXo/iyO30wUiH+0aogUWuSysBw4DVvYGl/Htu99hQXoEyeRUN+V6iD9LUIyhYQXZGGLAMnS4BrEj1rUJZTCUFlkiei+aZVei24Rs6m5AAyyP3Ghk/QuO1mXTNJgXEDFgMWMYJLJ8PrqLnB1cosjw2X0e3/Ov3Rh3899nxdQ2vQ0CMS/iLeQBm9gxYxrykMoEiIm7niuLKHKQSSwBzD7Bc8jaYpR3wMV1xogLi9t/jxe68T65Jk50rcST3A44BiwFLH7A0kaVV+B7B4YpEuZPFjyPIOsrdLNTAFQMWA1ZbwCK4UrZuoEPG5YUojcpFYfxWdPzbSXTOvcSAxYDVtYBFjgg/uIreH1xCzw2X0X1LIw4saLw/dOede8O3367wzv3MN+BvdQBWfdvGleIUii0jApap1ARMJaYUVxKJLYDlEL5lbJnEJOfTSbzkj4+RxqL0GCe6Wl3cHlndClhqTHHjUjhkaQKLwxUDVvcFlmoHK6KKi7xCga0aujPKj9uH/JQjXMf3TGXXdwYsYwIWh6z/HVg07QJrnzaw4jhkcTeYt3MzUBV1WC2BRYrcpZFbURSbjzYWnNe4AAAgAElEQVQvHkHnDd9SYLnmNqD7Fg5YZF4hAxYDVlcAlvdHl+n3LKkl9Ci7ga4VN46POvxg8uAPjknAzoNPSnla1WKRLgCmDFgGX6NG+qniP8IPRg8fAYN9R8LIUdMAHAMkDinbXWQ5F6MgZt/nELuX+z9I2v+qBgUxirmDEW2HwKolaHQ9gLtiDA20rg5As7BKrXDgqkFp5HaUxO5GUfIBRfG7oleW6oYhNzD64Qrgz7cb1pi0gwBrCVrNprHk36tV49HWw6Ah5bA6yYcQkgmyDnDYSjyIkHBQ0dV9Px3+zIsl2YmC2O0oVCBLdaMwvBSlcpISFEYWo3RFHTr98yJ65Tehe0EzuuY2UmSRJqQeWy51GFiGBoyhgaQvxg6kP7pRaEfTsg+Wr8aNQtfNDei69Rq6l9/6fNCuX6L8Cr9yhr4TTKYHJ0DQsnBYunQxLF28BJYsWgRBixfC/EULAHiGFkY3X6NGjAb/EaNhzHA/GoKsUX4BMMh/FoD9BCvrhNrJslWfvgrxB65C5E6NRn8PD6yH3eHoijE0gB43YJGYR1TRmEbWoUncToosUZpGryxFC4eHA1b7uGLA6lxg0fxPwNIIARZFlqK7e9xuBbJ2IrnNTC7cKHEljuKAJQ7jxubQyzZx5ej44jFu56r4phaw3HMvoWcuAxYDVtcAlufGBhy4pQHdSm5eHbLnt1f9Si5PAp8FllPCVsGsoGWwbNkSWBy8EIKCgmBh8AIatgzcqIHgatyw0TBu+DAa/+FDYJjfeHD2WwDQb24vq6TtscIVJ8ohdu8tMhpHc2teeXuQAevxjSGApUQW2c2SRnHIEqYcQN6KTxQd3jVH6zBgMWCpgaUsT1ACSyAvQtPsXfR40LvsR1rLQo5bXHOvoGseAxYDlnEDy6cFsFw2XEHXwuZbg7b/u3x87Y1YGBrUc0xEJjy5fDnMXzxPBavg4GAatgwMrDHD1cAaM2IYjPMfA75jZkKPwESAcWsHypJ2/RWSDnwKUTvumcTtpoWlXGpQIGc7WIYG0OMKLE1kSUgxczyHLOEKZT0WA5YxxGiAFVXTClgkgvBCFCdVo9P739IjQgYsBqyuDCxXekzYdM+j/MdPA3f99IYk+q8DPWOegSmhcli4bAksWBwMQYs4XDFgGckOFkEWOR4kx4XDR0+CfmOXAG/aa2CWuG+QMGl/FcTvvMePqbtPGkLSW4OKq9HK4nYGrMc3nQ0sMp9QM61qsuQV9HYhQZYkdieKEw+igDSqJA/rjNN6bhkyYHU5YLVM0iGtgdCacwmFsbsUwKpTAYsUuatuMstL6WxCcWwp9n3rInoX3KAjR8gRIcEVA1bHgeW7sUFnGLD+OHB5EWRtaUK3vKb7bkU37g2pvl09/fDdIbYpb0FgRAYELZND8OLlsGjRIi6LgwxNDLYIqkaNGAP+w8eA34jx4DNyKkDvCXzb2Dqp6aqLUyFp7wmI44pJxaofZFxrBgYsBqzOBhY3HJpr40CPC2N2aSOLAYsBS+Pnkom8kgKL4EoWUYqSkEKURG1D2+c+xoHvX6IPKHJcyIDFgNXVgOXzUQN6bybtRprILhZ6lN06OfrQr9PG5p+Sgo0Xf0GwGljBi7mwZdDFh2F+Y2DEyHEwavh48Bs+CYaPmglgN05iEVU9ULzqfCwk7PwC4utQHFfLbcErcGUSUYsmDFgGB1C3AJYCWWQni3z/iWN3qJClbN/AgMWApQQW16qBA5ZpeDG9UShKqMF+b15Ej9xmdMlrRJetl1iROwNWlwGWr/IlAdbmRlrs7lrY9MXYQ/+JmVh4zgVMXSRLguSwaNFSCivlLhZbhlw8gKGjR8Mwv3F092rE8GngPWw2gOMMK/O4+qn8rNN/hfjdDbw4bvdKrPohxgFLHF7VIWAZGkcMWF0BWNVqZEVWcDsU5HtQsZMlXnGM65Wls08WA9bjAixI2KOFLFKHpawJpeULkRyw1MgqQVnkNhRGlaLjiyfQLbcZnRXActt6WSew9OOKAYsB688HltemRlqL5ZLXcHXCxw9eH/LOgSlg5WO1KCiK7mBxu1dLKbbYMuTiAcyaOxsmPzENpj8xCybPWAyDpyQA9A7uZZG8P1GUdaYaYvfeFsbsRHH0dvpgk8jrVLtXNIpO7e2nfZxoDoPW9f66og9A+j6+oYHW3YFHGtHqSsvdLGVjUq4haR2K4/ehiIzWST9OH+Ck95JW48uHaEaqGX72Oa3ASn35tHunZeNWVQsNJbBOayf9lDqkm3vaMa5rvyKk8agqKmApemLRvliKYneSxL0IcaR1DNc2hms2WokCeQU3dD6ijKJcElaCsGwz2ubs5eqwSm6je+FVCiyPvKsUWZrQ6kqA0geYjsbQgOpoo0/SBV1X/uhhzS1DR908QvQeEX54ldZiEWh5bm287b/vl6rB73+cAJZDeiVnvQZpmTmQtiIdVq1eAysyswwtDLamPDEFps+cAZOnzYJRM0PBec56gMBXXa0zP/k7xB+8yIvZ/7M4ajd9mEkia1AaXkvzKMDSHQYsBqyHA5ZmjyzuhqECWQl7UJR6lCKLdgzPONUCWA/TjJQB688H1iluXE57wCJpC1jKKG8VxpLxOXUqYPEiK1AQWUaRJY2opMASLNuE5ilV6PrhZXLNnc4nVAJLiSxNXA1SxNCAYsBiwPJpASzyctCmJvTJbfx5WN2/PgusuvJ3mJbsumDV25D0zGuQkb0W0rNyKLLYMvCa+cR0mDJtFkx4Mhi8n0oD08UbwGrF8SH8xAO1ELv7Z0HM3gdKYJGdKwYs40r3Bha5NVZJj4Yk8XvQJOUI8lYcR8hQI4sBq3sDS0DGcclLURSSh6KYYuz1xgVav0KARYrcGbAYsLousK4/GFzx489jd96rG1X8zdBhL5fC4lVvQUrWeshYuRrS09MNzYvuvUibhtnTZ8DUKU9CwMwlAP2f4PfIOCAVr7w4HWL2nCIjKfjRO1EUuZPOh2sJLFKDxYDFgGUoYJHIIsrpLgWtD0zYg4I0DlncTpa+PlkMWF0aWInawIIYbiYhBZbimJAfWqwGVlQJ2r1wDAd+eBk9ChiwGLC6PLDQp+hHHFx55/TIPb9M9373iBTsh/PjVqyHzDXPQEZ2hqGJ0b0XAda8mbNh2tRZMOWpMIC+T0jtsw65Q8a5BIjb+yXIa1EQtROF8h0oktezHSwjzOMOLH1F8OZh5WgWToqaK7nebPFkfuEhWttDC6l1tnE43cbw54dBFQOWOi3+PjT+LilaCXI1ooktXvrpVsBqFToE+qAqWtgiSdjD1WFp1GKRoc9kJ0sYxfXEorMJw4tRLC9GcXIdDnznK/QpakL3fOXInCvq4c8tYKEXIN0cWIYuUn/cgKUPXN6aH/uja+j+URO5uPHl4Po78SPzzrlBvzHSyFUvQ1xGJqRlpbNZhAbfwZoxFZ6YPgfGz5ID2E+ytkreO12Qde5NiNzRwI/cQXEllNejSF7LgGWEMTSQjANYZLgvhyzaQiRuNwqTj3AF1DrbODBgPRbAilcCixvjpTwqFJKQYncykzCCAGsb8qNLsefLx9Ent4HuYjFgMWB1VWB5f3gNPT9sRveN168Orr37xrjSr58A96nWkc++CYmr1kBKBgOWwdesJyfBlNlzYfiseID+i3ubx+5IEaWdrIOIXT/w5NsZsIw83R1YZPeKSym3kxVeodrJEqYcoi0clLDSAlb2SQasbgUsLhBagBbZu3FQbgMOKiajcxq4QdCbG9Brc2tYMGAxYBk3sG6ix6Zbt4dW3amZUtWYDL7zey/OfhMSsp+FrFUrDc2Lbr54ADOengOjn1oGLvOeBxizzk0Wt+8f/MQjX/Dj9v3CAYvgSg0sVRiwjCLdHVikBovAyjyMAKuUfk+QHmx0EHnsrvui9I/v8VYcv8vLPvlfyDr1OwPWnwcsmsz2gUWT1gFgJe/TCSzasiGSa9egBBYvZCtKk6vQ/f1vaN0VAxYDVlc+IvTccAvdN974eWjZT58HVtz4hzD4Jden1+dBVPaL7Bbhn7FkMlm7EZtZw8S5ITB06bNgGloEllmfDjVJPlYHsXt/BnntA35UrQpYWqjSCCkw7kj0A8uw0QcAfekoEB93oHX06yfAUiKLe11xXBheQQrf70nid10QJO8/w8s+3gjZJ36BlScprvhZDFidkpaNW1s2HtUIRVf6SYosVcgIJEVURe9aw6AJrBS4UgKLDoBuG1jKmanke0JZi2WaUImuZDbhlqsUVh0Blr7obdSpD1F6gNPh99eTTm/UqQ84HU0HgdTZgOpIPD5sQNdNN3DgphsPvApu/Tys7Ha9f0XT0LFv7YLlz/4dslc/AxKZKUil0nbDVmcBy1RCgTVhbgTAgDl8m4zjMskzDdN5SZ+chpidCHLyA6oahZG13O5VG7hiwGLAMhZgqVOqel0aUXlLGlVXJYrf/QE/+5N8yD5xALJP34Ls079DNsEVA5YxA4tGs+noIwNL+fOL/KxSA0sWW44Oz31Md7EYsBiwuiqw3AiwttxA58036Euv4ttnhu64N8Pr7QMysHTiZ69dB1JTM52bLGx1qISdDzKZmUbUuJKZiulf/sy5IQB2Y2XWKfs8eZkXEiHhwFfkhxT54SSQV1FcMWAxYHUdYGkkvPKqOLTyTXH0ziCTzFNjIOtMCKw8ewhWnv0VVhJMnUVY9aigYsDqOsBS72BpzickLyXJNTjwn59TVDFgMWB1RWB5fHgFXcnYHJKPGtFra/NXQ3fcSxz03kEPsHeXZaxlO1h/ArAsFWkNLBMzM5g+PxLALtDGPK5+lnjlxbcgZleDIHY7bd4oCCe3shiwGLC6LLC+FIVUJIrkta7m6YcF4hXHBkDW+edg5YWDsOr8DVh5/j4D1uMCrJYNRxWF7qQWL6pSNaOQfM/JSBPS2HLs9/oZBiwGrC4LLM+PrqLnxgb03NiIbh82ovumxoax+377u8c/9s0EG3eb9DXrQSwzZ8DqvKVrB0sCQjN7CFiYAdB7Xh/TuB3p/NQTOyB6xw8EWGR4qjCC28Fqr/6KAYsBy2iApRwIrQEsqbz8tDSmdiYs3Cx1TKwCmPmOicVz3znB2kvLIPuLXZB+5l+QcwEh53y74a26oEqbiDA0aLo4sAQZp7imsIo8OrD2IcTtVWS3ohcW1w+LDoCOrlJFHFWFpmRna1k+Qng+2j9zAAfnNpH/80d3AiIySHdDA42qsWMnF4kbGlidDSgGrM6NN/06FP2wNlz7Ycz2X7YP/ufHaWDr1ztlzd9ALLVmwOrM1fbZKwcuMO8P3kteA5jyupt58uF3BKknvoLYvb/wo7cjLXCn2+sMWAxYXQ5YD2QR5T/LIkrrTUK2DOsTWwDeUe+DS8wWEMTsBtN1V/oJc77OhqwL2yHnwjXIOf9fBqwuDKx4TWBtVzccJciKqVKFIEsSWUGBxQ/NR7MV9ej2/nfokduEnlua0GtTIwMWA1aXApbPBwpgbbhGgPWLX+XdL5+oan4bRke5h6zbDGBmz4DVmUtmJuRiKuZ2riiuLEEmtQaw9AbLpRvANPXYMGn66R0Q//EvELv/AS9qB/LkNRr1C+2HAYsBy5DAUvXB0mjbIIso/0UWUf6FdVjBPwRTn3Ebsvx1mLgkB/wWrYM+sUUA4dUmFuu+6idY+8V83uoLFbzVF67zVl9AEgasLggsiqx9yIvfowIWxGoDi694SY4JhSGFKAorREHsNrR/7RS6bm5AH7KLteEqAxYDVpcCljfphUXaNZCu7huuPhhW9uMvY6p+2OGX98WIgNfLAKx6t0AVqclS12Wx9YcBS6LevaLbhg4AFiP5VjE7ZOLsb2bykk6eAfkehOjdSICl3sFiwGLAMjJgafTIaqsvljS87AdZZEWdbciWZBgwp/fkpTkwNzgRpgelwKDlr0D/uHwQxtSB5bovHPg5FxJ5qy+W8VZfvMRbfeFXNa4IttS4YsD644GlWYfVNrCOtgGsQ2pk0UajamDReixah6WcTajcyeKARWqyRJHltPGoKKIIBVHFaL52P7q8/y2tw3ImfZNIb6cN6jBgMWAZO7C8aUhfrKs4qKAZh5bfPjt2/79njfzgYxnYevBFMmuQSJW1WKa08F0ik9Kw1cE1cthwRUbSDB08BAb7joQRI2cA2E6V2Ucf8DbL/D4Fog9/DVE7NYpEazWuOHcesB53oHU8+hq16gGcPgQaAfIeBlPaqULTUC7modVoTkfmcMAi72MSXtYgi65903b5R9PBdLC1WU9fsHP0BPueXmDeazDwXWcAuEYCzN8qMlt7sbfg2a+fhFWf5UHW2e9h9fkHFFervkTeyq+Rt/Ji28hSpmWbh1bDj8/rjqFB1MlpOUy7LWCpG4+SgvdjCGlHubQ7/FkZAqz9HK6UIS1mVNmu2MlS72CR+YSiqFI6+FkYXYTChFJ0+vtZOpfQafNVWotFkEVeum8i43M6BqiOFsHre/8uD6ROBpChgeT13uVOje97DVzev4Le71/hjrnzm74eUf9L6pj8r7yh30TZ1KBEmL8oHBYuDIaFwYtgPsmiIBo2SqeDS42rUeA3dBT4j/CDYUPGgO/Q2QC2s20cog7NkaZ+9TZEHbgGUdsVE+lb9pBhwGLAMhZgVbUGlgJZBFimYWVoKq/4UhZdm2C/7AN3sPSRWju6gnUPZ3BwdAI7awew6ukN0OcJAKcwMInbDVYvXLIxee7bcMj5LBdWX/waci7+DBRXDFidD6xzCOlnNTq7K4CVfgQh7YgeYB1qA1ikDms33YmnyIqtQYjVBpZQASxRFNnFykeHFw7gwC2X0DmPu/LuTq69b25A180MWAxYxg+sQe824KD3rnDI2thI6gmvDa3++e3AbQ1zwCfYZnJoDsycuwyCgoJg7kJ15i1cYGiedP01fDi3g+U3bDiMHjIS/If5wdDBAeA8aD5AnyV97GIOZQoTz++CyL0/MmAZYxiw2ooSWGZhtWgWVq06IpQsL0OLqOrTssiyGQ4h70rB1pdv3dMJHPoOBPsevaCPgyPY2jiAuaMbQP/J0E9eBPBkntB09ZeOwme/mwyrvv4/yPnyAuR8+Rus0sYVA5aRAkszBFexe7kobhWqgVXRCli88C1omlGLbpu+R/eCZgYsBqwuByxfRbzf5+oGPbc0/Ti08t6uyVU3MmDIoj5jw1bCzOAQmDfvKZgftBDmLwyG4AVc2OrgGj5iKIwcPpQCy2/oSPAfPg4G+z0FfcYkAAxf7S6L3PeeIPHkNxC5998QuV3VQ0Z1g5ABiwHLqIFVrYosvPKBSUjZz7YxlXV2IRuGOi99DYT9hoO5fR+wdegFPXr0gD69HaBvzx5gZ2cDMgd3GBX6JgwIyweb6HoQxR+yEGV9uRBWfv0Oh6yLdyDnwu86gUWQxIBl5MCq0QBWqQawSpAfloeSpHJ0/r8vcOCmq+rGjQpgeW7Sno3HgMWAZUzA8n6fg5USWL4bG8kx4b+Hlv30TUDlrXdNo//m4RP1PExZHAHzFgTB/HkLYcHcYAh6OhiC5i6k3TLZ6sDicMUBa+RQfxg8dBL081sG/IDnQbikcoQ47shOiDvyC0TufgDR9f/P3n2ARXmsbQB+tu+y9CLYuyI2ehGUjqD0IggI0jt2umJLL/9JrLGmGHvvvSVqNN3YEFGwm5z0clKM818z3+5SVFYP8cDqN7mea5GEYoTlduad9yWCjB0NgNU8rnhg8cBqLWCpoxn2nMyQ9at+9vazxklL30D3kN5OoblQtLeGQbsOsLBsB0srM7S3NIOllQX7tVn7zgiMzoL3qDI4jn4d6JorQsJeC+X0mx7CqZdfRsXFj4TlVX/SY0IUnyUoOsOFvqzJ6cbRBioeWM0Da+LHBBNPEkyiyHrY8Of6CPM/0AR5R4mQIqshsDJ31O/KZ25qBCxZ+joiSnqPyLPXka7/d5pYv3OzEbBoDVZTYD32MOIWFsG3dBhyqwOKB9YTTb/F11nU0KI7WDZv3/zb5v07v9lt/Hq/5847TqZ5b8J1dCGiRo1FdMRohiuKrOiImNbmie4vWn9Fd65oHOzdMdA+CDD3EhmOWadUjP80BHkffoGsg4QVuPPAaoPhgdXc505Hn+inbGDA0kvZ9q3J+H1bpVGv5UFh08EnMA7Glt1gYtUB7awsYdXeHFbtKbQs2K/bWbVH/OgkhEWmICSmCENGvYxOCe8DUev0MHZfkOn0Ky/pz6j9FEVnvpNOrb6HKV81wRUPLF0Hlix5JZFlrCFmlR+QngtqGK56vVMPrL7L6ki/BuGBxQOrrQHLekk9stjHXUqHmN8kfVfdOm2767sQx6UnlDAfJAqJGIuYiETERsQhOiqO7Wjxq0VLyHatnG3d4GrrAic7d9g6BAHt/ZRGWVsHiSZ/OhF5Ry4hczdB5p77gcXGS6jDA4sHVtsEFksK/Vrcdt1k4v5X5TH/5w9pb2Of4VEws+gIC0srWLbvACsrK4ar9pYWsLS0hKVle0RGxSMqOhmRkakIiy5AUOw0QOwhhOkYU4StdDAuPVsqr6zZI6m4+JtmJ4sHVpsGliDnEBfaF0sLsJQpq4le6joiyd9KOr9+lgcWDyydBVY/hizu49Kebr3fu15tv/v7CUPe+3QgLAYqI6NTEB0Vr8JVHCJi4lQj9fjVAmC5s9AbhA52Q9HfMQzoOMJMP3t7pGDypwuRs/8mMnYyXNUDS9UDiwdWGwgPLG1HhFwndwasKv283dkGcXN6Qb+ffERILNpZdGCQsurQCe3aWcHKoh3at7Nkoa+PiIpFWPgojB6VgJiwOMSEJiE8cgI8ol8AzGOliFnpZjHjYqm49MIJaeXlb1By9m+UnCUspRRcPLCeCLDUaQIs2gvrvwVWPbI4aDFgpa9loT2xrGadYgXuFFisXQM9IuSBxQNLB4HVZ+lV0uvtuhsOe35Y4LD4owhY2JlFx2Wxv1AyXEXH88Bq+RIiwH8EggLDEB4cCXpk4jByAtA9obNB/p5i5B05iKy9P7DROJm7iShDPSLnQcDiIk/f2ihaAZTWfLS/vbYjyuaj7ePLUrZqyWadjvZGqC17e21A0gZA6dhNjfK4H5/CSi+F3iTcQV/+xHz8wQCT0fMUMLQR+geGQyCUgjV7EYogEIggFoghFgohgoCFvk4dESQQQQZACQjNAElfAYyDDRH+zkCjmVfGobJus3DGpZ9RdpaIKy+zXlkctlofMjqTBrgU0DTqg9WgH5Y6DbFFM65p0fsxIsw/Vo8sdcPRvANEkLuPIGcvEeTsZhFlq3v80VvSWxiyFJkbWB2WcMzbxLR4H/cD6+2vSd/FHAC0AYsHUNsGTktDwdKSPHlgXSXWS+7/vOnrei6v/WHwzm8PDlr0UTGsPDrnTXkF46dMxYSJRSgtm45Jk0t4YLV0BQWNREhwBIJGRGFYWBZ6hs8C3Gf1M570wWLkHb4szNz7O4WVOhyuuPYMPLB4YLVtYG1luNJL2XFXL2XbLwZjN22zyFhvax4+E7ZBifAdPgIiiYzhSSgWQSTiICVk/6BRGkJLHQhNMDhkCmAaIUHocjuDWTWFes9fPSyorL4tmlZzl8fVkwJWg0z4+H5gqdMssPZxydnbCFkUWGpk0Z0saeZ6Bixx0nJiULCF9HijmvRZcpsDAA8sHlg6DKzey2p/d9j142WfHbcWw6egX1zFYhRMfRWTiysxeUoFSsum8cBq6QoPCcfIoAgEhCTALnwSDKOXQFlwzFmQc2i/qPDof4SZe//mgcUDSzeBtVn95/yLLG3LV0Yp778Oh4xefYIL4BkaCy8f7wc8gdDWxYJHA5ZABv/gRLhETADMQ/QRudxaUXE+VfHCrRXCivPfsZE6rQ0WXUsbA5aYjs0Zu5LIU94n4vTVxGr258R68U0y+L079+GKBxYPrLYIrH4PSZ+lV/8esP67/wzZ88tB7+23XRxe3IzRJXMxruh5TCmaiokTJ7eSSp6SRX9wjBweyI4IA0LGAGZDRe0LDuvrFVeFIfvwadpYVH00yAOLB5auAkuWtu3fkvQtm0xTlmfDwKm9c1AShgaMQECA3wO+Kx4dWDTBQSEMWQNDJwFmwSLEruxtWFmVKi4/uwtlZ26i5Ku/Wh0tupQ2BCxR+kYGLGnaaiJLW0lEaWuIcdmHpMecK6wjdtMCdx5YPLDaOrCsF9Vp0nfRNdL3na+J7dbfzrgdvRvutvKsEuZOopxJz6O4fDomFxW1gkqeokV/cIQGjcSI4cEIDB4DtPNWdpp4bLB44ldTkHP4kiB7Lw8sHlitCqzH/fh6KVsaZBtRpOwggsQtV/Vy97ykFzvfB3IbI0/fSAQGhcHPjwJL8EBgNfweETZ4qSmwRgSHIig4Gl5B8XAILQRMAhWIXd7D5LnqUcLpl98SVVZ/I5x6kdCgVFX43jCqodEPGh79wMalzxiwhFO+4AY+q6IVWLTQXRVW9N4UWLRNQ/5Bgvz9XLTtYKWvVQFrNZGmrSXygt2ky2vnSf93bpH+790mfZbWEusl9XlccPHA4oHVLJAW1rYoNs28b+tF10ifhTeJzfvf1rgc+Guy+9qqweg6VJld9gryJ5dgckkxP4uwJYv+yBgR4M+OCH2CUwEjT3PTnH3ReiXnFyNr/y1Bxq5GuOKBxQNLl4DF/nxT6dfqjguG4w5mWoxd2gOGNrLhw8Ph7xfEdp+4JWgRsFiGB8M3aDRsw8YD5kECxL3X0WD6+VGC8nObMeX0NVFl9R8oO9cssJriigdW6wKL3iiktwcprGSp9HE9QdoGYvXcp2xoLm3VwAOLB5YuAatfo39/lfRdcJvYLP/3TYed/1nktfFKFHoPN8+c9gYKS6Zh3OSJPLAefzX+kTFyeADodXXn4EKgQ3Rng8zd5YqJnx0RZu79kd4Y5IHFA0t3gbWFKDK3EEX2lo+VuTv8zZIWyGHST+gVMBLDhwdhuH+AVmA1XfcdEQYHs4wYPke1SIUAACAASURBVAJBQSEYHjwKdiPTgY5hUsS/28nihUvBosrq11F+4bqosvo+YDUFlaikcVodPDyw2C6WLJUeFa4nSF5D9IsPskaN/VbQHSyuYJgHFg8sXQSW9cI7xGb5dz84bPnlSMCW22UYOKpzQtEbKCyeiaKSsidskaduNawq4VbQyDB4hqaiT+QswKmsnzJv/zJkH64VZe39XZzVGFcSFbDoDEIeWDyw2jyw0jbd1c/Z/ItBzvqt+mMWDTYPm4r+AaPgPWIk/AIC4ePj8wBQ/bfACkRIYBCC/f3hOTwSdpET0T72NWDMSjOTmedHiKaeWyWcerEWZed+53aueGBpAxaHrH8KWMeaAOtgY2Blq5CVsaMxsNLXszosCiwa+rI4fyvpPq+KWLMdLB5YPLB0E1h9KbAWfU36Lfv373brf6j12nBrmSzmxX5RM1ciq+g5lJZM5W8RalsGBkou+kYw0DfhHg0M2Ov0DI3gEzYGDqMrYJS8AqYlnzkL8w4eRM7+35Gz92/WG0YFK00YrtRDnrUDS3u2NxttgNIKpBa/vTYAakdcy4DXygDTsUavjT5+2qZfzMbt+dI8491X0SmwZ4+hcRg0xA+Orm4s9i6u/wWwBA+NuncWvV0IkREg7wm0DxMjZqml/vSvfESzr8zC1POXUfwlob2yUFFFhGXniLiUixpVwuKvNEHJly2M7gOrUfPRyZ/VRw2shhl/UhPBuJNEUPARl8LjrPEo8o8S5FNkqaDF+mFxPbGEOfvY8GdhFh3+vJ2IsrYyaEnSNxFF2jqil7aGiJNXEFHGatLp5U/IwHeuMURxwFJdh196rVH+adD846DScSC1vIj8WrPR9v61fX5PGlD9Fl5tNtpqsPouukXbjvzd/507vzut/vqg56Y7rt5vHkB65RyUV8yCQqGEQqF4aJ75xQHLQIWrBsAyVDBg+UWkAFa+oo5lJ/T1KqvCkXfgK+TsJixZO3lg8cDSWWDJ0rZ8YzJ+3wb9UXMzoT+g/WDX4XB0GQpHZ1fYuzjDztnxHwUWlwZtHERGcIsvQ4+xc4GE95T6s855SmdVL0Pp6WpBZfVvtOidB9b/EljHVcBqgKwGTUdZ49GsnY2QxcaCZWzRAEuSsoKI0t4nxmX7SO95FxhSeGDxwNJdYN1goQ10B75z64zrzl8iB885og+jniIeWI+wuJ0roybAUsLAUAaloRJBofGAuau+Yc4We2npF8XI212D3J2a7XIeWDywdBhYV00mHHxeHvUvT0h6GNk7ecHReQicnZ3h6OLIwq0nBCyBBBGjk+E9ZjLQPliI0e+Ymr58xVX0fG0ppl08J5p6gQFLUnaepSm0uCNCHlitCyzuNqEibQMDFteu4X0iyl1Hur72GQ8sHlg6DKw6NpGAhv5erZdcrXHc8VOx/cLjdmjXT1k6dRbkejywmlnCxkeDDY4H6Q6W0sAIgaFJgJm7hVH2xljl1M+XIW/nLUHONtWTy47GuOKBxQNLt4B1zmDcwVSjxIVdYdRf5uDooQGWs7M9y5MEFj0ujIuOQFRCKtySp6F75iIg9m2RYmaVk6iyai7KL3wlLDv388OAxd0i5IHVFoAlS9/AdrEU6WuIJHUVQeoK0nH2CTJgCQ8sHli6CSwbhqwrDFr099p3cd0t9/1/LO33r0OxMOlnXjT1JcgVBjywHry4YvbGsFLhShWpoSWGhOYDVsFdDHK3TBVN+vAY8nb+qAaWKHMnDyweWG0KWI/yMfUzd7CmpIqMbaeMJh72MUxYIIeBjdDZzRf2zhRZznBxtmV5ksCiiY2OwaiERAQnpME9uQyd0xcBkUsNRZXnBwuevz5OOPXiZ+Ly84SG7mbRNG7TwAOr6QDo+kHQnxPBxE8aRSuwCj5Q5QiXZoG1VTP8mdZhUWTRAdAUWMLUFUR/0g4yeBk7WmG7ABRUDbFFwwOLB1ZLgGW94ErzmV/XbGwW1DZK/4V1jfPWFc1xYe8ldT967Pvjw0HzT06FmWuXwrI3IFWY8MBqFlgNYWWoaFCTZQShUXcMGPU84D3bxqBw79vSiUevIXfn78jZzp5k+CNCHli6BixlOv3/uuWuJHnjz4aZWzabZKwbIPKegt5DojDYfggcXd1VwLL/nwArJiYG8fHxGBUXi5EJGRgUV4ZOGUuAwn2QPndpoHj6xVeEFec/Flac/15Qfu6eoLxJ81EeWK0OLGHmBg2yJBkbGLAkae8Tad460uPNs5rdqqa44oHFA6vNA2sh93nQvyD0WlL3u+O2H68GbPvmbbhm9R8z611A34IHVnNLAytDGRf1jUKlBWBsB9PRy6DIPeqmGP/hYVH+IXZ7ENm7CbJ3EmTywOKB1baBVf/nUA8sWcrmX/TStn5umrryJThm9uwwbAzsXQPh6uwGJxc3OLm6wMnVieVJAytqFAes2NjRiI4bg6DYVDgnl8EsYzGQvFqpP/OCtXDahUzhtAvHhdMu/I6Kc4Rl6nkirDhPBKWnG4UH1v8WWIKsDQxYmp2sDG4XS5a2giBtBTGd/gH74UR3sfosoq0aeGDxwNIdYNloarGukN5Lrvw9eON3v7ts+f6I0/sX3Ye9vg0w7tgEVbQmq74uiz7nPdOrIa4MDRQw1KfAMoFS2R4wcRFZ5O42EE36Mgo5h88iYw9B1l5VdvDA4oGlc8CiR4Py9K3f6OfuXWOUsCwN+k7tezkEwdFpGJztHeDiQnFVnyd5i5D+uiGwuMRixJgsOGS9APOMt2BWehR60870Fk29MANTq46iouprVJy7y1o48MBqFlgskx4OLJbCRwUWhyxkcbenhSpkCbI2sXC1WFzLBg5YXLG7fNJO0vWNc6wHVo+FNQ36YvHA4oHVtoFlozoa5GYTXmHIsn7vFhm44duz7kf+jHF9+5QhzPqIJEojhiqlnAfWfcvVxYGLswuGOLnA2d4OAwcOhqOzL2DpoW+Rt91BXvRFGbIPXhZk728ALO5JpimwpOk7WTgAtRxQTzragdW201LAac8WnY4sbRN7VM8epAiTZ+6sM57y4Sz9+KUeMHA1lMg7QyYzhp6ePvT09DRPDvSGzOMC6x9ZQjEgNgTkvdArfyWQuFYun17dXfLC7URBZc0+4dSLPwjLq4m4vErVfPT0Q/Og8TpP06gdYfGXXLNRVR4ErEaZ+HF9aNF74UeqqIY/F36gigpYrNCd64klzDuo6Yel7uzeuNhdDawNbHQOPSqU5W8kXV4+Rfq9XUv6vnuTHrMwZHHQqtUOBG2gWnyt2TxpQOk6kLSnrpXT/OenrYi93/y6ZtMUXE3fvulO1oD3bpP+q76+7Ljrt9Jhq6sd0cld3z86HVExozEqIgKREZEIj4zWhAeWsxOGODnBw9GNxdXBHs5OQzDQdSRgPrSdee62eNmkT95Gzv7bHLDUyOKB1RbCA0sbsLY0AhY9IpSkbTurKDww1iT57S7Qd5TJZR0ZsBRKFbD0ZJrt7lYBlnqJjDEs8zVYF6yF4ZTjMHi+rotkRk2xoLJmt7C8+oa4rPpPHlhPEFg0DZuO5nPAYtEAaye77CNOV0+u2MSFjs5JWcNqsdrPOEz6Lr9Cer19jfRaco30WcJ1eOfmFPLA4oHVtoE1sAGyWC3hOzdvDdl7d/nQ1VfiMSDCYmhsPsJHJSAmIkQDrMgILs80sGiZO921GupQH1c7O9g5DkN3x2igU2RXw+xd00XjT36EnP0/8cBqe+GB9bCoj1hp6l/P/twzd56Q5+3yMh+7VAZ9W6FcZgmZ3PABwFK0LrAgReyYAozMfRk249cCSetlxs9d6SKorInCtEubhVMv3VbfLHzQDcNHSWsD6WkHljj5XWI0eTvpvaSG7WD1pUcuPLB4YOkQsPo33MVacpX0WX7tJ7edf5zw2XS7ErYxXR3jchCWkIDQkOGIiopAdGQURkXEsIiFz/AoHfpbp7tWQx1oXNjL7i6eGOAaBouh4wC36f3l2fvfE447cQM5+//gYMUBS/3E0rRNAw8sHlhtI00/f/b/665w7MafTfN3brDMXTeg6+iXAGUvyGSmkMn1IddTFWq2EWDR78+0xCQkpI6HT+6r6Jn7DtqVfwS9yipL0bSafEy7tFFQdqFWWHrhd2HpBUIjKHk8ZLU2kJ5mYMnHriH6qauIImcd6fTGafqDiQGLdsXmgcUDSxeAZfNWY2DRHazey67+MWj999e9tn7zrjL1lQED0srhOyoJkZFhCA8JRURwKKJHhiIqOJQH1hAnt/rjQaehGGTvDyvHeAj8X4ckdd8QUd6xw8L8Y38gZ/+9RsDK3M0Dqw2EB5aWpG1SHQ/uILLUHT8bTdj3iXHGey/AJqaHS2QBoLBiu1cyhZ4GWHK5HHKFlD3ev/6XO1hASnIyksamIzIpF74Zs9Bv3CogYrlEMetyR8kLt0di2qUVKDp3RVhe/TeKzhFB2UUiKLtwf1TtHZ4GVP2TwGI3CWnUw5+bAktV7C4sOMSiBpYwdw8XupOfseOBwFKkrCX6Y1cSRfoq0v6FU6QXu0V4nd/B4oGlU8CyaRAKrL7Lrt2zfu/WH3br7xz12n7b3SD1BbiMykFYeByiQ6MRGxKOmNBQRIeFcrNXn+VFr6a7OrkzaLk4eWKQUzBg7CkySt9hqFdyPgb5J88g5wPVseBuTZE7D6y2ER5YzUcvlQOWImUXBdbXxpMPrJTHz0mB0WArn5BECOUGkMgUkCnkLAxXamAppA8FFtdF7snPkk8eOwZJyYlIHpOA2LRxcE97jh0XGhV9BMMXrpuKptWkiCtr38Pkc9UovvCroOySClnq8MB60sCi/QDpTEIJ+57c0ghYRimriDJlJTEu2k+6vnGBwxUPLB5YOgIsa3aDUHU8uKiO/Zn0XXaN1RP2WXHjnMvun2MH/uuQEfT7isLCEhETwgGL4ioyPPTZrsGiPyscXbnePxRaFFh2jsGAmZeBae4OZ0nx6QoUnLiM7KM8sNpoeGBpAVaK6ngwdRdtH1LXruLDGcox89ygZ23gOyIGYjnFlZRFIpc8BFiCVgNWUspoxCeNYshKSctix4UBGc9j4KTNQOhysXJ6jZVs9i1fVFxZIK68egZll/9C2SWijhpX9cBSt3JofRw9DcCCFmAZp65mu1jSzI2k0/OfM1z1XMYBi79FyANLV4BlrQr9M1HVYZGe79Rdcdn981THBcedYdDPIDoyCdGhkSpcBSM8IhTP9hIA9m5uDFms/4+zN2xdIgHzQEujvF1jpKWn30PeB7eRdbAJsOprDx4IrIxHxRUPLB5YTzoUV/R4cBcRp+84a1h0OKlD/oqOUPaTBoSO5oClJ26zwBozNg6JybFISUlGWkoqctMyEJ8yAX55c2CTtwrmOTsgzf/QUF52KUZYcXU+yi+fQfnln1B2+R5DVvkF1pj0wcA6+2wDi0bdcFSFLBQcu79VAwVWPocsdT8sNbIaAqvhMaE0dSNDlkHaeqJMWU1EY94nVtM+ZLDquUy9e9W48SgPLB5YugCsfou5NiO93r5223H7L+/Zzz0xBuZ27SIikhEZFsl2riiuwiJ5YMF/RCCGB49EaHgIfEdGwSVkAtAhtptBwZFZkuLTp5Bz+Gdk7yWsezuFFd25yuB2rzhgNc6DgfXfA4i+r+bCA6v5aH/75oHS0kar2huxPrnQrz1Jxnb2dSlP203kGXuPGZcd92w/Ya0MJrYCrxGjAIEYEAo4KQkaNAoVgoVbwgaYoi8LIaJdFP4HwGq6uI8nZS0cIO4Cm6ApgFWiCKN2Wiinf+0hm33nZVRe+0gw7dqfqLhCUHGRoOICgxbbzVIXtzNwValG7px+eIq0pJWBdV9z1eIvNHkguJoOgx5Pd7Hqd7I0xe7jPuRCoaVqPkqRpe6JxfXF2k8E9LnxvuHPW4g4bSPricW+FlPWE9nYFcRg3FbShzYbXX6N9HqrhjVvpNBSh+1oqdJ/MRetANECIG0Ae9JAaimgtL19awOnpdEKJC3R1kjUeu6V5qOlUemDPh57efF10nfZjZ+cdvzn5IA5J2fBwrFr3pQZmDCxCOPHj0dJSQkmTpz4P352bIMraORIBIeFIigkFMMi09E3ajbg+fxA06JP30f+8VvIPfgncnZrgKVuy/BQYGng88/sUPHA4oH134a+f73cPUSUtvWuNGX7jwbZe9Z2KN7fX2/UCxgUkQvPoAiOSc3WrQvbFLAaLymGDouEfcAEGAUugDB2hx7SDgaZzK57STL9+qeoqPsOU2vuMWQ1ABZDFQWWZq7h0wkslpYCi+5osaigRYHVAFnIUe/sq5CVsYVFlE6BpZoUkbKRyFPeJ/LsVaTL619xxe6LrhDrxbSzey3pvYwHFg8s3QJW/0XXSb+lN/5w2fXXzWEbbr0P99QBceVvoqD8eUyaXIJJk6YwZD3zKyI0DCOCwxEYlgj7qClQxr8Dw8mfeIjyPvhAmH/kD2TvvdcIWCpU8cBqG+GB9fDopW0lioxtRJqx9SdJxvZThpkbZsFzUvfeEVPgETUWPiODuW2qhjtYqp0r9U5WWwYW/djDffzg7xMFZ89cQOEnhHGsqTB6pYPZrGulmHZjD6bV/oap1apjQgqr01w0A6ObwRUPrEcDVvYDgJW2WQMsdpM1bRURpnKzCXstvEIGvnOD9F3CA4sHlk4D697AtT/84bz1xw/c1lwZZj97LeKKXkXh5KmYPLkEE8aNxzO96BN0SGAQQoKj4BeWCrTzErWbdNxEXHohDlkHz8kKD3FPHtn3A0uNLB5YPLDaKrDUswcNc3ffUeTvfs9g7PIxaDfU0i0sDX4Ro9jxOPsuUANLqHvACvLygJ+7BwI8QuA+NBG9PbIAszApwt91s3j+aqlkRu0JTLv8DaZW/U0HRKthpTkq5IH1jwEL2duJIHObBlhsdA77PttEFOlr2GxCvSl72WzCfsvqWPNRiiseWDywdBFY/ZfcIH3fvkls1n573nbnT6Odln9qCtNBouwJ01FUUoFJkybhmVsNi3PpD4iwwECEhkTCJywZ6Bxg2L74pJu05EIlcg7WSvLrG+rRiLJ3E2nmbtoJmz3S8MDigdWawLr/fTb+/UnGbiHCpE21JuMOTDUfu9QZxoMMhgWGI2BkEAKDAlS4UgFLdD+w1IOZaT8XGu5lEcQQQNwGgOXn5Qk/L294evhgmHcQ3PxDafNUAQy8DBEyb6DRrKpxmH1jM6bX/YzKOoLyiwSlj3A0+KwAa8KnRDie5mOW+2uwuF8LCj9kaRZYtOCdAWtbg9mE9GtyE1GkrWOzCUW5G0inVz8n/d6mN7HqHg6sRwTGkwYMD6xnG1jWWorg+y68TnovvV47eOu/K4esOuOGTu6GuaWvoHBKMSYVPYM1WE2BFTLcD8GhkfAIT6XtGSwtJ30wVjLlq1XIPnxHnLv/AcDayQOrDYUHVvPAkqZsJeLUrV/p5+9LME9a0h4GvaUBwWHwG+73dADL0xe+Xr4YNmwYvHy8MdTHA24BI2DtPQYw9ZcgfL6d8Uu1hcIZ1w+j8tptVNTcRRkF1iMiiwfWYwNLvYulRlZDYCF9DTGdfoT0WnyZ9H7nKg8sHlg6Dax+C67T6QR3Bm3690rPdTVj0XekZVrJ/yF/chkmTZmMZ2A1vkwubJLgkX4ICIuCW2Qh0Cmim/n4g89LJ376KbKO/izKOshuyfDAarvhgdU8sNifc8buDyS5+4caJC2TwshG4DMiHL4jRsDTzwcQinQUWNxRpZ+nP4unhxe8vb3hPnQohvkFwMM3HP39xgLmfvqImGtt/OLVVMy+sQLTa75jRe/sBuH9twgpWBha1DVaPLC0Ayun/jmyHlhcuF0sCqwNRJK6hiBlBZFP2km6L6ohvd+7yVo29GZtGxq3auCBxQNLF4Blw80n/Nl23fef+q2/9Tz6RHYbU/Qmxhc/h0kTi1v9GlCrAouu0PAIuIckYlD8bMCpaKDRuCOrJBNO3UHWwT8FPLDafHhgNQusu4qMnd8bZu9YZZC2tl/70a9jcGAqAkZGwS9wJAJHBDUGlvDRgEVfz37dqk2KuU/Y14sDlreHF9vJortYw7x84OMTABevEPilVVJkiRC+sLfRzOpUaeXFXZhafRPl1X+hrLrBThYHLR5Yxx+YRwZWxo7GwFL1xqLAosOfBSkriLhgM+k65zzpvoTuXvHA4oGlu8Cypv2xllz903bND3eGrvlmtSzmxUERlSuQPvk5lJVOf/qAVQ8o7h9DfaMGMVBFyaI0MEFgRCrsI0vRbszb0Ms54CUff+qYuPDEn2z2YIPjwYcBSxuAWjtPGnjaACPRkpZ+fq0PTG2IaunbP+77a5SfDHJ2nTAd+/4M9Inv2s83Dc5DQzDUzRtDhwyFh5sHdH+pv9Pvfz1t40B3shyCMgFDLwW8X+xhXHl+lGBG7VvC6bXfoOQC4ZBVRVDK7WYJSr9g0dw0ZM08Hx6tAGtloDVsQtq0L5Zg8ufcwOeGGX+yQU7cD6wmw5+Rt68eWbQnVuaORshSA0svdQNRJK8h4uQVRJK1nljO/oj0XUz7YLVtYGl7+5ZG14H0pAH1uMDqM+9Ko/Rr2lhUG7i0pOH76rOA9nO7SXotvnWv7/Lbf9quvHPca8u33ubZbwqSp/0fyqfOgEKhZPNdH5anG1j6ZggMzwGsgsSdJx811ys5myga//EF5B8lyNtLkLeTNEQWDyweWDoGrNvGhQfflkXNjYeRYzsXzwi4D/HFUFcPeLi4w83FFU/zUtdo+fhFwCU0DzD1FmDknI4dXrk6SjGzdrN4xtVrKL/0hxpY3M1CFbDYkeGZZnH19APr5KMBK5cDFkvmDg5ZGmDtYN/ndCYmBZZ87BoiTVtLjKbsI93/dY4HFg8snQZW97dukO6LbpNeS26Q3m/frHLY+esYh7dOWEC/s7h0WiXkeoqnFVhc7sdVPbIM9M0QFpkNGLsbWY7b6yEtPT0LhcfrkHOYIHe/6omDBxYPLN0DFv29SdK2XTGYeLRMFDXHAfLe+k4ew+Hi5gk3N3e4u7mwPM1L3ScrwDcIHn7BGDQiDTD2lSJoTifLl28EC6ZffV1QWXOd9shq2LpBHVHJGSIq+oqFB1YzwMrjRufQMGCxnlhcGxu2g6U6ipcnb2A7WYKkVUSQtYl0eOFTVtjOFbnzwOKBpVvAsp5fR3ouvEZ6LrxB+iy8SXovvlbnsPPXmfaLj7nDpIvhhJKSZwFYBg+NUt8CwyNyaI2GlVnB3jSD6VVrUXD0a+TS2gIabhTEg4Alp3MHeWDxwGrDwBJm7DitN+XYaGXq25bQ7ytxcveD8xBPuLi5w83NBW5DnPA0r4ZtHIYPD4KbXzj6BWbBKGgaMOItM4NpVSNkM6pXiSqralFx7nfWvqH0HBGUnCMiFh5Yjw+sXRpgsTQYAk17sumlbyYYs5IgfR0xm3ZMBaz6HSz1zDc1EHhg8cBqy8Dqs+Aal/k3SJ+3rn7tuvO3Nf3fOJQKsz6W40voDpby2QKWsdJIE7lBRwyJLgUso7pbTDjykmjiqS+Rf+gXhqtsWuC+n4iy9jJY0YizuB5YCjrbLYPOduOBxQOrdYGl/v+o+TOhszDVydt3VL/yE3fTcWslMLMV2Lr6wsXVmwHL2d0JLu4OeNqXr7cnggKGI8B/BHwDwuEaEI1BIfQvVcPF8HvV0mDaWR/BjMuzUHHpMkrPE5ScZ8BSR9QAW2pUCYpOa6LrwBJM/KRR7gNXU2Cphz8XHGJB/n4WNpdQjSzN6By6i7WdSDK30mkCqks/m4kkZR0RjF1JlBN2kz4Lr5A+y26Qnm/V0evuxFoV9Q/ohw3b5YHVNoD1vwaUtvwvgdWPZt41FlaPtbDuF9etv3wx+M0TL8HEqfv4stcg1TN62oHF1Vs9CFhCw54YkPAa4PfqINMJx9bKJn78b+Qe+ovbuaK4qgcWxZW6ySgPLB5YbRxYd6XpO7/Vy9210njKHmuEzkDnobFwcPWDyxCfBsB6unew6PLz8UFQQBAC/IPhFxAML79AOPuFwSYwA5Zh0wGfl5QG0897yp67tgwVl6tRVvUbt5OlqsvigfWYwDpAkNVwPuFWIsraqkEW28lKW09EKauJOGcD6fjaGdJ9UR09XmHA6suaNza5pcUDiwdWGwVW/7mNgPWX47rv/u2/9sZaeBcMTp6xHNC3eFaApWwMLD0TwLg/TMa8A4NJH3spx588Lis49qcge/89eixIYSVusnvVFFj8ESEPrDYKrB/lGbuPmWVtqoTHhK5W/pkYMCwYw/wC4eLuBRd3D7i5D8EQ96e3yF190cXPKxBB/iEMWHQXy9snAD4BQXAPDMOAwGTAxFOIkLmmps/Vuopm3ShFRfU5TSNSzXHhmfuAJZyiAgsPrEZhwMrZr2ndoAYWQ1bGdk1nd2nKKoKUlcRo+gkGrP7v3GkELHV4YPHAasvA6jfvGrGez6XPgrp7jut++NNt0zfHPVZd9BaGjhfCuGMTVNEjw/pjQ90HloGCiwZYHLIM9SwAEzuxRcFOC3n5uTHIOHRBmnWI27FiuOJQpcZVQ2DxRe48sNoKsNRp2HNNmr7zljRz77J2mRtiYTK0Xb9h0XAY6g93T4qrYQxYQ4YMgYfbEDw7wBqBAP9A+PsNh7+/P4Z6DYV7YAj8Myphn78c8J0jUlRUOYkrL8/F1OqvUFb1M0UWOyosfTCwOGTpLrBYJj0usOhMwiNEmM8hS1OLpUo9sLj6VTYAmgKLHhWy5wy6i7WJyFLXEmHKaqIo2k86qW8TLr5G61h4YPHA0kFg1VFgEesl14nD+u8uuGz/Lslt8TFLmPYR02NCdS0WfeRCX9ZBYDVdTo4D4eQwGE72DiyOtoPhYOuAQYM8AANbI8O01Z4GZV/MFucerpPnqoDVAFUNcUUjztrJov61+qjwoVEXxT8kWpHUsKbmSeQpB2JrA/PxAfXoQKONVPVSaGifoU1c0rbSr6vL4tyDxfLR1fqr3wAAIABJREFU79pCYaeEtD0kCkP2DS5T6LHIFVKWp33Vd8l6QMM/gRixaQXwSZ4G64y3AZ85hsLSC4Mx4/o4lFd/Jpx6qX4nS3WzUI0sUdGXLFqB1bTxZ9M8YWA1akLapBEpA9ekTxpn4sf1mfAxEYw/0Siaoc8qaGl2tPKPcA1IVbhiyaLA2nlfTywGrPQNRJKxjoiy15MOz3/ERuf0Wn6D9Fp0tR5Zb9VqBdaTB0prp6XAqdWSJwuk+0DymHlcUDWNdRMg9Z1zudk8KrRsVFEfEWo+10XXSP/lt+tct/z2nNfbF4ahm5eRZ8gYBIwIwYiQEQgMC0FAeBgCw8IwIjQMaNVmzf/AYrhqACxnR1s4OLqiv9NIoJ2XlUH66kzF5OPrJTkHv5ZlH3wkYImyKbJ4YPHAajvA0k/ZRPTHbiGSxE1EmrTnS2nK8VGG0evNYTBULFV0hlxmCIVUBrlcDplC/gwBq/leyomJSQhPyMWwlOfQP+99KAoPwPCF6wMls+pewdSaj1FW9T3Kzt1THxfSIngUnyXC4i9Z8EwDqz7C/A8I8o5qbl/TS0LqWizaeLQhsOjoHAosWTo3n9C0dB/pPq+KAavHouuk16LrHLJ4YPHA0gFg9afIUu1m9V90k1gvvvm107pf1/u9fz0DA2KshkRmsXF8oREjERD+tAFLDSt7Ozg52MHe3hb9nYais3M00DWqh0H25lfF446cEWcf+FWc2bionQdW64cHVvPvXz0yhyFr7A4iid1J9EYdOyQd/ombwO59CWQBAqAjZBIjKOUKDbBkMhnLs7wovOKiYpA4JgWhozPgkVSBvnkrgODFSpNXbltj9q1MlFcfR1kV18KBNSStISir0dRm8cBqEjWw1I9Zu+tvE6pqsBoCS5SyksjzNpKecy4Qm7dvNwJWn0U8sHhg6Qiw5nEZsOgOsV58+1fHtb98Fbj+61cwOKa7W0IBfMLDMTzED0ERwQgKD0VoaDjCQ8Kh88vJ3gnOKmA5ONrB1tEJPV2CACMPATym2RoU7t2A/IPfibMP3BVl7H0EYDUpeueBxQOrFYFF/xsNssbu+ksv6YNvFKEfvoceq/oMDNgFSNwglLaHTGrAdrAoqiRyCWQyLs86sJLjEzEmLg7x8XEITkiDW/JM9CtYCf0JRyCbdqk3yi/NQFnNUZRVfY3S6rsUVyi7wm4Y8sBqGbAUaeuIPGUVkWSsId1eOU1vYTFccch6MLCapvUBxAOLB9Y1DbAGL/036bfo9l37lT9+67X26/VGSS/bwtJO4BmTgNDoMARHhSMkMhwRoWGIDA3T7UmF9JN3tuOARXevKK562XrAyn0MEPCCWJ5/0FdUePgj5B/8S5S1/96Dd7C424TSTC71wOJ+zQOLB1br7mBxu1j0v5Wk7fpBnHT8qGHU4QrI87q4+b8MyDtDqOBg1QhYchHLs7zo80NibBwSY0chITEGo8YkICo1F0MTy2CTswIYsUguqrjUHTNvJwoqr+xD+cUfUMrNLlQXv+s6sASTP22Uhthihe9NgNW42L1B6HgxmtxD9dEUutcDS5y2mYjTNrJWDbTQXTF2FVGkryGWU4+xH5g8sHQLWNoA1FJgaQNUawOrnwpW6tgsvEWBda//8q//cnj/zkdD19X5t8t+XeIcm4OQyHiEREQjNDwMYeEhLHgqgGXnxI4JbR3dMMAtCDDzkJqP29NeVvbVWBQeqULeAdbz6mHA4iDFA4sHVtsDFksqnfe2g0hSDtwSJZ1abBi1LxqKWAtv/8kQyE0g1BM9AFgClmd9xdPdqzgOWPEJ0UgYHYfIhGz4pL2IXhnvwLDoEyhfvNNFPON6saDyym6UX7yB0nN/qgvfeWC1DFj6Y1cTZcpqYjhuL+n28jmtwKJ1WQ3T+gDigcUD65om1vNvEOu3bpF+S24R63duXnTe+n2q04LjHdDOVjoiLAHBoZEIDgvFyNCRLE/HEaGdE1ztHOBk54YB9n5Au2HGJvlbvKVln72AgsNX6RMBD6y2GR5YD3/ftM0FHaYrTttDZCkHiCz52GXRmC8mG0btGwhFmJ5vQCEEcjPVDpYCCqmCHQtKFNzu1bO+g0VXbHw04kZHIykxnh0X0iQmpCIyIRc+GS+ga+F6IGGzjCILM29HoeLyZpRfui0ou0BoGGIeBCoeWKxlA+spyJ4v6c3rnY2ApUhZS4xT1xK9MauJNHUjaT/9Uwas7ot5YPHA0l1g9Zl/g/RddIP0XXbjquv2n19wX/KxF4xtjANDYllh+4iwkZo8BUXudPeKA5aDvTv62gUBpkPbKzPXZQuLP9qE/APfqIGl7oH1qEeE3Ot5YPHAai1g7SDC9F1EmLaPSFKOEFnSyS9FiWeijKL2mUE5XOQ7PBNCmQkkMgVkUiVDViNgPeM1WGpg0STGJyBp9BhW9J4wKhZjx4xFaFIBPPLfZMjSn3IKoopLlph6JR8Vlzei/GKtsPTC7/RGIYroTpZqN6uEookHFkveAU3DUTWyRAxYHLJkqeuJSeoGopewkkhT1hGz0qOsuL3H4qs8sHhg6RywrOfXA6vXwmu0r9s3Ttt/2jjojaNZaGffPiB0NEaERtQDKzRE94EVEhwGf58ABPkFwi8gBoP8MgGr0B76mVv+TzLlo/PIO/AbexJQdW9Xd3BXo6ppsfvDit8fFq3A0gIgSUbL8sSB9pQDr60CsP5ocBcRp+0jgpTDRDD2o0Py5Auu8qDNYiiHCYZ5xwCQNt8Lil+a1bBBMVsCKQJGZcA9aTq6p78LRK6QCCvOdxQ9d3OksLxmhaCk6gqKqv9GUTVB0TmC4gbAoi8XP0qj0S+1pI0Vuasaj2pScEwVNbQOExQc5EKbj6qOCdU7WQ1bNtC/QBinbSIGSWuIPHkFMSjYQnrNrWINR7stuMyK3pt2dm+algKl5W/funniRepPuIhda5F7CxuDWrcw2kFGP0cKQS5cR3c6NucanVDwq8O2H8/1n3P0dZg7dE/KqUBmzgTk5hcgLSMT6ZkZ0Pnl5+eH4cOD4OM7As6BCYDhMAHcKmyNxh/aJMw/8oMg98DdhsB60I4VDyweWG0VWLLUXbT26k9BytGvxUnH34Xflj4WQcsw2D8H7sMCGKzoQSAHLH497ho1Kg4hcZnwSHoO3VLehjj3IExe/toURVUpguKa91BUUy0orvkVxbQ/1hmCEoomFa6eaWCpxuc06OrOkrFDgyx6o5D2bzNIWUcUKe8RRdYa0uWlz0iP+ZfY8GceWDywdBFY1ipkdV9Ud3fw1u9+8Fh/ZROGptnByEYwtqASWdmTMK5wEnKy86Dza7h/AHz8AjF0RBSsQ/MB79lio0kn/JSTT55E3uG7gtwD93hg8cDSZWDJUg58L0766LBR/OEydB7Xua/XFLgGjMIwby9IBUIWsVAI4QPCr+bX6NgYxMYmICI2B/5pr6Bb5kZg5Goxxp21klXe9BWWXVmAkuozgpKqv+hxoWDKmcbd3ZuChwdWI2DR6QMGaeuJMmUlEaWsIGYVR0iPudXEZtlNHlg8sHQaWD3fqrtns/bbvxw2//uU29qaAARPloblv4LcwhnIyR6H7MxM6PSiPz5GBPjDxy8AHoHRQCcfqVnB/o7SojOpgsIPLwrz6OysfVydAA8sHlg6Cixp8sGb4jGnFpqN3h8Jg3BzV99MDPMNho+vF9u94naw+PXfrNiYKFb4Hh85GiExeXAa8xq6pa6CYfoeCLJPGEqLL8YIy67MF5RUn0FR1U/CovP3KLLqa7J4YD0MWOKMLUSRRkc8rSN6aWtYV3eDybtJ11dPs1osuovVdDYhDyweWLoCrF4Lr5EeS26Q3ivuVDvu/TV94IITnWDmIk3Pn4ms7AnIzc2Fzg97HjncD0EBQfDxiwJMPUwssvf4ySd99bIw9+g1+bgjrQ4sbbcQtb1/rR9f2/vngaWTwGJJ20n0UvdSYNUosk5PlEdssYEyUM99WAr7evfzDYRIc0TIr/9mjR41GomjxmB0eDziosZiZHQafBNLYJ/wJtCtUITkIxbyym88xBU3XkZx9Ucoqf6TNiFVTK9jI3W0AuiJF8G3rMhdOOFko9xf9E4HQTccBn2EoPAQQeEBIiw4wN0kzD1AhDn7uGTtrG/bkLlV03CURpaxhkizN5COs0+SnguukN6Lb2gFlrYi7rYOrNYG0uMOU/6ni9jbOqD6vFnTbPrOqW0UNbZ6z68jveddIz3mXSe9Ft+6NnjLT6/YL/vCD908TcYUVCA5IxfZeToOLPqDJdDHEwG+w+E3IhkwHtbBOHVbnnLy6a2ygg/+Lc7mvul5YPHA0kVg6aXuJHrJ++5JE498Lkr8OFIWstkYUh+Rt086hg0Lh6/ncB5YLVpCxMeOQVxMPOIjEpAYPRoJo2IQGZOAkXFFcIp/DV3SNgPBq/WEqR8EGRZffEkx8+qnKL/0HSqq74mmXuSBpQVYkgxuZI464vTVxLT0AOk+5xIPLB5YOgksazWy5l0jvd68RvosvP3vget/3OK64kIeevp2iB9fidTcCcjOzYcOrMa3o5oCa6SfD/yDQuEQlAn0iO2pyNj2hmzSJ1WKgiO/USDxwOKBpbvA2k1ko/f8pRd3dJ8i+nMXocdKMaQBgmGeyfDxicQwd28NsNjS9SvBrbAHHhc3BrFRoxmy6GNsdAxGxSYgPCYZI+PyEZhUCciHCmEcb4qgdxwMplaXCp6/vgdTL/4mqKRd38+whqTqqOEjLObyLANLlLWViDPXEUkGF/XwZ3n+FtLtjWrSd+ktHlg8sHQWWH3mXiPd/lVHei249dug1T9e8Fl7/Q30De0RVTAbmQUlyM0p1IW/+j4cWHT5+g+H0/A4QN9FgOHP2Ytz9mwRFH74kyhr711F/n72Ta+5RvyANg0tBg4PLB5YT+yIcPcfsuT9NwwTDi+Fw5I+XX2XwtWvCD4+CfD2DIGfdwADVn3bgdb4/tRtYNFbhDHRKmBFxyIqMgbRUaMQFx/PXo6LTUFoeB4CYl8EjCKkGL3GzeC5S6WC6VUnUHHhG5Se+1s9VueBwNLWK+sJAotlysOBxdVkPSqwjjcBlip5amCpkJWpnk24kwFLmLmBiDM2qHayNhBpyhoiyVpPOr96hvRcoL3InQcWD6y2CCxriqy510j3N66SnvNv3LVd/dOPQ9fc2SKNnG0P5QBhcv40Vuje5oBV/9TH/aOv0K+Pnp4qchaZvj68IxMBo0ECBM6SyUs/HC6ccPIUCo7dFWcfuMd2obL31TcYbZJHaiT6hIGk62kp8LQW8T9lAFNk7GyUhzWmpf+tNH339+KMw/v1R28qgsmoTl17x6CftScG9XPG4P4uGGTjeD+wmoZfj7Ae1kNMCAd7FwwY6IQBtt6Asr8AxgGGiF4ysN1zl8bJptdullVe/ZnWZFFICYvrocOAVfQP1GjdB7LHKZL/kgGrUSZ/Uh8KrAkfN874k5oIxp0kgoKPuGiARYvdj9SHdnTPOaRBFhv+rEKWMGs7EWRuI8IMrqkuLXiXjFnNsGVe8SHpNaf6iQOrtYHT2kBqKaCePILqWpS+WgClNW9caT7NAIumx5w60mPe1Xu9F92667Dim1M+G+4E6Y9+XgFpZ8GEceWQy/Qhl8sfmrYNLKURvCLSgS7+MoOiPV3EM85louBktTD/GJHkHCTS7D08sHhgtXlgSVW5D1uZe28Kc4/O04tbEQqhvdkAax/Y9XfAYJtBGGRjz8ID68kuZydXDB5kB7vB9rC2GwYzpxjAYoQEwfPtLGddLpRX1h6WVV69LS4/fxcTP60HVtHZNgCsrwimfP4PAut4g+7u9cDSjM3J5YDFkKU6KkQmd6uQ3orVS9lC5MkbiGjseqI3fifp8tIXDEk8sHhg6RqwbOZwj6wOa+5VBq2+i25UO274Psv29SPdYDpAlp9fopqwIXtoWv2W4P24qkeWQs8EPiFjgc7DTfQLdgQIij57DbkfXBdmHyHy/MMMVzyweGC1dWA1jF72bk1kOXtrFJM+GmeevdkaBh4Km/5+DFWD+w/AQJv+GGgzsH7vRaB6gQfWP7oGDraDrb0zBvS3RZ9+duhj54UOrtEUWfqIWmZtMK0qVVx5dQWKz37X8IiQ3TD8J24ZPiXAonM1FalbiF76ZiJIWkOQvo5YzjzJA4sHlk4Dq4+qfUPvubWk+7ya67brvn/N7a1Ph6PdIJMJU6ZCLJVDKpU+NK0PrPtgVR+Z0gzeYbmAZWAHZe6OAsPKqm3IOvitOPsQkeYeItK8AzyweGDpBLDUvzbI3kOUOXuIXu6ee3q5uz7rUHo0zCh2jhH0Bon62Lijv81gDOzfT5NGu1c8sP7xRXevBgwYBNvB9hg40I6Dlp0Xt5Nl4i9C1Du9lWVnUvUqq3eh+OxNlJz/CyXnCUrOsgJ4HlgcsNSjcxSZWzhgpawmpiVHiM0CHlg8sHQTWDYqZHHQukJ6zL/8rcPGX7Y5zfusABZ2HfInTYNYqqdbwDKU62siVraHc2QJ0DG2pzJv75viSR9fRPbB38S5B4kk7xChj60NLFnWnhaltQHFA+vJA4s+KtO56NObqxnbiaJw3x/GeZt3w2OSE4xdRJBYCqwHDEb/gTYYMNAag/vbwM7GpvENQh5Y//jzj91gWzja2cPB1g52dg6wHeyIgbau7LiwvVM4YOyvQNTSHsZln48Sl1e9Jau8/g1KawgqzhFBubrR6GMUqWsrWn9MYLGbhEWfadIQW6zwnQ58bpCG2BKO/5gIC09yGXeCRX2bUFB4lAV5h1loU2cacS7XdJTiisJKDSx141Fp6kYiSaHHhGuJ4bi9pM+camK96BrpNe8ya97Yd+H1emC9VfvEhxnrOpC05XGHJf/vi9AbA0ZbzdPjAquPliL2Pv+63Gyagsv6zdpGsXmDe6Rfv90WXPrNdcvvVfZvfPYmLDx7Zk58BSKpYVsHFldv9SBgQb87ese8BATPsZUWHNwsnnzyJ+QduCvKP8CARYsueWDxwNIFYOmncaHIEqdv+0M58dA1SeKSxbDw6mU1yA/9BjlhwEAb9B9k3QBYA3hgPXFgDYKjvS2DFkOWrROLg60D+tt5wnfsDMAsSIDIxR3Np1eNEpZc3oxJ566h8sIfqDhNUMoDiyErkwOWOG0jQ5Y0ZR3Ry9lOurx4WoOremCpkMUDiweWDgCr75xauntFui64fNdx7U8/+ay6tRlek2xjypcAcnNdARaHLEOFHowYsIwAw37Qj31LYFz2ubdw4rETKDxyFwUH79Ep73T3SpS1nwcWD6w2DSz17pUaWHpp22nB+3fKKUf2ieMXToaxQ6feg7xg028QQ9WAAQNYBvUfxIrd+SPC/80OFoVWI2ANdsJgWzeExWXBJ3kaYBwkRez7nUyfqw3G9CuvY9qF66i8cB94WOuGx4HWUwQsQfpmBixZykail7qBQct06nHSY24NGbD0tgZZXOpIn4VXeGDxwGrTwOo7p5bVX/WYV0u6Lbh8r8/ya3dd1n/zkc+WO552M1YD+h3aOrCkqshhqJDDSC5XAcsEMBosNM7eYiitOBeD8R+eQ/Y+gkJaG3CQ7V7xwOKBpTs7WLtZFKnbaP3VDb3Jh+cYZ74TAnN7s1597WHTyxp2A/pjUH8KrEEY1N+WRXOHkAfWEweWnV09sNS7WEkJSYhJKoBv+kvokbwISFprZvTC5RGCyupVKDtfi9Kzv9N6LHUBvKY/VhsAFsukhwOLzSoc96jA4pBF/2LLgJW5+6HAorCiwJKlbSKGRYdJ51fPsV0rHlg8sHQXWFdJt/m1pPuiOjJozTdnXff9Hum0+CMljLoJWR2W5MHF7q3+ZGdhbgxLM2NYmJnC0swU7U1NYWnaDuYm3QCrYQrTrC19xZO/KED+h9WaPi15hzV9WdQ3CR8UafY+hhhF5sPTUiA97cBq64Bra41Qm94aVE8LUKTvJfqpe4lRxl5iXHjwkt7kw/kmGct7wXyQXCY1gEwihUImgUgkglAohgASFpH6kJAHVis0kgF8PL0wzMsPrt6h6BuQDrQLESP2XUvD6Zd9UFk3Szjz6mVMrSaCsgsEkz4nopLTLKwA/iFd4BsPi25+mLQabOoIik43yReNwhW9N4i2YdC00J1GPQx63IeqqICVT5F1tBGyBNn7uWL3zF0PBZYsdT2rxTKccIB0efEMG6CrRhY3TJcDlvWC5qOtSNtmwdVm01JAaXv/rV1k/uSL2LUBqPaJps+bV5qPFkD1fqNxtAGLHgmqU4+sq6T3nOtsLmHvRbeI9Xt3Lg7Z/Xuu81unesLcVi7Tt4KevjH09fVZ9Oij0pBFIGjlJ2kOVg2BRV9uBxPTXoCVj6FB6kZ3wbiT01Fw7Iq48BhB3hENsOg3Og8s3c7TDCxpE2Ap03cTg8zdf5vk7fpEmbkmGN6TlBB3EErECkjFEvb9QL8hKbDo62j4HazWXRRYNF5ePnDyDUf3oELohb4ERK5Qmsyu8xROv7wMFZeqhVMv/iYuP68C1pmnAlgs+Wpk1R8VIqcxsNRF7qK0zY1qsCiw9Av2kM7PfakBFn3kgcUDSxeAZaNB1lXS983rpNecm6Tnwluk7/Lbl4fs/M9Up/mnXGDmaCDR7wQ9pSkMlG0UWCyqnSwGLFMrGJj3ATr4m8qT1gYJx3/8uqDw+DVhPt29Ul0dzuFqAXhg6XaeZmCx48F0iqvd6uPCe8r83f+xyt+6CwOTHaEcKISiA0QiruOvRCSARCKBRCzjgdWmgOXDgOXuPQKDvaPRMzAfMAkWYtR7pgaza11RVlWKqRfOYep5wsbqlFSxHS2W0ocg62HRYWCpi9wprNTAkmZtIx1mfMZ6CVm/daO+r9D8K6T3/BoeWDywdApY3egu1tKb11y3//qqw5wTATBzNJEadG7LwDJvBKx2pkYwN+sAPXMboGOQuTx5Q6Ro4icLkffhDW6r+ghBDvdNzgNL9/M0A6thewZFxjYiz9z2u8nkw1eUCYsXwtCp19CRqRDKzJicFFIZpGIRD6w2DCx6VOjpMwIOfrHoFpgPo4gXgdj3RUazLzsJZ1ycK5l15SuUnvuZA9ZFHli0XUPaZmJZ+QmrY+GBxQNL14HVde410mvJjRsu236ZZ//m8XCYOZq1aWCZm1NgmTNgUVzRmJh2hLydHdAlrJ1h9o5YyeTPlkomnLqlAZaq8R0dPsoDS7fz1AGr4eevgdY2op++jSgztnxrUfTBLv24eROg6NcxaGQ8BEI9Bilag8UDq20t+r/bd5iXJhRaFFl0J8vZJ5zVZPXPew8Inm+onHVhMGZXj5PMrPqMHhUKSy+qcoEIy86xPBKy2hqwVI1HhflHWET5qqaj2XsbNRwVZW5nwBKlbrhvB6vdtFMcquZdYwN0/0lgaQVGC9PS988D66ncwbppv/H7t5zmn4qGlZuFGlis1VSbA5ZZO4YsbvfKABbGRjAy7QyJpRPQNaqdQc6uOMnkz5bxwHo687QDi/6AkWeqgJW+7brJ5KP/6pi1Mgj6A0yDgxMhERlAKtFjNVg8sNogsDyHwX/YMA2y6E6Wl6cfwxYtfPfNfBH9C96FackHMH25bqB8ZtUrosqqjwVlF78Xll68xwOLBxYPrKcSWIt0Alim5mpgGcLShAOWoVlXCK3cgO5xFgbZe6Ikkz9bJJlw6ibbqs7lgfU05VkBFj0ulGbuvqRf9GGuec7aHjB0kQeGpEMsNmWQ4oHVtnew1MiisFKH7maNyhoHz8xKWI/fCESvUhrNvmQtnlmTiYrq48Lyqt8prOiOFtvVaoCsh2JLh4ElydzaPLBYW4F/9oiQBxYPrD7/ILCatml4CLBu2G/8fp7T/FPhsHIzlxt2acPAsjDnjglVR4QaYFm6A93izfSy9waLJn3+pmTCqetsB0szF2tfi4HV2rjigfVsAIslc/ff8sydn1hNOTTSOPYNPSgGC/2Cx0IgNmKgagQsDbJkfKPRNlCDxZDlOYxFXZPFHr2GISUjGRHphRiS8S8MmLQdZmUnoZhZ1VtUWT0DFdVHhaUXvhaXn7/LAYui6jSHK1YMf65+aLR6cHRrAUuFLNB5hA2R9Q8Cq+cCDllceGDxwNIFYF3mWjU0KXK32/jj647zPwlCezdTqVE36CnNoa/garD0NcAyhkCgmcXROoviioZCy8zMTHVE2BUSKw+ga6KxNHOvNyZ+8TxyP6iTTjhOhHn7iTB/L/dIoxVZLQRQdvPhgdW60dbIVGuj08cFmpb/vimwJOlbiDJ/99+SjJ2/tsvfuV3uP90B7byEboGJcBvqDwgk7G85IgFY6MsNwwOr9VfDxqRNXx8fF43RY5IQklgIj/QX0SnrXSBxrVw+s6a7aNaNRPHUmn2SsqofJOVniaT8KyKk8wvLThNBSTURFNdwj7QonuXcYzcmbTmw1OGQxYDVEFlNgMUGPqsuGNGIsndzUR0RNuyDxR5zd7JbhLTInQKrxwI1tFTAaiFQnnS0IqzFgHmyafGwZK15woB6858F1n3gavL+7sPVnEvc4xvXSe85N0nft+6QHotu1jpt/XN2rxePDkP7IUZCo66Q65vDQM8QRnr6LPTlNgIsUxYKLJp2JiYwMekMSTsXoMtopSR1z2BMPDMFecdrJIUfNAIWHdvQHK7UwGoJkHhgte20aWBl7Cbi1K20H9Z/9MYdqhGPWjoPpt497bwT4DYsEN7e3hpI3QcsIVh4YLXtFR83CkmJ8YiLT0To2EI4pDyP7nlroDfpOJQzrnaRVl4uFpdV75aUnb8hKT/7JwUWt4NVpcJVdSNkaXaydB1YKaqO7oV7SIfnaJuGKxpg9VhIX67hgcUDq40Dq5bYsB0smvpmo70W37nkuOWvSb1ePDoQVq56MOyiAZaxQp+lTQKL7mRZmZvBzLwzZOb2gFWEWJK411Iy8WKyKP+jKtpJmM4hpLiS5BwksuyDRJxNu7k/vKM7D6y8ntWTAAAgAElEQVSnO20dWJKx2+jH+VZZfHw7YuYVwNChg6dvNHx8AjDcP4AHlo6v2NFxiB+TiLiEOMQmjUVQYhaGZryI7rkbgIStMuXM2i6CyitRoqkXN4vLz9+mRe8UWOLSM6wpaT20nhZgbSbS1M0MWBRbxlMOk04vnWYYoQNzey6guOJ2r3hg8cBqa8Dq2+Bzo8Aa8C/1wGcOWHQHq8+yO+cdNv6WMPiNk2Zo5yASGnaAXN+00Q4WPSKk3d3bALA4WLE6LAsLBiwL845QmvYD2gULpHF75PIJdSMk+Z9+iuzD99S9WGTZh1l4YD3b0QVgybP3XlcUH3/NIOPdABjamAxx94Wvly+G+/hABB5YurxiRycwYMXHxyEhYTTbyQpKyIdjyivonLUKZiWnoJh20VJUcSlfWF6zUVh6sVZUcu53aekZIik+TUTFrQgsmvFPGFhlH5LOr55hndt7zbusOhrkgcUDSzeAZcNuE15lwOo19yodlXPPefX3H7ssvxTQLu1fEpjbQGzYDnLVqBx2PKhUA6sNFLnTsTg0amRZmlvA3MwKRma9AEt/YORGof6kO06ivC/2IevDv7h5WIeJOOcokWQfJcKcQ2wmYX244ndNbVbOnoeGB5bu54kDS0uavh95xt77Yjj+yCWT8hNZXSZv6ArTgbIhnkHw8fHBUDdXHlg6vuLi4pCUkIgxcfFIGp2AhPgxGJWYguDkHHikVaJfwWog7B2J4fSrHZXPfTtSOu3qCkw6f0VWfPFvjKPA0nJEWNokJV/U558A1oRPVVHtaKluEwrGH2N5GLDUz7EUV5o2DenbWM0hBZYkeT3Ry9tB2j//Gek+j2LqCukxt4Yhq2FaG1jagNLWhynzwLr8xIClDq0f5I4Hr97r+/bNP5yWnt8F9ywHGA8QwLgTZAamkBsY1he4s5uEbQJYQjYWh0bdD4s2HaXAMjftAkE7D3SO3wxEHOijLPxqqaTw0xvC3KN/MmTlHmXIag5YDFk8sJ7qtEVgKTL3sUdp5t57wvRdfyrzd3+kSF0xHD7j5TDsIfDwGc7qr/x8vPgjQh1f8XFxSI5vDKzRiQkYnRiL8KQsuI19Dv3z1sN8wicwm3nHVFJem4LJVe+Ji2urBROrfxUV1Tx1wJKkbCKylM3EcNx+0vn186zmioFqTg3pPfeyJjyweGC1dWD1nlvLdq56zb1Ous2/+ofD+h/qus3cvQgmDr3HFs6ExKAdw5Weuj1D2wHW/7d3JnBVVP0f/t19X9lF9ssFAVFWt1REBMF9w9RSM5VVZFXArdRs+ddrpoCW2p5LvdVri5WC4IaaWlqvS1mpLCKV5du7ab3N/3PO3G3unbsAmpjn2+fJy2zMHe7MPPecM+dwGYJFl2QZqgrRa603yN2iIDHzGYBei3vKH24og6zDeyBv/09gaotVZxAsS8kignUv0V0Ey1wtaBYsftYnN0WFDW2K3He2QcCYPqDQcxNHjIHByUkwLHkoDB06mAjWXRz053hgaibMmjEdZkyjqwhpuZoBD0yfBtNmzIJxs/Jh6Jw10HfBhwAj3+CLKy94Cx69Mhwqm2rEK65+yVn8za/WTxIy+snqhoJl7IPQKFgIfhY6D+hqdN6sdynpw7sor8rDuN1V8AuX6erBDeYbs1GyiGARwboTgqU3CpVVNw3M/aP7vzI2bg+ouXgt5q/XPuq99lAReCT2zK/4P1x6ZZQrNoDLuVPXawvBMlQTmgXLHby0nqDR6iBt6kqAoIc1bnNr07g5R56B3IZmPNhzXi2GYyNYtS4LliuSRQSre3MnBYuxHYt9EmfvpQSoD6/sPf+QlB48qMrathTUcX7xw8bBwGHDICl5KCQlDYG0tLSOCRYbJN1UsGbgqsOZM2fChJkFkPLwBuj98A7wyq8FyDqolCxtngJlF6uh/DskWf/gLP7md7No0X1kmToidSBY1pJ1OwSLm08LFs8gWJbXWLNgoXPxfROy/I8o30ePU7qNl6iQTZf+lIJ1p+XpXhessHVdEywbuTL0g2UrWK0Gwbp8OfyNq0/133IqBXoO1uQsfhw3bpfLpd1RsIyXKHboHqzVMHRcJUDPmXzFrA/cePlHpkNewxnIQ4JFYxYsS9EyCFauY7nCZH3kEGeC1VWc/n4ngtFVwfuzC6LlRZ+NjkgUDdom2vYnVpg/L+LcPRQPVRHm7muTl+x/1jPnjTRQR6l9Q3tDQIgOQkKCICRUjyG5u8PWP5blvMTYGIiL7Qe940ZASEIm9By4EKDHXB5M3+MhXvH9fdJV157iVbYeEZQ33RSUX6Kg/BsKLEQLKr9k4qTndyg9RWMUrNKTBo7T2AiWBcVHKUCdjRYdwnAKD1Ccgv0muULwc1GtQS0lyN2LwZKVhUprDedc9m6Km/U+JVu0jwpee87QoB313v4dLVRW4mItVNYS01VBut1EdBG6CwD7dFWAnG2/o4St+6ZbEb72Aiv6Z40YZItFzuwPjXPR0JEqGtqphQqtukKFVF2hgp9v+zL6r/+8v//WsxrwGsjPKVkDAAIXrxD2uO1x9MvlMHJiESRkPgEeM14G/pz3E3j5+/4GCxquwYL639DQObjBe249e1UhESwiWLdJsPj4psImWR9S4vy9vwty6m+Isz852aNw92xxemUgiHxFgWGREITFSkcE6x6IUbD6x8RAYmwcxMUMhuiYMRDYPw9g4BqAMTukvHlH0tWVl59ULr16Asq+uwbl3/0OFXdAsJBcIQxyBUUHXBIs/CARPg8MpVi5H1Hi4jrK7bGTuNTKODQOESwiWHeTYIWh9lfrL1P6jW2UbmP7b75rm36M2NL+dsKrl+N6r/obTK6ogpziFQA8IXC5XODwaNBrI3RtBK87CxYfJk6aCcPGz4foBx4DGFrpr8jfXcwrqP+IU3DwOiw4RPHyDuDG7kiyaNEigkUE69YLlnmbTKESZX+Ae2yXztuDEaLhcfL23JQWHGhRzHn7dYibGw/ycDGAnBsaFg4Bej0mJDQYdLrgP+IEI7mDSYiNw8TFxUFsfALEJwyBPgkZoE+YDaAYyQWvOVrR5LfjfB9rr+A/0vYxLLnwb1j6FcWp/IriVqB/z3U7wUIguRLl7KVEWWg4MnpIMnw9K9hLqVd8SvlvuECFvtBkMf6gnWo2IlhEsO6AYIUbOxJlESzcRcMGekinwI1NlP/Glus9a1o/jKq5UAgZpf4THn0eZi1+FLKLSlyQpG5dgsWFsaPHwLjMWdBvaglA5AyFW8GHgwXFR1bwio+dFRQd/5Wbe5AIFhGsOypYaLw1ydxPKOm8WnrZvD0/yEqPvi+btS0fZPGeHsEJEBTSC8L1elyCFRCmgxB9IOhCA/+IE4zkDgaJlZH4+HiIT4iF+Jh4SIwZDrEJmTB44moAbaYQJm0boFh+vgKWnmmEpee+hyVf/Q9J1t0gWOihDnQtQNdTSdl+qscz56jQLc1U0POWAzwTwSKC1b0FK/w5uk2Ybj0qbb1IBVddRO2ufu25sfls+Bv/XKp/5vggcI9Tzln6BOSWlUNxKRIsuLsFa9yEiZCRORsSJi0A6DWd51naoOKVfJYsKD35Lrfg6I/c/EO/o1IsBN1HVp15MOjcjx3SHQTLGXdaoO52wcIlSg5wOti0TVsrGnE2DWpzgj4n3Lm7KZj1ISWaX0sJcxu+kJefyvYs2B0MnkOEXsFxEKqPgojwXhCkC4LAUBr0muTPnYS4GFyClRiTAAmxCZAYH0tLVnx/iIsbAuljZgMIIzmgHaeEMc/3Vj5ydiGsuPAuLDnzCyw7T8FSlmpCB8JlPQi0ucH7CRq7jd5dEyxB3j6MMK+WEufW4nNBlluHfxYs3Ef5PHWGHg7nhctU4CZj+ytHOG5IfruFqrsJzJ0WrDstTB2llx3Myxgaw9vpSNQSNA3JVbCBoA2Xfg+obv1R99K1d3q/eSMp4plPleA/hDe/5FFYWLQYFublu6BI3VywRo8dD+njp0HS5ByImrYKFA+9CbKSEz68wk9L+CUnPuYtOPw9P/8ghUB9YyHJMgoWJ48IFhGs2y1YH+N2KLysvRQvq+6GIKf+grb02CZ1QV1MjzkvAT9kOPiHxoIuJBxCg4MgRBeAQXJFBOveqSJMjOmH6R8XC4nxfXFpVmJcIozPmABjJz4Mw6YtBVCPFMC4F2LcH7tQwH/0XD0sP9sGS8/85lCy7rBgKQv20+0RC+oo95Wn8HiDuuebqcCN9JiDRLCIYHVXwQqzkCxTh6LVdKkrPW5m0/chW3/8qM+2X4pD133hE7f6fcisWAt5xUugZGEZFOctuBsEy3EmjpsI40dPhhGpk2DopBIImrkJeNN3CgUFhwLEi07P4i043MjPP/wbEixjKRYRLCJYLguWIywEy9zWhAZ1xYBA1STC3H2UMH8/JSg40CxZfGy1In/3YIjO1gya/QR4hw+AkLAI0IfoIDTIH0KC/SE0JAD0wQFYuEj+3EFVg6jkKiFmABasAbHxMCA2FssVKsW6f8p0mDBxBoyeMgcGTS0GkCXLYUxNuOdT387hPPbda5xHzv8Ey87aL8lyKlgnzCz6lILSY0yMYoUoMT5BeMAkWFyEHcFCyBbup4QL6ijl0k+pQFQCsKkV3ZjwDcq5XBHBIoJ1ewQr3PSezFV/9npqN7a5wp/HmiZKt7GJ0m9qvqnbevWQbtsvs/zXfR4ACQ8KJyxZB3PLVsDCojIoKiqB0tJFLlwBurFgoV8/dWImTMwYB5mjJsHIsbMhakIF+D1YA6p574Akrz5UmH/wMX4+lqzveXkHfkMXAbqPLFqwcFWhRb9YWLwM1YdEsJwjme+Yu1murCXLdp6tYAnn7cVgscLjXdZSgryGf4sWHvpOUnzoDW3FkWEweJms36w1kJaZC76B4bgxe7heBxGhOggLCQZ9cJCJbvAdhuQ2Ji4uAXfTwBQsVHrVHwvW+NETYdL4TNwUIn3KQxA/biGAIpkHUzaHap+88JBw1dcfch453wTLzv7XRrLKv6C4i2ks22RZShZDrhwJFpKrYtT/laHkyiBX/IX2BUuQX0sJihoo1bLjlO9fvsZyhRoFWwqWKyVYjgToVghWZ9tAdQfB+qO5FXLjKn+UYIVZ9LdlLKli9HWFBnJGPbZXXaT0m5t/C93S/H3oluZDka+2rYp765ouYOUHMGrpczBv8VLILiiEBQsWQFlxGeTMz737BatPZBTE9IrGREXGQ0j0feAZMwZ4iVkAA1eINYUH9dy8xtniwmOfcHIafuYtQAOUNlCQv4cmdx+uOhTk0I3gIW8/hXqC5+PHjF0RqD0OsS7ZsOXOS1JXBErqBLRMl/Yhe7djnJWgZe+2i7EBuni+GfQzAwuhQl0sGKG3gd5fLUaaRZdYCefVUfz5dYZSq3okV5Ry0cmz2mWnVrhXNg6F1Cc9QDmU2yftQRiYNAL3FsoVcIDH5wCfywU+cDDGMQhJ/uxh9u1nvqzSrwL9giE4IBT8egZBD/8Q8AmJBEXYEAB1igTS/hKoWP33CZzHv30Wlp+/CJVIsM5QUHEGyxSvHA0YfYbiLfo7U7IsxQt3RnqSgvLjNCyixSlBotVIcYsaTVIlKDAjWniIEhQewv/y8mnBEufX4TZX7o9/SflWXaSCXmil2dSCCdnYQulqWih9tYGaJhvCq5uwNEVWsUNL1XcMwqu+YeKCXEWu7xyuNFJ3Ll+2T6oxuwRwLm8RdxBrAbOcF7XOFS7YJeK5C1T4esdEPGeNk302Hl8LSUbdgxgFHXcXUm0sIUXT2qiIjVepqBeuUJEvtlGhL1/+OWJ768fx712flfTeNR1vbo3YfeoSiBs3HZLT02FkRjqMSk+HsWnpMCZ15J1WpK4nOjIKS1afiGgM+lkfnQjeMaOAnzgPPLPfBlVJY6C0+NgiQdGxXbzCxvOcwgM/QUHD75C/j4LcAxTkHTQ9ZYheI8lCT8KIcj75AwRrz59WsLosVybB+sAOtGDZ2zfn63ddsFCjdcm8fXR1IGrAntWABxkX5tf/W1DQ0CpZfOyErOzQBsn8vw6EwRVitzHLISRtPvQbMR6GDEtifJbRyYh6RUFyhfpJwb38kvzJ4/ibaqBfIBasnn5B0NM/APz8fME7UA8S/QiAqFkAY9Z5ylZ+kSH/v8tbRY83f8l/9OIPvOXf3ERPF3IrzlHCxV9hTGMY4t7evzD/jHt6P2nCVKJleKqQU3yc4hUfo7hFRyleYSPFLzhES9UCC8kqPGTCOESZrOwQ5bHqNNUTPcr+YhsVtLWNCny+hSFYDMliESyEI8GiJQuJ1Tcmwqu+tuD2CpYrkuW8hMuxYLlSQtadBKtz+8MmSn+MYIUaRgzApZ9IsFAbwY10NWBINaIF9XX1e+TmKz9FvNx8vs/b7bv6fdBeFrnpWEDU6nfAK3MxRE6YD4MzxsHI9FRISx8JGWkjsVyNSUm7+wUrqncEREVFYbHCshWBSrL6gj46HjzjUsH/wacARj0jUlQc9RMvPZ3MXXRsFafkSC0UHf0XLDyChYpu/E5fGJBcoZ9F2fWUOLuOruZx1I2DoRqIDWGWCzgRtDuJa3LomK7tg7MSqN205Bn6mLIGi1bWbrug9TtbRWiUO2HWPgwqAUUIcxsocd5+9G3+jLCk8SXVmi9nCPLfjYTQySoQhXKi0qZBfNp4GJCSDkkpI/HwCKj0SsDj4RIsIfBNpVdoKBySezv+/v4QEBQEvoGBmKAAPwgICACPoHAQhg4GUA4WQMrj7qonvoqVV/1jvvTp73eJVre0clZ8Q8HSrylO5QUKKs7TJVuVaDidzwzD6hjbZH1OccvMcEo/w0DJSQyn+CTFQ5JV+CnFKzxK8QsaKQGWLBokXQiTZBUfpGRLjlPeT52jRerFq1Twy+1U4JYrrIJllCzjTc0aXIpVZQdDCVZ4jRl99TdMDCURbKB2NRHruw7dqzc7psbRLLA9qcb25FpX1v+jsNt2yem6XauyjHAqfOy/l/67mT8vYRsvU2EbmzH6ja1U8OarVODmq1TA1itU2Gs//CvurZ9r+733j5X9Pv4pOXBdrR+EpYmmLn0O+o2djuUqZeQoGDEyDUZkjMT/po1IhfSU1D+BYEVF2QgWLsmKioCQPokQc38RBM56GpRzXwHP8jqRtvTjoYqS+gpOybH3YeGxs5B3sBny6n+GvPpfUdUg7vk9BwkWLVm0QDmCXa7uFcm6/fvguP0Z6mPHvmAZJMsBzCcCbbH39CBdQob+/vsobnYD+sz8k5+z/6ow/+AFaX7DQfeCPeu9Cj+cIZr3ujeMWQ7BqQ/DgJTxMDh1JAzPyIAhKSNh0JAUPACVsWdfnsV/xjEHSe7t+Af0xILlHegHPQL8IDgwAEsW6ohW2SMIht5fCr1nrwVN/jugXn4i2HPZZ/nuK868Kll96Sis+O5b7rJvf4DKC/+ByvMULDFIFhYtc6N3bpkZTukpDBR/juEVIU5SvIUnsGRxC45S3IWoJKuR4i48RFcbFh8ycICSLD9B+a7/jgp7+Qcq9JUfqJBXfqCCXrrqULBommxwJlhonrN+spw1ou+KZDkSK2OjaHty5IokOZKr7i5ZlvvnnNvZju0i6/6Z/0Z0laBR6HttaaHCtrb8GvTSlZ97vnqlOeiv358J39H8Xr9Xvi6/b+uXQ8Ke+UTU/8kdMHPlelhY8SiMSEuH9NQ0SB0xEoaPSIOUtFQM+jltxEi4q4PbYEX0pYmMwERH9oXoiFhDSVYsjL1/DgyZmgt9718GEDqBA8ETVDBsWZCoYN9AWHBoFn/RsXXc4kP1sPBgOxq0FPf8bqguRAhy6lyg3i7GEg4j4pwGJrn7HCLKrusSzrbvDGmOY5ztrzMBtYZxXA3DbdgDNSRHbZ+kWXV2oNtFOQItI59PQ2+LiWm5nFoGqG8fcX49hdr0CYqO3RQVf3paXfnF64qKL0vcFtaOhqiHo8BziCe4DxKEp86BuKSxMCQ5DYampGCGJadi0KeYw+MDcFG5lcAE+plUEd67MVYcBvr5Q1AQqh70xQQFBOBpqGTLzz8Yxk+ZBRkziiDxwccA/CeJocdkX4gu7itffno89/GWSu7Ki38TPtp0Acq/+xUWfUXBknMUeuqQu/wcxVt2Dg8YzSs/YwKKT5kpOkXxCk9TvIWfUdxCxAkMLtEyVB0Ky49RvPJGSrLqFOX+7FeU/5ZWKvDFVir4lTYMeu2/pZkK2GzbBgth/JkNND9sYyvVq8ZMeHWLCVSFaGwobwQ1RLYET69qYkWPx5JrwmPK2cPYyNmI5Ty0LhouxR66DY7ByzmQENyw+rlLVPB6dtA8hH7d7cPR+0dErLtMRT7XREWsNx8ry2PQq6rFCUxpjqhuZmC39NIk2E02OFrHdhstVFhNG6WruUrpN7dRgRvPUUFbz7XHfnS9vv+x/62L//x/M3u/c24AJM4MBN+hKvCK5zz0yHrIXrwCihdVQlrqKEhLyYDUERmQOjwNRqYMg/QRKaZpd7yheleDZapXLMRERDEEK6ZXX9zwffLESZAxfgqMmDwXhk7Og6HTiiFq+qOgnbcN1GX7fZRFtaPVZQeXSIuPvcbNa6wXLGj8XLCg8Ty/oPFbfsGhJl7egVZBXkObIK+hnQ1+br1DuDn72vnZZgQ59SzU2YWfXdslHG3bVUTZ7LAtK86vZyDM3dch2N/HHjvUtguzattF8+2D5ttbX5i9p12UtaddMt8M+tkSoXG5nL1topy9VwS5e5sFuXsvCvNqv+bl7/s7p+TYcXHZ0ffVBXuf9sz/cJYmZ1dvSFkui80sh2Hj50LisMlw37AxcN+QJEhKGgLDhifDsOEpkJxMY5QrDAfJlYgIFonpwoxEKigowCRY6GckWIH+PTEzp0+DzCnTYdzUfMiYUgIjJ5bBgAf+AqKHtys1a87Ge646m6dZ+XW1aGXrh7Ci6TisuHAGVnx1AZadvwhLzjVxKs+1QsWZNqg4044p/7uZRV+2Q+kX33NKvviBW/rlj5xFp69ByWfXYdFn/+Qv+ft/RI98ecPt6Qs3/Gqab4S98dONoNd/vBGy7Ycbga+13wh4+cqNwBdbbwRsbcEEbrlyI+iF1hv6rVcxYVtogja12ONmyMaWmyHVTTdDq8zoNlxmoK9uuamvaTIRWn3JTFUTPd8BoesvMwivbmGg39DEwHp5y33rDPqqSw6xfr/W2OzPLSZk3UUGuucuMQhbd+mmfu3FX/XrLv2q39D0n9Cqpmsh1U3twTU0upqWdn21E2qaTOiqLjKwnMeGbqMtrszT1zS16WpaWgOrmpuCNl35NmRL+3n9i5c+v++95vrk3d+9NuTds0uGffTN6AGffOWje2YbTFxeDQvK/w8KFq+B4oqVUFaxFEoXLcIlVanD0w0lVqkwKiUZRqWkQPrwDEhLGX2XCxYHoFfvWIiMokusUGP36EjU0J1+jYRr9LjRMGbyREhDojX5fhiT+QAMnZIDoVNXAcQUCCC6UAsD1gTAlLcixAtO9BcVnpogLPoiW1h0armw6NRaYfGJF4TFJ14VFp/YLiw+8aaw+MROM5/ulC4+6RDJouM7ZWVmpKWfMik76hBJyZEu4Wz7riArdYyixIysqJGBpPBwh5AXH7HisEMURUcc4nx9W6yWeVNacni7rLTxNVlp4xZZaeN6aVnjatmiI4XixcemiVacSfJYdjQaBhSGgOdgL/DqLwOFnpsy4SHIGD8NBialwaChSTAseTAkJw2E4cOGQvLwJBN0UQXHQrCMJVhoGhGsezboT88B8A3sCX4hSLD8MKjK0D/AG/wDPSEwwBOmZY6F6fdPhimZD8CkKXNgytQsGDGtFCBgLBeGVcqh/2JfSH5CL338Qh/xhp+Gi5+7Nlu8tr1M9FTratHjzc+K1zRvFq9pfk28pnm7eE3zm6LHmhiI1zT/VfZE67vKv1x9T7nu+4/dn//5gPuWX072ePU/X/lv+/elsLf+e7nPe79ejv3gf5f7fnDzcvSu/17uveuflyPf+UdTxFs/N0XsvI6J2vFLU9S2601Rr/5kpBkR9mI7JvSl9hYrWsNebG8Nf97EFUTYpqttluhqWhiEVDcx0NVcsYu++kpbWE0bAzTNktCqFgbWy6NpIdWdI7SqqS20+pJDdBsutwVXNbOi23D7sT4e1u+/1/PtaPrVsE1Xv+/9yvWvo7f965Oo7f/aEbEDszNy2y87o95wwLbrDCJf/9lE79d/3hn18jUGMW/8wqDPtl92Rm9ngqaZp1+35s3o7de3R2+//mrUjusv6F6/tjbi7V+Wh7/zU3bqsf9OqLxO9V97nYqQjpkTAIGJWtD3E4xb/RxkL3sCFi9dBaVLlkHpkiVQUlkOi5dWwvDU4ZCamoJJG5EC6SOScdurUcMzsGTRzwXf1YLVF4OlyvAUIf1kYQRuhzVl6mQYNX40TMiciF9PnjwRRk2aDknTS2DAtEcgdsIK6J25FgIffBXcZr8Fyofelctnvxcsn/1ef+lDf0tXZe2aosra9aAqa9ccVdaueaqsXXPNvDtXm/e3udq8d+zilvM2A3XWW0yydzpENX9Hl3C2fWdosxzjPp+JR9abTObt7BDuc3fcQbbN1c6zYZ523rY57vO3z9RmbZ+qzdo+Rpu1fahb9o4Idc6bbpKsHeAx53mInb4UBo19CIaOewAyJj8Ao8ZmwuixE2FI8nAYnJwEQ4YMhJHpKbRYJaNSLBqTXNkIlmGa035SCH9K0BMOXACfIH/wC0ZdNBieIsSC1cMkWVMzx8DUKRNg+vTpMHFCJkydOgPG3D8XkmZXQp9py2BY9lpIWLgFvMt3gWjxJ+D7xGc9vFYd7+O2/OgQbcXhDM8lhzO9Kg/P9Ko8PMer8vA8TWm9CfWiuvmykj1ZqvJ9udplBwu8VjaWBq09vSxg7ekn/Nd9XhXw7MnNgc8c2Rzy9MHNQU/t3xywpm5zwJq9m4PX1G7WPVm/RWARLIMAAAqASURBVP9Uw5bQNfVbglfXbdGtQtRvCVvVYGSrJaGrG1604qWwVQ0vha6oezlsOeYVROiyWhO65bWvhK6oY4CmWWI9n2350GV7TIQt38vAch4buuVs1HYAx9sOWbbXIbqlt5eQJZ8wYMxbthcfw4AlH78a/Ejd65FPH6mKrT5dGlNz+uE+NHOjN3w2t28HiK0+zSCh+ou5/arMxK//3ETcBpqYKnucZGNeTNXJOTFVJx/sW31ySt/q4+l9Nh3v77b8reCMdz+XJ21+AyZVvwDznlgHZU9sgOwVj0Pe8lWwoKwCyiuXQHnlYiirXAT5JUVQtKgUUtJoubIEN3D/UwgWjvGiZPy/ear1t0HGXI4UgKMEkToI+OowAG0fAPcEAPeBXHAfLAaPYQrwGKoFz0Ee4DHICzwGeYPHIB8mA3zAPZEdbQITTbxrqDuIs+1Z7wfbPqnibHF1OxorTPtlNV2byI71cva25yoqK5RxroHfd19blH0Q3qDs4wWqPh6g6u0Gqt4qUPWWgiqSD+7RANpwAJU/cJXewFd6gkDhDiKF1oCaRqkEsUIJYrkaxHItK1KZEXcDWufI1YQ/GWJWtKbXUrmSBbXpMyFSuANX7QugDgCuyg9AEwTgGQXgHQvg3V8I3vfJwGeICnyG0Nc3z0Fe4DnIGzwH+ZjwGOgDnv0RPTAe/XzBI8EPPBMCwDMhGDwT9OAeHwZuseGgiWaiRv/2ZaKNCQdtXDhorHCLd0Yv0LLgnkDjacArkR3jfFbieoF3bC/w7ntr8Yp1QLzreLNgvYxHAhPjcTEdnzjHWK9vs71YdkzbMBxL78QI8E7Ug0+iH/gk+jilRz8mvgOY9BzIxG8QOz36OSDBHt7QI8ELeiR4gFu0FjRRCtBGiEGr44LWB0DtASB3A55MA8AVAnD5TKMw+oTdCgbLL0v3eBQyOSikSvrCJPcEgdIXuKoA4Kh1ABodcDSBwNH4Y3gsoAsYjwWuoicDjtwXuDLn8DuI0+0petrFuAxH6mNDR7bDtk3r6QKlHyuubs9VrI8PT+LjEvh9y7xsAImnGak7A65EC0KVB4iVbh3AA6QKNtxAJkd4GPDCsC9rBq+j0NgFbZdw7yFTuoNcqQWlUglKpRzkag1I1R4g0vgAX+sHXG0QcNyCHF7XsJypetAofExwDIDMC3hSL+CJPW0QSLwYCKU+rAjkPTqFUOGLr9U8lS+WSZ6mJytoniVoeTM+wNd4Al/rbkKo6SJqTwd4G+hhgq+xQt2TidV8y3UR6BhYgo6LJQKVj2Os1reGr/BmBR07GsOxtHP87YE+g/hz6EbDd/dnIPAIZCD0DGKFa1i/Mwi1viCQeIBQ4gZiiQbEEhWIJQoaqQwkEpkLBuGsNPoej0IhA4VCgZEpVCBTaUGicgeJyhPEak/Da3eQqLV4njVSpcZwY2RiXdIgkWowUknHMK7nKtbry6Vau5h+h1hlQ0e2w7ZN6+kKuRsrrm6vs8eLPmlcRQESK8QiuRmxlIFILMd/f5cx3vzk9lHIPEwg0SKCRegMcoNgyVVIrqSgVCtArlHRoqVxw7Il0XiYr28GkJghjNsxlpyJZCoTEgOmm5HlOWLA+jySSlWsyGWdK+Wz/pzj98qCo3MDXe+VSrVBQm8Xasco2PebiRrDtq5CrjGhlLGjkKvsoHEK+vvIZUobjOs7O/72UKrcMHI1jULjzkCp9WSgcvNiRW5YvzOg38/8nCKpkpiQiSWsqsTUJiJYDoO+3bl2oshZQWKmlNuCS8YskEulJpQS17BcpyNYbkMlldvFuIxCLLHBel8cbYdtm9bT1TIFK65ur7PHC50kHcXyOMhEYhukFqCLdEcky5FcWQuWK5JFBIvgqmAZUalUJow3b+ubuPEmjG+ocjlIpVIT1ueW1PqcEImdXk+M56v1ddJVjNdZ43VEI1eyYu+6Y7mem1z+B4N+J/v+0qgNsM93s0ArVYBWqmLgJqGh57mCyg4KUEvkrOB5puOosthn19AqNBiNkkar0jJwU7sxcNd4sKIxrN85VLbXf4nIDBGsrsf4LUOtQCjNKOWssAkWG+iiZAnbBcoZ0k5iuQ1HFylHEmK9L65e+OwtzyahbCLqSEw7c7wsv5G4iuVxoG8aUgaWpVi41BNLlis4+jZNy5d1CR8RLEJnwCVRKnPph0qlMWF5k0HXPnoZ9pIfYxsviUxuQio1Q3/rZyITm5FL5HZB67OVjriCUQCVcpXDGzya5whHInP7MOybwg5yLY2d+TbvT6phoDXg7L2bsFrfhEwFKqmSFev1NXJth9Aq3DAaJY1W5c7ATe3JwF3jxYrGsH7n0DCFyiBVlhDB6mKMJVRGsbIuscJiZSFe1qVZMqWCFSmSKgskMimms9LEKg8yW2xky0r02KSPTTI6sh22bVpPd1VEHYlpp46RC0IllpqxmWdVLWiqHpTQdEqwHJVgWZRikSpCQtcFi0aldGOVLOsqJyN0FZGhBEumZEiVtWBZCpU13V2w7ErOLUFpB/My9qoNMSzzrH8Hev+W1YHWgoTnO8NO1SKah9ons2Fc9+4ULI0Jdrkyf36ZA7DTIYLVgdAlU1KTMOEidYwSwyzhMp84RhEztd9SyhhIFVIGErkYI5U5Ri51HWfbwtuTS+1iXEYiFdnQke2wbdN6Ot3WzRZXt9cRLI+RzTcUFhjv3UawxBYYBMvQzgS1wbKUK7FKBWKlxi7mKkIPJ9AN3IlgETqLTfsdtYaB3PCvPTmgb6DmEmZ7pcbWVequVA12hypC0/o2X6xvJezNSqyXM95rTBhLFa2ms/0OfP+xkE0mhloChRPstdFi+QLMXiNhFtW7o4pQZaoiZ173ZTZtB9lEiQhWB4LkCguWSmpHsOx8c+gGguWKZN1rgmV9fFwRLIZkORQsg2RZNHq3Lb3qWhssW9lysrzDRryEexWTXBmvY2qVAVquLAWLrZrM3EYStadEQiRmRSEWOcTeegh0fipk0k6hlMtMqOUy0CjkrKB51jDWveWCJe8Q5vsN875jhjnfWRMVmyYYdq67ZhzLl8113Ob4M0UV4Uo1qVapwqJjRKtSM3DTaBi4a91Y0Vhtx1VUqC2iWmG65tM1GESwSEi6QbpBR5QEglPsxKoPn262d7f9bCS5vbm7/w5cJk77vCIhIbmN6eDl3fKEZYOEhISEpHuEQ67PJCQkJCQkJCS3NkSwSEhISEhISEhucYhgkZCQkJCQkJDcWcG6O9qZkZCQkJCQkJDcyXCIYJGQkJCQkJCQ3NoQwSIhISEhISEhucUhgkVCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQgL3av4f74fpZ/3Zz2MAAAAASUVORK5CYII="})]})]})},bedrock:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 29 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:[(0,R.jsx)("path",{d:"M15.7276 18.0981H19.3209C19.5706 18.0981 19.7748 18.3046 19.7748 18.5577V20.6811C20.2076 20.7878 20.5919 21.0369 20.8661 21.3883C21.1403 21.7397 21.2885 22.1731 21.2868 22.6189C21.2868 23.7191 20.4059 24.6116 19.3209 24.6116C18.2348 24.6116 17.3539 23.7191 17.3539 22.6189C17.3539 21.6774 18.0003 20.8876 18.8671 20.6799V19.0174H15.7288V24.4576C15.7291 24.5366 15.7091 24.6143 15.6707 24.6834C15.6323 24.7525 15.5767 24.8105 15.5094 24.8519L12.3711 26.7664C12.2999 26.8099 12.218 26.8328 12.1345 26.8324C12.0511 26.832 11.9694 26.8083 11.8986 26.7641L6.1516 23.1637C6.08529 23.1221 6.03068 23.0643 5.99291 22.9957C5.95515 22.9271 5.93548 22.85 5.93577 22.7717V19.0162L3.0646 17.3479C2.99931 17.31 2.94431 17.2567 2.90444 17.1927C2.86457 17.1286 2.84105 17.0557 2.83594 16.9804V16.9489V10.9732C2.83594 10.8099 2.9211 10.6582 3.05994 10.5766L5.93577 8.87089V5.18889C5.93577 5.03839 6.0081 4.89839 6.12827 4.81322L6.15277 4.79689L11.9009 1.23389C11.9722 1.18953 12.0544 1.16602 12.1384 1.16602C12.2223 1.16602 12.3045 1.18953 12.3758 1.23389L15.5141 3.18806C15.5804 3.22968 15.635 3.28751 15.6728 3.3561C15.7106 3.42469 15.7302 3.50176 15.7299 3.58006V8.86622H20.2286V6.62972C19.7956 6.52295 19.4111 6.27369 19.1369 5.92202C18.8626 5.57034 18.7146 5.13668 18.7166 4.69072C18.7166 3.59056 19.5974 2.69806 20.6824 2.69806C21.7686 2.69806 22.6483 3.59056 22.6483 4.69072C22.6483 5.63222 22.0031 6.42206 21.1363 6.62972V9.32589C21.1367 9.38589 21.1253 9.4454 21.1028 9.50099C21.0802 9.55659 21.0469 9.60719 21.0047 9.64989C20.9626 9.69259 20.9124 9.72655 20.8571 9.74983C20.8018 9.77311 20.7424 9.78525 20.6824 9.78556H15.7299V11.8926H23.4579C23.5572 11.4588 23.8003 11.0713 24.1477 10.7932C24.495 10.5151 24.9263 10.3627 25.3713 10.3607C26.4563 10.3607 27.3371 11.2521 27.3371 12.3522C27.3371 13.4524 26.4574 14.3449 25.3713 14.3449C24.9261 14.3429 24.4948 14.1903 24.1474 13.9119C23.8 13.6336 23.557 13.2459 23.4579 12.8119H15.7276V15.0717H21.5061L22.5736 16.4484C22.8709 16.2745 23.2092 16.1831 23.5536 16.1836C24.6398 16.1836 25.5194 17.0749 25.5194 18.1751C25.5194 19.2752 24.6398 20.1677 23.5536 20.1677C22.4686 20.1677 21.5878 19.2752 21.5878 18.1751C21.5878 17.7714 21.7068 17.3957 21.9098 17.0819L21.0651 15.9911H15.7276V18.0981ZM12.1378 2.16489L9.75427 3.64189V7.10456H8.8466V4.20422L6.84344 5.44672V8.88256L9.3051 10.4692L11.8333 8.87789V6.22256H12.7409V9.13456C12.7409 9.29322 12.6593 9.44139 12.5263 9.52539L9.79277 11.2439V13.6717L11.4518 14.8489L10.9314 15.6026L9.2911 14.4382L7.5061 15.6107L7.0126 14.8407L8.8851 13.6099V11.2882L6.38027 9.67122L3.7436 11.2346V13.1899L6.04427 11.8027L6.5086 12.5926L3.7436 14.2597V16.6829L6.2706 18.1506L8.91894 16.5546L9.3821 17.3444L6.84344 18.8739V22.5162L9.0321 23.8871L11.7913 22.2234L12.2556 23.0144L9.90244 24.4331L12.1401 25.8342L14.8211 24.1974V17.4541L9.2701 20.8292L8.80344 20.0417L14.8211 16.3831V3.83672L12.1378 2.16489ZM19.3209 21.5479C19.1809 21.5487 19.0423 21.577 18.9132 21.6314C18.7841 21.6858 18.667 21.7651 18.5686 21.8648C18.4702 21.9645 18.3925 22.0826 18.3398 22.2124C18.2871 22.3422 18.2605 22.4811 18.2616 22.6212C18.2616 23.2127 18.7353 23.6922 19.3209 23.6922C19.4608 23.6913 19.5991 23.6628 19.728 23.6085C19.8569 23.5541 19.9738 23.4749 20.0721 23.3753C20.1703 23.2757 20.248 23.1578 20.3007 23.0282C20.3534 22.8986 20.38 22.7599 20.3791 22.6201C20.3802 22.4801 20.3537 22.3413 20.301 22.2115C20.2484 22.0818 20.1708 21.9637 20.0725 21.8641C19.9742 21.7644 19.8573 21.685 19.7283 21.6306C19.5993 21.5761 19.4609 21.5488 19.3209 21.5479ZM23.5559 17.1029C23.4159 17.1037 23.2773 17.132 23.1482 17.1864C23.0191 17.2408 22.902 17.3201 22.8036 17.4198C22.7052 17.5195 22.6275 17.6376 22.5748 17.7674C22.5221 17.8972 22.4955 18.0361 22.4966 18.1762C22.4966 18.7689 22.9703 19.2496 23.5548 19.2496C23.6948 19.2488 23.8334 19.2204 23.9625 19.166C24.0916 19.1116 24.2087 19.0323 24.3071 18.9326C24.4055 18.8329 24.4832 18.7148 24.5359 18.585C24.5886 18.4552 24.6152 18.3163 24.6141 18.1762C24.6152 18.0361 24.5886 17.8972 24.5359 17.7674C24.4832 17.6376 24.4055 17.5195 24.3071 17.4198C24.2087 17.3201 24.0916 17.2408 23.9625 17.1864C23.8334 17.132 23.696 17.1037 23.5559 17.1029ZM25.3701 11.2812C25.23 11.282 25.0915 11.3104 24.9624 11.3648C24.8333 11.4191 24.7162 11.4984 24.6178 11.5981C24.5194 11.6978 24.4416 11.816 24.3889 11.9458C24.3363 12.0756 24.3097 12.2145 24.3108 12.3546C24.3108 12.9461 24.7856 13.4256 25.3701 13.4256C25.51 13.4246 25.6483 13.3962 25.7772 13.3418C25.9061 13.2874 26.023 13.2082 26.1212 13.1086C26.2195 13.0091 26.2972 12.8911 26.3499 12.7615C26.4026 12.632 26.4292 12.4933 26.4283 12.3534C26.4293 12.2134 26.4028 12.0746 26.3502 11.9449C26.2976 11.8152 26.2199 11.6971 26.1217 11.5974C26.0234 11.4977 25.9064 11.4184 25.7775 11.3639C25.6485 11.3095 25.5101 11.281 25.3701 11.2801V11.2812ZM20.6813 3.61622C20.5413 3.61714 20.4029 3.64564 20.2739 3.70009C20.1449 3.75454 20.028 3.83387 19.9297 3.93356C19.8314 4.03324 19.7538 4.15132 19.7012 4.28104C19.6486 4.41076 19.622 4.54958 19.6231 4.68956C19.6231 5.28222 20.0968 5.76289 20.6813 5.76289C20.8213 5.76213 20.9599 5.73374 21.089 5.67936C21.2181 5.62498 21.3352 5.54566 21.4336 5.44597C21.532 5.34627 21.6098 5.22814 21.6624 5.09834C21.7151 4.96854 21.7417 4.82963 21.7406 4.68956C21.7417 4.54948 21.7151 4.41057 21.6624 4.28077C21.6098 4.15098 21.532 4.03285 21.4336 3.93315C21.3352 3.83345 21.2181 3.75414 21.089 3.69975C20.9599 3.64537 20.8213 3.61699 20.6813 3.61622Z",fill:"url(#paint0_linear_2482_3244)"}),(0,R.jsx)("defs",{children:(0,R.jsxs)("linearGradient",{id:"paint0_linear_2482_3244",x1:"1962.93",y1:"514.493",x2:"424.608",y2:"1982.98",gradientUnits:"userSpaceOnUse",children:[(0,R.jsx)("stop",{stopColor:"#6350FB"}),(0,R.jsx)("stop",{offset:"0.5",stopColor:"#3D8FFF"}),(0,R.jsx)("stop",{offset:"1",stopColor:"#9AD8F8"})]})})]})},cohere:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:[(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.48006 16.4482C10.1707 16.4482 11.5451 16.4097 13.4444 15.628C15.6576 14.7168 20.0617 13.0613 23.2386 11.3627C25.4611 10.175 26.4352 8.60235 26.4352 6.48602C26.4352 5.78728 26.2976 5.0954 26.0302 4.44987C25.7627 3.80434 25.3708 3.21782 24.8766 2.7238C24.3825 2.22977 23.7959 1.83793 23.1503 1.57064C22.5047 1.30336 21.8128 1.16586 21.1141 1.16602H8.80456C6.77807 1.16633 4.83468 1.97156 3.40184 3.40462C1.969 4.83768 1.16406 6.78119 1.16406 8.80768C1.16406 13.0275 4.36656 16.4482 9.48006 16.4482Z",fill:"#39594D"}),(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.5625 21.7119C11.5624 20.7002 11.8622 19.7113 12.4239 18.8699C12.9856 18.0285 13.784 17.3724 14.7183 16.9846L18.5952 15.3746C22.5163 13.7482 26.8318 16.6299 26.8318 20.8754C26.8318 21.6575 26.6778 22.4319 26.3784 23.1544C26.0791 23.8769 25.6404 24.5334 25.0873 25.0864C24.5343 25.6393 23.8777 26.0779 23.1551 26.3771C22.4325 26.6763 21.6581 26.8302 20.876 26.8301L16.6795 26.8289C16.0074 26.8289 15.3419 26.6965 14.721 26.4393C14.1001 26.182 13.536 25.805 13.0608 25.3297C12.5856 24.8545 12.2088 24.2902 11.9517 23.6693C11.6946 23.0483 11.5623 22.3828 11.5625 21.7107V21.7119Z",fill:"#D18EE2"}),(0,R.jsx)("path",{d:"M5.5694 17.4551C4.99084 17.4549 4.41792 17.5688 3.88337 17.7901C3.34882 18.0114 2.86312 18.3359 2.45401 18.745C2.04491 19.1541 1.72042 19.6398 1.49909 20.1744C1.27775 20.7089 1.16391 21.2819 1.16406 21.8604V22.4309C1.18287 23.5867 1.65522 24.6888 2.47922 25.4995C3.30323 26.3102 4.41286 26.7646 5.56881 26.7646C6.72476 26.7646 7.8344 26.3102 8.6584 25.4995C9.48241 24.6888 9.95475 23.5867 9.97356 22.4309V21.8592C9.97356 21.2809 9.85965 20.7082 9.63832 20.1738C9.41699 19.6395 9.09258 19.154 8.68361 18.745C8.27465 18.3361 7.78914 18.0117 7.2548 17.7903C6.72046 17.569 6.14776 17.4551 5.5694 17.4551Z",fill:"#FF7759"})]})},groq:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 320 320",className:C,fill:"none",children:[(0,R.jsx)("path",{fill:"#F05237",opacity:"1.000000",stroke:"none",d:"M99.037766,292.010254 C80.610107,283.353424 65.103180,271.338257 51.992310,256.384064 C35.155167,237.179657 24.248957,214.925079 18.969467,189.870697 C15.706749,174.387100 15.940939,158.613998 17.384579,143.234665 C19.695974,118.610970 28.893574,95.944420 43.701809,75.943375 C58.613033,55.803226 77.269798,39.895962 100.170876,29.500484 C117.244499,21.750256 135.057236,16.847681 154.130295,16.887632 C171.064301,16.923103 187.697784,17.471205 204.117081,22.726103 C221.176590,28.185892 236.699341,36.210438 250.595428,47.244423 C268.451019,61.422371 282.721558,78.705566 292.166504,99.588043 C299.963837,116.827774 305.156769,134.703354 305.106934,153.956543 C305.063141,170.885040 304.538818,187.512741 299.312195,203.949295 C293.881134,221.028839 285.871552,236.551498 274.872375,250.467514 C260.628143,268.489166 243.223175,282.825378 222.167587,292.362885 C205.049332,300.116882 187.308517,305.010956 168.249603,305.122070 C149.791672,305.229645 131.534439,304.758636 114.028816,298.070770 C109.112488,296.192596 104.274902,294.108307 99.037766,292.010254 M173.361389,189.241684 C174.590912,188.549698 176.840088,187.918655 176.885666,187.155884 C177.198547,181.921906 177.049957,176.660355 177.049957,171.057938 C171.148315,171.057938 166.006836,171.142105 160.868942,171.042435 C144.379044,170.722534 131.261276,157.762955 130.959396,141.570343 C130.648834,124.910637 143.132614,111.473473 159.798264,110.529091 C175.733490,109.626114 190.302094,121.553154 191.122086,137.748535 C191.988144,154.853668 192.258820,172.102142 191.079987,189.169937 C189.481415,212.315109 162.664322,223.818680 143.804749,210.197418 C142.641174,209.357040 141.467484,208.530685 140.224106,207.644821 C136.061783,211.880997 132.147186,215.865036 127.928223,220.158859 C130.005341,221.853546 131.920731,223.698608 134.099182,225.148392 C149.681442,235.518448 166.187149,237.056183 182.876572,228.628586 C200.092255,219.935272 209.037460,205.295456 209.576233,186.034698 C210.004547,170.722748 209.913895,155.384476 209.612869,140.066544 C209.084930,113.200706 185.974777,90.889603 160.586792,92.383919 C136.568375,93.797623 116.917099,113.077003 115.121162,136.989120 C113.303970,161.184189 129.386780,183.187073 153.016251,188.026245 C159.293640,189.311829 165.921738,188.884857 173.361389,189.241684 z"}),(0,R.jsx)("path",{fill:"#FFFCFB",opacity:"1.000000",stroke:"none",d:"M172.875107,189.242920 C165.921738,188.884857 159.293640,189.311829 153.016251,188.026245 C129.386780,183.187073 113.303970,161.184189 115.121162,136.989120 C116.917099,113.077003 136.568375,93.797623 160.586792,92.383919 C185.974777,90.889603 209.084930,113.200706 209.612869,140.066544 C209.913895,155.384476 210.004547,170.722748 209.576233,186.034698 C209.037460,205.295456 200.092255,219.935272 182.876572,228.628586 C166.187149,237.056183 149.681442,235.518448 134.099182,225.148392 C131.920731,223.698608 130.005341,221.853546 127.928223,220.158859 C132.147186,215.865036 136.061783,211.880997 140.224106,207.644821 C141.467484,208.530685 142.641174,209.357040 143.804749,210.197418 C162.664322,223.818680 189.481415,212.315109 191.079987,189.169937 C192.258820,172.102142 191.988144,154.853668 191.122086,137.748535 C190.302094,121.553154 175.733490,109.626114 159.798264,110.529091 C143.132614,111.473473 130.648834,124.910637 130.959396,141.570343 C131.261276,157.762955 144.379044,170.722534 160.868942,171.042435 C166.006836,171.142105 171.148315,171.057938 177.049957,171.057938 C177.049957,176.660355 177.198547,181.921906 176.885666,187.155884 C176.840088,187.918655 174.590912,188.549698 172.875107,189.242920 z"})]})},mistral:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:[(0,R.jsx)("path",{d:"M4 3.9668H8.0005V7.96613H4V3.9668ZM19.9997 3.9668H24.0013V7.96613H19.9997V3.9668Z",fill:"#FFD700"}),(0,R.jsx)("path",{d:"M4 7.9668H11.9998V11.9673H4.00117L4 7.9668ZM16.0003 7.9668H24.0002V11.9673H16.0003V7.9668Z",fill:"#FFAF00"}),(0,R.jsx)("path",{d:"M4 11.9668H24.0013V15.9661H4V11.9668Z",fill:"#FF8205"}),(0,R.jsx)("path",{d:"M4 15.9668H8.0005V19.9661H4V15.9668ZM12.001 15.9668H16.0015V19.9661H12.001V15.9668ZM19.9997 15.9668H24.0013V19.9661H19.9997V15.9668Z",fill:"#FA500F"}),(0,R.jsx)("path",{d:"M0 19.9668H12.0003V23.9673H0V19.9668ZM15.9997 19.9668H28V23.9673H15.9997V19.9668Z",fill:"#E10500"})]})},ollama:A=>{let{size:E="md",className:C=""}=A,{resolvedTheme:i}=(0,g.D)(),I=B(E);return"light"==i?(0,R.jsx)("svg",{width:I,height:I,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.22529 1.27126C9.47729 1.37043 9.70479 1.53376 9.91129 1.7496C10.2555 2.1066 10.546 2.6176 10.7676 3.2231C10.9905 3.8321 11.1351 4.50643 11.19 5.1831C11.9245 4.76754 12.7397 4.5145 13.5805 4.4411L13.64 4.43643C14.655 4.35476 15.6583 4.53793 16.5333 4.98943C16.6511 5.05126 16.7666 5.11776 16.8798 5.18776C16.9381 4.52393 17.0805 3.86476 17.2998 3.26976C17.5215 2.6631 17.812 2.15326 18.155 1.7951C18.3466 1.58774 18.5811 1.42453 18.8421 1.31676C19.142 1.2001 19.4605 1.1791 19.7708 1.26776C20.2386 1.40076 20.64 1.6971 20.9561 2.1276C21.2455 2.52076 21.4625 3.02476 21.6106 3.6291C21.879 4.71876 21.9256 6.1526 21.7448 7.8816L21.8066 7.92826L21.837 7.95043C22.7201 8.62243 23.335 9.58026 23.6605 10.6921C24.168 12.4269 23.9125 14.3729 23.0375 15.4614L23.0165 15.4859L23.0188 15.4894C23.5053 16.3784 23.8005 17.3176 23.8635 18.2894L23.8658 18.3244C23.9405 19.5669 23.6325 20.8176 22.9161 22.0461L22.908 22.0578L22.9196 22.0858C23.4703 23.4356 23.643 24.7948 23.4306 26.1528L23.4236 26.1983C23.3907 26.3966 23.2805 26.5739 23.1171 26.6911C22.9538 26.8083 22.7506 26.856 22.5521 26.8236C22.4539 26.8083 22.3596 26.7737 22.2747 26.7218C22.1898 26.67 22.116 26.6019 22.0575 26.5215C21.999 26.4411 21.9569 26.3499 21.9336 26.2532C21.9104 26.1565 21.9065 26.0562 21.9221 25.9579C22.117 24.7528 21.9338 23.5441 21.3621 22.3144C21.3088 22.2002 21.2851 22.0744 21.2933 21.9485C21.3014 21.8227 21.3411 21.701 21.4088 21.5946L21.4135 21.5876C22.1181 20.5096 22.4098 19.4526 22.3468 18.4143C22.2931 17.5054 21.9676 16.6129 21.4135 15.7624C21.3057 15.5971 21.2673 15.396 21.3066 15.2026C21.3459 15.0091 21.4597 14.8389 21.6235 14.7288L21.634 14.7218C21.9175 14.5363 22.1788 14.0626 22.3106 13.4151C22.4561 12.6495 22.4181 11.8602 22.1998 11.1121C21.9606 10.2954 21.5231 9.6141 20.9106 9.1486C20.2165 8.61893 19.2971 8.36343 18.134 8.43693C17.9819 8.44682 17.8303 8.41086 17.6988 8.3337C17.5674 8.25654 17.4621 8.14172 17.3966 8.0041C17.0303 7.22826 16.496 6.67293 15.8298 6.32876C15.1902 6.00956 14.4742 5.87541 13.7625 5.94143C12.31 6.05693 11.029 6.87593 10.6475 7.90843C10.5935 8.05375 10.4964 8.17911 10.3692 8.26772C10.242 8.35634 10.0908 8.40398 9.93579 8.40426C8.69095 8.4066 7.72729 8.69826 7.02262 9.22443C6.41362 9.67943 5.99829 10.3153 5.77895 11.0771C5.58048 11.7942 5.5533 12.5479 5.69962 13.2774C5.83029 13.9284 6.08579 14.4674 6.37862 14.7579L6.38795 14.7661C6.63529 15.0076 6.68779 15.3844 6.51512 15.6819C6.09512 16.4076 5.78129 17.4891 5.72995 18.5286C5.67162 19.7163 5.94695 20.7476 6.56879 21.4873L6.58745 21.5094C6.68129 21.6188 6.74165 21.7529 6.76131 21.8956C6.78096 22.0384 6.75908 22.1838 6.69829 22.3144C6.02629 23.7564 5.81979 24.9418 6.04262 25.8751C6.08267 26.0692 6.04541 26.2712 5.93875 26.4382C5.8321 26.6053 5.66447 26.7241 5.47155 26.7694C5.27863 26.8147 5.07565 26.7829 4.9058 26.6808C4.73595 26.5787 4.61264 26.4144 4.56212 26.2228C4.27862 25.0351 4.47112 23.6748 5.11395 22.1418L5.13029 22.1009L5.12095 22.0869C4.80501 21.6203 4.56921 21.1041 4.42329 20.5598L4.41745 20.5376C4.24037 19.8585 4.17069 19.1558 4.21095 18.4551C4.26229 17.3934 4.53529 16.3061 4.93662 15.4334L4.95062 15.4031L4.94829 15.4008C4.60645 14.9131 4.35329 14.2889 4.21329 13.5983L4.20745 13.5703C4.01456 12.6069 4.05174 11.6116 4.31595 10.6653C4.62162 9.59776 5.22245 8.68076 6.10795 8.0181C6.17795 7.9656 6.25145 7.9131 6.32495 7.8641C6.13945 6.12226 6.18612 4.6791 6.45562 3.58243C6.60379 2.9781 6.82195 2.4741 7.11129 2.08093C7.42629 1.6516 7.82762 1.35526 8.29545 1.2211C8.60579 1.13243 8.92545 1.15226 9.22529 1.2701V1.27126ZM14.0273 11.8763C15.1193 11.8763 16.1273 12.2414 16.881 12.8738C17.616 13.4886 18.0535 14.3146 18.0535 15.1371C18.0535 16.1731 17.5798 16.9804 16.7316 17.4961C16.0083 17.9336 15.0388 18.1459 13.9281 18.1459C12.751 18.1459 11.7453 17.8438 11.0196 17.2896C10.2998 16.7413 9.89612 15.9713 9.89612 15.1371C9.89612 14.3123 10.3605 13.4839 11.1281 12.8668C11.9075 12.2403 12.9365 11.8763 14.0273 11.8763ZM14.0273 12.9216C13.2179 12.9145 12.43 13.1818 11.792 13.6799C11.2541 14.1116 10.9496 14.6541 10.9496 15.1383C10.9496 15.6376 11.1946 16.1054 11.6613 16.4613C12.1921 16.8661 12.9726 17.1006 13.9281 17.1006C14.8603 17.1006 15.6466 16.9291 16.1821 16.6036C16.7223 16.2769 16.9988 15.8033 16.9988 15.1371C16.9988 14.6436 16.7118 14.0988 16.202 13.6718C15.6373 13.1993 14.872 12.9216 14.0273 12.9216ZM14.7996 14.3333L14.8043 14.3379C14.9443 14.5141 14.9151 14.7696 14.739 14.9096L14.3983 15.1779V15.6983C14.3977 15.8141 14.3511 15.925 14.2689 16.0065C14.1867 16.0881 14.0755 16.1337 13.9596 16.1334C13.8438 16.1337 13.7326 16.0881 13.6503 16.0065C13.5681 15.925 13.5216 15.8141 13.521 15.6983V15.1616L13.2048 14.9073C13.1631 14.8738 13.1284 14.8325 13.1028 14.7856C13.0771 14.7387 13.061 14.6872 13.0554 14.6341C13.0497 14.5809 13.0547 14.5272 13.0699 14.476C13.0851 14.4247 13.1104 14.377 13.1441 14.3356C13.213 14.2518 13.3121 14.1985 13.4201 14.1874C13.528 14.1762 13.6359 14.2081 13.7205 14.2761L13.9713 14.4768L14.228 14.2738C14.3122 14.2072 14.4191 14.1762 14.5259 14.1873C14.6327 14.1984 14.7309 14.2508 14.7996 14.3333ZM8.91962 12.0944C9.47729 12.0944 9.93112 12.5494 9.93112 13.1106C9.93143 13.3796 9.82495 13.6377 9.63507 13.8282C9.44519 14.0188 9.18745 14.1261 8.91845 14.1268C8.64987 14.1258 8.39259 14.0185 8.203 13.8282C8.01341 13.638 7.90695 13.3804 7.90695 13.1118C7.90633 12.8428 8.01252 12.5845 8.20218 12.3938C8.39184 12.203 8.65063 12.0954 8.91962 12.0944ZM19.0766 12.0944C19.6366 12.0944 20.0893 12.5494 20.0893 13.1106C20.0896 13.3796 19.9831 13.6377 19.7932 13.8282C19.6034 14.0188 19.3456 14.1261 19.0766 14.1268C18.808 14.1258 18.5508 14.0185 18.3612 13.8282C18.1716 13.638 18.0651 13.3804 18.0651 13.1118C18.0645 12.8428 18.1707 12.5845 18.3603 12.3938C18.55 12.203 18.8076 12.0954 19.0766 12.0944ZM8.68279 2.68293L8.67929 2.68526C8.54413 2.74404 8.42872 2.84042 8.34679 2.96293L8.34095 2.96993C8.17995 3.19043 8.03995 3.51476 7.93495 3.9406C7.73662 4.74793 7.68295 5.84343 7.79029 7.18626C8.29195 7.03693 8.83912 6.9436 9.42829 6.90976L9.43995 6.9086L9.46212 6.86893C9.51579 6.77326 9.57295 6.6811 9.63479 6.5901C9.77829 5.6906 9.66045 4.6161 9.33962 3.73876C9.18329 3.3141 8.99312 2.98043 8.81112 2.79026C8.77355 2.75073 8.73168 2.71551 8.68629 2.68526L8.68279 2.68293ZM19.3858 2.7296L19.3835 2.73076C19.3381 2.76101 19.2962 2.79623 19.2586 2.83576C19.0766 3.02593 18.8853 3.36076 18.7301 3.78543C18.3918 4.71176 18.2786 5.85743 18.4618 6.7861L18.5295 6.89926L18.5388 6.9156H18.5738C19.1528 6.91575 19.7288 6.99904 20.2841 7.16293C20.3845 5.8516 20.3285 4.77943 20.1348 3.98726C20.0298 3.56143 19.8898 3.2371 19.7276 3.0166L19.723 3.0096C19.6412 2.88665 19.5258 2.78985 19.3905 2.73076H19.3858V2.7296Z",fill:"black"})}):(0,R.jsx)("svg",{width:I,height:I,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.22333 1.27175C9.47533 1.37092 9.70283 1.53425 9.90933 1.75009C10.2535 2.10709 10.544 2.61809 10.7657 3.22359C10.9885 3.83259 11.1332 4.50692 11.188 5.18359C11.9225 4.76803 12.7377 4.51499 13.5785 4.44159L13.638 4.43692C14.653 4.35525 15.6563 4.53842 16.5313 4.98992C16.6492 5.05175 16.7647 5.11825 16.8778 5.18825C16.9362 4.52442 17.0785 3.86525 17.2978 3.27025C17.5195 2.66359 17.81 2.15375 18.153 1.79559C18.3447 1.58823 18.5792 1.42502 18.8402 1.31725C19.14 1.20059 19.4585 1.17959 19.7688 1.26825C20.2367 1.40125 20.638 1.69759 20.9542 2.12809C21.2435 2.52125 21.4605 3.02525 21.6087 3.62959C21.877 4.71925 21.9237 6.15309 21.7428 7.88209L21.8047 7.92875L21.835 7.95092C22.7182 8.62292 23.333 9.58075 23.6585 10.6926C24.166 12.4274 23.9105 14.3734 23.0355 15.4619L23.0145 15.4864L23.0168 15.4899C23.5033 16.3789 23.7985 17.3181 23.8615 18.2899L23.8638 18.3249C23.9385 19.5674 23.6305 20.8181 22.9142 22.0466L22.906 22.0583L22.9177 22.0863C23.4683 23.4361 23.641 24.7953 23.4287 26.1533L23.4217 26.1988C23.3888 26.3971 23.2786 26.5743 23.1152 26.6916C22.9518 26.8088 22.7486 26.8564 22.5502 26.8241C22.4519 26.8087 22.3576 26.7742 22.2727 26.7223C22.1879 26.6705 22.1141 26.6024 22.0555 26.522C21.997 26.4416 21.9549 26.3504 21.9317 26.2537C21.9085 26.157 21.9046 26.0566 21.9202 25.9584C22.115 24.7533 21.9318 23.5446 21.3602 22.3149C21.3068 22.2007 21.2831 22.0748 21.2913 21.949C21.2995 21.8232 21.3392 21.7015 21.4068 21.5951L21.4115 21.5881C22.1162 20.5101 22.4078 19.4531 22.3448 18.4148C22.2912 17.5059 21.9657 16.6134 21.4115 15.7629C21.3037 15.5976 21.2653 15.3965 21.3046 15.203C21.3439 15.0096 21.4577 14.8394 21.6215 14.7293L21.632 14.7223C21.9155 14.5368 22.1768 14.0631 22.3087 13.4156C22.4541 12.6499 22.4161 11.8607 22.1978 11.1126C21.9587 10.2959 21.5212 9.61459 20.9087 9.14909C20.2145 8.61942 19.2952 8.36392 18.132 8.43742C17.9799 8.44731 17.8283 8.41135 17.6969 8.33419C17.5654 8.25703 17.4602 8.14221 17.3947 8.00459C17.0283 7.22875 16.494 6.67342 15.8278 6.32925C15.1883 6.01005 14.4722 5.8759 13.7605 5.94192C12.308 6.05742 11.027 6.87642 10.6455 7.90892C10.5915 8.05424 10.4945 8.17959 10.3673 8.26821C10.2401 8.35682 10.0888 8.40447 9.93383 8.40475C8.689 8.40709 7.72533 8.69875 7.02067 9.22492C6.41167 9.67992 5.99633 10.3158 5.777 11.0776C5.57853 11.7947 5.55135 12.5484 5.69767 13.2779C5.82833 13.9289 6.08383 14.4679 6.37667 14.7584L6.386 14.7666C6.63333 15.0081 6.68583 15.3849 6.51317 15.6824C6.09317 16.4081 5.77933 17.4896 5.728 18.5291C5.66967 19.7168 5.945 20.7481 6.56683 21.4878L6.5855 21.5099C6.67934 21.6193 6.7397 21.7534 6.75935 21.8961C6.77901 22.0389 6.75713 22.1843 6.69633 22.3149C6.02433 23.7569 5.81783 24.9423 6.04067 25.8756C6.08072 26.0697 6.04345 26.2717 5.9368 26.4387C5.83014 26.6057 5.66252 26.7246 5.4696 26.7699C5.27668 26.8152 5.07369 26.7834 4.90384 26.6813C4.73399 26.5792 4.61069 26.4149 4.56017 26.2233C4.27667 25.0356 4.46917 23.6753 5.112 22.1423L5.12833 22.1014L5.119 22.0874C4.80306 21.6207 4.56726 21.1046 4.42133 20.5603L4.4155 20.5381C4.23841 19.8589 4.16874 19.1563 4.209 18.4556C4.26033 17.3939 4.53333 16.3066 4.93467 15.4339L4.94867 15.4036L4.94633 15.4013C4.6045 14.9136 4.35133 14.2894 4.21133 13.5988L4.2055 13.5708C4.01261 12.6074 4.04978 11.6121 4.314 10.6658C4.61967 9.59825 5.2205 8.68125 6.106 8.01859C6.176 7.96609 6.2495 7.91359 6.323 7.86459C6.1375 6.12275 6.18417 4.67959 6.45367 3.58292C6.60183 2.97859 6.82 2.47459 7.10933 2.08142C7.42433 1.65209 7.82567 1.35575 8.2935 1.22159C8.60383 1.13292 8.9235 1.15275 9.22333 1.27059V1.27175ZM14.0253 11.8768C15.1173 11.8768 16.1253 12.2419 16.879 12.8743C17.614 13.4891 18.0515 14.3151 18.0515 15.1376C18.0515 16.1736 17.5778 16.9809 16.7297 17.4966C16.0063 17.9341 15.0368 18.1464 13.9262 18.1464C12.749 18.1464 11.7433 17.8443 11.0177 17.2901C10.2978 16.7418 9.89417 15.9718 9.89417 15.1376C9.89417 14.3128 10.3585 13.4844 11.1262 12.8673C11.9055 12.2408 12.9345 11.8768 14.0253 11.8768ZM14.0253 12.9221C13.2159 12.915 12.428 13.1823 11.79 13.6804C11.2522 14.1121 10.9477 14.6546 10.9477 15.1388C10.9477 15.6381 11.1927 16.1059 11.6593 16.4618C12.1902 16.8666 12.9707 17.1011 13.9262 17.1011C14.8583 17.1011 15.6447 16.9296 16.1802 16.6041C16.7203 16.2774 16.9968 15.8038 16.9968 15.1376C16.9968 14.6441 16.7098 14.0993 16.2 13.6723C15.6353 13.1998 14.87 12.9221 14.0253 12.9221ZM14.7977 14.3338L14.8023 14.3384C14.9423 14.5146 14.9132 14.7701 14.737 14.9101L14.3963 15.1784V15.6988C14.3957 15.8146 14.3492 15.9254 14.267 16.007C14.1847 16.0886 14.0735 16.1342 13.9577 16.1339C13.8418 16.1342 13.7306 16.0886 13.6484 16.007C13.5661 15.9254 13.5196 15.8146 13.519 15.6988V15.1621L13.2028 14.9078C13.1611 14.8743 13.1265 14.833 13.1008 14.7861C13.0752 14.7392 13.0591 14.6877 13.0534 14.6346C13.0478 14.5814 13.0527 14.5277 13.0679 14.4764C13.0832 14.4252 13.1084 14.3775 13.1422 14.3361C13.211 14.2523 13.3102 14.199 13.4181 14.1878C13.526 14.1767 13.634 14.2086 13.7185 14.2766L13.9693 14.4773L14.226 14.2743C14.3102 14.2077 14.4171 14.1767 14.5239 14.1878C14.6307 14.1989 14.7289 14.2513 14.7977 14.3338ZM8.91767 12.0949C9.47533 12.0949 9.92917 12.5499 9.92917 13.1111C9.92948 13.3801 9.823 13.6382 9.63312 13.8287C9.44324 14.0193 9.18549 14.1266 8.9165 14.1273C8.64791 14.1263 8.39064 14.019 8.20105 13.8287C8.01146 13.6385 7.905 13.3808 7.905 13.1123C7.90438 12.8433 8.01056 12.585 8.20022 12.3943C8.38988 12.2035 8.64867 12.0958 8.91767 12.0949ZM19.0747 12.0949C19.6347 12.0949 20.0873 12.5499 20.0873 13.1111C20.0876 13.3801 19.9812 13.6382 19.7913 13.8287C19.6014 14.0193 19.3437 14.1266 19.0747 14.1273C18.8061 14.1263 18.5488 14.019 18.3592 13.8287C18.1696 13.6385 18.0632 13.3808 18.0632 13.1123C18.0625 12.8433 18.1687 12.585 18.3584 12.3943C18.5481 12.2035 18.8057 12.0958 19.0747 12.0949ZM8.68083 2.68342L8.67733 2.68575C8.54218 2.74453 8.42676 2.84091 8.34483 2.96342L8.339 2.97042C8.178 3.19092 8.038 3.51525 7.933 3.94109C7.73467 4.74842 7.681 5.84392 7.78833 7.18675C8.29 7.03742 8.83717 6.94409 9.42633 6.91025L9.438 6.90909L9.46017 6.86942C9.51383 6.77375 9.571 6.68159 9.63283 6.59059C9.77633 5.69109 9.6585 4.61659 9.33767 3.73925C9.18133 3.31459 8.99117 2.98092 8.80917 2.79075C8.77159 2.75122 8.72972 2.716 8.68433 2.68575L8.68083 2.68342ZM19.3838 2.73009L19.3815 2.73125C19.3361 2.7615 19.2942 2.79672 19.2567 2.83625C19.0747 3.02642 18.8833 3.36125 18.7282 3.78592C18.3898 4.71225 18.2767 5.85792 18.4598 6.78659L18.5275 6.89975L18.5368 6.91609H18.5718C19.1508 6.91624 19.7268 6.99953 20.2822 7.16342C20.3825 5.85209 20.3265 4.77992 20.1328 3.98775C20.0278 3.56192 19.8878 3.23759 19.7257 3.01709L19.721 3.01009C19.6392 2.88714 19.5238 2.79034 19.3885 2.73125H19.3838V2.73009Z",fill:"white"})})},sgl:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 926 926",fill:"none",xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",className:C,children:[(0,R.jsx)("ellipse",{cx:"245.5",cy:"439.5",rx:"93.5",ry:"91.5",fill:"#FADDCD"}),(0,R.jsx)("ellipse",{cx:"675.5",cy:"202.5",rx:"93.5",ry:"91.5",fill:"#FADDCD"}),(0,R.jsx)("rect",{x:"400",y:"677",width:"205",height:"141",fill:"#FADDCD"}),(0,R.jsx)("rect",{width:"926",height:"926",fill:"url(#pattern0_2646_2652)"}),(0,R.jsxs)("defs",{children:[(0,R.jsx)("pattern",{id:"pattern0_2646_2652",patternContentUnits:"objectBoundingBox",width:"1",height:"1",children:(0,R.jsx)("use",{xlinkHref:"#image0_2646_2652",transform:"scale(0.00107991)"})}),(0,R.jsx)("image",{id:"image0_2646_2652",width:"926",height:"926",preserveAspectRatio:"none",xlinkHref:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA54AAAOeCAYAAABrj8/nAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAADnqADAAQAAAABAAADngAAAACtOeOzAABAAElEQVR4Aey9WawdSX7mFxG5nHPuxp1VZLFYS1d1dW29sbvULXVJbEvWYCwP/GBUPw9gwA3DHsMztry99G0Y47H8MAZs2PC8GzAwBXuMETwaudUaSqNRryxVqYtUVdfGJlncLnnJu50llwh/X8Q5l5e1qKkqbufyy8PcIiMjM38Zl4gv///4hzGaREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEREAEROBOE7B3+oK6ngiIgAiIgAiIgAiIwPYm8NJLJvutd4+488YUpm3LkV0vOmZUmKrNm1FTdIo5NzNf2rDR5P16UGRZwC9z3leZ8cFN6PjMtS60tclck5usrjzWvq2LwrUDZC8LP6o2qpEx+ytz4kSzaIyfnKu1CIjAvUUgv7duR3cjAiIgAiIgAiIgAiIw7QQoOlf31KVZN7OmHs7l3s+2dZixxs4462Zs7nNTm7x1ppsZO9u2oQzGF9ZkhXFtboOJxhEXzMiErA852a+tGeSZ79vMYTuMXBvqyrRrpgzXzNr59WdeMhvm5Wknp/sXge1LQBbP7ftu9WQiIAIiIAIiIAIicEsJLBrjzNGjLr/45kPetYdyX+9wbbsAxZgXwbnCGZfnIUO20gTbsVnWy4qiVwff8b4tjctKCMeybX1WN56WzQJzx1qbBWMyEwzWIaPwZCPVmlBbZyusq7S2tfWhcs7WwZoW+QaZNetN0/aHVd03SM87KL7x7Vp/2NZtNcRl1nEfS72d8+eqHd01c/RUtbgoyyjwahKBO0pAFs87ilsXEwEREAEREAEREIEpJgDRuTAaFRvOfca58A3b2scgCh+xEJlQkRSRZQgWOtRj33YyCNA8+CIzrWusN1kGhVk4Owqtaf3IOudMkcPACeUJ0RnNnFxF0Zn2oS/95EhwFqU75ITiRLYAodlio/bWDJE8wAFYSCFKKVRhFUVJV4IL54wJrzdN+OH+2fkm+/0jOOe4XHKnuBrq1qeTgCye0/nedNciIAIiIAIiIAIicNsI/OOvH+qtLuzo1ZeW50Pr57tt2JG7sKNowkLe+oWiyJ7OnH3Wer/P+HZPDjdZmCrRSxO2RVg/ffDQm22eF3mWF2XWQmjWoTFQmgYWT9NAS9Ye+g8S00JJJusmllFicj32tcWaUzqeHpeak/vjpceOb72B0dPTCtrgDhqU39QNkoLZwP5V3NfZLM/ehbX0YtXWq8i/6tuwZnKz3GZ2KWvnV1b35f2xNZQXTReO19FCBETgVhCQxfNWUFQZIiACIiACIiACIrCNCKx2ZmbNqN5rc3soNP4QLJKPWm8fs6E9YIM/UHi7aybLdkLQ5eizCa0JPRlg0YQqpJRsfWubGBPIWGhP00B0Gt8YD8FJvQkRaPKygC0TihH5HBSjiyIUJWE7mj8pOifCcywDKTjjPJGFsHnCuombcFk3z0oPvdiGJsD0GrqwsxrncFM5k59vg6+r4NdhXr0KwXzBunC29e5NG9zPhpl/r3PFX9wNa+iiOY5ZwnMbVWc9yj1CgH+7mkRABERABERABERABO4jAow6++zJZ7Nirr/LNmGXa/u7TV3vcYXvQjz2rM33uKzYDaW424ewG9bMvRBs+7Km3emC39mxrtPJ4F676flKwUnjI7QeBCSEJwRmiy6dcLaFyMQe0rzxEKbRxxVWT4v0KESRTqlJuyd/lHyxgQpRGqcoMpMFlNZOTul42mYSPXVpTaVOxf2mayANiTGdJTEd91Bh3sDmKvTtMnKcxw2fQa6LcNddhhV2fTgajaCPN3xWrGd5vtza7KIZuZXBgcuDxWMGClqTCIjAJyEgi+cnoaZzREAEREAEREAERGCKCVB0mn2mLNb8Qyb4JyHGng7WPw374B5otT2Z9QtZi8BB6JIJjYjunIaRZjOHCEKxqyYkJFVimAhJKLlopYxMoP4c9hyEJcUfBCTFIWIPJTNiVI+QqU0SlhScUUpCCXJK4pJnjKeYzHLwDyvuxqMpY8wEqydEJ7t74jgypDJ5AmYK4PF5ENUFQhgtIHUOZT0A3fxZFFhDlGJIltDHXW1gfx3C8zL6iL4ffHgjOP+K7Zh3F0aHIDrPSnhGylqIwN+cAP92NYmACIiACIiACIiACGxDAv/hkSPFAoY16Zy7vDuM6j2lr3bDB3bXjtmZXq8oZk1oHm5NeBixeA760D4E99M56MM5uM/2oDe7FGzRBRZKLTYaKTAhJLnNkLQ3NCSR50MTMjB589B4n/nGOjOekjRkKi0u4wmbZ21e57rWnBybrGMxm/lSaiovXWByDzfmT3bUeAwjusBH14CSD0MI0TXI1avw4D1XdDrvQaC+vzIYXNoYVctwO14xsISaud5l8+Dh1We6j4++9fLLSfWm29BSBETgIwjI4vkRUJQkAiIgAiIgAiIgAtuAgKXo3NX6uY1gn4A76tMQWk/BIvgU/E7n0QNyAZbMhSI0C7BPolukzyHVoq0SVk3oTcqyaNYECloUSQQLbtCsGPdwnJtMHqfFA+MFT9kqMLceuy4it6bGosaKdotwRBbmv7Esln49Dy2uTLk+3bh3Pec4HYUlGyzPC1mO/qJ4mGKmyGYQlGhn7f1BPNNT6D/6jVEIK7j6BVzvLGT3Ke/tm90mf22hWfnFhfW/oOiU8LwOXlsi8JEErv8NfuRhJYqACIiACIiACIiACEwTAfbf/MqbDx2orT3YMe1DmbEPQZQhMJB51NTNweCbA90873XyrIs+mhj2xHeom9AzE7qLYhPCLEaaHTcTuYLYDEl5RnEXj0BoTtZMvFHmXSf2cenXc3xQUG49cn07XmuzsM2NcYYP7l8/78Yt5kuCOonW8X5cIZ3PBJMvnYBh/oSrMLRolsMX14yGdb2CaLjLGA9mCR7I72fBvedaexZjhl6Cm/L7he2dOu/mrpgTJ5pFnHrjdbUnAiIgi6fqgAiIgAiIgAiIgAhsIwLsv9m6K59BtNavwR328wgG9Fwnc7u6udmBfpcY+cQWSMeImN4hKq3FCChj5UchORaesZfk2IY4EZ1j4ZnEJgvAFv9hTZvhR1kwqedi/pvgi16jf+3Esq4X9ksyf2xJUWGmYnj/nMZim3sU1+jXCcsqCEGAcqrrGum27Gb5bpcXO7IsP4wMz1VV22/b9jKynIax9JXWNP/y4Z3NenPkSDDHNU5ohKeFCGwh8En/arcUoU0REAEREAEREAEREIG7RWAREmlw5PF5jGuy0Bmu7Le+eWjOlV/JM3cEA2gexjAnD8NdtAu12YHahOiiTKTdL+k4NgbjvKkcKSJT6iRnsnZG6YfcaaJ1kFNcU7DFva15eHySHg+OF5MrT9KQB2XxklvPnhz98Dpd98PpN5Oy9QoQ2hTTKI4lwjIchSfEZLwfjEoa74fRcHlz6O8J/+M0cxyYpm4RvBcRcr27gsPvINtP8CRvjDJ7HkGVzueuPH/pZ6dXFtNjbb3wzdyo8ojAtiMgi+e2e6V6IBEQAREQAREQgfuKwNGjruif35370SMIHfsVjLf55SwLn+uZ8ASi02I0S19g3EpEpoWgpMiiyAMgij0Ipzj0SRRVEFZpGgs76i3mgyCLKVulExOoFCdrnsjjmxmxMT6ersYMnFKJaZtHsD8RvMi/tbiU54NL5ogX+eCBm9y/8Vwy4OVh9o3CMmBolwY+thzmJQZWgtUTVmFccfzj7WM8UgwW6jro6Amk88GZGR/s7jq0n2lM+AX4vx6y7JVB3f7AHD26Fo4da2+86k3eqrKJwDYjoL+DbfZC9TgiIAIiIAIiIALbm8DionGd/+v5Hbmtdtrh4CFnq4NltziUZdkh31ZPBNN8pmPN/tJg7E2MpxlntPgopKLwhIiiJqSAi66ltOgxRu1YkDKdhynImI9HkTFZB7nNKZ4/XrFQTiwnikiewRMxb+7HHMw0nnkO7+P6PgXux03MlQ6Py/1Qxg+fm55xa8YP54mXRxYOv8LoveRBMc77TP09wYLPhxugKOWaQjTu0zKKi8BZGR06LfbMqPXhauvsaWy/BYPozxrv37F5cTnPi0tZMbjw7eNXEaRIkwjcnwRk8bw/37ueWgREQAREQAREYFoJvPxs7np2f6jtk9b6FyGDXii92YdIQXsx6mYXOgkutS36crYQRBBHptkUUemRk7DktoNFD4FyYPUMmDHeJsUXfhRi/BdlYdqM29eRxSPYxcHJEW5ym2qOh7fu81CcJud9eB8Rdj92iiJycnyy/lDueMGYekP+mDI5NllfPzneLgQnRCJu2UJY0p2WIhT70JrUnR4sG/T1ZPClvEQAYIhPj/yweWKT+R3tol2cuj9jRNzWPw4/3C+hkNMYfuZEY9pXR1X5I1xVwvM6em3dZwQ+/Nd3nwHQ44qACIiACIiACIjAvUxgETLnyq88MdcbmIW5vHqgbMzBTms+gx6ITxTeP5fb8FRhw1zuzGwG9YaxOCmVoP3oRtugOyJGpEQKxSRFVJKdUG/4F7eRCFdRzEjCcVoe0w9U4n6ik/TkRPVN1tfJISvyU7amElg+z08qlOvJtHlgnID8USlOjn/UmtZRpMfLxkI/kIlpN6bfWOSHj8cCUF48C2voTNp9o8ttTKOFEwxTBohMClE8X5anvp8QlvF2onjHmXxqGn3ppgsh38Abt4+zl+HkzOBDb8MK+jrmd4eNv7peIyjRnD+3+Oq1a/E+tBCB+4CALJ73wUvWI4qACIiACIiACEwvgXNHjmQzo43d3jWP2tb9irXtEReaRyA6H57JsllErO35uspgkoO5Djopg2war5MYoiCCDI3CiS6lyEPBNU5jFFeoLQjW1MeT4iqpvCi/kH+8TysgMGLokHQ+tzFT4qb4r9zHj6eh7OiiGnNg/0MTz0wTi+eZ6WrjxC2rSc7r4nSSsiXTBzaZI5X7gQMfs8t7TQIS5/GewYSutRTvvDfEGTKdMgcjdu9EOhUmGfM69FLmOUwjS2wjmFPWyfNZbHXhcru38v6zeMKvgtxZ5HizyO1rflT8G2SW8AQETfcHgY/7G78/nl5PKQIiIAIiIAIiIAL3KIG/98QTndKsfwbC7/HZMjvczd0jvcw9XTj72byp9+RtuwsWBFdA6sFeCfGDwDiwcLawcOZFYTKEFWpglaNlLlowx4KQoinHGTnkIt1F6VIaXWyTgoJsonhCZihIZMPm9X32yeQvCS1KrDTHbGOOE0vjzQg/nhcLwSpuj8uYrFj+9emjckyOTo6l9Y3nfTDPZH/rGs+KG09WYZQBRqmvJy2eeF6Iy4yCHv9g+4zikwKU+1lG2Q0iLcjEC5M2SrJ4O3RjRhpmBMENA8Qtuhay/AxK/Llvmx+Ftnm1qIp3/6N3Ll7aejfaFoHtSEAWz+34VvVMIiACIiACIiACU09gtlfNNIP26+g/+LdK0x7qhXBw1tm5XuFmbeZyKErX1JUdtQ2scYXJ89yMBrUZjCoDkRqFD3UQxRDyQzw50zYQpgiDw7wIRgQrH+QqBtCMtj0KUOSPopKKKqpOpMQCKEIpsCCZqCiTwoqMYzaeB+GWzo/JLOHmppgRC568ZdrcjQqWx1PKRNhuyYrNyZU3z7rx8C/bg4aMnrV4xhxDncbicL0osvHYtHyOGrrWJhFK8dlA4HPyEJeUmuwni8PgWoARxGkzwi6i4uYl+4BmtvUzsJl2CoypCvCHKh8eGvn2UJO3/w+KkfCMNLXYzgQkPLfz29WziYAIiIAIiIAITB0BWjr3LAwfhkL8XNbNv4pum1+YcWFXx4Qdua8zWzcZhQ0j31hHt1fIImxjkA/j2ccTljmuKY6gKTHCShKEHI8SR6OAZDTWiVCinktyjRuYo7AkNipC7nOFRRSATJ9MFKHpXAovTjEr16nAmPbRi5Q/HouXQAnxnJQe73SchbeUpi3nTJLiepJhsr7h4M3txKJ5VT5PsmTSpTimTO4D63iFuE+bJvp1jh90Mx+BRKGKgqJOx5EkUKn90TkU4Z+CL60PGS3N41dz7X9/et9M7d2ZYcdcWigOVd8+fry+uRtXLhGYHgISntPzrnSnIiACIiACIiAC9wGBh3b4br8NXyqc+c25LPsKhkU5XPomK9o2dxVcZ/FzOYQP+hiy/6XFNmKuGhjkohDKYl9EptGFFsBg6aTopKhktFYHixzdbWv4fdLWSVlKsUWhlURnEnBR8PF87LIPJMVqVJoTkck0HKbWihtYcdoUnfHiKe3DS57EKQnOuIf8m6ksFDeQ7gTb3E0nXC8/7k9Sxwexmlw23gfPG9/Q5n1dz7q5FUthBsyMBMxpU3hyh7cAlRjvEIKSVl+65fIOyYnnw6bJJQ/GE/gBgEWyryhT8km0XFiocYlOGcwD3tkSEXB7sBY/XOThj2rbfWW1Pst+nxKegKBpexHg34EmERABERABERABERCBu0Tgn75kslfeOLww2xvtLEJ9AH0FH4NM+VVIxK/OOPdwx9gHITpNTgGDPpwWa4pOer5O+lxOBk6Jj0DhgzkG9xmLoBj0Bq6gLtBOB9dQuoVSZ0IZRfkYRSctfGmO5UQ1NS4HCRRdOCUKLZbNH7NQfKU93hCPM5VNzHEzE7uT/EiMUxRr43QIOKo3Pko0yuKsKDl5NhKp3XDD4wcZF8lCeJW4jM8Qd2Ia74cT7ibt89kwsSDeEu+VE+9zkpf7RMKr0CU5ZuFxpDEPz4jPyA0I0HHJ8YZJLF4xuiIj14Q5FTDPJ2f84rArWLMvKAumazIecASFeaW19nSw7idNZl7vV9WZ/qg+U3fducUTq8u4mCYR2BYEZPHcFq9RDyECIiACIiACIjCtBE4uPVp0y+oB6MmnoLy+AWny1cw2hxD85wEIlg5ta9CLUf5QNNLSFi2VOIGpUZpR4VBgxei0TIWbLZMoEMd9M5kllkI1hRKSykqbxiIAEXUQxRZOjOIJ58XzWSZPxUTrXYPj8PXFeJe4U+TnXTAHo8Ky6CjDotmRZzEPjyPHxGLIcjavA59gh/FfAgfKhKpmHB6MRoI1pngi7LmhiKqNUpuPPrkZZqGa5AWQFvUethkwidtJAPJ5xmWNT073SZULyTg+FyWAI2fy4vlcMxHnN7EA3GYcrzOWwmeMnPD0UUAyb7wxFsLttMflZp9YPCJyx1wpaxSfRWHdXvS1ncNVDuJ+XsC1X4cIfcWN/J+gGAnPSFOL7UBAwnM7vEU9gwiIgAiIgAiIwNQRYF/Obnf10HBp7ZG5wnyu58zTEFlfgKh8ChJnDgJoJoWtmTwaRA0FTlREEDBR3FGWpjQKzBiddpKdCoj/0MeQeTd/USCiIHQATaIVJ8Sy0pqWuaTxkotuCwvdRIDyatSxvA5j5fI0yjLuww5LOdY0DKMLJYtLU0DiKrZFP9QNSMxVnL2OrBtIpX7lAKM10mpcoYbGa1AQi43Ck+IOujJHuSVUYgfX6qLMHq7Wbb3ZAZG+E9Kxg7uABzHslJlFv0mTIQ80Me8SihYFYp93mNDxnuOz4q5wI1EU4hmYKwrRyJe5eRbzxhUzYI8Z8Y9ilEVi3wWwYu6YgPwxPR2L+dMpzMpcfJ54rXRTvHMUYUIJ4V3grJks2PmZvOh0iqJXAeQ/+qybGbX+F4vvrCv40CZbbUwrAQnPaX1zum8REAEREAEREIGpJpB3Ls1WdefLGCLlG0Xwz3aN/wyk3g7McxAj7MFJmYcZuiWKJUoXChccmQihqGigtmCN46gedPucDPPBfLT+RcsnFE6UTrQ6QnBRfEUpRiEE1cQARXENUeoQ7TZeFfka9EesEAnXIdJrFMHxOhgihKqRBSM/Z256LBrvm9qHPoqrUN4IF6sgAWsMTXKmbZtTuPrZzLozUK+DwuWVgyAtTLteGERNym3TNNYXrWsrU2G4F+iyLOSNycoagqx1YWfdNHthFt2Liz2OR/scnncn7r3AkCZlnmclbqUDa2wHfEpvbQH9iUviHsfPyOeMghHPlvFZIw9abRGxNhpck0Blrji+KTaoYZE9sccz0urLBDInJ5JksXHGeXFCfhxIJ01WsYzr4jO9zZQJ7wPfGRB4yLn5siyeRCjcXSuDwQ5QfQDP9f+iCAlPQNA03QQkPKf7/enuRUAEREAEREAEpowALZ0LxcaDhbdP5j33Qm7DCz1TwbXWPwC1CdkHXUnlgylZxpJYSSlpGYVRVENRTqZ8sBNSPNLuGBOgaShdk6MoxWY6zmi30aLJ6LcIMEQv1yRwObInysPhKL9YvscAIJRWwbVN62AUtBXOr1DUBjTYOnLAgmnXcMIAhQ4gejGbAQRvDbfSGmfWEIE1xOjSsA7nfagvocxLndINTVHCidUP5gfNYDRTtHtXe+1anoflTicc6J6AajVmtGLcaO2BvJ7fmMHIpHMhNDvaYHeij+ovcJ/v4nnncHM5/HGh3W2ROwvLoUW3WNvFPIP7msVzz8KrdgHqeCeelhZSCLysQOYSFsbM4URQg/GTEp/ut4kYGSerKNNxBA9GhuQRPwmMxfwEN/PQ8hvXSOT5cZmS4geDeCyaPVOueG7MiUy4GMrOnW9znMsQUO0shsmBa/Clf3LkgRGU+bn/5MfvX+GZmkRgGglIeE7jW9M9i4AIiIAIiIAITC2BPXNNbzR0z8M19Nfm8+Jr3cw8k7Whg+BBOX1FxzolipyoSeKTUsakKVoyx9sUQfzBzAmVw/6GkFAsg4VAL8XxO2EKrXGMM411HGIlg+jk7CH9YGY0JSyaMBhSKWGm2yktp9iGjiuyDvt1trX3o1HTrA7begV9EN9H2WdxsV/ANvsLiOVL3Sxb8iYb4ryRzVvkRudM3EwD02HwWc1hRqumW69X1+oFXGK13Q1JeMovHzL+xDETnk1XN98Zr/mI38UdPGMuNlcPmer8FbNmZvctmY06n82akzCMdlE0dbbzCPMLYQhF6J3PQ+ZdZ6612Q6MWfoAnvFQaP3jyPAk8u+B7oNR0c51rd0Jv9wuhzaB4dPkcTxOSEVaNSkO4ycASHGwYRo5kU/MF/PiGDU8oYIXoVM6YiuKTFhox2KTL4OpOMa0uIkF1xC6vBRzROsptn0NcNZRch7MijJvrVlvfZZjdNBjyCbhCQiappMA67kmERABERABERABERCB20SAuuLbR47ku6tqzvnlRzCMxmcxkOOvdLLsS/Nl9mTH2UO2hVeqr6DjaH2k1e16Ey26xWJ3SxI15aZgodCMYjPqH1wN+/xxsjncQTFXsGrC3xVlJGFEGZNBUMGMaaAoTYFulAVsbHBlxb8W/S3tACUM0HMSNsdsBabOZQjP5VFbr21UwzXv3JJ12aXa2QsQRedhQrxq5sprZv5ctXgsDikar38XFnZxERru9w92Td3OmWGzOw/tfkQDPohep4dh1lyga24nL+e73e4u4Njf1PXBDC7Ondx00SsUetSXKAHGUAjJ6I47Fp41hCcEaAEXW4rPaB8m5onwpHyEimQShSs6tkLkYz++O67Bntt8v8yFf9iNHwuQDe8QdlTqaApfHoFSB/sNXPU9fB/4K7ypP6/b5pU6M6dXdu68YMyp5i6zvguvV5ecZgKs75pEQAREQAREQAREQARuE4GXXnope+zcuZmsufiw7Q//TseH35iz4dGecwdmMttDh8QO7IkQIuhLCVFCyyVVSRQwXIzFYhIw3KdYiSsIFdrJYJzDkj0OeTqFp4fIZP9OmDGj1bOixZNpLBcns8+mo7CJZ9NxlIFjc7MxGK5v9IcbOH4xy4qLsFW+hX6eb6Hf53vwW31vJbRVPdyoXGkR+8bVrs2rKzu71Vx7sTYnTPMdXB13wbu+m5N96SXjfuvdI+68OV90rw6Koa2hK9sOzK9w5jV2ZrY3Y8rezsFg+HQ9Gn4d/rZPzBRub7fMdyOyz072FYW1FM8AvhCZFJwtLJ60cOY4GMUnBChdk3mM7rlJMPK9JcZJdKbt9O7GwpMvb4KI75EfDpCShCys0DU+ECAdzsC0trZVG4YQ/dcQeekUXJZ/1jrzL6qi+YErd2z8gx+chYuzJhGYDgL4a9EkAiIgAiIgAiIgAiJwqwlQU9DSuWfjwkLlq6chVr44k9vfLJ396pw1O2eNmS3REkNgHYgWBreB22UUJVuE51jEULhQ41CycM1FEp/R0XZsLWOGcSYqF/6DDyktbRRBnBl4qGGU27EbKSLGjhCEp4LsuWxDcWU4HJ3v94fnszy/UuTdK6PQnhmNqtNQXOebmYfOmxMnmsUkb3kTUzstPvts2XFrs2trq4+E0cbzndw+PFtmO3vdchfmPXCZ3de2fj8ecDck/Twsyh30cI0CEcGR4itIgYquI4juuXxfYM9t/uJL4DbfWXw1WGCf02QZD2Enp4UVr97DCs1vD3gHqA9ZHL4GJujau+wa3G5PI4DTsWHb/hC15S274M+sdnb3F4+dGsZCtRCBe5iA+njewy9HtyYCIiACIiACIjC9BL710kvukZU3S4TbeTDU9TehKH4LLp6PzLps76w1eRfSw1FsQnRScFArRnUCsRGYQPMlVQnyJQfZdJgpKR8EJeULVE0LMcnOm8lFF4U79NmERS5GtaVgguUTwXTQFxRWT1hWWToEUhj4ejDy4Wrtq1eHtX0VB0+iV+HJNpQVOpxWZhiGTW6GptlZfefECQQL2iYTBPTo6NG10p94e2OjvDDbbTugUtTGzqEv7O7MZ08h2NDXMJbLc7BEPs5IuQX6ykZxCASI0ItovxVwUcRDiDKkMM2WWwHh1VBj8tMAXaH5fvlhgRGKJ98HIk2m4bz0/iciFWtarFkAVpCgOc7ZCWtrgb6sHVhtH60y+72q6nlTVedRjoRnhKnFvUxg65/HvXyfujcREAEREAEREAERmCoC/+VTe+eLkD/trP9yZv3fLjP3tfkim5/NXK+EYIGCiELQYlDK5DBL5RJ1ZBSenuITcxShUcFAjGwSSE24KEkpZBjRFsITg1liTpFoGaWVYiaew+g5UDfoJ0h7Wl2H5lrjm6ujEN4b+PbdqjFvLA39m7CsnTr4H4zeQz9Jnnb9cpvX3d4bf+8J05nL5+fmys4jMyH/PCzSzzpvnimsOQyq+yD8FjDkSYmxUbOqTsLTQdBbBGoC7iQUiQ3gEUcIupFCE+sPoUzikzRpHd18m+O8FKc8n6dx2Br8g3s04txmWTtqfB8Bmy7W1v0I4vOnbeNPrDf+LdO45cW3l1dZpiYRuBcJwGldkwiIgAiIgAiIgAiIwK0m8Gu7uvsRpfZvY6iPv7PQLZ5eKMv9sxjCo4uOmc7XEIqY2bczutiinyX7EtL0hX/RbTOucVcTS1pSJ1tukxkobrCCUOGvKDoI2dpBkQGBgqBGKUTRn7OBAEKnzNBaN/TWrQ2a5s2VwfA4BMwf5iH/Z3DffL2pyzOl6V/9H/55DA6EUu+/6d9ZNuHSI1W9dzCzmvX8maZ2Z+GafBns+qNR3UNfyxmM61mazOaMDozBT5JLLIXn+MeXwj2+rjhPhOXmV4DENY3NyrfG940F1SXWGdygC1io4xijfLewUnNGkRSyMK7in3O4D/MAzjqMfrh5FdoGQYnX/9Wl0dVUupYicO8RkKvtvfdOdEciIAIiIAIiIAJTTOAff/1Qb7TuDjjfPOfb5suwlj0zAzfJrmnLnH056Z4ZIDgtxAS0JkUHhSbH16Ta24x+irQoSKhGKEx4LK3iLgXndfECAQMlgjEpIVIQhobWVES7wYRYrL5GVNtrw7pZQSzWs4hmexZRUt/tV807mW1/9t+dHr6ZilWcmkU6th6nc+tlvCCztvjozoHr2kFeh5W8aZZB9ElYOB/JWvsgAO+E6yy66/oSrrT0a8Z7walbRSf2xq8OWzjCnS0vke8w+dnyWBKviCCMfp10wWZevmRUE1isbZp5CoZ+ZdRdcwDydhb9dQe0dOOE/j96fsfy7GBf/z99+20Og6pJBO4pAhKe99Tr0M2IgAiIgAiIgAhMO4F2o563ofMV9Av8jfkifwYOknuK4IsMErDFsCkNLJ15SUsZXDTZ75JyBYNfBo+oqTBvTgRIFClRjGwlQgsZpAf1CGaey7Wj6MQPo6Ggy1+FwxQi2PfNsAl2pV/Vb66NqjeyNjs+W/b+os38ep21G+WGWd9aurY/QODRa+t+ad97IfQvmZC/Vtvm8LBuv1S09vMIEvV0Yd1h6zEeqAvwpsYHBQjP+AEAYpFrTlFrYhHfa3p14/cXM8X3F7PGd01LNa3hHFaH7xTjukBU5rBacw1rq2ngmh0wZimu7WD6nEW/02dLREeG9frC0JRn13cPMNSKkfCM9LW4lwjgfyVNIiACIiACIiACIiACn5QANaA9ejT/2rzf8c0596Rv7Fdns+zFTua+0nXm4dKGnVloHSygMGBhVEaYshxcM9kvkO6aFJiwpCVDGPchNmJUVCjKqC1xY1xPtill0g+yBCdTnMQlOhnSWxMzr7TS+HARRrPXW2t/MmzqV65Vw1eHwb/22udXT+46Nrr6318za8f6BhFtNX0cgWOnjD+21K/++Fq98b3V0dUv9Kp1DJ0ygPRbxYeFq3hdK3ifI3w4oJmZ4Z1QGfAdAN7UFJ5JfKa3df39pavF43x3KAQrfD3g+8aPVmvUBweRCZfaOJbo9bJQDxh0iMdxhfTPdLHbwbeLQWja1rXt8N9+cH71sUMb5vj5aIL9uMdTugjcUQISnncUty4mAiIgAiIgAiKw3QicxDidpv+L3tz6+sMYdPF3chP+vdki+/JMlj3WMWY+hxumpTUTLrYUnLR0oo8gxCVdKltaJYEEAgNCYyIwKUaTDJkIznQkSRjoFGTYKjopLzzTHDww86JBAJpTq4PR6xgD8g/zvPi/EVLo1dX+8O2Zpl36335iqmOTYrfby7jNz/N3P2vq/sCvoCPtmW6enWzq9tSoolUZahDdLyEQS7w4DMBp0bWX/XYpLMdvbaw8o8U6qk28R7xnvPYoPPm+42tBGl1nc4zjySFVOFGMpgjFY9HJTw0UpZCeEKmcM7jozuGjw27o1+VV156fr+caiuZYgBYicA8QkKvtPfASdAsiIAIiIAIiIALTS+DZ09+fzTfcZy2i12LQi68Vzn4R0VB3FBincxIXKFkxKRQgLpAY0L9zIjSYRAFCV9mxNkkwkEjLV8yHNUUJBSllTLSQYZGGT6HnpakgfYZQOnCzdOfhXntyUDcnrWt+ujLzyIln3jnR/gMESJ1eyvfGnX/7uGHfz2vG9DEbs/gZs2qaPBTBXsnL/J02ZI/inTyOF3QQQZ12YbsHEyXfFF5NegaOp4oXh28FnPnex+8zvmO+XdaTeAaOYz0+jymMkss6xVPw1uMaxVmIzQ6i7h7s4mQMB3NmoQ6rIbgTi4vm7e8sxiJuqFosQpMI3GkCEp53mriuJwIiIAIiIAIisK0IdNfDTtgtXyxC+K1eaZ/qWLun43yeRYHBXn9wgYVZi2vYJSEYoBqimoBKQCRbBo3J8IvDn1CMQCJQiEapiTKSG26ydEXVioMTKxqFCRw8A6LW9itvlkLV/us2M3+OALbvwgh2qs6HKwZjVn4rFbetuN8TD9M118ph8xc+677lfTZTOfcYPha8WPr8KxhL9Vm8qB6DPXEgm2jpHtcJDGuD9worJoRkgHWTHx040YrNjwnUoPDdZUJMZ4RbfpaIepMHITrjBwkGIcKRHJUIWXoItbsfJ30dFthZBK8amZefPfWtl0605mV9dIggtbirBCQ87yp+XVwEREAEREAERGBaCfx9RK+d3Vh7cBSaz8OsdaQT3HNdY3Z3EVmIopOSEyIgLtHlD0IB4oLKgYICG+mXtmISBEVyn2Ue5hqLUOqPsdgcFxDFKYZMCYhOO0AE1DWIzzdqb/6q9uEH1wbmp6bbXlo8P7ycStLydhFYPBH7yF4xZrgM66Lt/Z8zK9Zn1JFN1npEMbZFad0cXl+XIpNWS/6Ldk0oRb7XNPEYLJ3xg0SqIRNrN7KxAoxn5o6Sc7zGeVGceqwQ39bYGTTuH0X/YvYYfW+3uXD56Ml9p182Sww4pEkE7ioB9fG8q/h1cREQAREQAREQgWkl8OKBzl7YpV7MjfvNGRu+jPE5D/es6RToeMfAMBQXlBjUEhOpwP58Ew3B52YOCpFoj6LnJPrt8VxauuKP1i1MjGqax/5+yRrWttZAZLaIsHq5P2pO1W34l7XN/1mb+5N1rzhvsqv9Y0uyckV4d2hx7Jgx35iv69KWl5uq3RjU9XwbwnxelrNZns149OflzBfO98z3ifR4d3zNDsGhNusMU2NFQTrWtIdCScZ1rC+sU0iPtYPKlPWFUaXwBSLDGKOYurCFdvBRYh7Bj678wdLwTLyQFiJwFwlIeN5F+Lq0CIiACIiACIjA9BFAYz9GsS1HFw/mrfkmotb+as+Zw11rdzKiDCLM4KEoFagOojSg/BzPSU9E8cFszMMpqlOcTCtYNHExB344n78MYpSClHFTW4+BO7xdg7Xz0qj1r6Ev5w/qEP5sqT/zysG9V67+F6/1hxKdCeudXh67ZprvXa02vlFU1Sh4KEnnizLPgrM57N/UjmNvQ36doGEUNQPDo9Aszu1UH1KdoZhkShSd2EqydFxfeCQKU65ZffhBItZMC+WJKugKmMU7ONDDRZf/1oMLV3/7YBH+8MJweKeZ6HoiMCEgV9sJCa1FQAREQAREQARE4CYIvPyScbMrywhYa3ZAFB5CCNPDdKeEjoACCAZDLBrHjppxWIxUYAwbFDUDxSTSolBgv08OnQFxgf00vArEBoPRQHxSlrAfIEUJ/lGJokgKDNsieNBFjNb5cyjVPzBt/cfW51deuHhxePIic2m66wTmzHK23v5Z1WsvLI8GV7uhWJvrlM8Xzh3ydeMw5AliUaHXL8UlhCerjslZEfj60uxQj1hlJu7XcTulQE+mDxLj7xXxuwXHhOUZ8Sx08MX4nvvof9ta9wIsr31XdX+K4mJQJKw1icAdJyCL5x1HrguKgAiIgAiIgAhMKwFIAvtveo/Pm+HqE3nw6NcZfhVRbJ+ExyT6dSb9sPlsVJSYGYmU/fAmwWGi/oyZJluQCrReRUsn3CWj8EjHxkXgeIZoMq6ClfNy3YTTCFfzSmPdD2AK/cHvvrv+s++vVxsv42rHkmrZvAVt3B0CtHxijNS1IzPNBiyfDT4qVJ1uiY6YDh1zIQM9vGxhpoS4xPcKVBxYs6OlG6+dNQDVJc4Un0mLTiRlqkWT/sJJeI7t6TwXM6tSrFHeFGjol6xcuBQuHtZe2DVz9eiDs0HDrNydenG/X1UWz/u9Buj5RUAEREAEREAEbooAtcB3jx7Ndq+9s9c27a8Xxh3NnXs8c6GDpj/0QZKMyIcJY3ZiCQ0Ql0k2RLtWFBS0cTFfPD5WGbRi0cIZXSahOGnxpJJAzFskZTUi466Nmvpkf1i/hg6CPzSd8pWRqxHYJhbFC2m6xwjM7zKro1HzWhM6S6uD6kw3M5+HAvwq1OBTqAO7YS1Hd0zKxIBxWhpYyzmma6pBrBZpk3WAm6hltJSnWjNeTyyfqDvoP8o9fACJM79jQHOWyP8EKugsouSumNyvZln7Jopbx6xJBO4oAVk87yhuXUwEREAEREAERGAaCUAD2P/lid3zxaULT9gw+iqGTPlmgYBChQn7EMG2GyzsSVAK/FEiOAhI2LaiREgClNKBAiOt45HxNnlE0bl5/tj1liUEC73gNmAqO+WDfX3U+B9d649+3Pj2L//rd1bf/v6lkfrsEeA9OrGv7Z8tm/4Leb3et2ED7rXrpclGzmSNawKGe7U9BKCF2dNmcNKOHx5iteCHB350oAmT9SZ+qBiLTmaImeKhaOWMCpVZUffiYdbBeBbsqM52kTiDujlEeRh11Cz/+4efPd/7xnl78mSssDxRkwjcdgISnrcdsS4gAiIgAiIgAiIwzQQoOl9+6SV3+dxbD2NMxn83N/53enn2fMeFAxg1owvfSYcgsxirk6KTE0UDG/6cKRu4SGKBgjPJUYoJHoEc4Ln82XHfTjhfZhzfE0ZU9Okc+OCWfGuPjVrzL9Ad8MeN9Sea4fAKXDkrFq3p3ifwn20Y//bBdjiblVc6Jj9tq7DUjPyOtvF70L+3RPXosA6gc3CsFawZFJ3pN65JyBQtnjjIdcwYH51iE5ZOmDgRVggWc5QE6yf7DXM/1j18wUCVzBHhqAdL/VlbLL/30KlD/g+WlxlmV5MI3BECEp53BLMuIgIiIAIiIAIiMK0EDh45OLN8+vyh3Ddf7Fr/21AJL3QLt79wZhaSEYYpiMfoFUt7ZxIBmz3x0PinRkhicyxD47AZpJHEQzofojV25kManXFhQoUSHSD+zLuYX61C+NO12v1gVDdn/tvT60sSndNVm9j/9idLpvpXS/XGzw4/c3V99Uq/rdoZWMA7cNeeQZWYsxns2uzuGesQJefkswXXqFE4GD9tcJ2qzrgKsXbx8whmqMsUiipZPMeiM3Y1hq6Fkd52TNteWllrrxbNavUHq/XadJHU3U4zAfXxnOa3p3sXAREQAREQARG47QSuXap2urJ6Af6KL85k+VOlC7vRgofupOzEEiKA1soYeZa6kRMPUgfEBRLHeiDqAm5jopUqrSExxuUg7Ax0Afrrtb5Bgddg6fwRXGy/j3Le6PfM+QPdlZE5HU/TYgoJsCaE48eb33t812XozD8NmdsYBtPJ23ZPJwuzCEwLU3esUqhDEJ9QpDBWRj05ri1xe/Lok+rGetY27OOJqEWwcmJEFQzTEkzT1CgOP09f3qyHcV32IrbRl52vh5Wz30c55yZlaS0Ct5uAhOftJqzyRUAEREAEREAEpppAt7Cz6Gz5WQxP8Xwnyx4oM9+lhYlCgA1/ujTGOaYxFccgKjHySZzodht3kC+aqlJyFKNM4sT+eNE5Fy6SjUfcU28v+bZ9C662rw1893jRVFcW31xSQJiEa6qXrAWLh69uzJx94r0QruWj0D4JF+p9sEYehj8s1nE4V36KGFs5UTdi3UmPTSHJyhOrzqQSImX8HSOmpxxMjFm5gPO2YRgjiFv7WJnlQxx7439+4onOg196u/nWy+hgqkkEbjMB1mlNIiACIiACIiACIiACH0OgtE0H1qgHMTbFIQybMsO+dGzQM4YtrZzJ7ZHRRMd9OrFOwjOJz9j/k/miCphcJAnUmIpNxCbCeI4QGJjbxo5q738+DPbPh9a+0e+EizN7rm1MztR6+gl855hpOzt2DIbWXxwE+8rIhh+MvH9/1AbEjwoexkrEuEVsZNYztNZZx+g2G1esSaw+WyYeoZUzRwVlpaT1k367CJkbrenczjJnijzLOnm+d7YsH53pdvZXO/rzZ88eKrcUpU0RuG0EZPG8bWhVsAiIgAiIgAiIwDQT+PtfP9SbWevvrVr7JDrjHcK4FLsx8GKHrX4KAbb9KT4ZzIUGKYqCmAoLZ+y3mfai1y216kR3Mm+aknqIPfTSZgsL5wZExwVYwF7Hxo9LZ08tnpClc0Jsu6xRBYI5frxefHbftXbQvIGalCNC8mzlA7xhzUOoWKhr+GGoT4rKVH0++OmClWYyJ8s7bed0+qZ7LoMTsdLFHzZTsCLjEEV3DgGyHqht+Gxbb3zB9O3byPiL7cJWz3HvEpDwvHffje5MBERABERABETgLhLYsTzcBf/ErzWZexEBYB5FY30G/eayJqAvHdQj5CWih47H3aQJiu18rCgFPBfYZ5AhbqZdLJlnPF2XETbmb4KtYeU619pwAvLjp+ihdzzvzKwYg3+atieBfUvD2dO7TtcuVEMTfOHDCmrJiwgzNAu/2BJjrESX2/TwrEVpYjWKVQmLSSrcwZGKWmUZFRlbsHzyowj0a0wLqJToOozeyKbA8C3zdWiO2Lqlkf33ceIvUslaisDtI6CotrePrUoWAREQAREQARGYQgJovlt79Gg+55cfQgCgb2LMzq93nD0Mi9SCCQ264UFswg4VxSdb/2zkxxlClNZOCoBo1kwNfgaISdYnZuWPh7FMGxSdvg5hWDUeY1uEVyBA/xzelT/9b95Y//n3Lm7UU4hQt3yTBI6dMv6Prg5Hv/FoNaiHnaGzLbxu3SxMnTMYUgfVzs2w/3CqNaxXFJasQJyT0OSluEvRyYl1K0bEpR84ZgpRzukTCHKhQFTJDNGrYMT3cwjLvPQ7D84s/foDXaNxYSNCLW4TAVk8bxNYFSsCIiACIiACIjCdBL579Cg+zC91s8zvwiCdFJyH0WyfZczQ2LhHKz+2+9HAdw7RQ7HjEZvFQ0FGoxOO0l/SwlblsOZpUYwicBDzJiEQS4DoRJ/OENpBVV/tj+p30BHvT/O8+/+VZX1pOunprj8RgXlT9dY771fWwgTpMWKPHXZs/m9BeO7hKDuUjVFHTizrrIk0aSKVwjTWyPj1g5Ut7Y9da+NHj8nHkECTUxSmwRXG7gpQobCyf70Kbd11/gc4ehWzJhG4LQRk8bwtWFWoCIiACIiACIjAtBL4nYVBz7n6QKdpnytDeBHS8ikXfAct+gyGoygcoSqxjioytvnpWot/0dJEa9PkFxv/URCQBnNgiqdFceAbb0ZVE672q+bExqj5UdvUf/q7p9ZffeHSaJAya3k/EIiWzyv96sjB0chV5aiAUbK02UOwXT6Y8xOGxSif/LhB+cmqE79nsD6NLaD44pGsolwiA+pc+iEjtmJU3Hget2MSlwhFFGJgIc/LhXDuazPNqaNfNIb3g+OaROCWEpDF85biVGEiIAIiIAIiIALTTiB0evNlXT2DlvkXM+MfhOjson8clabJihz952ClRPQfWjgx3iaa/hAAaN/T+slQMJxgtUJYUhxDH1BOjp3ucIznxTQM2Iip7df1NVg63228/Z4J+fcR2fasNc1YoTKLpvuJwNxuMzL98iwG1On12+qtjsseLYriIOrPHrpxt/ixzyYqI799YEL/4FinGFU5i8eSMkV9i7WIfZG5Oa5S0Q08SlHkRVAsfEyB+DyArypNHczDZnZ25+zyxhpOYVBdTSJwSwlIeN5SnCpMBERABERABERgWgksLqI9f+zRMl9r9mUuPAu3sOfQfN+LcThje4kGztjfjuISepKNebow8sdOc9HKBF9GigIMiBGDuyTfW0SIidZRZIHfJHVC60OLELZrVdO+Najrnxqf/eSBg8/+5fnjxzWe4rRWoFtw34vHKPiWV//HR2ffr735S5uH3d4hrBXG34RVsoC1MosGdLrcUkTG+ocLo0rywwhnDupDa2e0bCJ5LDnj3fFoTGBdjinxm8gOfkOBpf7xMrgnR753ypiBhu9JfLS8hQQkPG8hTBUlAiIgAiIgAiIwxQQgOs2G2Znl5mG08J+DZfMZNNJ3sKGOISiipZPWShozfdtEa/g6QgAAQABJREFU0ZksnBjCgq17Gipj8BeqA1qfYAGlQHBQmrAucYgV9OE0NrN+NPL9UdOex1l/kuXZ95D2LkXn4o06YYph6tY/DYF+tbHa68z/EB80+vhI0UWt2xNyt8O6fDZZOj0M6sl6XqBOZRCnVJrRoIlqRsfbKEZxE9iNcYhiVZzsxHRYS+EvDpGa41vKLI5/DtbPX3cm58ePM5g1icAtJaA+nrcUpwoTAREQAREQARGYVgK/3W13ILTLU860X0U40V8rjHnC+rYDiyd0IdwbaVGihYlRbWNgFzTv0eh3EKWTvpxxDWEKKWDy8TnooAckOIcSAGlo1VejJlwY1uGNNjN/5Hd0/vxxc3jlP15aknvjtFaeW3zfR9dMu7D38FppmgHqzR5Uu522sLMYhHMhCkpUKR/rIeyb/JiBOhgVZrwP1jfMrK/jzNxKQYrYAznKUhxifcRpqNic2+A85gJC9PSv7Ru9tW/JmJNbSo1FayECn4LA2Mr+KUrQqSIgAiIgAiIgAiKwDQhUldnTjvov+mH1Tdv4hzCGYo7ALpCKaJ3DpElrJ8ftvD52JyybOJqjb2eZlxh0sUTjHnlbNOjjv2SBin1BaSVFGXXTGgybMsLwKW831h336NO5yzzeP3nihETnNqhDt+oRFlGDlt9+u17Ph1f7Tf1KbcOfwKx5zjrUSlo2+XED9S5HDYXLtqnqGhZQuHenqpf0Jm4m2jOpOmnX5Cp+OGH1RMbxlPLgE4p1+4vMPVk6e6Bs5+e/fsjEwEOTfFqLwKclIFfbT0tQ54uACIiACIiACEw1gcWjJu/Ve3vmcvMQGvXPl8Y+B+vQLjTxYQdCgz1aOtFYR1sdOhMTmvDRmsRttvSRMbbjmQ57Ei1JyMMlA8LEsT2xR1mAQTnrKoRrCCb05tBkf2Eyf+F3jx/XWJ1EqWkrgbCImrVYra1nYcfP8bEDo53Y5zH8ztMwoHN8T4yGghqGebOfMc5OgpI1b2zVHJdI0RmVZ9znOcixJREfV/iFZSFHR1L0J324LMKjzY5975uzS4quPGao1acnIOH56RmqBBEQAREQAREQgWkmMHhiZjAYHd7Ra57smeYh9EPalXOYCVgoY5gWWJZiSx0N9RidFo39FtYlujo26OsJd1wIzzb266T105UIBoOWPcbnRLdPWEhxjG189Kdr0D90pQ32fejX17F+1eTltWlGp3u/vQSeOWXqk/vKpWquf6pdHZ3OYfWc75X78yLb2bQ1PmZ4RFqG5bPABw9Y2mlV5ycPRGLGOv2oOON3kig2kQe3TIFKeTr5QIKzLKz16Clqu611j3fz/AX0Tf4RMlyI2bQQgVtAQMLzFkBUESIgAiIgAiIgAtNLoGiuzVpTPo4RT57C2In7CxN6aMFHt0S02TFhEa1LyUoULaDsU4dGPhbQpPSjTc+fAgqlhj1dIJPwDAH9PGGsyvuwep6pvD8Bq+jbi28vn01naSkCH03gW3DcNktL6//Qmgsja04WeXFwpsyfb7OshyqXowai2uLzCOojIynH+kpzZpSVrLz8dML9VIcnRyhLOcX9aPpMpSAJXZvDIQQ0+kJo7Cnm0SQCt4qAhOetIqlyREAEREAEREAEppKA3TDzWd48hVb40zYLC4wFFMUl1r5FY54NefjSsgEfYuRaPCYyMaKtRfRaNuEZ9dZhSBVEH40CoIkWT1g7cQ4sSNCcRYVIRFd8aF6p6upPbWvOTSUs3fRdIVDnZs258ocIZDVoYCoPdb3L5XYBgYVmaOUMNSzvqHPj7yPX75EfRWINRR6YPVmLWSfTd5IkSXmcv2jdRyVFtNx9vvFP4G9g1/WCtCUCn56AhOenZ6gSREAEREAEREAEppDAIuTjuSNHMjt8f4cLzWMQkI9inmM3Tjoisu8cXWZpzpyk0b2WUxy3k811+jDiILPFvPF4PDvlgyBFCKLau2zJu+IdGKVeXQ3DV8vaIWaoJhG4SQLnzNAf2fuOXa+quh0d9k14oJMXT8CSPsNemayA/AASpSXqIrdRhWM6BSd/GKgzik+Y3jeFJ7Oxs2eUnTwPxbB/M8ZXOYSy9v7er+2df+zaA6NvnThRxbxaiMCnICDh+Sng6VQREAEREAEREIEpJvDSs/nufm/Wni92u1G7H+3zvehDV7IhX8OCxH6ctGrSqxbjqSSRiUZ6Gk4l9aeLT59UJ/QnwuDGMRVh/aTXIxryjn0+4WLb9+avNur6B5AIJ8o2P3ule01BW6a46tzpW1+EPFycP1dla/NX4Lf944AQtAgwhKF+7MEcFRfb0dLOuhntmFGI8gMIRSiOQXR61GOKT3qIw/k7PkIc/gc5bFSl8YAtnevlzu32iG47W3UOX9h95RIy60NJJKbFpyEg4flp6OlcERABERABERCBqSVw5fSo27P9B4N3D0Ng7s9MmEejnX3cYBFKPzboqTxp2YybaLWzaY8uoGi8s1nP3OkMRrPlWJ/JVZdH6PyIUS4Qxbb24eRKFX7cZvV7//DUNQUUIh5NfxMCYfGYaRafXVvN7e435/GNA8PLfgH18HlIUISzMnmqsVuLnNTPyToJz+Ruy9pJuyitnZM18tHiafHxxbl51NuHm3rwTGhZ2yU8t5LV9icjIOH5ybjpLBEQAREQAREQgSknkA/dfHBrz9QYQmXGZnsz2xbo2wbtiCi1tHLCWhktnmiXR5GJqKETsRkb6zETm+5ordMiSrFKaylC12aWkXBtO6yqtUEbLqBb3l85X/zMFYVE55TXm7t6+ydM0/l8sYxBec4Om/r9wtmLWZbtydDfkzoS3z1QR6kfWS8n05Y9buJI/DHzlm26jzOJKhN9m7O2bR9rm+pXg8lYZ/8KsyYR+FQEJDw/FT6dLAIiIAIiIAIiMK0EZkM9B3faJxES6CkEbdmJdYbxEtEUx0zhiUZ4appDWI5b89znFIUnj/IfZlo66c/YIvgQ+3paCE/0raurtr7SH7WnMZTKLxbfWzubztZSBD4ZgUXqwr+8uPG/Pjp7eWjd2ZC5011YPGG1X6CpPQYQQlVkvWTXT7p7s+pSitLCyVBY3I39kSf54lEcjz/uxBwOdf5Q6WyNGn3yf/rizp0r164NF0+ZIXJoEoFPREDC8xNh00kiIAIiIAIiIALTTqBs1mfQV+4Qxi48nGUI0sKGOBvvbLXT7sMGODcpJNFo5xzb8GygM52H2GGOrftxC38iSH2McOtG3uZnWmvfQiRRWToTMi1vAYGV2tWuCGdR7X5uXL7XZu4hjukZHcFROS0O0Doff6zHqKcUnfjAgr7LHGMWeWGlD7G+c583xX6f6A/KfqLeowOp211mHYsot0+tDuunewu9M8YM9PHkFry/+7UICc/79c3ruUVABERABETgPiXwT44cKc63V2YLv/GAadtDuTP7rcm7UVZGoUkwbImjAR5FJ3Ul3BBj4/y6+Iz4NvMn7UmrJ+aAsEToguc2fJ6dqhv/RvDRXTGeooUIfFoCVdUd5fnwdBbsSRjpPwMx+USLSoxPJFnsY8wLsG6O6ydXyBtnmkL5wYTBhljP44/VFpm5nSp6oM1+znoDa6p5HI7jz/UaS2unhCexafpEBCQ8PxE2nSQCIiACIiACIjCtBM6b8ztaF56GrvxS6cJDBRrYmfX5xFqZhp9gm51KkzOb7WniFvNxzYY6xSitn4hjG9cekhMiILSZqWAzvYZhKd7Ii/K12rWXx0VoJQKfmsCBw0uj81dm3+2GLB+Mhs+NmvB0UbgFBFWepXikxTNa6eEzHoNisZ6yjtL9NrrgIoEWUVbv6FY+rsvMxROwbpvG+KZxjTUPQ80eQTWX6PzUb+7+LiB+67i/EejpRUAEREAEREAE7isCVbuA+EHPoIX9fJGZfWXmOrDo0PHwOgYqy81pSzrS0iEuxzMPozEf59jKdy1cF/uIZLuMMENnapefOtB9cg05NInALSHw7eOmNn/3dy+5YvROv67eHFb12whqtRKtlsnqjuqJZj4jMjMIFmZWU1gv4xSjNGMr1nmqT4pQ/mKG5JLLNAQZckjbD/v952DC37e4aDDM5/hPIBWlpQjcNAEJz5tGpYwiIAIiIAIiIALbgoD3C66pn3I+fK5TlAvdojDRPxEPx4Z4aowni2ZqYydJGtvzyBMb8FtAsC9dDetQ3TAabm6Kotsgiu21QVVfGtXV6oHu4dH548cxsqcmEbh1BBYXF0PVdNcxrudriJb8x0WRn+G4sQXrYMY6jc8p8Lul1mxRRzkqCvt20jTPYxlFKTUk+3yi7jZ1jfFrawwVxEFo4beLv4tOt2vzPJ9Drv0YOHTBHHu0/O5RdBfVJAKfgIBcbT8BNJ0iAiIgAiIgAiIwfQTQUHdXfvR/FNmZ9Z1oij+SW/dwbtwM+niisU17DxrlaKDHicbMJEGT9uRuPAQRGo8xYTIhbXIah1FxboTd94d18y7yLv/nx4/Xk5xai8AtJBBm3NVhm+/8uc1tgaF/nkUV/oLLbJ5hnM+GAYZ4MdZXzB5z7LOMHbqH8+BkzQpMTRogTjkeLQ+6jNZSa5rWzmS22d2asCe/enFPMbd31ZjLsuCDkqa/GQEJz78ZL+UWAREQAREQARGYUgILf/iHHTP3wK5uz+zP/GBXEfxs8E1Ov9jYV5MN8b/m2WgLTRkma2ZmI97BylnGQ2y/N027job86wje8sPWhkt/TZE6JAKfisC/fts0X3kqvzLTDE6Pans2s/aCybLd6Fu80MAplmIzg4B0eUbjp4GLebRohhoxcDOOOwuBCcsnLfXxg0pUoszj0fUzydYsd0XXdWaGbfNwtTH4fNP4t3DTEp6f6s3dnyfL1fb+fO96ahEQAREQARG47wisdgYdN+jvg0XowU6e78AYhV1Etc0QQIUt7aQpP4ZKbILHY8ntdms2Cs/M0bWxCHBpbKqmWYP77Vuj3P+s2/SubM2rbRG4lQRehun+v3rz8lo7Mpfqqn6/rpuzbduu04LvW7jWwm2W4hLjyMahU6g+o20f5s3odYuKTTFAV3O63kYROjaDemRgsCzsZhCvHQjTB7MQPmtqv/tWPoPKun8IyOJ5/7xrPakIiIAIiIAI3NcEioujXpNXB10ZDha57eVoUbONTcsOVtENMQLCzkRopiPRrpksQpMDmyTpZpvEKJv6VdP2q7peRkP/Yl3NXBr2rg42s2pDBG4TAT+T1fnInEffzbfLvNidZ+4gZGf8NezD6WvUaUhMmjVR6V2O0WvhFU5X2igwG/rZpj6f6MsZBWiLtKbl6KD4LhNa21T1PIyoD2Bn7jY9hord5gQkPLf5C9bjiYAIiIAIiIAIJALe97umsg8G6x9EbJUeximk3kwuiGPxGSXnWFymo9dFaMyM/Dz8Qf0JoxItSG1Vt+v9qrnqgl3+vVMbKyxfkwjcbgJ1U9a9vHkfwvPnME8+gai1wXFIFWhLBhTiuJ0OEhIOt6jvHDKF4hIfXjAHWEZ5PH4+4TlRm6bazsBZDDYU7Z7ezxfGPogvNLO3+3lU/vYkIOG5Pd+rnkoEREAEREAEROADBLJgO1lo97jW7zF1QKfMJjbG2UBncBU0w+MZHxSVTIwilAdSlphv64LCE+13uNmG1UHVLsN2NNp6XNsicDsJ9NqdVd1dPZMFv1BVzVfh/d2YMsvysrSW7rawXNrofstKnGq4DVmqzqjc/BMY70QLaMwCAyn6d0KIUqxCwLpsvuPyB/G3AoungjTfzve5XctWH8/t+mb1XCIgAiIgAiIgAjcQKGxTllF4tnswdkTH+AZtbfTtjBae6w3yG07askPx+eFcMREGI8QD9WaAvnVn67p9rz9qFHxlCztt3l4Cy2+/XaP/5cVR275Xt+0VjOk5gotsG0Uj+24iwBDMm2MbP+4FFZljdjKKLSfmmwhPpschVZDJMjARXW9hQoVn7hwspvuddbR4fswnmFicFiLwkQQkPD8SixJFQAREQAREQAS2G4GsHpZZ2+x2vkFwlBamoORWmMw9E0k5WbNdndrWUXBGfckkHI/mIdJJx2FIgreirWADWspc+SOX5X+MXO8zhyYRuBMEvgMdmXeXRt2yXHd5sRLybIXiczgaGURZjkKTAjLPIB0pQrHNAETpGP4OOKYnvsBwTu61DEyUZgpRpPJIN8cYuIh/233pJYPunhKfd+LdbqdrSHhup7epZxEBERABERABEfg4AjazvsxNsyMzfsGFUCBkCvKi+bw5cXvrPvaStkw5ouC88XjKbn2DRj7a91e6ZX7CzC68+sgjRy5vFqsNEbjNBPhd5NvHTQ0/2X6buVVvs6sYd3OIegmBmaya8RaSeT8KTNZ1HqObeEzeoiMpPifRbxl8iB2YIRo6iHw7XzjXfXHd5N89ii6jmkTgb0BAwvNvAEtZRUAEREAEREAEpo8A29WLi4u2A1Nkp8jKMjOlcwjhicZ1GjICje+kID/i4ag8t6rPD2RBi90jWlETwqDG+J1ws90wnQPD88ePqxPcB1Bp9/YTWBr2/Xo1XBnU1VKwblCWpckRwZYN/hbDBlXVMLrRwsA5tnDynlD7abYf/w3QIpoV6P8Jq2gUoPg7aVHJYS0tZjvdmU7Zm6suzc+btYPl7X8iXWE7EVBwoe30NvUsIiACIiACIiACHyLw3aNHswO///tlUdqe874LN0MM4clua2xq05pDablVYKZG+Adsm7Fcpt0oQ+mEaBrfhjUMpYJotm1/8e0T1YduQgkicAcI2Cpr1rPR1SLPzxV590BWYNiUFn2ZYdmM1k0EGaKbLQcRSsZP1F/eF82enJBIwZmGWeG3E/wt4BDzZjbLi7zsYGCW+aLf7Fpw6zSl9nmaJhG4GQISnjdDSXlEQAREQAREQASmlsDs8nKn6o72Q2seKAJdbUMnyxiqE6E/0RCnVSdGtk1N8Li83g5Hi5vtdCTENK7xy9gSZ0zc1GqvYDO92LThLJrn61MLSjc+9QRcr2gKl5/LC/sWhlV5nA8UXW1h7YSLrIG9P1ZnDxdcTgwqlKyaUWIyd/yHAEKpviNlMvRKcpMMNvh2V1u3j1mXU5kuY9YkAjdFINWhm8qqTCIgAiIgAiIgAiIwfQR63Svddjja7515AFbOORh00AaHTSdaflKDO+pHaklO3MG8KT4n1tCYlg4k2RlzY2EhPO3FyoczlfUbk1StReBOExgcmKvz2ZkLRa/7Dlxmr8XvJezjiS8kFJA5o9TGDykUnqjL3OZHlPghJSWx4qdotwy+xYBD0T4as+IAjKd+F1zVHzG+3nmnn0/Xm24CEp7T/f509yIgAiIgAiIgAr+EQL02Kqt6uAcxPHdjXEJ09Rw72SJgSgwexJY4G+CTiduTmRton3NKSckpdyJMKU7Rph+5PDtru8V7WVGsptxaisCdJ3Bu7VQb7PAyBu48jbE7r8EFvEEcW1+6zLR1Y4aDgWnpeos6z57N8BGP4hI+tLEvKKykcT9pUopO1nrWceRGZcceLJ5hp239w0hduPNPqCtOMwEJz2l+e7p3ERABERABERCBX0pgwzQlgs7uoqXGulBiRiMaDWkoxmTRYXOITWquKCyv/yaic7KOWeL4KiyDUUFjSQPrsvPFzOzpsjcrV9tf+kaU4XYROHjctP3Z2WttVV+AO+wqwi1jfE/jc47TCctnA/EZrZmoyMnFNlk9HdxwOce/B/4h8IsKponwnOSFALWYF3D8YNaG+dv1HCp3exJQH8/t+V71VCIgAiIgAiIgAmMCTeULNJbn6xDmq2ByBOw0gQNBwOqTxi/ENjwPx23tpEHZ7k5t8qhHx0WlbQQlogCl5kS0z7oNZgOBbZezLL/Shno0yau1CNxpAouotf9036n63aVdQwwbNEC1HpTQkxg7KMcYn8Z2CkSobWOEW9b9DJZQWjNHqLbx88vEtRbHPPJRcGIIleima5pg6rax6Bc9i7q/D38GM3f6+XS96SYgi+d0vz/dvQiIgAiIgAiIwC8h0DTDAi6FO9rQLoTQFphjwBU2qpPKRCAVSMlo44GiTFbQidUTWShAt4hQis40wXYUPILZtv0m+BWIzmsbu5+W8Jzg0fpuEAjfetm0DgOnNHU9bOt6AMsnK7wp4Ebb7ZRRSFJssp47pDFYVgP323Yc+ZY3nSyf2MDfCLfpgktDfxStvoXgDLtxXu9uPKCuOb0EZPGc3nenOxcBERABERABEbgJAnOdovTW7C4Kt7tbuDLHZ/dRbGhTaqKPW/xNAqhMZCVTMY0FZ9zALtrg2Ex5IFyhPH3dhHZk2my40DtUbRw7xqgtmkTgrhIo+ybUeYBBPrQIpIW4Whjzp67Rv5M12UchGYNr4W/BYkjbaIninwMnfpBBHWctTzWd53DmmYhq60wBE+gMZCsMqTXP0CQCN0VAwvOmMCmTCIiACIiACIjAtBIIRVZmIeyEy+DOoqSnLVwG2d8Nls8AP1mGGuLoKqmljab2WFjyeccSMz56aohjyY3YOOfpHsZUDyunr759/Lha4ZGUFnebAEMr561vEEergkd5y/hZHFalhfK0jGybp3pMMUkBGqUnxwaKXgA4ebymtZMTD8U4uNy1GAfXuRlIUAhPTSJw8wTiB46bz66cIiACIiACIiACIjBdBNpRnbVN3avqUa8/6GdVNYraEeMdmhx93DLLDp+xRZ0eLLa1t+xvOTpJpestGudsqUerEiyqTNEkAvcEAZvRyhkGqK+r+KhSsZ7n7NMJ0clwWE1TR/dajmM7cbtlX0661HKiSOVE4cntuq5iBc/y3GAuEL2557K8XFw0CNU1/j4Tz9BCBD6egITnx7PREREQAREQAREQge1AINTOt3UX/d06dTVydDm0sGrmEJwUnRjQEy3nJCmjntx85pQWl2xdj+fU0o69QhEYF8ITXozw2JWL7SY3bdx1AjmCzwbTR71eQf0exQBBFJbRgukx2goCDEFQUnSmvs6o37R8Ig+nifDkPrcpUPm3gWGDTFbkeZZnPQzB0jMvm5nvPgvXW00icBMEJDxvApKyiIAIiIAIiIAITC8BNHZguEEMT4TwzIvC0mrDicOp0MUQoVOw99eYLGN/t7E0Res72jm5Nhaa0w3RHB/UzqL3nCYRuDcI2L7zEIareeYuIfbygBZLjt/p4V6Ov4Zo2aR1M1k48eUEEWwpMClCJ0I0Kk1+bEF+zvw24x1PdgX+hmYwYOjB9op52lw0e++Np9Zd3OsE1MfzXn9Duj8REAEREAEREIFPRQBehtYzfidUJhra6OIGK04MssJiJ7ZOCk/+0kQrJydaRuP2DQfSDo60sBL1IUDXIV3VvzMh0/IeIDBbZi3cbVdgnV+yoem36MscnWKRwO7MtPLDvGkCZvRThugMMNrjWLSApo8rm38D+Aug3gywiMbuz9bCazfruto/4H32WZO1+Phizt0Dj61buMcJSHje4y9ItycCIiACIiACIvDpCLicTrVohsNWA6sORCjlJlLQio5WHrSwA/1nt0zci/04ud4y09w5kapoh9ewBC3DlrqE5MGW07UpAneVQNbJGMl2FT7mS87kg8yh1qOOhwyRaTmcEAQmTP74R4s/hSiWSKJ/Lqdo4eQmvQIgTqlWG+ShZZSClX8E+IIzt2Nmdj+yzaIraTxPCxH46wig5mgSAREQAREQAREQge1LoMxymmgclCcjq0QX29hfE63n6FoIF8NNUycwXHc3pMi8UXhu3UdjvMmcXYElaLlAP7rtS1BPNm0E9i106Pq9XrrsCoYPGsR+zDD54yNJrNCwcUbxyUBDnOKfBv4I+CGGfwvcZ0bqUG7DSz3mi9ZR/g3hDwHidLbMs71lp8C4nppE4JcTkMXzlzNSDhEQAREQAREQgeklYDHSJjxi8XPB5nS1pf6E6yEb3cnlEIYd2EGRwqY3npTyMmlRGn04Rytn9DMcp6QsbH37HC63rR2biniiJhG4ywQ2OnnIClch7NUQ9RyRlyE027HYRP3HVxjU9InFP9mhMN4nxWT88ML8tIL+/+y9+89d13nfue/nPe+F94sokRYlU5ZtylZsJXYcO47Sy6QdzPxSQAHmH2iB+SFAgwHaKYqGBmYwSAu0MwlmMO1P018jYKboTKdNJhcmTuKbZMdSJFsSLYsSJZF6SYrkezmXvfda8/k+6xyKciVLssTLIZ99uG/rtvf+7vUS67u/z/Os+bn8od/y/eRvRG21fTOZTlf502lu8uP65RcEAVc8F+RF+W06Ao6AI+AIOAKOwAdGID9xAhtbxRAKhEWJsg5MUWw1kDZzw1kkTzMtNIopYikSysAaWZS5CtM6v7SytcAzGbZHBlKM3/OAmjrPSfm+dQRuIgIHz1R03LLN62KEh3OnjyxSM83XU59RmEpIn1OMTErB1HcTiCYBuJRsfwHWoWdEVBFwVcZ6uUgokYVC1zdh2q52oXPieRPf9SJd2hXPRXpbfq+OgCPgCDgCjoAj8L4REOnc861jzDmIJWzfV7Vmk7BhNU1gOaixtnl8mnop/Sepm3Zgn+ZFTimkMfksTwRVPw3KETnRQGPLOkVOTTaLpPviCNxsBE5xA2t5NS3CdEI/7ei/9FXp/iKbnFhvlaJpGbMerf5ORdIoSB8n4BAFlaQ/AlkHYFLOMd9xKIThbo0B+5As5xOGkW/eCwHvKO+FkOc7Ao6AI+AIOAKOwGIicPLRYnLxYrUj26xL3DFLQghhb8iImSG1EUs0SwsqJPUyrRpg20CbfO2NeDJIN8JJQvJ9Y2/qj23aKium6KlOPBezl9yWd33XYBC3ss22zCMRZ2OnvkzfNfJpPVzsUwSTVTKm8pP6mdLU32UREOXzOVvSV5v0lxLUUlbUSKRDer7P4zkHyfc/FQH7b/enlvBMR8ARcAQcAUfAEXAEFhCBQxsb+Y4DdVXwQ8FB4wwIn33WdUwcoYE3oyANvOXbpkF4WmwIfs3xPF17Cln2W4UZs8NNmValdeJ5LVJ+fHMReHPpmRjyboo38zb9dko/x6tZhrLqwxr+a73aj2c3q2x18NTN7UB/IKxzpd+oK0UKfXMJocZ+d8jHGyeeBpZv3gsBJ57vhZDnOwKOgCPgCDgCjsBCIjA5cLloY1lhIshKTCEMCAmwYuTTNB4G2WY5qLG1PWEadOtYuo4lcoK4c80iQ9vZTwoSA3pIbUfk0FT5mpJ+6AjcLAR235+Fqh5MQhu36ZpTeidS/7Wd+p2Ip+521o3TH4H9DYh7atHOaulPQ57NWSZH0mGMvVtQGkK+eS8EvKO8F0Ke7wg4Ao6AI+AIOAILicDa6HA+nk7LvGIiz9jZhCo11oGE5CTYJ0NmInPaOJsRdNKC0gg7Db051oEG2SkhjbyvIiHyGdGO8h7BlKi2V0tdLeEHjsDNRGDYb3dtHafQzo6OPOvNb92Reqw+qsx7rn1smSew10+LtmKZ83OlqZhJ/cin1E8FleGLI/BTEHDF86eA41mOgCPgCDgCjoAjsLgIvDmZ5ONyoqC2zHjCPCrY1FZ1lZVVaYNtEU/zYbOIKjN2OR+e2+lb4+l58mwEPgNF+TmhbTWdynz4vrh4+Z3fPgg8+3gW18cVs/wULZ2d7kk8oHdY5r3Werp1cjb8m59bD6fefK8mVEwLDSJ8YmfOhxxfHIH3g4Arnu8HJS/jCDgCjoAj4Ag4AguJwHQz4ODWZwOcOntEn9YGyRoy8092tvNRtJ7ORttvPWYabKdE2dRK2FFxjeClAOmE9GtbeKuyHzkCNxmB/VwfqVP9lt4qjfKdF/Xg1InnReb7dy6vVJmq66eG/Q/g3XHynLcj4Irn2/HwM0fAEXAEHAFHwBG4bRB4JRtl28Q/6TEL1Jz3Mes0l6FF6tTkEsl4MFHKax86mRmm4feccEoyYtVIWyvFZzujslXipNc24seOwE1FYGMXc21Kj6erEgCL3bsvykyfUN692NsIZjqZkU7idvniCLwPBJx4vg+QvIgj4Ag4Ao6AI+AILCICR7Lh8rKsbGOnySFs4k1IpZTO2fh6Hq1TT6eBd6Kcs+w5w7zm0TXenq+QUGulxNKQ+SrefcR+TX0/dARuBAKffizLq3bQYF4+5INJQ6cv2TN50FvdVEfvutrfwjV3ap0ejROqaauypPbnRHR+FzPea2r7oSNgCDjx9I7gCDgCjoAj4Ag4ArctAs3qqsSeyAQq0jkVizMyGOd50wB8rm2SalKmkc/58azMnGjOeegs20wNGYTb8Htw2yLoD7aICOxfz/JxP2mIfDWkhxJRy762iCmagaz6ub6gWH8nLf01zM6Vfu1Di2zqdy3ppDZ/B4EPN7LmlfW5L47AeyLgxPM9IfICjoAj4Ag4Ao6AI7CICFw5fKUfbMVx13ZjzGtbRsp9ifpJeNs0sJah4HwwrWMbXr/DkyZOaqPrq+TTysuEMTRM5dm0XXB7w3eAzpNuDgLPbzxCr23qLi+W6Nk16vxPjPlFLWerdX0dv32Zl7BUlblm0SlK5zQU+TZre02WHzoC74rAT3TCdy3nGY6AI+AIOAKOgCPgCCwWAuv7wxuj0SSEboxaQ3TPrId0GvG0B2H0/Lbx9NtO3v6oyorIQ0TxNOVHuUioGkfVqKmDWDOzii+OwC2CwO7xGN5Y1miSS3h5Vnwwyeem4VcJ55x4ps8w6uD/2d3PU6R4/uSCktriKL1Fz3fi+ZPg+Pk7IuD/Sb4jLJ7oCDgCjoAj4Ag4AguPwMmT4VCWtUUfp5DEtuv6fjyexOlUHBQJqGBaFT1kYpUccDYbfM8H3JJ1LH2WZYqnjk3xDDkBi5qsj4Oid8VTUPpyayBwlqmECKfF55AwwA6WKYXSci23tJ5NxlWzW4pYmopyoOP5Il/oa5dZO1M+xkA8XfG8Fhs/fncEnHi+Ozae4wg4Ao6AI+AIOAILjMAJRMm//+STXYyTNoa+g3iGyaTN2qnc0gojniKW80G5SOfVQfhsQG7DbTYq85NriJFgLVlDzqDro5vaLnBfud1ufe1wR6/t6yLmuB9HI57Xks6ffF7r5/MODuXU7+oyJ52zJGuHPxsUT4hnvsnfzfRqWT9wBH4KAk48fwo4nuUIOAKOgCPgCDgCi40AY2Wi2dYxK8pQlGWo6ypWFRxRGVItZ76d6SnfyaDwJ59fZWY/WuVoiTaGeenE8yeR8vObh8DKpMurshiEIltBkax/Gul817sU4WQV37wa/XlGQhP5jFt8fFnv82LrXdvwDEfgGgSceF4Dhh86Ao6AI+AIOAKOwO2HAL5taJPy7SwhnXVWlZUNplOUzsQ9EwmdP7uG2u+8JMppnp6MxlE8Y1jC3HA5drF65xqe6gjceAROb7VFl+dLfZGtJlX+/d+DEU0q2V7VrlE87S+DjT7ZFEW+GYtyPSv67fffupe8kxHw/yTv5Lfvz+4IOAKOgCPgCNwhCIQealnImBbjwxziiNMnM3uadpkG2Gxn6o6G3AysbdU8EUY2bcSdBuPJD5S6EbIZ4ypt7YSCYnLriyNwayAQJn0xLqY70Pr3EfxqKKVJfZr+mtRL9XUjlAV/B5S4ms4fCef4LmOKTplSLFM10x+AtZGa0t/SJh91zjFP7qaa9sUReC8EXPF8L4Q83xFwBBwBR8ARcAQWGoHQdbh4QjOxC5ThoH4aS79N5RTvtJ+GRol4Jloq2qlF23Q0F4CIcVtCX9dwJd0ZOieeBpNvbgkEdq32Rd+2O5hKaD/ddmgkk05vfZ471HnB1J6FCCjnEaJp/Z9z/W30fUe1t0iqCqW/ALVhx4HqG1mdn5v2nZva3hJv/da/CVc8b/135HfoCDgCjoAj4Ag4Ah8CgdDl+HmGHl0n9G0Re0KtQBhNxFFkWw2+dSpa+v4WRt4UZfCOJpQNqD6sCje1fX/YeakbgcDWuC/52LIjFMW+rMyGJXPX9sQbQsycLfwNoPpL3dQidVNEU5YAWkqL+CwSOi8nEkoUaDp73/eTCWSTkutt255ZzoZXsmxk9XzjCPw0BJx4/jR0PM8RcAQcAUfAEXAEFh6B0LWxz2Pflznks0fcYUBNWKACM8JS/p5SeaTnoPrMFaF3e+h8FvZWNVgYr+eDImRDOZC+Wx1PdwRuNAKhjQUfWtaKPOzP83pYElBLqiYm51dvRcQzhN7+DpjflmPyIZoioerOmrd2TjyVR7Ai0ovYhXY6mbYb5J7/56cmrzrpvAqpH7wHAk483wMgz3YEHAFHwBFwBByBxUYglIO2KuOlusy0rlZFNkQBhTZGfNn6ZGL4HmqntFCRzVzGulr144ClhLeWlSwVfXEEbhEEpnxdKbO+oVsuYTZbtfROpvyBXJpSz10W9sFFhJP+a8fS7zU/kM6tN9u3mMB5AelUGqppIqctWumYPwfNS6TlLTabzn3rCLwjAk483xEWT3QEHAFHwBFwBByB2wWBali0VSwvNUW8XFX5wQolp897C6oy92UrsUeUz9t8eftIWoQzMUvZ1poXqAbns+G6hKBkdTuv7XtH4OYiUMfNvI9VjSPmsO17ur38NqV48pVEZrRGLm2T/Dw51JkWWQBomQcdKkv+NmSqC2llUlyxzA4D3RHKaEuxt/+pWE3fOALvjMBb/8O+c76nOgKOgCPgCDgCjoAjsNgIxKJjAI5PWr7Zdz3xVjr83SCeSf4xwml+nrMhdDK3ZYDN+NuG2bOn13D86soBhDNn8D1gXQlFvvYvPntw5e8/8ki92GD53d8OCEzp7PRfBKao/qjvJVld19nS0kDCZdZ2LUbnGOPyU3Tnnr8FOCWL+XBm+G5yHDFFx+SWDPub0d8LJywTkjbwmp6qhi+OwPtFwInn+0XKyzkCjoAj4Ag4Ao7AQiKQV0XHmHqTwfVWx6JBdIe3p/zWpO6IdM4JJWNtWxLpZJytDEskQyNzrfLzTBXk8tZAPJdJWM2y1ZVPNufcmixB6NubjADdmjBaWc1csyZxNhDP4XAJ4pkn4imyyT2arydyJoTSznuO+TOxuy8rZgziqCXKbQpGZH8CE/52NrHmdeJ5k9/xol3e/3NctDfm9+sIOAKOgCPgCDgCHwiBUIRJ3pcXqXSR4XUr+UfBVrAeZLCdBt9XGyQvkU0OIJjil9rMuaaV00hcw3H4KqS1LEI+LPJqb5ZND2RXzO/NQ3waUL65GQicQOFcK4d132RLdPHlui4rPo7wsYUPLvLOhGBK/cwVypnVYjPPb5RurYBbBXK+OjhfaSzgkPw8C0uvFJdrG855PuT59rya7x2B94OAK57vByUv4wg4Ao6AI+AIOAILi8BkVE8JrnIRz04Rz6kc3KTkFKxSPE3pMTJpdNKe08gneSp79SeuqXJSPbVgasuvYuA+xOZ2H0P4gxg3DlOmbx2Bm4JAnj36aFGvDqqlql5q6nK5gknKR1Mq5mQysZsS8UzkUl3cotWSnv4WZF7bNAPr+52ZpOsQL2jSK+pVVbmFscCF2Af/wHJTXvHiXtSJ5+K+O79zR8ARcAQcAUfAEXgfCDQ5imeRnWcAfoGB8zgvmeKQSCs9A3EZF4p8imMm2mnM8q1WlX41T0Wkgs6Ip2VRN2ZLoYv35pP+E6Hrdr5V2Y8cgRuLwIlHHy3r86f3boThkViUu5gWpaa3lvq4Qv+HUCYXZJFQmc6q36cPL2kalblPp5RO/V3Ug8asA/Q30NMGRBQjgXiJDy0vl1V9+cY+nV9t0RFw4rnob9Dv3xFwBBwBR8ARcAR+KgJlXJ3GYnABledC2VRjlJ6gaVRkeigOaYGFEruknTmpvCaskBFP04MoJfNElUnllAX1XGJ+xKMhdA9247CLJF8cgZuDwEsvVX3Z7wtFeYQPLEY86Z+FPpjIvDwRTxHI1ojnvC+TDdEsTNXUXJ7yg4ZcZnXToIymKWpFVElX0UtFVb+c5ZUTz5vzlhf2qu7jubCvzm/cEXAEHAFHwBFwBN4PAmeIvnmomVzMJu15poHYQOucoloOII0oQQEfNs1feO23eJHKGdvUBTQon+3nhFOnWmbqZ03+Lnzf9omEphzfOgI3AYGVrSr0g/2x6O8l0vIOKZoijB0fWiJ+njBQOCgfT0iX32dRJvNaqZ76GKMpU5QpP08F32pRPlE4IaVEt539FTDt0BXKvF6GbvMmPKFfcoERcOK5wC/Pb90RcAQcAUfAEXAE3huB3z11So5t0//t07vP4+O5WeZxWhX4ZirqJ4NqKTxmbqumjGG+Q5tGPtlI79Hg3colssrQvSJ5Ny6f+2jOiec7wOdJNwiBeqXKp+P9IY/30k136KrYlWfYldNnFcE5KfkKsKWgQvLzxOzczG0VzVZ/DzK3lQ+00tu+tTk85SOqDzQxWgMb/Om83qyWEE9387xBb/a2uMy1n/duiwfyh3AEHAFHwBFwBBwBR+AdEIh934VpiJqhUKPpiP9bUn1sFA6dZDCeaKVYJdrlbKsj/ZQHQ2WvHJUnhVUWik1Vriw15e7BoNz7P33mY7t/59gxorP44gjcWASacVsWMewrQzgcQ78GkzRyWdX0ddRNKaCpu3MAyeRPwsgmhNKIKDGarV9L/RRFLenc0kn1x4ECOmX+201I7BUmabl8+dKu8Y19Or/aoiPgiueiv0G/f0fAEXAEHAFHwBF4XwiM5aAZYscIvMuLMmjGiJzBt1YjnKbozAglLc6Jp4bemnZCKSqnwbtIalqklmbloCqWq6zcPe7jPrzg9jB3C1a9WQohOi/qe0fgOiMQq7Yq234vPfUIjHJN/baEaVYFQ/6eVHNRTp036ATiaR2aJPl0ys8zmMltb6RTxFNKKb0cHhsmU4gn31qu/OPnrlzKM3fxvM6v87Zr3onnbfdK/YEcAUfAEXAEHAFH4J0QiOXSCI3nVXzfXu1CHOC1NlSMT8bWZkEr+mmEkoF2zkEeWJUvU1zNnZJOKAV/NYtDO6KyTBWnGpmvxj5+tuzC+UE9/iZV8YXzxRG4IQjkv/dYVrz+bDUommyNbyy7mjwOpG7SQc1fU31aS+rLMnqU36Y+oqQPLzI5jznfS1RMvp9wUvl5KoGqkeMJCukVjicUUYYvjsAHQkC9zhdHwBFwBBwBR8ARcARuewS6qtlum+GZPq/OdCGM5MOmRVFtNfgOIqCs8vcsGF0XKERajYBahtQfFCH5uzHyTuQTU8WM6LhhAv+crEFAf67Muq+Erj102wPqD3jLICAWePZ7x6oddTtYKYu1larc2RDEFv7IRxE+lKBiBj6Q6AuLPqCIkBIkCFNz5rKFgKrjW0+mTCBKVjK5RSSd+X1Kvydr3Iaw0UNAb5kH9xtZKARc8Vyo1+U36wg4Ao6AI+AIOAI/KwKhaCZ9DOvQzPUyq1FtNJchK9SxZyQuK8Qk98wUT8gn43NbOGShpv04nOk9SskhrUXF8L3Ia8bp+wd5PAJBPfCPHrl/53A8HJ145pmpNeIbR+A6IfB/HD06yAYX799u48PDMt5Dd13Ky0gArdRRU/Csq7151ovJg4iqL6tf2wcXMVUWqCrRtyCmTMES+cqCD2jADPdcHotnmf3z/HV6DG/2NkfAiedt/oL98RwBR8ARcAQcAUcgIdBVcRLy+jyms+fhmZO8R6ucwgllKptXNt2EldRYnTU397c0ENfAXCrnLMsI6XwYL/WoUlCWrKiZ/nAvRPaetswPVmG0a3vXFfFZJ57pFfj2OiFwadelJTyKP4Fw+cXQd0eqPDaQTnFJSfh21flnFE2dop4846Qc6ZxiqP2KcqvpV2wKFYJv1XmtzzPM3ylH6OJcyKtnyF+3Cr5xBD4gAm5q+wEB8+KOgCPgCDgCjoAjsJgIjAdrE5TJcwzDz/Yx3yS6bRcJMsT8EVcH50YtMU2UkpmO06B8FmBFw3XSpYiiBrGW2ksRkklij/FtDDXq6Brj9KN52z9YXw67FhMtv+tFQmC02dX02kNwxGOQxl2QS6ObWM2a2bhIp3qyPp5gPc6Kys8qtX/+OUV9uOfLCc6c1suVJTNdBRyqqjqUdXGR+qdpyaMKLVLnuIXu1YnnLfQy/FYcAUfAEXAEHAFH4PohMOlXx9NyxzkkyLPT0G90MW+RKhE7MQBDtpQ5bVJ/bMSdKOZsXG47hvJGQGWCy1rgFEptG9hr0N51fR76WBKkZZVgoffT2qewvnXief1eqbc8Q2BYL1U4cR6CcH6cvrpTyVI0zVfZ+miKTptIZyKeMqedU0+Vl9IZWpw5sQQwNRRl1IIL8bdR1FUsy+rSZDp9ZRJ7J54CzJcPjICb2n5gyLyCI+AIOAKOgCPgCCwiAjsHg3a7LTYn0/GladtuLOXZNipOUZdFqQG4aGfSM5MAaoPveYJyGMgnc8WUqK2xVTtV1NtEQqtYNBDSQ4M+vxcJlCktfHEErg8Cmi+2X908ROygT1cxu69kDk8EyqE8ltUtZQBuprUyr0X+hIMmRkpu0kR1X+r3szk7IZnWr5UqItp3EfUeE/X+kvyjaez1amllM8u2VdEXR+ADIeDE8wPB5YUdAUfAEXAEHAFHYFEROHHyZMfwe/OfHR1eRpG80tXl9qBshprnUINwDb5tXA7jtMH3fASuM/OLS8RTJedTUyhFSwreggLKqL8MeUOs0INNjEcoubqoePl9LwACey8Ouu2lY3ThXyjz8uP0uz0lnVORmgv6LHP88BDS8en59o8Nedal1a3Vl5XBUlVy8oSyinCyys+zI/LzNPbbkxAv0tj6J86Mzj6WjcI/shq+cQQ+GAJuavvB8PLSjoAj4Ag4Ao6AI7DACGis3WXVZcJ1/nVe1X8dy+pyIIiKBuKJeM5Ip0ZINkBnYE4eemYyq2Ucn0inplRhkE6etKWZV1ymySnqvKiaPu5s+v5AHbP9//L48T1SphYYNr/1WxWBC82gaqf3l333ML34AEGuWOiY9MsZ07SdcUvjl8qYrbMyNo8nH1tENGUyjsmuOnX6mFIW6trr0NDnmTTo/K8nF9HEVG9VTPy+blkEXPG8ZV+N35gj4Ag4Ao6AI+AIXA8EupWlS3VWfb8cZDvzsrwXXeeQyKTxTC5o43H2xA2CZGoV6TTNyHJluhilksqQUQN2Klg5ampuRAIPVX0IazDc/bHODk6qfl9fo7FmxB31xRH4SBGYDvIQ70PZfLis6r0Vc8zKvFbEUezQ+ipHxhStL5M4451S8c30lr1Ky7Q2VVKR2Q/iSY8+i9/ysz3RoD/SW/fG7jgEnHjeca/cH9gRcAQcAUfAEbizEVjB3HarLl/s2+7QVjt5oynivUtlGBR5ZE6VmeI5G4En6SiliYDaAJ5BuVhkGq7rIA3a8eckQG7J/IdZNqhKwhZlO7a78OnxpXNnQ99/h5KX7mzk/ek/KgROHM+a4WTPgVBnn1rK6yN8B9lTZvmSEUj6ofrnnF+mo7SlTOrDqSNzPOvF1LG+T8Uc8qpItn0f277vt0g6RXPfgNSe+aju39u5MxFwU9s78737UzsCjoAj4Ag4AncuAs+sb18uD7403t564crm5NzmaLJJRNpOY+9EJxOtZB5ERuGJdGpaitkpZdKQXjm2kofCyUpEUOYElVA6xGFuWFdrUIDPhMn4F2M/vevOBdyf/KNGYNjtG5RFPIrC/tlBWR5ZKqsdfPBoLCCQiKetyQxcfVQ/aaGlrTpWigiqftrTifmnxfxDiyLyB9GOp9PN6bR7fjitvp63B15OJXzrCPxsCDjx/Nlw81qOgCPgCDgCjoAjsKAInGA8/m+efLLNYnWlK/KXQ1680mf5tgbr2BuSqxG4jmfrfEQ+e95ZLqlJL5KNLoFxM5k5EpWFSKDMEMpQnqS6qYq9y8Pm7uHScNeJo0eXfu8xxv6+OAIfEoGVfNAsN8XRusw/g/6+P896LGzlcTzvsxzpjL45X0U2UeEJfqUVOkr/numf9i3FojKjdOrEeGvMLvAp5UXaOff6xx7eunjqlDq2L47Az4yAm9r+zNB5RUfAEXAEHAFHwBFYZATicr2NOeHpWISXsqI7wFh8j009YURTGpCUTRY5e9qiQTwHNryfGylSivOqKm0w3zMPoiKC5pwjK1VNXe5cLvP9XZ7v7MowPPu9Ywz9TzGe98UR+NkRGA4ngxiqo5DNh/LY77WPJdjbWtel2fRxJAW/SlQyKZy5xHwVe9uq0iSbf6j4q76foJ3GbJ1++wIs9AIRodVnU0Er7RtH4IMj4MTzg2PmNRwBR8ARcAQcAUfgNkCgr4srMZbPVsVkDwPyo4yqDzLYJhCtYgRdM8aWja1G6tr/xNibVFtk4ijSaoKRFKNMBBTGmufLVRH3k/Cp5TB9tSvC81R4dVbNd47AB0LgXz/ySL2dnd43CdkDTRbuY+qUQ/S2FZmF6wOIzGRTz1V/pbeq63IF7RHhbYoVBcQyE/LESClGnXlZyqSgWXkPDz1NyW/zN6H+qhZ8cQQ+FAJOPD8UfF7ZEXAEHAFHwBFwBBYVgcF07+VsqX266SYrMMQvxJg/wABdlFNTIM6I5uzpNFi/OvS+eqCxPQN6+dShcqqyotqWGD7i79nHAC8olvCr28/A/rOYOF4py3CZGk48Z7D67oMh0I1fHsRhdQSV/ngRwlH0yQMExWIGFdphlbFt0jZTu+qp1peVzcFc8TTiqbIqYJVTuZ6+zCSgkWjPHY3+OHbtN0Kfn0ut+dYR+HAIOPH8cPh5bUfAEXAEHAFHwBFYVAQee6bb861jG/3ZcKHrsjegjBcLbGTzPKB6aiSvhZE5hzbHIQP3OeW0qRIZsM9TVFqqUTLQ7TlWCj51hAeFHKwUIT9WxjBBbbrwvz50aJTn9dn/9umX39QVfHEE3gsB9cJ/88gj1aQ6u2st9MfpXb9Ib7sHlb2SJbj6ni3zDqr+p3/aS8Wc9132iWcyDy29V6In06RQgIPkIspUnmFLU6fg83xu3OVnp7t2bBEIOrXvW0fgQyDgxPNDgOdVHQFHwBFwBBwBR2BxEThxQlrlqem/+szuTZSe9ZDn60VV7CD656qUHw3WFS9IklFE0ZTTm/FRVE0IpUb1NCAzRZk5cs7oXf6dZnLLuaaksPihIQ6YB/R+NNHlaRbepO1REVpNr+LEc3G7zw29819/LCu+8NyZZkeW7a6K7GF625fpd/siUZT1kcQCCKl/pg6qrslC59WBjk3aVJpS1Tfl/0l/1Uo9ralIHphDZWMc+nN0+/Vjn9u6+Ozjm2rYF0fgQyPgxPNDQ+gNOAKOgCPgCDgCjsCiIsCYPP6LPGwWRfkjKOORLoQDjMv32lyGswG6CKUG9vLfLAgahCkihBMfzl56p8io8hMCaXIK5vPMCTZEfalLVMUqMjYY4O7KQ/4g9reXaerVE48effnT+19qf/1xHEJ9cQR+CgI//9S+5SLf/sy0zX+BuWI/hTX3vrwIS+qLWulqtuYQSOuLdEvoZEqEQabpVWYEUx2SnOSXTPRlBRVSMKygwEIFTDa+2ob4fYqc9b4JCr58ZAg48fzIoPSGHAFHwBFwBBwBR2AREWjL4Sbc8YU6doemfXxIFoeDurIBOVKQqZ1ikFIwm6a2Af5o0mZt1zJligb+mC1q4G9DfYlDUkDlOidTW4qLmyZ7xyVKf7yK+TSU8XvZpFt+dv3odpa95MRzETvODbzn5Wx7rQ35l6CSf7ftugcwr11tBlVeijDSwaz76SOIVjLhmkZA9WFE/a8wVZO5Zs0XGdpJms09i9NnXVZZWddZ3/NppM/ZxtN9234HNf/1G/iIfqk7AAEnnnfAS/ZHdAQcAUfAEXAEHIF3R6Du43Y3GLzcjbtTjNjP9jE/WvRxyHEts0TRRhvIQx47ggZJLpKqpCBCZosLKbVIobNLQC5ThCLKa9CvyioPH8BCN99J0JbDXcwfGm6NzrYbUVFuX5lV9Z0j8DYEFMX2Sntmd+zCx5ez7hN8wDhWhrBbUav0cUPE0pRL9lLYZUJLsnil9Tv4pn0AUfShCnJZ4r0c6Le1Mu8AAEAASURBVMPqx/LxVNnQ6+NKHzvmFOpjuRVjcRrZ8yn6+RtqxhdH4KNCwInnR4Wkt+MIOAKOgCPgCDgCC4nA1lPnRtnx42eKsPlim+evomm+WXQRkhjrWoomP/ltKnJt7KZXiWdRMYyamzkqjzJSRfHntLC4KTSuLBdN78yYnwL723wICdiPL+jnkJy26yxsAJoTz4XsOdf/phXFtqjqe8oy+2ST1/eXWbi7CD19k/7GBxCZdiuCsoJfFQXKpZyS7SuHeCf90dJR3mmgRsWvyB+NtrNJOyFNpuBF1nd8UIktlrbVJBT5Ffw+T9fbo6d/eDDrrv8T+hXuJATQ531xBBwBR8ARcAQcAUfgzkXgJGP0k+vr/d/cNyBCaDFg+hPIY74G4VwrcaBjKF9I0dSqYCz6yYb2qm8d0Ek5EkEtsIW0aVUookG/UpPaiTmuTHJFGUyrYsIKedYV5YVH9y29+bf3rIY/vLANq/XFETAE8hMnsmLl2ZXdVR+/SC/6ShXDp8ss3lXRf2TibYGBkrZpSqe6lfqhJan/cag0m+KHE/VbmdpK7VTPLDGxLeiFkR4ORe2nMb426voXuhD//B++OPmrJ1+H1friCHyECLji+RGC6U05Ao6AI+AIOAKOwOIiMCnr82U9+JOlvt/q2m4fg/2DdciXpVNqgK6RfIvPJ1pTVnEs80WpSmzImv90nswXtZ/7gNKCWMCMFIQG77yPlVVRTUP4EeaRr8Wqfw7kpH764gio62T/4P9+pNxXnd5RjCNRbOMv4X55F1Ns8sFDHbJApZSaLqUTg3DZ3RLsSlGVVdk+ghDgSqRTHz6k1o9b5paFdNKZs6pprP/yHUTdl3TcO8eT1y5vjf86FnHdX4EjcD0QcMXzeqDqbToCjoAj4Ag4Ao7AwiHw6PEvhKVyMiknbR3b/iDD9h11XixDMIeZPtWjMpkvJwN5DfRFDox0SuVkLVkLEm26CrFUCIFWFE5sFqOtFLHKCguj8EVKDl2s4BPTv3lkdevXDqyF/+/cVqtivty5CCw/uG9tZev1h/I++/Kwqr4yKPNPYSa7zFQqlTgmFNN+IpXqi6nPcawffVBk0vaUVD9VVGb1PTxD6ZOp7xpZpRQRbCdtHy5N+/4vNsbtH7Wx/9Gfb2QX7lz0/cmvFwKueF4vZL1dR8ARcAQcAUfAEVgoBE6cPNk/9li2/fn1g+eqUDxbZ8V+RvS7GbjvQWYynzqpTSKXFtAFmQhqaaQTSYlEyKepUQzsKcQp86Rg3sg6RWkS+ZQfnlQosQcMepdRUB8mWMxOTHynRC29Upf9i1TbWijg/GY/egT6rZ30rV8m6M+vlUX+4KAud2AUqy8ZWddPs46IyvoQItXdWCZ3YConJczCG+bZB3ocnVB9VobdioArdZSouNmkV6+U6XgRx123jRq6jlr6VNX0Jw9U2eijfyBv0RGgyzoIjoAj4Ag4Ao6AI+AIOAIJgWefzeIvD3fnTd0zJs9rBvuHGe7vx+kTUSkyHydRbTFbTKaMDPwZ2KcVGmlqE0RgtmiKFQ3vRTilNGnaFfnVyUxS6mjeB8UfqslpkK2YapH2+2LzKwdWLj564L5Mfqfztnx/ZyDwL790ePhrBwZH86r6fJMXvzooy88PimIPpt1LdDx6FB3H2CT9B/PtpFoqiY8a1vXe6n/m36ky9DdT6NUfrQX6Ix8+lE6XbachvjBt2+/S4f/in/yoffo/XqTb+uIIXAcEXPG8DqB6k46AI+AIOAKOgCOwwAgcO3Nla33/07umfb0d4i+gTj64hDNcEUPZ9wr0GbKGqSkUIVTzfMqIkSBEpn5GVFAYZCYnUBHPjvwem8dC84JCOkUAcjJiSztdltdF1RAddzftfr4M/SoXuVDlS6fr9twlLuTBhha4G/0st16Nu9VpWf4cveVXlpryIWY/OWT9DpVS/Y7uY37DVVkns28+alhUW/qcTGlnBuBWTsbcUuDVHxVUqMcntO3wEVVYK/qiuindtY15//wky/4s77pXfpZ79jqOwPtFwInn+0XKyzkCjoAj4Ag4Ao7AHYHAiZNQwmx987cf2LuOKvRj9KHTVQhHmzwu1QrYwvBe0WulfMrkViN+xvAM5EVBGfrLjFYMgX9R017oRwGpUpoz0aa4oA4UVCoVv9jUeb53UOT3M7/nI13eXqmWsr+iSQ82dEf0uCw7cfTo0trqlf0o5A8uhfwLmCR+HkvaQxh4N9a5TJzk44b26lfqT/S9SB/UYoomieqHZFsh5dHdUgWrpAydmgrat21/sZ12r0JIn6FjPj0ODUGF/FtHQsm31wMBJ57XA1Vv0xFwBBwBR8ARcAQWHoErVbPdFOFFhvjPDWK3Gw65d1jVqJsxa/sWXztoAiN9BXFJJo9SOWfMAIZQYIOLWoXSBOHE8Y6jLEjpJProIMODVAQAqiDfPexth3iMHoCofqEKscHWUYrn8wsPoj/A+0Jgx0q33GbVJwchfmlQ5b8I8fwsHWtgHUxfJyCOMtGWOW1AdQ/0PanvIpeKuCxfz+S1iaIpksk/olbp2wiT9qC0U0aEU9GsUqTbsmMuzzOXN7f/il771GBH/8M9dTvNXnpft+uFHIGfCQEnnj8TbF7JEXAEHAFHwBFwBG53BOqi3MAM8Zk+hB2QxyN9zA8yd+IAasmUijw9CqfNnQghkHBpo/0ZKKKZUjiVrDwpUYr6YmRTRIK6VkdlWBUnpsGPD8/Sw3UuXTR7+Z9/eveoqosXf/P7F16dNeu72wyBE48eXcpG7b5umn18kBVfarLwizj6HoV4rtqjWv9R76EP0emsH9nZDAj6jsioSKkp6pRI88uqPCtfSzSViuy+yRH5jMzTOe1D+yb9+qlp1/4xbPTUP33KA1rNEPXddUTAied1BNebdgQcAUfAEXAEHIEFRmD/mSvbr+97ejnmJeP2hzFCPNaEuBPWWMl/U3aPChakSKFGMiEBStax+d2JfMJSRU4VaRQekNVSTPkV+NpJ+aQw//ARTUFgyg5lFZJbT2Pxt5iGZTfRR/8dTTrxXOBu9FNvfdItZ231ib6IX6xi8StVzD4H8VwuFN9Hijh9J5lqQyDhjzqef+woiBQUZkqo+o+ZfeuDhpgo6fq4QemkhKoyqmfMizAliu2kI4ptjE8S5Oo/7fAoyj/1FXnmR4eAE8+PDktvyRFwBBwBR8ARcARuIwSSr+f5jd85duC1riiexZzxUJ/nn4ZnLptJLaa0gRMN8kUJ5iQyedox0McGd272mEMwSbBiqayqSPPkN0uWPkVMorop8lUUr/saNdHn5/710b2j0GRn9j584exjj1vMIjXmywIj8DvHjg1G5aW95Xa4vyjzX4Rw/mKTZfcTMmgXFDJP5tuz12x9R8es+lBhvUZ9S7Ry3vdmgYc4T0TVupdasv6pOvI/RrXv+OZxZhrC92nrxROvZecXGEa/9QVDwInngr0wv11HwBFwBBwBR8ARuLEIbGbFlapu/qrK4xrRag8gNN2NXMlNyGtTw3yG9DJnJGqoTbfCOWSCVYN/y01zfxpvkOkjXCDgb4ccmoIQyT+P9sjQwIy0CjPJ/ahZDR6h220ZVsj7w7Obx84//tipLnvcLn5jQfCrfaQIbA3Xl/OsOVbG8IVhVv4KMWY/x7qqzxgmWIpQimuyEbXUaglipPQz+7gh4kkFKebMwamOkz5iGDmVqXcinSqkuTwx42Y+WcVTLk5N8/wb1HzNmvWNI3CDEOC/RF8cAUfAEXAEHAFHwBFwBN4Ngb9zeAWZaNgXeagxgz3axngAOiA7SCZZUS2pTxKWEgkVISWXcyVa9qxpAsRYgBcy4ZkSsuTzKVNdEU/RWNUrxTwJBwMJrWmyZrLPFYhFEc5eqS69Mox/74GHNoavv54/qwv7slAI/N5jWflovn+lKZsjTN76S4M8/xIRk49XWWDalEhwY2mU89c6I52zbpS6E3kinyw6V/+a71MivQ8SqmBWsy6KuTdTqhCHmX67iXPnuTZkX2+z+GfTNrz29QudR0424HxzIxBw4nkjUPZrOAKOgCPgCDgCjsDCIrDr3Fa474GVrSuXxuXGZHo/g/eDkMol+OHAvOgY/EulKiAEOhcBNTLAE884AmzAjGqzmvkXqwKa0UEOsHksKqKNoo7i24mo2eGGBznFX4/UrMQhr4j5EIvePX0bDkzb7lBdhIuDbPjy5+66Kzy+vi7Z1ZcFQuD4gaMDBt97mZrnwUGW/RrzdH65Cv1+/DrhoHQbNqZmqh/xZUL9SGlSxt/qVzrmodW5rM+pUConKAgaxCo1VH2LvkamTGzHbVgfd+FHENM/CtP6z8pm48rJdX0C8cURuDEIOPG8MTj7VRwBR8ARcAQcAUdgQRGQsvj7Z650XyDO6LTPa2TOrqkq+GE+QJUkZAsWssYwMXeUWnWVbRofSKfy51QWXnnY36J26gS2AGON8hXNUTy11w/TSStLFX4V9HOAye6Q/Uo1aCbEvu3bvGv/3RuXL30tXWJBkb1zbvv3jh9vvnCo2Lt3mjEfbPZInaF0ZtkvMDXP0Tz2S3QKxO9EIBPxnGMj8pnS1RnoNbzxt5cgebakA+ta6jp84NDni76PTNkZrnQxfH/Ux2/Q9574rRcun3LSOcfN9zcKAbkS+OIIOAKOgCPgCDgCjoAj8B4IjAbbF4p+5Q8wk3wFTXIUQ6zyMjsKX1ziGPIIIZCvJ/RAQV+gmGZOayQSxpCi3eK1yRQXhaLhVoURzV4FUDplGjmdTrMeL7wllNGGtawrxcAtmqLeUZRE0y3KryKU7uqy6f/1+GOPnY6PP24Bdt/j1j37JiPwar21XFb5UdTIzw2z/FchnD8HzzxAp0D45LOCdRL6jmytr11m/YYM/nHCTsRSe210mBJ0kJYSpdOCDtE5A/Op9F2/3Xb9G1DY71Dj99FDT8/L+t4RuJEIuOJ5I9H2azkCjoAj4Ag4Ao7AwiLw7YtZ/61L7dbfPXRgXOaKa4uTZwy7GfjvjoVsaaVdJk5gvpwqYZFrlaafaohAaMX6ltLm2QkRFUuVd5/NuUgbRh6kgLFAWHWA3WReYxfZQF5Wu9hOL7x+Kv75gUH55Xv3jv+buzey/+d1eKwvtxQCJ47vX/2bh5bvq/L24WFefbHOsy/mofs56OC9KJ1MmxLkJ0y3YDN737xxngGayHaudurEUkU+58vs0EpybPnWVehMIrBMncIMsSPm7fzBtOu/Hfr4F5Ol7PvZcOeVk69vtPNmfO8I3CgEXPG8UUj7dRwBR8ARcAQcAUfgtkBgaVK9OVrr/7IYt9vjrL8bsfJIE8vVqsBbU355PKX868QoIhFIpUhdJZyab5ECbeizTn6eIhQinbMItxUKZ47fpxSrSGbbdVlE4iwxm0RlhaeE3bGPA2KW/m1Y5mEa+09ZmG69Pt1/JcvWnUzcYj2syvvdfF/4Jfjll7HJfojItUdD1691fTtg6hwsYbHTns0FK79MU8zVgdQvtKZD2+tM/cv4JhsV04n2+jYh1V2qes4F4acxVsz0WRRX6E/f7tviP4RBfirrL1965qlN9+sUdr7ccARc8bzhkPsFHQFHwBFwBBwBR2CREfh/L14Mf/jJz4+qycW8DeFulMrdVVksQzRXKiLUVhBOhv2K8mJ7E6mSrAVLIA+i2WsKDH6mcqF06adFhNMCyUi7VHXIhHIU+bbAqVTsEwtKYtJkQ8521EwuOgxFM2Ru0f/i4Fr5d+6u4++fHY/Vli83D4HffnDf2ld3Fw9UffwFLKq/ynv6+abM7i+zuB+lE+GTyXKIHCWRk1doNypKyXt9u8pJlhFQMUnytKYNPYYT6zkUUL9R79EPG27qFF0b83OTEJ7vY/YnXZ7/ZWirC//0B9sjj4YsEH25GQi44nkzUPdrOgKOgCPgCDgCjsDCIiAuEE+e7L/2uSOojMUPBlk8UMews4rZAUWtrWGM4/FW1rZTIg+hXiKJGvm0J4ZuGrtIhFLMQ3MsRiKRomSafCUyYcekyWTXFFDNxciFG9prRFXabgesd0ArDea6DxK19Ikuy5/I+/IpLnNpYcG9TW58mm3ug/39Kjzwq1XMH6J/HEatXFIwqQKpk48IzOOqPqD5NpmXEwWcjsA5xDExS6rzwq2zSb5U39BJKiGbbvUT7VWLHPRw1SWCLXuI5nQynrx4aTR6Aop7qg13rX/6F15qs+duE4D9MRYSASeeC/na/KYdAUfAEXAEHAFH4GYiIApwohlsbmeT53Hv3MHciEeqPts/zfJVaABcVCGBCA4kggHxlAllgDyIYEI1xBaMfJiapYBESuJEPqE6Tr6hIpuQCyUZ8YCokKdMwsbUTPIJpykOE/Z2F8QTyhtXQyyW/5dP7calcHDuN06dXb+ZGN1J19Yr+9qjWXl4/fCOvsjumfajh6dZ+yVe38ODoryrKfM1MzO0dw3R5EXKDVPvPKCMS880BdNePxsjnWqVvgOQWrUhh2W+TSRUtFM/mdvSk0Lbx61pDOemXXh6czz5Rl1mp0+ceWmcvWSVfeMI3DQEnHjeNOj9wo6AI+AIOAKOgCOw0AgMT20vZ8eeL7Ym+Gxmx+AFd+ddfzjkYUDk22ypbmyulawIGT59EIyWfWdmtlUDKUWZYpoL3DZRNhW7FrIqXqJFZJNJPOEaIqvaqlxiHuKmYhiKNqSpVtA/S5r4TB/yI1MCHU2Kcnc2aP+CUk48BeYNWB5/LCtWnjs4mObZYd7b36pi+UtljA9hTnt4SGfQB4gQ6AOom33oeL+8ywp/XinZvHR77/q4oBdrqqduOhFMHWnRmT5E6GfaKB1hrnaadkr9NoaOELYXtrv2FIT2O3XI/oLim9aAbxyBm4zA23v0Tb4Zv7wj4Ag4Ao6AI+AIOAKLhsD/+NB9B4u+exSi8eWl0H5+kGcPrDbl2qDMmXtTcVy6jCi0WQfh6CEe0rdKAgiJdDDHohHKkqlAmS2FsolYYGvLET6gjNSkjIl4SvUUcbHIt0qUaSZmutji0ob8RuGxefFCl5XPEajmL/uu/VYbynPttD+3XOwd/8apU5NFw/ZWvl99BvjdY3vWqr44hH/v/rwu9pRVcYwPD1+BcD4EuTzI+9uhiV5ziGaMHe+J90c/kLzZaKocCjDdiSnhV2kk79UiHJOnvand9s1BJPUt0lkSfEqmtvQS9aEA6RxNQn9h1HZPbHXjb6LE/8k/eqV94lbG0O/tzkLAFc8763370zoCjoAj4Ag4Ao7AR4zA2ri8NCq7r/d5dm7Ul+NAAKAm5PdBDYeEpeVqKF0QUE2fYvNyQiZEHmViaT57IpFU0uyfFuGU83ZKvFwIiciJAhZJBZO5LvMxQlYhpSIzyKI2IYvaIiouczZWVVl+rK6q3ZNpe6AL+adR076e1+Vfbuaj8zTixPMjevfigV979NFy/yvPHOAdfDUU+eeaovhYEcM9fDQ4QICoXYNB1Yhwtu0kqZy8Rr1l/fQpQWbXmOXaxwiRS5FQi36sfF3A9qZzmhmueoGE0rniqez0wQFFXUpn1785Dt2P+hj/MIvV78d6fOEjelxvxhH4SBBwxfMjgdEbcQQcAUfAEXAEHIE7GIH8xIkTef1v/+3+LrS/tFxnX9zVyLcvfqII030onjtiifJZBgLLQB8YfUXIo0xnRSJkNCuf0Fyqp6bWgHj200kWujarKV8SjMZMMCGYMtWV6hnNFhcCK0WMmvh4QkxVVqGH6jBt+4uTab+OLe63WZ9sY3yNuq9xBxc2VpqLNLh94snXtu/gd/ZBHz0/wZtbun/3GorloZWy3rPWLC3XMd4/7dqv8AoeqqriLl7drpgHOGjOq+C9YmY95SOClM4SX19FLLb3h06ZFjHJudZJbzA7auVQTjs71/tXmfTTkdJlgo1iHroYR0RXvjDpu+9tty3vO/+j/+6l0bdVi4UL+OII3BoI8BfhiyPgCDgCjoAj4Ag4Ao7Ah0Hg5MmT2VfvuWdadxvnq6p6DQIyhhAiSuY7CS60lxk+ISEihzK5xDgS4iB1SySTUlxaEiY+ntAErZpiQ36BkriSeSZkk3opXWXFJ9BIaSPV51SXMIKi7FiXMV+ty/Iu1ge57rFpCPdz5QaCOi6rdvrHr2+779/7fOmgnf8pCmfx5qv38u7+Rl3mf2tQVo9WZf4Vps/5DIGe7uaVraFoNqTZa1W02t5Ma2U2zbvifdqMOOxFCruWjw+o3nVFJOS6tjTdjn2MSK/XXrOpnOoTs5+OVKqDeEI620kM67zb5zDL/ff4GP/7thy/8stvZj6ljsD05ZZCYPYx5Ja6J78ZR8ARcAQcAUfAEXAEFhaB3zl2bEdftcervP/CIO//qzIPX6zquFSWsQ5hinjZi4Ma8UwPKTNakU6FCxLZlKYl5qGgM5jqyt9TpBMGIuIpsilfUc0FasFp8PPEvJJVVaWcKkiRlDWR0pLkopvi+zfpwzqZfw0J/msudhpGezqWxfkrg8GFpTLf/s1vnBktLOjX6cY1H+e0nd61hMI5qKo1Igc/gFnrV+u8+CQvdC8+azt5n0OIZc1r4X3wYcGYIm8vlzcv5rR6hxzJrzdNeZI+PrTTlteQZYNBQ5wh/HRRwW1aHVlgk2EfJ9QNZkRT79WO6SMo3GHcd6NJ35/n3X+X4FbfJvsPf/O5y+7TKch8uSURcB/PW/K1+E05Ao6AI+AIOAKOwKIicPHw4e3BhRd/OBy34XLsH8RH8/61qtwHJWSKT0xu5Zgn0UoLbAUaAklU8CB0TxFLBR2CrCgIjXLFRU0jE7O5WlbEJKVLIbOAt2ogtSYGZASVczgsU6+U2R6ENqZbyfYSRfdzXO3lkPcvI7g9UY0nT47q7HUqO/EEhGuX0ajdXxbxK7HoP4OQeRgf2sPDsr4HUHehKjd8FKjwsOXVxuSLyysyAsm7kMIpVdvMofVu+Gfm1bPjmul29EZLXlHO54FkZqt3acwTHjlTxMmXaa3esd4w3xQyKGo36vqLm+30BS7z+zGv/3BnW8iP1xdH4JZFQP3dF0fAEXAEHAFHwBFwBByBjxiBE0f33wWH/C/rIv8bOwfVQ4My3l/EdgCtxAdQhFKUUz8IhdgE9FI+niIrNv0KxNMUTsgoGia5xlwoLPNbEVVUNPmEEjbVFE+YCfN6Gpk1ZqtjURv5A9pVdB0Mdu1ftk4r62ipT3VF8TTRcF+83FQ/Ju3CG3l7IduzZ/K7//HOi4KLWj2Y7txeC5Nu52pe7mon0093oX+UuVKPL9XVoUFZ7CJ4EwpnqHubHkWqsyCXSq1F74aPC1KoeW9SP3Wud1yiTMsGV3ly4NQbTwNx5bKoPLukdvJuLWpten/yAeZFQzjzMIlxrOi1m237vSuTCb6c8Q/+2Svtd6wN3zgCtzACrnjewi/Hb80RcAQcAUfAEXAEFheBHd3g8tZa9vW+n765SQQa5nhcZU7HfYOSoLcEnclzfPwUKAgiMicl0BRTxeQfKIIpomJRbVVOSilp2nczs0yxHk2pQvJPLJQjUVFV2di0GzoUNa0sNFHcTfZKn+d7MAT93CjPX2A6mFMhlk+s1PUTS5fGCkB0x0XB3dwzWs2n4T7MaD+JcvmZpi4+NeiyT0D7DjQxG4BdXcVAmKg+6wj+JGLZNAropGlRZBbNe5U/LzTUCKe9M0gn7+DqOyb8sd6EsUy9S02nwnsvMMVV8CmUVSOyNJD6Aq9dTLVkXtiiqLrJaHRxYzp5Af/OP4jl4I/oTOey7LIK+eII3NIIOPG8pV+P35wj4Ag4Ao6AI+AILCoCV86cmWSPHn2lfL3sJu3WPiLR5oNYfQIPz6OQzp2cLqM+igwaQTS9S2SRtWAVMymlnHFoCqdIjDQyZFSVRchkhfBYC8oSodEy34vc6FhtpSVpoOhzeYbymg3Yr2HieTf66dpKiAdD7FYHW+2eJsvf+Def2bXeZdVm38QtjH4vd215ZUd9bvoPnmR+mAVf/vUjj9QTlMvR6MyOyxcu7Vsti5WV4aBpJv1+0LoPRfMTYPMpCOeRqi728g6GJeRPZs1CdO5zGyCe+nAgf1rcLu1NUI9Fb1WLTKfnJrNkKFGvkb21hE+u1O9o70n5rKkBq2vFOadX9MzNut3F/kLb909N2/Y7oSyfyI4+cmpy8qRRUyr44gjc0gg48bylX4/fnCPgCDgCjoAj4AgsKgInoBEnHn1puvR/Hnyj6/I/YbqUV9pY/zIs44uIYg/CR5bFKqVEJr++DpNa1DF7YNLZF5DNXKaaUr/4lQShkWmtDDtlXivGIeKZCJHMOGfkhXTVT4tR2vmJ8ZpUHr9E1LWkr+X7kPFW2747NG27L3GNCzCiC1z8ZcyAT5ch/BDy+4PJ5T1IaxdTtJyrLS7eweRANWy2Jgc3N7tPVUX8edwo70U43lXHbBfvZjdcbyd0cI0pUJbwu21MLWYqGyma+lggJblBnVSApx7lU5bSBdPeyB1T86wmtTmpnKZ06m101MWpVu9S+Os9WqRb3qloqtRvm9915sypdxy5GZlP9yFvt6aT9VHb/oD3/h/yPv/TPG/e+K2TJ00/Xbw34Hd8JyLw1v9Jd+LT+zM7Ao6AI+AIOAKOgCNwnRGQuPW148fr5WxrD9FQH6ny+Pmi7j5XFv2n8tgfRLPcLWXzrRWlE+YjAqr5PiPEU+RSeloBSckxyRS/FONABYOsyLCTnxJFcGyvh9K5lvmeclZWtEc+o8pJeZjcGoltuRZzQkKs8g0i5m5Ass5Ah15hWsoX8qJ6YdpNLm5tjC9Vg7rNBw0Wv+V4UoVR0fXjK3k96bfb8T0P7h3ftXqq+/XHue0bu+S/91hWPPusoNvfNP14UJTVSjZp16pYLlWAB/5100Dfq3oXtqt3jaajB8ej0c/B746sDJodVZGvgO4AfLA8hmDydUABn2CS9h6kbgoxS6eS3skUE9setbMggpO9FyOeGaReUWwhl0IZ3AGWF6YD6uv9yp8X9VoNinjaxwXa13X5Z4STUhOCE613MXv1yvbo+Y3t0VO09sf/5LX2e+nNUdEXR2BBEHDFc0FelN+mI+AIOAKOgCPgCCwmAuIVJ555pls6duzN8aB7EqrwKozxJZTEl5sy+5UyL3cTLTVjQo0sMMWGIto2dZXVkJY2TEwJE0ERRxEpCRCdyAmmu2IsaRULgcy8RUMswTJVZ75IGxVZUq6SFbBIx9qLIMmfdMi9kDWEA9WYdg6ZI/IwVO0zeVlsdW2O4hku08YWpsKbVDqXd8VZphhZL/rpehwWb1x8Y5v17u2YvTa69o7m93A99txv/rUTWX7m9w83WXZlOCimu/oWFTeGj+Eo+wBPu5/7XuV4lQdfi323BglfW8nLnStLS5g9Z0PmQ0Gz7CvIvoxfkycsIGHjahgJXgEs/1rDCp9LKcZJrSaHLwCGNPxSU96YOk3NvuV9qQ2+FKieBYQCZxM2IaLm50tN1YGJ2vuRggqVJTXfhHQ+yXv4JgT06ViUz3fVZP1G4Xo93pW3eeciYH9Cd+7j+5M7Ao6AI+AIOAKOgCNwYxH4l186PNza6I9CWh4a1OG/hu18dSmPu5oY1nKYHaa1+aCusxoC2LdTiA/ERZKZ2IaIp+iNiCdERURH1NF+kJaUoOFdWo0IKXGmgs5z5k98rfJpyhxtSo2z61CtQ/2EVM6U1iobT6fb2+PJdl5VW3lVb8Ox3oA7naPOeeYgvcBUMOsIfetZ22/GrtuOfd53RR4gdUGcajoZ95PJqB0Mm26wvKNjTpBue7TR9mXerzQrXavJSrNtCPcwZ56SvJ12Nb6TDU0MUF4HBdGPCoTCLEKR2Q9KdEVxtiZiFctJyJd49mVI4C7U2r0olIdZiSYMCc2LFargzsmal0sQvQbEqCfiLRNnLs3zCm9hLGIvAijsEycULiFr29ZIYtPUvAYeSoo09WT2bISVvYJClbxDNTmdTvlYAIaEdZICqrk8hbGmVkk4U8jqcDGBxHWRitsuxDdRn1+k6n8Yx/CndSxP/cMfnNe0N744AguJgCueC/na/KYdAUfAEXAEHAFHYFER+MbhM9Off2rfmX5p0I9jsa/sY4057Wf72B9jnpWyZp1CFFsYHaaiREmFZM5MbiF3mOEan7FNoizpPOltkCPy374oQdRU5ea/WRuWk4iXEU81aIQI6mWSaJriRYSIhIypRAZryyWcMCMwEoajebYfgncMxXYC0UIcjRMUwEmX5yMyR/g8TiGNLWodjLrQfqsPxWbflZtFLDbzKm5itrrBtbf7OB1BHHFnrGKVtcT9LcuyjjsxQd2DL+U+7msfpGwJEinr17JkT14NQayLkA9oZ4mnHGDK3MAimWMzg1iWQxjkCgjip4miiahLYCC8MwMxffRQ6XltL3apZxZbhEZKkRTjVHAgWKMdWxAgvhSINBKo2EyiRTINO1RNLSKjek8yq5UfrtROEdkSU1xkUCPzIrCyv9Vbka+n3o98R6Wt5mWtjwrb25Px81uT6bchqU8QAerZ8+OdW1nmU3UayL5ZSASceC7ka/ObdgQcAUfAEXAEHIFFReBxfB8fz85vnDhOANW6/j4EKoN8bkM+tiAtB2Ate6ErA3hJnXw9RXr4B/kRUxI/QpYzn8ASUioz3BTtR6RStCmRTOGjolrSPm2tDIdS81Ra57qHxLk4EydSHtfTNY10qRxkC5UQsRDiB6lTecjpmoiujEJngZCYCabPYKZT2OEUwiX+3JLfQvgQNPNtmPUmD7Y1CN0WA9FNTFI3lU7TY64L8dStgARxlEKodvRlsQfVdS/K4l4uNeDmII4264geHzIZa+4fq2Ui9SKukieCKVERbqd7FiJ6VO3Tmo6Vr4y0zCPLijMKQdXRs6UiMokVVtTnogRdskBBKiCM9J60aGtHglFEVNckwcioPiBQVSqy2rKbpK4cYcERUTRCzOO4iOESxryvwOK/udFOvtWV+Qv//anJhSzb0CV8cQQWFgEnngv76vzGHQFHwBFwBBwBR2ChEdi/Pp6cvee55SZemOb1q5CS54li+gUI28NMpwLJCrtKyAtRbszfUz6fIk6aakV+hvI9RBM0X0LmnDRzTxElY1MQH5GqORGakyHlozoaGRIhEql622oVIEVidAQxUtRWm8qFUlz2qh+jmYxiU2vXswwZh7L2hCkS8USrrJu6DH0cYLpqDIz7CbFA/2vKTlbENTNYcvluuamYktL4F5X1dNwETFTMMZZZTSWm0IyN9np8KDd0zUqJHULlksdrMlI1wplIp6BgNSathxQB1T7V1YHhYAdspHAKEyP4iX3a83eY0ppZrPimSCbvASZJeUygTRZNLShdRFdwWHRaDnhw3pFMbFVZImiag9WIJz6iyJ2g0GFX2/dtiJuQz7P9tH16GrPv4+v7BAGLfhCXRpfm9+h7R2CREXDiuchvz+/dEXAEHAFHwBFwBBYWgRMnJVS+euHE8eMb4+Xx9qBtL0A+x3gGXsmL8GARy/ugSmsyFa2MFYkYiXCJzkBkdCSyJHLIz/xADQ3li5OJlbEa2bIMI0VGxtgk0qiWVEBantqnFrzKVrE0tQ3B0qL2jErN7kVTgchkFIlT1cnVTlOCMC0MMiyyJOay+DaKibEa0VUhETT2UkivLkrXkphhOlY90u0+afktn9aUre3sru1IOKhdLWpG96sSts4PZ+2rniUpe1bJ2lIiqyVpo3XeBMeGD3vdmvLET+2+lEaSVbbytJYS7B2orMioPRJNwqvtucCnbWPYRN08Dz3/cdeHF7a79q9ROp/ti+yF//l05j6dhqtvbgcEnHjeDm/Rn8ERcAQcAUfAEXAEFhcBIt7Wj9x9IZTZKOuLN7qq+j4uiL8CN/nyMM8+gTPiCpNFwgEheDh44gJqKpqIpgL/TKeki4eixoklaSsyqelVbMZPI0BKTeTITo0cUZp9OocEcmJKpnwONack0XWlpGqVTav5ImI3ixsmPEp+jBApyigKr0xJzZyUezJKzKSgKmdqI2kmIPJAIsJ2HzI3ZTU/Uq4rP0lF1NXdmEkraeYHqRSrIpKXiF96TiWqdCJ4InW98OFhuIxtKJ2OdZqSaJOjVNXK2rGuRZrpqCKHPKMqlii+KixTZvnVSl3Wua6TlE61xT1TVr6Zuhc1LZ9QXSfn+XRuKigYWj5lG5sOR4opgYpCHDEVy4vE0n0auL5OQN2nqfQmwY0v711y21rg8+U2QsCJ5230Mv1RHAFHwBFwBBwBR2DxEDghdvbka/h4Es6V6DG//eCDZ7u1gN8i4YZi3kEumyKUq0R0XYbTEEdHgh4kyCb9aI3AkAT/UYbIDyvcyQigSJ3oD3uRJhGspJJaI6RZqpEi+S1aUZ2JFLKqHpzTCJzataCzuo4UVginqZ0ca5Hyxz8IKhu7pNJF4hKRU5oW7XQfc1Kqo1SGciqqjbUpqpbKp1TdyOxce2WyXFV6rU1rgo01NNtdWynVuXarZox4cvPye8U8ON0Dbeh57JoimDpQuwKQvciysvXculGRaAIYUSzhIFJqz6I8ymnRO6IeM+kUbdu3hPPtX0FPfoKa38qb5puTfZ95ITt5MvxuAiBV8q0jcJsg4MTzNnmR/hiOgCPgCDgCjoAjcHsgMDp0aFSPTj8VJ/mlUcvsI0hjq0X+caKdfgy9jVlXQpXMOyE2mqJDxEcMaE7TRIA4SyRUhOgtXHRop2xE3OycA/GqAvtaTSXSthMyrEFFsbVVCp+C5Yg4VRBL+Tz2RHXVhaR0apEyasRqfm7EdX5rkMjZhe2aujLEWRR2fq9SEu2YtuyR2FgVEhOFlUKanifVscvareq68qO0tq95YJWzp+R5ZpzQrmF3lTJpMxFay1Bdnk+UVxFpjW6qHM8iv1prjfREINO9i3CaAmqM3orMHoBj3a82NJ6jVANW7GDKbeg3R9P++VE7+V6WV39cNc13B3W88FsnTzLbpy+OwO2JgPft2/O9+lM5Ao6AI+AIOAKOwIIjQNTb1W7cfIFJLH9+Z119cljkD0AN90Fd9mDmukyYnWFRMC2IbGqlVorgSKmECDG3pZEmaW422DMCJAJnXpqQMEga8qnOpRhaQB3ONUdlB6HUBCGqW1c1pqGVkU4FM5oTS81b2YtoUkeESuTKFD8IoE0lorvhmiK3uv58P6eQejV2Xfbm7whpE3nT3c5/VtHKpVo9jdj9kqb29Iy22AVELBMBnqUaHHYTKqf7gpiyS+lXC9H2jJRK7VTR1KzuhSORTD2IltleTeiebT5OSl01Gdb9ky5TaO2xpDVxVG+EtrGi1Sw5+SY68UXm53xlczx6anM0+i7lvvU/vJL9yK7hG0fgNkbAFc/b+OX6ozkCjoAj4Ag4Ao7AAiNA1Ntw+r5n8JU8O43Fd+F4R2A5D2PO+RDGmvdWMd7NLJ9NjexpZEi0zJiTaCA8SeSHSjAuI0dSLOVpqMiqxtEUlZZy8kRUfSl8zJNJYKHS1M+KQsrpO/k0iuzpjB975VgEIu0554SVRSTOjpU+S9L1OE4ltNXJjNjpjFMVTSarqb5K6VpaRKmZZsTMYOe1RDEVNMlKsJdfKJokCWbKasRPBFh+oiKGet70NBBFyhpCuvDsGroBewyeX6RS5dnZHJxdO+WASL8QcMtTe6pJmu5W92L3Iby0KnWmoqoJ7j+2MU4mXbeOT+ePMbN9MhTxaSx6fxSK7Ey9mjFVii+OwO2PgP2d3P6P6U/oCDgCjoAj4Ag4Ao7AYiLwGOLe8Z87ulZ21d6mGz9cZuGhOu+kfn4cs9e78MHcX+dMUlJEphsRKdLKz9gRz8zepgNBkUsKp0iVmJgC3IjYQaBUFtJlAX0gVlAsLE4pA1nVavqnESu1K/IGoRNxm13ESK7BO7vo/OIiZ6yKbCtDWBE1XVHEM5pKa5W4rq6t41Tf7p8zkUElS+0kyqtStDG1s07N2LmewQxhKW9BjmhH95xMhMnhfkSo1b7dtx2l1nRdISauqOeYBzESZ1dApx4VWCWZIiYRTyromZJPp5qe360qJPSFGsRyQrubkPl1iOcbo659bbvrThFE6jujsv5hNS7XT5y6eMUewDeOwB2AgCued8BL9kd0BBwBR8ARcAQcgcVF4HF40fF2ZRv61GXN6NvdOP9RXhb3QIeOxq7/MpTp5wdVtm8pK3ZXmHkyjcmMrqEBMkek/DaTiod5qMiTfCFnJWCkRs5EnkTKRNe0FyNVcCFFZrVj+WOqyGwR6QryyZT5KqvVpUCihSKVqWDaXVMxlbRy10aYTfejcrPrW3XaYW9tzdu2pkhNF7JScFJ7Jpvehfw5IRSTtdZ4ZhHlHixELC0okO5bDyQCKfatRuz5OZ+RSkmVIp/ycxXRFHkXRU3TyEB02zTNjMyRjcSLbbJapOE+TgkcdL7N4gtFVf8ldrnPdEQshtSeZ2qcC1XRXHlt5zrOtL44AncOAk4875x37U/qCDgCjoAj4Ag4AouJQDzxzDPYe2ZaNx97LHv9+It3vzrdji9XROSpsjjOi+puCNFdsMA1GNUOtMwVSOOySBTMyp7aXEFnHMv424y96diKKZorLM/UTQgnUXTJgLpRX6lSArUkOqg2lQ5dE4HjWHqm/mmfiKSdGum95jYoK+1T9SknLne1jg5YlWBXYS9l1M7m5ZQrgpvSreS8iim2tEyjprLKaVOl7f50h1yT9qORTnLItraNdKZ27boi22rDaiflV8ci6cq35mYPaM9qz5P3MqeFdG61IbvEHoWzPzPp+2f7af/n/Wr57I6trcv/+AxT5tiiAMa+OAJ3FgKyOfDFEXAEHAFHwBFwBBwBR2BBEHjm2Sx7euVgP10uR/14+428Lp+rm+a5WDYvxKK8TGgh7EOzAYrirhI/zqasMvlrak5P5M8sYDqaQyalBmpNJrUQNhhTBdFsspo90Ws5Rh+1IDpS+QqkVAUxSiayqIkca+oUzVspQhY4F/1U0CBbZ06YM25pRE70br4maicSKgVWZJI8sTr+6VzHqpvOlZZO5rqsmp83pzz5riroUWfzj3InkEcj3uSJMlrzul8UUBTj1C5XkBoqgmsmtroic5jKNLjiuYRPDiGXlCkyO+Oo6WbANgdbJvzMCMc0hmieH/fhuS7P/yiUxR/gM/unhK99AufQl97c3rpy/EvZ9PFn0yPpdnxxBO40BOxP+E57aH9eR8ARcAQcAUfAEXAEbhcETpyAH518ZE8ZJvtXJ+PjkKSHmrb9bBX7Tzd5tksr/qBlHvtKgXL6bpLVDSa5dQouJJNXrGbFSSFbkE6maBHxkpmtEUi4UsSaNMCxmFmUtTMSVpA/94ekKnbAlIPdBQijVvOX5NZyEVjUx0r8jnIijOKMWrXYMYzOBMqUZOVSAZFY8by355eoseWMCKpNEV4LQESayKYIooi2/exeaEOKKMfc9FvpPIOCD2mxaWFUX0CwV9RalTTWes0NG0nOc3m+tjzndszLjS6EN7am7WkUzmf4APDNftj8cNL25088s75pjfvGEXAENPuwL46AI+AIOAKOgCPgCDgCi4rAyZNZ9vc+tdKHSyujJowuFHn/ctfHN9o+e6PrQj7pwy6xqrKum7kKWNd1Nmhqmyalm3ZGOJt6yMAQugYDNOIJ2RIp6xRgB+mPoDhJVZTpLcTMFEcRMpE3ETYjiCKJpOnYAE0nc7VQhFCrCliOiKCO+Gf1rE4qk3LSNrVlxVI9yqVQQamC8kUfFTRJfqw2/2hZz8x8IaKQzqRyal4TlFGewXw7rY5U20QydTUtuscgpZObKvHhlEqq6VqISAsWJSS7YH7V7E3mWH1x1HffGIf+T8D8j2MZvxmz5sfjLL6ZEZX45EtJbE2t+tYRuLMRcB/PO/v9+9M7Ao6AI+AIOAKOwOIjEH/jP55SoBqtl3/vsezVZ58++iZRbl4fZHFUZ3FS1sV+zG3393m5GvJypc6Luo95E+TwCO2ClbElCA9KoiLbSgVNymQygZU3p1RNszqFj5XKh4TBOCFnUj5F1mZkknKkGkukNTuzc6XZkuidSsNXIYu6hurr5K0SiaAq4z9XSXVv6XqqqSKzH23pvhRMSVRSKqiW1HRqXLesBG431RIp5TcnoqqXVE1NP2OhdzuoKzw+KkrtiONNji/icHsW09ofjdvp97bG3Q9HRfvSvzqTXcyyLbumbxwBR+DtCDjxfDsefuYIOAKOgCPgCDgCjsBCI/DY41n42vGt81m5Mg7d9CIk8jsocPe2fbgXevVAXpQPhC7sQQnd0xTlUjVoBrI2HaN8iqeJhMm/0n6QMvmJhgqiBrk0H0po2AA1Uav8PWWaatQxcbyr2OnU2oJWiiSKjmo7X1UwpYpY2oWNsVo9nergmjKzU0u7GijJzqjP/V5tDHYs01sj0DyYCKXu3faUN8JsxVMdkWzLkx8npLOqIOGsuvc2hHazbTenob3IHJxvcA+nq6J6nqlZTnN8lqrrKKMXm6K9vLHkjHP2OnznCLwjAk483xEWT3QEHAFHwBFwBBwBR2AxEYBOxcx8C82/8Nzff+SR6kB75nDsiiOrMb7W5PkbTDK5v4v9vmJQ7WJqj10Ex11qQz+EbA0gcczOIlEzL42wiXAiMXasKKa24gEJOBA0kTbRNYijwgTZwg2YxGgnKc1K2aFlpnLU0z9jm2znRFMpiQDrKB3PWk4Js7RUxhpQipFPI5ym2orsqjhPxD1rgVeakmlk2Kqli6u4WCqYiHnbbCgETBrnVbUZYn95HCYXtqftG5MQXutifLEv+meRll/eMRpdOPFa5uFpDV3fOALvjYATz/fGyEs4Ao6AI+AIOAKOgCOwsAjc/eSTfXZ8//o0j9sY1Z7L++y7MLAhVrbLo1AemXThMHFcj8SqOIwyeQgSdled50PiCS1LqFRgHyK1Zq1UQ/wd5UfJ1KDZeNIT/xZFVAQUUloY0xOHg/RRz2idUDOfUNG9lGJtkmxnbIwfXsMsE6Ekn7R5G2pPouh8eau1VF/kN63y9dT1sR6mUon5sCLyEmE2a7lpmdnavKNqUIuFvcWNNRZjHmkDJfjyVte+mRfdK2VTP0cjL5P5Bn6vl2DX230oNtusvFSsbG5lR5je5rXUjG8dAUfgvRGY/z2/d0kv4Qg4Ao6AI+AIOAKOgCNwWyBwAovTQ488Ul7cOHOkL4vDS3V9X1kVR/Mu3IN6eRjiuQND2jUUzxoiV7dY1rZ1XCr62DAVy2BpGqrhJFQNhA8FNQtSQyGm106pkiRHaouI6ifGSdnEHzUEpcJssdQZs5wTTuOx5KfBamKhEifTQqraI1cpioirVUkKdKRotPLVlN+qiCdRZ8O4Y8mkauYtpHRMUdRKyLh8Nvu40XX9lWnbvznquvOYJb/UVvkzZZ6fzsaj865szmD3nSPwIRDgb84XR8ARcAQcAUfAEXAEHIE7CQHRuK+xDh/ct9LVxfKwadbyUK1iLruMsekKQW93omTunGZhFxFgd0+qeFdbxUNF199V9P3BHbFY29EXa1WIeaWotkY8RQuxZ8XvU3TwquktxylYTwrak3JTiTnmBaqoVqVeJZ7KTHzTis0HrSKapm4aiYX0cm6Bj6wihFOxkri66sp3s9cas3FXZJv4bF7u+u5N7vNVvDhfZMqUVwZ58Woosiv4qk7H2NVuTftJrPoNvD0vNWtbm1t7ssmJkwSy9cURcAQ+FALzv+EP1YhXdgQcAUfAEXAEHAFHwBG4fRD47S8/uIal7drm+PLe2E/3ongezopwuGr7e+o+3LM7q/btzKu9ZdcNc9ZYxAHkrYHiVXkeS+bYLCom8DQiCSyBI1tlpmuUVIQxKZ5papaAwS7EU2rlXPmkng1UjXxCJZEzjXSSaHOFkss+9uzwvcRKVlNrloHpVBIX7fIO31UEzLCJGno5VhUBgvqL4+nowqTrT4e+ew5j3B+Xm9NXfutitkGzat4XR8ARuE4IuI/ndQLWm3UEHAFHwBFwBBwBR2BREdg1Xh2/jpC4POxGk0m1zqSWr4yLYqUiKcSwQhzb/ZOYH4ghPwJP/BiU8RA88CBEDtU0rDCNy0AmuaiKSZe8SunEIhXlR6TTaCRbKaKsNASPtHMRTstVcVrQic5nVFQUlSBHWrOuz4vpNPaaV5NAvd0UujllWpjNgOksvpkvoWo+U9XFa7SM72a+xXUm+KRu9pPmctWMNg7dl43yi7Pm7Rq+cQQcgeuBgP6ufXEEHAFHwBFwBBwBR8ARcATeNwInjh/eU4ZmbxFH96M3HqsVmKiMh1E0dpQxrC3l4cBSiHdVebZcZWEJU9xckXGlgUqtNENcyKfF9pGJLYRTprlSPG2lzFXCCU+V2qm5QzVhqOpjWrs5zbM3IZ2XQ5lfnvT99mjajjGlneDjOe7bsDGZtG9CV5+vBkvf7ZritaMrG1f+wZNZ+74f0gs6Ao7AR4qAK54fKZzemCPgCDgCjoAj4Ag4Arc/AnsmS1sXM9TGrBg1Wf8K06ygcubLqJwN/pzEJqq+0JX5L0MR72MykyMh7ytFm4VpEv1W+IhsQiIhnUxZwrlIpUxopWxiMUtQIExm8dEM+GfKKDeRVZWRvyhBgl6a9N2f9UX+fJE3Z3Dk3GY+TpvxBWIqQXTKlCgood3lwbS8sL+4svX6k+YKevu/HH9CR+AWRcCJ5y36Yvy2HAFHwBFwBBwBR8ARuFUR+I1Tp5jKMtN65Z3u8X//7N1ll2fHUC/347tJCKJELGVmK5UTE9ysROWEdmbMJ2pkEiYqamppKp9LIeUc/1FamF0Fl05a6NsYX97u+69vbbXfW2kvvfybZ7LRO91HSnvHW3z34p7jCDgC1wWBt+JYX5fmvVFHwBFwBBwBR8ARcAQcgTsNgXEMS6M+7MbZcrkPhBWCSDZNjdqJBtq2uIziJTpTPyumO0kqKDQTMqoTEdJJN4WUonZWla1qgwi1kylRabu+fz0r+hfrfHL2yjE3n73T+pc/72Ii4IrnYr43v2tHwBFwBBwBR8ARcARuWQS6LDDfZ7EW8rgkt02bx5OtFimemuZEQW2VLhVEJrbSOq0k5TQXZw85NUZaVvBRFUD5jKGddmGjj/1F/ELf+McvZpezF1X3/2fvzYLsuNI7v9zvvbVhLWIlCYLgiubWYO/LQFJLLcnWjMM2GeEnh8MR0sOEHQ6HQqOZB3cxbI80lsLj0NgeS+EnPzmaEd4kj0IjjQxtTam70d1cABIkSIIkFoIACgXUcpfc/Pt/514QTfW0upsbqurLQt7cTp7M/GfifOf/bccnR8ARuNURcOJ5q78hvz9HwBFwBBwBR8ARcATWGQJ5nGdRFnUZ4zPPlMUWX9lqNHazhUhi44REToio4jZ5QBioLKIRFlAOQk6DAVTW0ZaxWpRgCItnUzLVNaONyhfXJ0fAEVg3CDjxXDevym/UEXAEHAFHwBFwBByB9YEA8ZspJLJgUM80IdVPI+LZVEpKG2UQTzFNhmJRriGL47Rf9pkFVIU0rIpmjhMhyhCi4pikGFJIaNOsMT7nIK1uRH6uD1D8Lh2BTY6AE89N/gH44zsCjoAj4Ag4Ao6AI/CBI2Bcsclgl8ohBK+UtbPCoplh0FS2Whk1A+sU2cQblx2UE8Fk1jlwVlvKD1dZbVMIaZamgyzOF9skWS7TFF/ctQ/81r1CR8AR+HAQcOL54eDqtToCjoAj4Ag4Ao6AI7B5EahrGToz4jnhjBqjMxDHFH6JPdP4ZUhZK4I5tnTK31butWbdZJ8IK+fpT665VkcUD9MkWarbaKWTxRqHxSdHwBFYJwg48VwnL8pv0xFwBBwBR8ARcAQcgfWCAFln4Y1xWscEZzIVRRZNkdW2rMpoNBxi/RSxxKKZQCiNjGL1xKJpRlDRSVlIIaCykOYJMaFYPWPYJgN4khK3XSHYs58UDA3qkyPgCKwbBKwxWDd36zfqCDgCjoBMjmNZAABAAElEQVQj4Ag4Ao6AI3DLIrCAQfPrTzyRMg6nAjlzrJqpojUTSGVObGeKdbNVtlrCM+GbZv2UxVPHE0b3VAIhM4eKZEIrtZ3icpvIcMppWENHmFKvxU28mvSVtcgnR8ARWC8IuMVzvbwpv09HwBFwBBwBR8ARcARucQSuHDqUH3/tePfO3tRU0jTdrB1mjIsSDcsRM2N3wiszEt5GWDvhpDwNOyCV8qvVMVlCFdMpMqqYzpi5qRnLU/sU+xnFfXjslSRNr0Fkq1scDr89R8ARuAkBJ543geGrjoAj4Ag4Ao6AI+AIOALvA4EdUads4rk4TaezNukkVSl/2LiBdNbVKMqzNCqyAtKJWy1euGFIFegkl9QsaqnQTovqTJVcSMSTHZBOthTnOUzT9EpZRtertUxHfHIEHIF1goATz3Xyovw2HQFHwBFwBBwBR8ARuNUR6DbVVNRk81VazaX4x7ZytIVJJmSyTYuOJQzSKCginLWsm8wim9BQylDW/nhKAj8hr7jlyuNW1lBccbGUxm07zOt4qcnaldW248TzVv8g/P4cgZsQcOJ5Exi+6gg4Ao6AI+AIOAKOgCPwPhBo6uk8bndh35xrGEqF5ELkD2qjDOKoua7aqKoC8RT5lOWTH/gn64rYNNMnpJOyto9t7Wb4FH4ts+0wT/Jrq22zmjVdj/F8H6/KT3UEPmoEnHh+1Ij79RwBR8ARcAQcAUfAEdigCHTjZA6r5R1NXW2r4zpJmpL4TIVixhDIsYWTLLVEcEIj6YbK6mlHKSHTqAI9Iaoa47MpdR5kE/dcxX1WJByizAhL6fVOlKye3X+6jk7b6f7jCDgC6wABJ57r4CX5LToCjoAj4Ag4Ao6AI7AuEKiHc2ShvaOJq+1tVCYtvrINrrVyp7W4TbnMkt1WyYWUxdYm8U0zd7IlHirrJ8Sz5rxElk7mtonbsiHQs4lGZd0uX18r+tEJM4aGOvzXEXAEbnkE5LfgkyPgCDgCjoAj4Ag4Ao6AI/C+EWgHg23NcO1gXFU786ghshPySMZakcmaYVGahBFW0tzG75SFMyZzEJmHIJ7KeEs5yjfax1oGQY11DrtHbVMP22bQj5o+JwyuHzpbfg36+r5v2CtwBByBjwwBJ54fGdR+IUfAEXAEHAFHwBFwBDY2ApDN2aytbyeac3tGStoUBikSKYsnFBSPWRIGQUcVv2nOtyKcuOIa8TQD5iS9EPZRyjEAKOdi/WzbCvI5GDbNYC0qRwvHoop6nXhu7M/Jn26DIeCuthvshfrjOAKOgCPgCDgCjoAj8HEhMDdVdNo2mesmZTeNK6OXNhanJRLCnqnYTeiixXNCNEPkp1xx2an9sEklISKk01xtW0syxHZCiGcSrVFyCB31pEIf1wv26zoC7wMBJ57vAzw/1RFwBBwBR8ARcAQcAUcgihYWouT87x9Js/Rsj7E2Z3ON4Wk8MmSoVXyn2CS802I+Cf6EaEI8x7MwVJ4h2UFj2KdlslVIJ+63DMrCdstIoNEK2/2KlEWOuSPgCKw/BJx4rr935nfsCDgCjoAj4Ag4Ao7ArYXAscNTd0Zrs6P+cCukcjpJmyJnDE8lB8oyJQfC+RZSaVNdQ0A1pIrIpw2oYrtFOtljxNSy2bKleM+yqqKybvqjqrlUte01xgf18TsDkv7rCKwrBJx4rqvX5Te7GRFACMdPLSCNjx1N9iwvx8PbriWLfUJblkfJdFnHq3UT96o27m/dGm8HoLWqiQfs28K6ll0k9DXWtZzKkrafLbUzS3G7xnY6nTfXO1kbXZpuzne77VcOHm9OPh21C8h9TvHJEXAEHAFHwBH4kRCYHg2m+mlzW10129qmmmKMzlyCJCNGMyGuM8GKiYuskU1lrLVBO7W8abLoTh2S4MPSmWIkrbF6thDVuqrXhmV1kYy2V5Pcxlm56UxfdQQcgfWAgBPP9fCW/B43NQJPHT6cR8eiokjf7qwWnW51rdudjureME26w6jq5nGdR3madUeDbCVO0rxp06m4zQZNkyHr0yFyvtPGNaE29VrblITdlGsdxkFr2kE7agbFYDCou2vDO6Pe2mtXD65FR5vhwtEzI9ymnHxu6i/PH94RcAQcgR8dgXY4mi3iZO9sb2oLCYbiMH5nGTVVE1UkD6pb4jQVuAn5FAk1IqqhVYyEipAqm62IaHC1laU0yZT9FiKKq22bVsuDpn2DwVkudsqo/NHvzEs6Ao7ArYKAE89b5U34fWwaBBbwH3rwiSfit1e+mw3PLWd1PsoGy1VeSD3cTsd5L4ymnbdtPGJfNr3SbUbZNG5K02kymE7reraJmxkG5J7BBWma0ozX3RQ4KOUYKnMtkeMFmQRzRHiGmFf2BlIGNiUK5CEJHQaA3SdJ/WpStyt5nKzGTbvatsPr3aXk2kwZr3b+j+1rv/vAoK4sB34UlfF022G9TGG0VVG1Tb+8ND/NyN4HqujYsYZnUm9Bs0+OgCPgCDgCmxCBtKrn4rS5o5Pl2wjyFO/EWolLbQ3xZJYmU0mGlD1I9BNDaJSyrsBOOKdJEFlCtWtCPu043jkIOHYl11az+kwZlxeHU048hZJPjsB6Q8CJ53p7Y36/6x6Buc/t77yz+PxUM6h3Fnlnfthv9qRtvZdAmF6DObKukwTXpKRsII1tk2XDYaeIoh4CudOUdRfpyyBobcG2Ec0mjjPWlbGefA4tZ6JWbrF1oiMGLNZZickAqBwNDKPGzoo+AaSx1cBpJdvSHJcUG7ajst+09ZC09cM6zkpcm2r6BHWWlQ3jrw05u1+lo0tRlp/dtlK/XRRvvXPxyN6Vrx88P3zyacJ3fHIEHAFHwBHYlAhUo8FO5MyDozzdU1haWg2TIsaIOGKRYsFMGR5lMol4Si8aLJ0SH4oHlbUTCUVZEdbhaMDYn9KaJjjbRosQ0NdYuXBu6MRzgqMvHYH1hIATz/X0tvxe1wUCuKgmiseMojPZ2oWVfKpXpdFanc1w97JgpiRegFhuaav2ThjhAQyJ9+ZJfC/kcA4r5DRyN0M0p23cwjdjLJhRJ21aDKJ1FjcNg59p9LPxpGx/9qftYHQMxzRi2nib0uGP2qRNtr9gnAxlJOjRTLfYTwmkoUpuWEQ0LiGdWhJQSiKHplnj3q5Dat+g+ItJ076Sj8ozt8fR5Ssv71j5l3dnZUlQTpKlzXKeNslorerVW0e7HztdPfG0chnaDU3u3JeOgCPgCDgCGwABpEn85BN4zH6vmoc43o+CdBdiCmWo/hCFJpQkZ8aEEjmEPEMiIL0kw+Ria445aEoRRiKfmitcdMsRLrpRXFdpNkTyLSFf3hpMzVzecbzvrrYb4NvxR9h8CDjx3Hzv3J/4w0aAzH6rU5dmosV2bzad7q3KZj6L63n0tkWWNHlUDbck/XrLVJxsJeHCtjqPt+FQuw2hXCCW5SqLqldGSmyXyq2AyE0ZwYzsf4pyMRqpRwgeS5SW8L7pbyzjTagbsYQ9hj8oJGUnWwYD2ybo1SGoq7gZDdMiTeO8ENdNi4p8DmQSJDKUjEVJMpOl+VbcerdyudvTpvkUd3cdm+hyXaYro7Qa1Ek8GsXNGi5Xy01RnF9LRqdPv3H/208dTpejEydGHzb0Xr8j4Ag4Ao7AR4vAU0cPdA6/EnWne6vzSdPc3o3brbjhkHGAVEJYOMO4nUHZ2dYinZDJujKfHJNj0rYmWZBlkFCTaRQX+cwzdVOTqk2SVbxxV3tN3Y9mz4++hoRb+Ggf06/mCDgCHwACTjw/ABC9is2NwMLhw1gm3ymivMyKlSqPhqs7sirZWTX1/fi23g9bxKrJHCU9/sN1MVnOEls5myZNhko4y0UlSd1n2mDWZRcM8S4iidpEEMMA0RtDOyGcY2YZs8FZRjkl2E1zrJNvTCKaFlVjJxoJ5bgRTyOjKqs09qS61/ktA33XpW4lIQMuxzB32jG0zlxf5+fqSETxHmmoNai3iCxrI9JCrPKMa1kc9yl3DRPpZVjzS0nS9tJqrVsU5eX/8f59K8trK002vDZafSAaLhwj7tQnR8ARcAQcgXWNwPDtcrrTiXZkabI7T6I9xILMopiENyJMIJSEbuBRG4ZPMVLJuoinZAylLM5TrrVNI1knqSR5hKzi/ExZCvC+ga+uIXvWkDomOxbWNWJ+847A5kXAiefmfff+5B8AAguoYtPO4t3k9LkvGlZ7SMi3t3v92rYiz7cjhLfjbLQDB9k5hOaWIs2zIkszpCsJ/+qsrbEd4mZkhBPWJgpnCf0kpOV2JJLJmpYpAljCWJMEso5roaAXK2Q/2j8uoyXnTbbCejhuVs/AXiGOqp/ED1SmKNG01zGb6qDCOGnnU0DsuEM46fiGdJ+aRGpbIkYh0mknjnrE9ORNEk/zrLO47e7guXZS5m447mWyHC0N8uHVqlNfHWadV0evp99l4JcLVpH/OAKOgCPgCKxbBNpq9Y5+3X666mX39jKcZmoG7EQ+NBoCBRkliSHlKGLMPGxaFJjEjUBKJVaCSrSGdJpQU2wnQkMkVIpVSRhSDdSjsuqXLWn2gjZ13WLlN+4IbHYEnHhu9i/An//HQSBeEB07HGXX5vanuxcHWdoOO6O2PYzs/BLi8wHk5f1oeufyuporkiwuEJokRoiwJUYdIje7qIVHo1E0woIoWmjEkAG2caxF2ELkbI/EtCyR6HcRzCKdEs4ioXYOJ4l0WlwMyRckvaUt1jE7fuOXFcXPjI+EYyK61KUKNKlSK6BOANrloqCz0ESDkrxDHFIyiARXqZTBv1WYMFD1IFjntPF51JcWGqTNehXhcEUZuh0HtI8zRui6V7H8Xia29RzZeb85lbVL//NDWwZVP62HU3m9Wu8sH3zwRO2xoAat/zgCjoAjsG4QIP/c7ciRz0MW70ZeIQ4ICUFAkDUgjMGJzEHymOyBefJPjBORIc0nq0ouJNkiKadjUq5KzOgwhTjWjoaj0XLZVGsEhEhA+uQIOALrFAEnnuv0xfltf+QIxAtPHM7XzledYvnK3t71lb2DuLyjiOo7ZurhA0Wa3UcaoB0Qra15GhU5qYESkicoNW2MypfhSohSEbGslDUIf1uMnghVo4UIVglXCV+S+yB6tSntsOJeiI+BpI4ggop30baKG9GkAhHWMXO0hbbCNr9hw/bc+JEQ1wZLO2wb4xrsHsZnW8eAdYin7lop8VVeZ+n6werKuvoP7Bfvbbl3c4/iwrjcmuW0JXEuFtC0aJoe3rs7e90OWXlxvC1HW8uyOhN3sIbG7YWdU1dev/ravRf/xS80y9Efnh7qFn1yBBwBR8ARuPURmO0WW5BxB9BPbm8bAi2YSM2OS448dTSzy/aOnyVoLZF5HJEcZKlQEU0mQySfkCPKaID3jGTZEkLmdBOn56OhBmnxyRFwBNYrAk481+ub8/v+0BH4+hNPpCdPnkz3dK9ma3VRjM5fn+pF2ewgbh/EDPlg3saP4Cv7MEOh7OxG8Q6FRSoeJZVGV0RMMS2wLpFOi8fEkkgcJcdTtLo5llAIXRCqEqw2iXyKS2pTlsmUSpuqIrtfSapbnFqpOFhAuYBSDalOncmPKKX+bFIdrIZ6x5VbreoC6CCzik4OhSrQUI9P0gNoopzuSbPOE/m183Wyzh1XJa21nlMabu1MNZqLnav6WmXixWiadrMi34Y19DZSFt1DX+MdbvIN7Lkv4us7UxeDbrRYX/xn9+285tlwBb5PjoAj4AjcuggsIIXOHzmSTpVnt6FRvT2Lqq0QTwb0olWXnCNPHqGeQWZI5Bi5lMzib0w2Wdg0lkxjsYSUoY6WXOjEh6roEtuvpE10Lp+aJQ5k8dYFxe/MEXAEfigCTjx/KDx+cLMisLAQJaf/zentxUw0f7XM7k6b0V29tWhHEdc7ZpJkF85Bu5CMt8H95jMS6GDWNGFaJ9LOQtCM8YmVgSBmQbmsstcEcayRNCWKEcLaa9SRdRXVYNkiniaqkbaMo2kEMSVBgwirSKfYpAltjovQiqDaPluKINopYwE+WWevio2FvMl/dhi9FDdkXXVNCoUj6hyEY0okpFOtnIrZUGzhnhWnqvsNOXdViPOI39Fk59ilw77alNVtBkGfjtN0F/X2uO15yt/bDodvk3TpQlHEr1fJyskzZw68+c8/V12Lnjnbt8r8xxFwBBwBR+DWQeDRA3N7k0vbk5TM7cT2459DuL9EAL49UkJKPiEdJAeCbEHambKVPRNxY4e0YaLDdktmKnqD3ANNhXYVwnoJ2fcCmeHfXK4WPTu6oeU/jsD6RMCJ5/p8b37XHzwC8cLRo9CpM1l0aTUb/u+DTmfL9TuyOLsbS95nIYmfIkvrHjjWrg7jazIESTEZpczo1Zh4ioSJjik5ggSufi15EEzN1tEASxibJIZxiSuapdLIm8gZpJOdKq0yZkFkKWvnhLxKiFuspWS3NlRWFY3XtWCLXdRnG7bF8UAUx0dDGX5DHUZBKRLuf1KdbYfKrPqbL6cr66I6bORZm9pgUufi+yb2G8VWp4PgHgy5UzzjFM+7E0PpQd0n1H2FM9/mTp5n/1RelWldNed/8+C2pdleVl+an64enD9TPvk0RX1yBBwBR8AR+FgRwHtlW15Fd9Fm7yZZ0AzLwuQZDXqNtVJxniZZJFDGwkESRnIjiEEJBpMq4+NjAUJ5WUyVcEBDeeKSexnd68vZzvmzKCKdeH6sb90v7gi8PwSceL4//PzsDYLALx85kg2Gp+/M6vaONipvz9r49qy/unemKPYy7MleDJl7GMJ6BkHYybOYMaxFrpCL/EiAhmmyItH7rgDVMaNblLfYTbZN9IoYauaoCKYshnJlHdNVu4DKmcwWbeNaKodIHvNM7dN1KKV/rOq6Exkf7kulg8i/cU928XCOzgj73yWKwYIarnujDirVaVZZWNNWmATE3zGpbxHcrHQ/uuZ4YsWy48I+sRIXDC2zg/kwTzaNe++nqqq6VPaiy6tJ805ncfnNV5Z3vhhFlz0b7gQ/XzoCjoAj8DEhMJU1+xGEX6B1vyttG6JMkCMm08at/FjGSc78wMlkVjhicoofs5BSvCQ3wqhuhqOmvk5yoWtRnK1d75wtv0ZlCz+wMt/pCDgC6wEBJ57r4S35PX4oCIjzPPlElBz+VpQXzanZUTlzL1LvcUTno/Csh5Ko3kH85rYCoUkCHLMyNiT5KeLMxrOsYGVKKivXWsJYbDKixk8Qs2PKZ8I10DuRLCN2YnBiY5Q01yMlFVL8JLvhnzr6rqhWUeZAPBUDGjLNir6hVB6XC1fUmVpTeVu3JWvjOu2gyLLIou49lKZAeIBAOrlXqyCcHFYnzxSuF87TNXQVlZtcP1zLDrznxx5XON7YH87UuZZlF+KZJQka82gbpe5l95Abuc72RXj+ae7pO1HZrv7Ww7uuz+UXR79y3MYBfbe6G/X6iiPgCDgCjsCHjQCJ8/bS/H+aNvqOkIFAzTEzOyTxpGgNsmHSTE+W796ZZCb/QjGtIYvQQ6Jklamzhng2V1FCXhsl7UBjPy+8e6qvOQKOwDpEwInnOnxpfsvvHwHkWvzU0QOdR1+Mt+SzV440o+aTvXT5EG6uB9M83cWM5a3pRc1QYlQczYYUydKOWSQthw5sM2kkbtHRimyKVJnAndwfhHQiUcUmVRGTyWIJZduhOxnHdML9LFaS/RrSROTQxjIjPjRVYiFuQq68Fl9pFleI703XC9WLNIbrqF5dQoubZ23pOvzYfp0nUqsNq0OFw5od50YCANrNsdCXUEkrbWUmFDLUqIJhUudD/94tOTnCPrsOh7nhLA8bRoitcKN4VwzL8TRUfRePXpCnaY7kR7jmDr87rLd/83d+Yfuru2dOV+56+y6mvuYIOAKOwEeFQDVYnaF9340mdo5U7qQJQGYhL0w6jJWXQR5JErA3CI/vvz3JTtuDvDRhoW3kAXKV+tZGbfMOLr3Xmpp4Fp8cAUdg3SPgxHPdv0J/gB8TAWI5o/S/PL0/33Mp2lIng31It5+Cx/39pKnniVPZ1i26UQHl0TAmyihrFk1YWsYQKFmSR62GRWGOZeaEEcXEbcpaafGdCNYJ+ZxsT5aBfo1FrGRwEK/UrEy1om4QQuQtqRTMpVak07LJEtyi5D4yheqvEYnlhqUVFvHUFGplKZLINN5tS60b0RzvV0fgxjYb6ijoXuxM6xioBibbwY+WVsb2Wt9hMg6orifiqLjUQD7DlQMGWqdmzg+W2bBttWhVVXM9ePV4nFCeB7z1YORD1L2TCTeZ4vwpMhvO44x8O8E993DFA4T/rESXry2+vbh97euH9wxOnjghTbj0Az45Ao6AI+AIfIgI0HTHTy3QRP9vI4hnvCvN4pk8zeNaWWwtjl9CQ+27mnmjkeO7CfvHGyYD1NCbnNAK5ys/AnVyEnXFyUoZNecGTb3YLYcIB58cAUdgvSNA99UnR2DzILBw+HCRXu3e0Snah7pt+cWiaX+mG9WPd5LmAEmDpsgalOWyMCL0lItPJE1ESMl8RIXMBRXBaINcS6RKAsMWbb8J0CBoTYaKxDGbJVRk0daNqbJPHCnsE18Klj622WfWR63Z+ZBEpaWHCEsehxsKNNE0y3YDN1G+mwmgqtMpuoz9aUl9uv/xHj2fPaMtKSXmq3Mm+7Vu26EGnaciYYtfCoa69Dver5Xxli3tArDLcaXqhugvbBsKQtLIdl1D9Om4BCJLEZ7PEinZWKgNTs4J3Zukk7fJ9qyK7kzqZM9qsjo9tXN6+K8urZGcyCdHwBFwBByBDxOB+JeOTM28vHeu16x9qZumX+6mUS8nxpORqCXN+NNEK4+sCW29bdqRG0pOKzKWGiYjQlmJNERuSfBJHxPndwZV+/+ihH22rpuLx5YjH8NTuPnkCKxjBNziuY5fnt/6j4aAeJdiOb/03UPZyvDKXJtk9+LC+SlE3ufSpn0sS+LZggyrRjYhiMabiLmU8JQlEo0rVsgakWq0K8pI864xxowJvsfGFsSoyJTq0a9qCbNtiXyOtyVrxUdxIbUiqj1V1lttiqeJaeoYTE8LkTydYy63uOKGS4f7VebcMFlJO09rxoxtaeLf7snKqUNAXWa5ZEVkMlyO+ti+4fJqlVBOJ1l5LUJdYWc4EDoYVjPnquCk1Lhi1anD/LB6Y318Bq7FdFh4MCVP0pPYU42fSXGxSQimzTCBzgH+dNlEt6P+/jQ9ne9S4d/wBIPfPbL3+oXB+So6EVVfmzxOuID/OgKOgCPgCHxACBRLzfQwHeyaLTrbkqaZyptR3tSj4I1jomjc3nO9IO8mF5YUCDLLBMpEHoxlhskO9iETR1XcXmf79Exv5s9en9t/9nePH/f4zgmMvnQE1jECTjzX8cvzW/+7EVhYiJLfO36k+8jZ5W3XsmuPQVQens7ae7ppcjBt0/1QyJmorXPYHXwGexoMzCyJlYQjDIkpgylllsYWTSzEqMJa2cRY5viDKRqRMiGqbSNV2sc6040RzFDhmsut7Q31alWlEkisWU05ORgwgxXR3FixtGpSzKfuR5ZAqYNbJDPJdbH/KdiTAnY59kuA6yZsDgcmWmd1Bcz6aQwzdAeCVZV1uyXKs7QjrFqV1DTewyEO2nEt7AQ7Gra+f1v7Qp2hHqtL1avY5ICRcFVBbXoWtvXkAsGsvmPLZ5LJzZk3xXkNz93UVZK1bY4deBsDsxwGQUYUr/cOVocv7kpve6F6rPP67yX1UnT8/Nr4Bn3hCDgCjoAj8AEhMLp+4S60o58dJfWhrgamljbURAA/at9tXatIE2lXJdiYpOi0Q2GTHbT9lFc4S5ALOsoct9ewcL5GKMl5oi8Ge587fnM6A6vLfxwBR2B9IuDEc32+N7/rvxuB+AmsnHN/tL9YSla2durmjjKOfiaOm1/Mkna+k0TbMgScrJxVnVpcJblszK1VcZ2QG1FRI3rkiIfgxRFDe1CWY2Jv0LIJYURIBmF60z2J5Jn8ZJ/JXZYSqRMDqQlatk3+QjwTxXEilM3SyJVVNyzXzhLJVLxnsMhqP+XwQVIRYiApo6KhrG1wpWABDfcZrizBLuIZrsHCttmSkIf46l74s2cb31eozH7Vl9BxcylW/fY0kwJ/eztc8/vr0fMHYsxRq4/zdB+sm5VVNB2wSJ0fyL+uJzdjnjFPeTc8YjkkyrOuY9ZzTt6KU/RWqjhQtu1hUDuF1XQmrkdVlTXN15+Ihk88zev6/tuY3LQvHQFHwBFwBH4CBJqyvrNNmr9XtfXdNMwSSlZLkAvjFlcLWx0fm7T1WmpiSQtP44+knZBPtsceN0tVW71S1c35bh4PFiYXsBP9xxFwBNYzAk481/Pb83v/tyLwO4cOFRde7t+5FMV3TdVL96Zte38njR6FqO3M26oHi4xiyKQsiMbdIDhB4FGlBOMNHmfSUZyN/SJeInwIR51kQjXcgkjZZGL3ja0JsbJjCNfUBKxV9e75XEuuvIplDAQTKyYWPhFWE+RcVC6/iivl1+7T7oF9ZHkNVbPfJrsn3cHkHsK6/VJezzjZI3JsZ6GtVlyltoPrbThXnYYb03h98pRGUNnQtg5R7Y16J1cOIOjo5KxQm8raeeOTDaNxEZFO3Yey+NqZYELng0ROIcZWTFUWUJFvq6RFERDVGa9yLk+iu6ok/jle0962Tr959swdL/zLL0bno79882q4sv86Ao6AI+AIvF8EelE9i0pvX6dItnRpfeOmJOGewlMkX8bCgCZanj+SFUEKSL5ojRI6ZnvHzbh2hyOcgwqRTLZxnB6P0uZ0WkwPo+haKOC/joAjsO4RcOK57l+hP8B7EIixdCXffaM/kw7Te+O4/hys6rNxUz/SzdOpbhz1ZNHEaoaAg+BBOGXRNAshAk8EM5BM1YrQ1LbkKEttG1nTOZAfi0mclLHjKhOmsRydbJqIDUI31G/yd1x3sPBBnyBYNffVyn2XAsH9VOJZN8A/I42BLOOay2mtnWMaY8sCyN2pTv7Em3VLmnUvRip1/k2zKKwRT5HeGhsshSekUCs6z+6TpTZUl36tXl1I+1iqHBAy3SjEWjgeTtLBcLYV5kd7JntVldklWYhQ6h5SiL3utQIPEc+GTPpyLdacptw1ZQy3BpdnjMEkYJpBqTCNNXofb+YQkaLdJK4ZdjUeLRyNlqNjUbNA7bqET46AI+AIOAI/PgJq1Z9i7jK0FYRyL8n45rpFhpMJ7TQNuUkHyQ616dbA6wz2sm4ywTZ1IMySBO/ZkuRDnqQXEXHfa0aj1y7Mn8fNxSdHwBHYKAg48dwob9KfwxBYOLK399Lz7QNb0vpwJ48/ncXRo9DJfdgGp4o4ynNIi/LuNcRptvDOEHdJCROAEpCIPY4Zj5OLrW1T9Q2ChZhkvdGQKvobx7aIJEnWagpLiVPWWQTSqvMkboOgvVFYhUJRhkZRAiOuyY0RfyrbZqhgXFFZ1S3EtCHDbZ3mRcl6zQ+8jAFYYNbctS7Nut0VlzDH3cAduaw9C1cLq5a/NqMBYI7zIkqAB8Nq2xgBveGfetMtjB9AdxMsvsKE2iaTkVBtToDQATv87o7x09sp2iuCLfJrp7GOAdM2zKKLGTO1RE5ijG2kqFq9N4sF1XUV3qpzdDbbqgfOnkDIt8OkPx2NmrmyjfZv6e94tn0kOhU9e+UcRXxyBBwBR8AR+AkQ+GdHDs5lTbs1L1fmUfDNJHVVDIcVMoN2GdkqHxq166FtZ0nTHFp/ydawZi22rQaZKZkQ5ILyK0RDPH/WiC7BS6W+urIyuxYdW3aF4U/wrvwUR+BWRcCJ5636Zvy+fiwEkGPx01g6T54s57CKPYog+0onaj/ZiaN75bMqwShmRXwn9SLHIDDiaUZAbeww3HvEX0RiEJViX8ENV5JT1MboDcfY5lSRTuirEU+53ZrpUEXtrt8tbZuqFQlsf7a0S4eSunEujNW1rbgPHIApS25bhc2wj8Nh5oIQz6Y/HNZFrzvsdtJB2bTDQdOOGGC7ZIDtErKIvJbsRnTrhz6AztdzwtF062ZH5OGgdBDONu5A1LrTSdZL03ya28hjBk6jivAAuhXdqtgdJ9itaWFkU0xPO5nsJq2k3a0dZjNMN1YmO24srUqrGismlStMlRBaXSci3NbwN2B1R1g25VRrGHIBYRas1LbHSKeeFNaZkkBqK0//OLd9kHp3jaJ4C9trv3skeufC8ahesDd44zZ8xRFwBBwBR+BHQAA5s7WpygO4mNxWtNFM1JT5aFgSg483ihLw0YbbzIKm3aZAOBFIkkZMJlzU7rPZ0o6j6rS9asnxIhqUdXuVtvzKVJJcXTjvCeIMNP9xBDYQAk48N9DL3KSPgmvtE8k/P/nMlvpU++hcHD2WJ/XjiMCHek2zg5Q9xl1EliTwatgNItDiO+Wqqq0xczKWJvdb24tU1FibQVSG2EvVIUucBKhZ96gResTvWHCOJS21i51xTLNqD+taGmmj0slSh4jrLMnWOsJuOcKzdITFtQ8H7cP4rnJ8kcRG16Cm1+s4XsEiy4xWOGrhU9gHIZvBUIqpUrIe2U3eITN76la1Hu4DW2qT8q+NyQgbt1JPY/PlMeGfEM4ooh/Rduq27cJeeyx7VRxtr9pmF32JLZD3GSrvxkmbQ8h73FOPJ2ckGj2bJj2dHozZQAtPPd4YH7eCeuQwWTmtaiiVsDfPaZLGBWTD1TvSn8YyFda2pfO47uQ96HpmHbYTQzysqiAbcY8xP+8mC1E6qJotS4PZ+6YfyI7/Tnn1ld2PRdWTT3NhnxwBR8ARcAR+JAR6Tf8gbe/PpFFzTy7tqNp/tIRql0tkK4KFXYgWJpMHWtI+qz2ezCYTJF/VcDNLvRrks+RWtERquFdwKLpQJYqJ8ckRcAQ2GgJOPDfaG91cz2PxnCdfe61TZMXOvB59Gd717+RxfEenbW8roGASiZYHCJ5VYTVTEh/8N2VOwwgGxZSrrEiPhN9YNEpDK2smNlCkpUgnxAihqiE9lGF1ktDnhihF+Aa+pRqCeA20ayJqgwgOVzAxLEkrqasJttn2B1W9Sr2r0MMVrnWV+7yKY+2Zsqlei9P8bFr0zkdJ79LVPL8yFe0aLnz7hAbSntRhFb2fH/UNfntXNNX2pmd57q2jNtoGlgdxRT6M4XU/FsbbePYtWRZPk0tiSw6AWGktrwRPKRooEHVDdDt0W2EWAlq/sVSB8T5bsKWSvApqHGvNqU2xrjXvRsRTJ+gYr4w4oqA4UHlN4f3pfckAq5lyvCMlcWLqQZYPYm3eR5DQvVR0X5s2g9Vsy7mTl671F7gxzZQb18aaT46AI+AIOALfh4Ba4adphs+17d04DX0lTdr9OSxTFksSHlgsfom7ijKvhyAR2nxrVZGIko+SAeNWNuyWTNBaWIp8mtxF9vVHo5fLujyf5CPJOJ8cAUdggyHgxHODvdDN8ji/e+RIfiG5suOl10d7ptszhxmI8xOY3x7PmmhfJ4qnZcITvzSBhnyTG2eDNlaeQPYjQoPog6poMZ4QfhAb5KQNnyKLWiUtruohmZC4jOJDdYpOsmFOEJxIX8qwU9cJ1XJdVRL2y/9VpjWsratVU68gai8ijC9y9AoxjFcwXV7jWkuYLAfw3CHn9hHCrCdL1HK1jetlSNVyvztYmyr3DU88eKKOTpjUHt/3+19wnfZ39zNo92B1pV/OVmlTreCru4LV8QIYzXFPUzD1bhsnOfc2DQpz3MG2uozmOXUvSN7B82wH82kaFaEFJmBjnQ5Qkw+tYW7Q8SOgmLiwZsNaJF/naYf9Y03FwDLWKG7sVKdGfR1RXHVUDGeOaJ8mKRP0gvU6tEtKA6ask8VzWZocYkicfzCsRgfyy71X4seSV387Sc796vHlyyrkkyPgCDgCjsDfRuC/uW8nirvovi3N6PEiivaRJX5O7bvkaUX7LHcbZWJXUIe14GqztSYZoLZaxFIKXPZaRnhr/rWldtrK6iDBovFZNLzfwtb5atOMyGbrkyPgCGw0BJx4brQ3ujmeJ74w+2YnGhW78e95BA3sv4uQ+2JOivcibqdIlIOlExpkYk1kUJZNCUeJQsSgCBD/jGDaPqMxIKeliKXoKCQVq5tmDe1hlk4jToFMmYsppFRDoKgiCVA7DPGRhjfsYH+CiOYA9KcdNPVyvywvMubkCSTs802cnq7T5tU0Ky5Fa73L0YED1cKxY/8W96KJDF6KIJ0fyvQrxyNpmJmXV8YXOPuDLrRw+HAR5atTyej6vriM7yuS6JN5kn62AKROEmdwRLFwy16EazJ9D7DH6VekUNCESS+Af2DNYY4H0llDPnW6JRXSGgxSuE6IZyZXaJXnT29Lx8VODXO2GfuN8tiNqVdJoloLGo3STpaRhTGZhvnvofjjKCSOceZfUHi0EEWLzFzF5nB7/usIOAKOgCNgCCRJfQjB+Atp03yyiOu9BD4EEcjRMjTk7GEvSlibaUolFYPyUQpcZCntvwiqksmrUZc8UMoF805Bu0q+hRFeNOe6vfzbq1tm3oyOr3o2W//+HIENiIATzw34UjfyIy0cjorVaH57vdjcOZUPv1i0zWeKprmP5XTetkQIirZMCI64hOldjaxIFIq0iF+E5btIGVfkRzGc5uYJoUwRpHlRICOhOSKZYkASlhDR2MioRKsEKOcY/9QwKxLJzBwfjsqV1X5/lTMuNknyNrmBXuL0FynwDvTqHdjxIiUXo7X+WnTgnio6doxabv3pQSyuJy8dGDRv5ZfShGicKL4KMi8Dz12kJLyHBD930OHYg2l0W9VGswSSFkmGcy4PDAUFQ9xoK3FcEUdeiJFEYWn9ESFqf7ZHHRUd4YXJqqxhVhTIqk6L3oeIp85TR8biQTEv60+TudzyHoK5W9S/SXpZWnTSdAeVHaHYDFmZ5mYf6G3575LkzK+dWH3bTvQfR8ARcAQcgYj8CenJkyfT7fE7u1Dw3d9NknmS9tHk0obTjreEsMgPRYLL5CPtsMZctvZZspIEBGTK4yil1BarsbYGm/ZcHJVmWV5FKGP7ozZeRGW41KTR2vnofPl7HPZX4Ag4AhsPASeeG++dbugneieaL6bzaDdS7nBaNz+N/evLeVt3IJ55jphSdlSRGSOE9gscIjeaxksjLpJpk93hqB2W5UwkE5dMzGRplOXYUcvSLGlKdqO8sS0qW5LrUB4SJKJKec0inWnGXRDzEqV5OxiWK4srq+/UcfJclWbPUfwb6avLzyzIYPfe6fSx9+65ZbdDUp4z8mEdML/DDJmOooX7tx6I6+RTxNhiAW0f7cTxQVLvF50szbsZdmg6GvQ0GGu8BEaIJ52U8BoClnpnk5jNQB+lKhhbrnkvIpnqvKg30mBWFeEXudRrtQFkVJ0IqZVQxya45uoiep9McbcoijTNtldlvR3SeYBqOnSjpCroc/wis6r3yRFwBByBTY+ASOdaVXV6vWRX0rb3F2k7S1KhWGMrlygP24QgFyUXotVUSImUfPxTXAltdBj6SmnGgy42tN2hfRa0UkPS5nPCqIn6/aq9jFfS1bSK+793wrxvVMgnR8AR2GAIOPHcYC90oz7OE2heD1862eutrDEmZ/WFrC0hnNXBvKkLBrFO0kmCPWOTuMlKnXpjGnMJSUf8LI1bsLQYQZWBuJhrrYQmwlK0NRN5hJEwSiZkJhw325rKagDQKriAqkqkL4a9pBqWzdJqObgap9nZuGjOkczoLMXPUd07BD2+HbXZ2YWNTGwG0RJ9kJNxHl2Fy72Ac9Uu6OGuYV3fQYbcu+Om3cVwozN0Pxi+pVOkGtZF1k5AbMFZxFM2URFJ3qh1ZpSwQi8ox2IqPfugGdJRCe9Q59r75AQpDBRrq+y3cqsmQzB16n2rDOoIfLpESmv1jtDUJ5QpkrTH6gOk7a+rJLn2W5/edb0Tl1f+879ZvM5FfXIEHAFHYFMj0MlX9+ZZeRfjRR+gBZ4mhXoh+ihyKdmnNhUnWQuNkHwk5RyyU8pA5C9jdSnxuvSswWPoXX2rjtssbaQSMlTNIm32S5Q7F9WZ3GF8cgQcgQ2KgBPPDfpiN9pjHUbzms/E01i49nWj6POMC/JzBUN+kFkPJaxcegJhFEUklo/HR5iNJ3MBMkOWBGEgnIGwsM6fhKXiEEUyNWdZZsRTw1fWeJKKpGDLNA6jao141lxD5MbqSxnWJBkMRoMLi/21M8Sz/M3VpvobLn/mf3g7OjO5j42+XDizRABqpNmiUH/1YRINjbrz3SZ5NC+zn+U9PRzX9e5emm2b7fXSnDTBeh+wQTov4pAQQrMkB7JItCb9kZG9uUzEE/I47I8irJVRgWJAWYbtPXJBI568dxFPKQqo0rLipjB+S2aB/5aGx6npJIn74/urjo++n/shyFtRVLyFFfWtftZTp8eJJyD45Ag4ApsbgbYc7aNJfRxX2ANJW0/TiiaoYk35ZwpAKXKZTQcIibSstqboU5ssHR9lUR4qF4JCWCSVzSNJCkeab4b1Yoe144t1Xb44iNpz3ZmOE8/N/dn5029wBJx4bvAXvN4f7z87dKiTJYOddXtt/8xa9AhOPZ8kbuQB7FrdPG0tclCWMgk0RJn9aguuGCYRGwlHLUVhIB9h1nY4R1ZOkRUltNE4kqatpQ5paYNwFXmRcJSwRIdbabzNmqEhm+u4HF3DlejFJM9PQUPfoeAl7Gpnqfps1DUSZtfZjD8zdVQuDQZL3WL2JfQBJdB/B6I5wxAte/p1cw+c/o6YcUIhpFuzOOlmCX5b4RWK0/O28FrG1VlLhpaxjgv14MlMId4pXRlg1dtG2SA+ySRXXMXfVnRy5P7ccpEJKeUaFGd78inwTfDOY3xvudX2U3k1wpge/8Vvf35PWsfl4j/6q8vLoVb/dQQcAUdg8yGQRuWepk6OoLzbm8tIGWlIMhpbSGaedMyzSKEnJnPV3gKRiKk145RWoje132Kmypkg0kkLbcphlWLszzUGpV6huT6NV8p3siQ7s1pfdOK5+T41f+JNhIATz030stfjo/bSpaLOenvTtnkMwvBLONF+joC9KchnB5tXVEBCWlwsJfAmk0inzUY6xVFMLCI1LaKEYoF5iJBodRK7mUE6O8QiWvY9ZKst5USL65C0skY+EZajqBwMq/raoByd7Q/LN6E7f9jtzf1RPpWv/pNXllYldMfTzbc12bdplgsngCrSvHwNIE49tQB4x6JkeHHurnYw+BLa8U914/jhDmbKGczMJA6CePI+5ZqlDos6KUY8pS2v2Md7BNwEK6YUCfZnrzBo4DkS5Z3CtO41x5uS9y3XaTo9BSoKS0xEvZBds1arrlxElWy3g6r6FBlw97ZpNmS418t52pWPmBPPTfO1+oM6Ao7AexGgGd2DzP0knHNHjpeJhqeS5ZLWGiVtTpssBa1CGyCc8gCytnus7FMzzbb2kq3W2l9ZRKUAVPkSa2jZNmurZX2JUqeLKvrOr56+rqGtNrXcfO878G1HYKMh4MRzo73RDfI8v/rwrmmGj74rTfN7dyTJJ7spBCVq7yGVQQ932yxFyGUiH0qqalOgexPCGfZKfk1m7RkTF5b60z9ZSUk2gyYWN00IbC2yYqfIjpZBTCgGQ0FIwkOr8/DQ8wjfl7DavYy8XaTGy3Fav1zOxiu9/HZMZhg8fXovAnotZB8yaNunDkdXcMr6Lq7Ml0ih/x2O7Ied3sXRgygJ7qErs1MvhsRNcWwZK0AZVIkJRdEe7NqWREjvXy+RKXRvcIs2osl7VQeH96pymuQuTSEjpRZXqk4Scw3LJMFQjG4h6+XpNop8tqxGvVG//NY/ubt4ts1HF37jpeiKVeI/joAj4AhsAgR+7eF9+5uq2pdnySFk7vYsaXq0mKarVVZ3taplSYSJ3GqxYUJMDRXtV1OrYVTCLttj7bPaXyn7JE9FPCvaX5SJF/Fb+XbVJq+XTSpFpU7wyRFwBDYwAk48N/DLXc+PVjbtTNJmD0FEjpIh9QvdJH6gBxFh8GooBWxQE5pXy2YqMoIwgwgGZqOlya8g9MzCBUmR0OOf5J8VFIXRnzS5Ip81qfVq4gcnrraW/p39JFbQXA/K6uz10fBbCNs/7U/Hfx7NbR1Ex88PvkZt8bmLXExJUX36YQjYqzlxHcIeXX0qip6VWbH72M7dS2X8yU7dfqlo6y2Eee5AQ67XxduR9lzvju4NO5S4gp0WeyuPLzFSKQpQBNiyHCcOCsRT8b46KOKqNw0BlYKBFYaNQ1NP9mIsqRUMOOsWeHml23D9+jyuZPdwzoyKJI3ijYZOPMHOJ0fAEdgUCKBpjfajjfsMXiL3IHe3ZRbGSawm7bAyiWt860r5EGiUJT8n4tY0jJSxdldhLSaJJY0VLhHyJSgHg9puZDz74rfLJPp22UavzqBrjl67uikA9od0BDYzAk48N/PbvwWffeHw4WJ1anX7bBXd10nbI4yi+Vg3buazhrS1CLvJcBukdjfSIUIiYWczz2MijkM3JKH2iHwwy4lT+zVotU6Y/LVY1RRDSKYDCKjch4yr4KUZD7GkDcjK+jautedwJfoGZ/4NJV9lKNE1cgdVCxRl9unHRECvjFM0R//TKL6eZvXLcEAS38ZDXsPrbZI8AEHcS7+m4L1husTVlhejxEIiokpWoUmfgSa5cKlTpGRPcgcL8UQiqbxlFoGdckzfgi5LOX07iukVoSXrrtgsbmCqKp5j1JXHpvIiR+HQ/a/vIaFG0b24AGGmlE+OgCPgCGxYBNRC/kYR70XB+jgUcR/jcpK4toQoloQ50NZi8TQZqoYTKaqEfPIPCm0wTSu7zQNF8fSshxAH7VH7TDPLT9XGa1g8V1h/nQMvNEVx7qXRWekhfXIEHIENjoATzw3+gtfb42nMsHSU7cnS9v7ZLDqSEdvJsCkMl4LhqWb8R0iFhJ0ylUrzKskmYSZhaSv2wNpinpAMERUrEcindssCNnEPanDXVXyK4laMeOIHBMlhpMl2iPXr6mpVv7jUX/sOV/uz+98afOMklS+cWQ7Mx67nP+8HgX944tIKr+SV33xoy6UqKt7K4+RslsQK393CW6J7U0M8sW7Lwi0LqL1bfQWa+MXdK5UllDdaQkxbfSNm2Qzaeb1vZVZUjKi+EdWiuF99PhqnlfxC8NqRYpfIS8SUJDOo8h9FP397P2pHy3V6Pe0P1Sly4inIfXIEHIENi8BTtJ5b03QvTevjWV3vjJoqbhizc1QNyQaeY+EkDwIH0QRLH8hhhlOhMVUbLHop5Z7aVykHaZqtBbc4UOl2Qc0Uu3Uj4vkOcvb17VH6wi8/t3iFllyHfXIEHIENjoATzw3+gtfb421JrszUVfZIXsWfhwLsKeI2TZFuEnIMvoEgg4Mg1Ex4oVFl1UgGP/ZPskviTweMbLLb3DBtv4gHGlhIJ2NacwZ/iuvkDLlmKkkRvKUZVu3Vfl0Ru5k8F2fp85R8A6PoG1T0xpPQ3/WG6Xq4X3U6Fpa39fOZtQuQzu/h/dqWbf0arrCfJOvt3Z0smyX7bEdu0xp2RdkSNcmyKSVE0KajPMBMqnWziENAzUJuJUU07Y2zxffDMbISo60vLcmxXLbNgZvvhmvQbzJb+hRxxPfPdbPr7FlcODp8neRIsnC70sEw9R9HwBHYQAjEv/X5u+exQu5KBsMDSdPuZLipqVxyVwwSbyC1imVJmzmmiGpTCVEwCJQQTmJYCt2QEV6SlYlzlM024fwKkjrg/LKNLxDX+S1a5VezuDOMo+VxjRsITX8UR8AR+IEIOPH8gbD4zo8LAQTabFFVjxDj93ly6N1WmBSDeBJwlxe4RZLRtMS1R3GXNWxQViwTfkYqJPeCtlUEJbj86EkoJ98g/mmBbDTymeC9K/faOCa+E8EqeosLUL1W15eXRsNT3MMfzsx0/3A4ilcfOjtYk6Xz48JlM1x34cyZAQAPnzp8+OqWfPXl1dXLp8hmm/SyfK7ISf2TpR3GkjOXWAyYTA1EMxBPWayljJC7l5IHSSGhjLbBysl+tPHaLyu5qSSoR8QzJKd69xvSUVT19qKxinfYvr8gmRWxSM9G0YEsOnqmEvncDO/Dn9ERcAQ2DwK0fNE/rZvdkMSH4qY+kDb1DpILkeldclJJhCCdsnyS9U8WToa/Qi7jbcK41/JGUbZbI5iim7ShJCeyczRWp9rfRPkSypERT45cGKW9v46L5PRby5d9+JTN85n5kzoCpO30yRG4BRD49Ye2bEur4iEsS5/uRtEnMG3tQJHaSWGKgSgoEUwpYsi21KrSpcqyKRqpSWIzzCoxUcnaOkcmti4t7RwIJ3SDI1g846Qu42REsoO3Bk31JkkQvocL0HNxm72QNfn1rTN7yiejy27pBK0Pe9LbWThxorp2+PBaVF87Q3zRH3LNM3Xd3DGMoruSqjkEf9ydpUWXN5jZGKwoIvRapY03xmnvWNsiovzYQYgpb1yaePtKVJ4OlVyu9d0kcg+zVSkuVI19W0kRx1M4++5h0NYvdc9drJq4IAvv6KUPGwev3xFwBByBjwqBhaMHuv+4mu3tGSw9yDV/JmvrgwkutmhsaQuRk+Y9oiAFKemkrFXaN7n/0FgqtEFL9knhpzaWEpZ0yLLbSkGsP5R9KAdXmzRZQe6egbO+WI/yC9EBdL5nqMInR8AR2BQIOPHcFK/51n/IbtTdVsXtT8EDvprF7V2YmrbmGdlGIQNkHbUsejBD44xJXpjLreL4RBI0B8JhK7ZjQj4lKLFziXowj/8kSMczQhVxCPGM4rXVpjy1OBh8Axn5l9Xs6jfvPRHVT76xhHw9r4p9+ogQWJBG4cSJEcuzu49EF64vzTyztDY6mLfR43kc/WI3z2Zmpzop30Y27MNP0cJjDTWtutywb0x0hOSabZ0kudXqOxpbMzU2K4ZMiopoimTKhVdz+IZiUiTz1dDHynqs7R5G9VHI6Dx6kFVOcuJ5A2RfcQQcgXWOAOJxa7cbrW1jvOzDtHFfoS3corwKRLrQGisLLaRRBFOx81gwNamltDaV/ZKwUvIZxcTTRHrhQuN8ckx5GZTRVkn+SEO02mbF2xR/vVtGL14+dfnqwinae58cAUdg0yAQWpBN87j+oLcaAv/0/n07vjI/9QXStf/cVNx+vpu09xRpuwUeUSQptJGU7Mo4a4TC2KPRAROAYqG2C7IgwoBMtFnxf5ZCBkGn+D/Fb5oLJmQzRogyTAvnZe2ojvr9srk6iuMXyjT5BkNp/NWwLr8dZfWZ/+pUdfXpIFtvNcg2zf0cA/8/uBA1X9jCmxolZZInazDBq7jXXkNj3iXx0wxjceJpzchyvGdev72xoHTgW+DjMLdblqZtl9ZdWgoKaiw6ae6DwiIQTiOdHLZvSqTVZpzH+EfIZ5pnOJ6l2dpPbc+br+yebv7k0oD78MkRcAQcgfWLwALNYTZdH0kGa1/txtHnOm17Xx7V3SyuSaugdjA8m4hm2LAWUhv2pwbVvE2sHDKXI2qLtTS5Ldks4YwSkJb2lUHb/nXZtt/Ok6lTv3ZpDUcWnxwBR2AzIeAWz830tm/BZyVxzE60oL+AlfPnu3G7m2RCJNSDUUI6GTXMNKWxxgNDbikRkEQdiV/EJIKwM2moH0SaCUnpXOXSQ8Smxf8Fd0udi9ELw5YqQgAmGWn1hmvLw9FFxiR7Zi1pjlHrK/PbV16/cNwTCN1Kn8rCmWi4EPUvVAcOXOl1y5fLZvhKPSyn6RTd1iUVcZG0ecpbV+bbENsrBTpvUz0fXmX4OvRVoMjQ65fGnoQZ0lLIpRbyOk5GFDpNUmgkqP3VWZLFnH9pL8u2FlGSr1blZ3G7xc+s/FdU/qau4JMj4Ag4AusWgaNI14vVw0jW/4hUCruLNJlJpbRVG6kWEOIokUuDqB/709J2ah+zyiiIwSQ062o22RkUwmqOxzGeKPfOjcryr0Z19cpydmnEEZ8cAUdgkyHgFs9N9sJv19mjbwAAQABJREFUlcf9tft2zv70/Pb7cJf8dC9uvwzpfIDxOqfzpMnFF0MWIHX7gxAzcWfE0piDCtijBFEokiD5Z9IunMO23ClFRuEjYTaXoaQZVdHKoGovkqDoGWxpf1zFybfKIj2V5uXl/+J7w9VjQWzeKlD5fYCA3snRpaVmbdcd1UyNzjxRgv54wGvu8tZn7NPAKhm+A955+ApuqN7VKbJvSd8D9alvpFgk6xyxre9IJ8syrkQY1nfiJ3xRoRiJivicsHlm+RSW9PqLW7L2p3ek9Z9eqZY53SdHwBFwBNYNAgu0jp882LmnXOx8emsn/anpNHsci+cMDrLk9GuC2k0No6bJkhX9jZko7aMOMN+0ML6qllPE09pTkvdFEeNhN8skdPvrQdv8mzrLzt3/YLn69ElrYu0S/uMIOAKbAwG3eG6O93zLPWXedufwknwUV9ovdtLoUC9qt+YE1illAULKZnOL1J2P5Vwgm2PBp93GDpCenCXSaZpZzkfWmcAz9x/KKQFNUwYhiHGrWRtV11dG9ZsIxT9Jds7+fme1u3znJ06vnnzahaDgvlWnBZm1T5wo//v9+y+U3exPOtnwclXVs3mS7JLfLO9dmf/5LngCXrRcri15EN8HvaBwQN8SqzVRvVoqK67cdDlofwzhY99TS8p/EhrZORa3hMq/jZM8K4rbGRZgWz1qR8QsYZvP9LmeY/bJEXAEHIH1g8BRtLdvpPfT8P0ird6jM1myk6RCMdls2SVKKZk55pjaGret1r7ylGpmNaEB5GiYZfG0k0goJHmcEkePoi4aVuWgPxgsEhN6njx+r5YvR4tPvkB77pMj4AhsOgTc4rnpXvnH+8Dq/sdHj2bbh9f2dtPkS9NJ+6lu0uwrkmYW9x64ILYpeICRzrFkM/IgJx6Yhc0IN9sn5nAToWhwyVUCAyOckoQ6DC2Ia1WYwD/TlbqJSU3afkOWziTLjs/M7H8j63aH//GfXKiOvStLOdGnWxWB//Sr19sLV7s1Y5xUSRsP+RxW6OSkVdv09AXxlwXlw7hHxIegTpAmsVPFdsoNW3GeeuU6pg6TZq2T0RjeSnl9Qyqrc2zmu8OMrrNJmqEK0yLN3vr7D8688enpu6Jjly6JhPrkCDgCjsAtjYBat+ezQwxRNfj8VJb91GwW7+0lkZIL0dKJD4b2UmQzzGoM1SSGv9A4ioxq/2SmuWRdMw1p2G+1xdGoaS6s4F5Lu/otLKrP/qPFaKD6fHIEHIHNh4BbPDffO/9Yn/jJJ6Lkc2dP550k20KKn7vo/t/TTeI5fYjSsErImdCi8x+msVCTgDP1K2KNQlZWBcbyjTNtVZvS1UJIzNJpxFMJhZS5to6u4+7zJmX+tNja/X/KJF755ePH+xKT4Vr+ux4QePJpQn+jS6v/4tCh14ft8mLUDs8w1k5MQqqts4xmDvfsiHkakWwY8JNvSV+R7Jr6hmIIZ4wmXt2r0WiEZbPCxVZRonxVuN+KfEp5ISWHkVSWpuXXN8UxsjRmJMO6vaMBYElK1ZTdufn5d66rOl3CJ0fAEXAEbmUEnlpYiOf+6H9NZleKHTR6dzN82VymttJaQSlwg1AM8vSHP4nKqn1V7gWTw5yktlNtrdlOaX+rNlok9+0pBmh5O5kyh6YfXqkfdQQcgQ2LgBPPDftqb80He+z5fVurPPsE6X+UPe9gHtczSVvlpJtFaKnTH7xv5EYrbaoEmok11gMr1XbgiSbsYARhiAzIAgM82hAZkAdZrWQ6ZS+2qYSwkhjBFz2DM+8zdZI8v7RzioykZ5CD48pUrU/rBgG9t4XTp8vowIHrWTx8PY/bf807XxrU1ReaNn6wmyXEC8d8YhTkkwrZjelWQVlrOljwzLE1k5rItqgyIpWBbE5gGFs+cdm9YfHkc0n4mOK27jDG6LayqT85uDxcxGX825z1/ORMXzoCjoAjcCsi8PUnovT0//2/3FdG0YOdJH4ojxKi1atOosaS9i1I1++/czskGWwSWcvvn3SO9kp618hexcoz/nFETGd/VNVruNieQvP3l3Xdnu7XEZf2yRFwBDYrAk48N+ub/5ieu5vG27AofRGC+TNkID2YRtUUdiQYo3KOQhglukzyyeLEKj9/+w+CYAIyCEobI4ztDCuWXCgbiIUsV8HGFTckIV2tmug8eW7/bJgl/1cZx9cXjp1RGvcfJGM/JmT8sj8uAgvq55w5M6QjdfbsM9E7VS9/7fowmcKFex6jJ5bPuKPPSUoMWTSlmKirCnMpmn2RTL6VmERCivNsMIerw5RjDZUzrb4hEdGWeCd1utSJElm1uGKYLb62aVLXs5zyON/aFMPBLnH/Tjx/3Jfo5R0BR+AjReDkycNpXlx9GFn779FIfqJLcraCpo027YZu9/sF45hwmhnUhHJgme+5aztMe6t20/IuJAzKUo/W1sr6EvL+xbRJ/nzH9v7irxwnYb1PjoAjsGkRcOK5aV/9R/vgCwvoO48dKJKlehsWo9uLpr2DJAazyp7XksNd43VK1yq6KDoY4kTGAk/UE6mmBEIinGICppdlW8IuuPUEbauIghwxyZGAJM0IWEkZsLo9OarrbzdJcira0Vvsd86W0SlV5NMGQKCV6y3P0f9v7you8MqfaZO0qOPki2WUkC+D1EMRuZNNiyHiiEOtrOHmOzseggevsBTyqQ9PHwVaen51Cl+hshXxvdkg6LjkKi7UrKJ8kBkJcHtpujNPirvJQ3T3b9zfORCP4qu//tpVH98TBH1yBByBWweBJ7B0Hn51/q6oWjxUtM1ncDP6BDGdtyVtjbFTXkK0eyjnaPpumsKGftU23jikJpQNbQclcDiiEAVT/rJkXGw1zAp8f4GW9s18amr1V46vurXzJnR91RHYjAg48dyMb/1jeOY9v38kXdw96mX9a1uzUbObBAO7ibLrKJFBDenUnxIDhSnEaPKLtFNkHiTAGKaOvzvbIbnXavgLs2bhwItpM0afmiBLGRYbH8litY7b51dI4d5W7Wu//sxZDcHh0wZEoLxz/trMteE34rgelE10B3zxXohinBvtRGmBUkKRn/rmjFuyRDsROk+KSdI3BLlUNtuMb0qxoBrPTiqN0WAYVWS6LYrCsjRqnE8azzTPs61RXkSDuj64VA/v4fArnODEcwN+X/5IjsB6RuAwls4mvfwA42L/HMNkf4pYgXtTSCduIOjWaBOllFM7KEbJJJF783Tzpq3TNJoimI2wHZR1CRo5XGqVUIi5fadM0+8R3PDW0uolt3TeDKivOwKbFAEnnpv0xX/Uj70cXdiSXM4fYviLz+RttRf32gImQA6gQDgl5GTP1CRqYMldtNQ+Dqr7H0inrFGyTIU9WiAvIRLUiCVLdcRp1sBGh1i8LtRV8wrS7kTZZqdnprJFu4zV5T8bDYEH58+Ur5f3LTaD5TcYSuU5iOd8liR38i3NZ3wkqT4WLJsW3mnfHR0mfUZ0kMK3p++Pr2+s9bcMtyKnnCvlRk4uITvGPvis7cMhl6xVo17btIdmovazddqsUckZZp8cAUfAEbgVEIgXjh7oRIuX56bS6ABt3kOdqN1dRG2eQzIzeXFYO8gP21rVrCmQzyCXw56//WtHxyeozVToS0m8PfMV3G5fQKH8bZTBb0YHcLE987fP9z2OgCOwuRBw4rm53vfH9rRJkWxtIJ1Qwy83bb2P5Cz04hFrJvF0W4gv+yeqqb9AOrVmZJJfCTX9QVgpP6GpeNaSMo/kBexREJ6GVsxJplesDUbV69dGo+/izfviW1sunNl73LPpfWwfwEdwYbncLkSnVqPD8+f5RL5bpPEssUY9yOS8XZ5vLSFQU/GaNs4OBFLxSAyNYl+TDQ2Axh/fXCObsgLUkFJUGuQfwq+Wc80djf1ZiqMaJLYeVVFZjvK2Te5hT1s0ycsfwaP6JRwBR8AR+JEQECf8x1XTmy7SbZ2muYNW7IGibafxOopIwBbl+G7QDBrJtIAXmkedo9mEMi3gD5tuiHAKqT1VrHxZN5cHVX0KKf0soZ7fenn62vLvHXP5+8Nw9GOOwGZBQMp/nxyBDw2B3zxycMsXt84dTuvkc2TQ+xJa1sNFTJwnbrbq/COm3kM4A+mU5Wki9ALZ1C+E06ScSKcIAaWQjppj/G4Z3YK0L9kaqV9eLNv4m2hcv9EfVt9qs/rV335+eOXYRJZ+aE/rFX/cCOgdH71tmk8rJswzHpCNVv0n+lMtvDCakReZch2T3tYsnfrKlIERhQWztiYfib4vvjO+N/M8Yyl3cMugDPFUpfZdsqJEGjqZBZQ2fetn98y883M7t7d/dOl6X/X55Ag4Ao7Ax4XA3iNRPlhNH0nL0dFu1Hy2E0f3IoeJCmhNBSfWqXZNSjYp327MkrD2D5lMOyfJrCn8jp/G2r7xMdYZLJsktm0fAvrtMmr/mKRr392fLL/x6896JtsxYr5wBDY9Am7x3PSfwIcLQLlSbydt6OcxFR0t2ugxyOftuD6STA/KWROTKeuRrFASeOZvCy0wAiAyMCEB406+uvuUD6RTw1qIRNDV57yc3ypJm1GcLq82zbcXR6t/Ahl9sR70Xju/7bwnNPhwX/OtVfuJS2tXDh06NddevULE5io+3ddnsvSrdLN2GTvUh0UcZ8z3l2YY3hXPiZmT1EHmJiaXbfWnwowFVN8qmXBtGBb7BuGs1YjjWEGxfHbyLInLdlY6lDqO76W2h9Kk/wKgLN5awPjdOAKOwGZDYPUiInZ69Ah5EP4D5O6dWDp7GY2bIgqU/Z20CGOFmto96CUHEK1mAaVI0PWaMFajKAaqo2EKx0VW2WY3HHZIjPx1li8UnfgPlkfFpSdOLLv8nQDmS0fAEbBwJ4fBEfjAEVg4ejT7dKcz3c2juxkv5ac7afSpXtzelkXVdNSWiC7SDfCrzr3GSJTF0qSXkU9JMU2TpdZNFNoe7ZVtSrO55EJcWY5GbXRuULUncfP588W4+hZ1X1h47fL14xcwVfm0aRA4xsfyzcXF+mcObKvXBnWZR+0ww1eW7w37Z5uR2XZGqv5c350+QD4ts2+Oe0/aJeWGOlh2eByHrI8vdLnYj5utvltWxjuDwZMO16iual3s8s8/vu+tz+xfjI+d8e9v03x8/qCOwC2CgMbrvC+57eCw03mM9N5He2nymW7cbsHS2VGe72Du5GbV3jGrLRPptG09g/ZZg6cVTZw0WR1vB8apncwcRJ/3JiZP4uvbb2TT6fE99y+ufuKkt38Gl/84Ao6AIeAWT/8QPhQErg1P53mnuyVP4729Nr4nj9uDEIBcY4WVkE4NoaJYOyOdDH1iU+CWrOLEqPWxPAtaVhN7VsyGVrE1/UjgKU9pOhyOyteWBqNvsfP5ztTg9IkTskH5tGkROH5+MHU4er0udqJyhz02zRqxxT+HY9muPM2wdkI4S9IDKcaz1ZA++pTe7VzpE5RFXt+j7VdMpxJYadhZrKQaN7bCXCDLvdx1Gf8zJyvuvfibTWFJeLm+UP31nVsPDMg15NkcN+1H6A/uCHw8CJz81oE8mll5AEL4lU6ePjKdRruyqiTXO+0VchOaabLTXGvDFjcq2SuXWw7RANLy2WxPwD5NYcGvKepoL1mGOnQkPkvKhW9UcXu6uXZ1QNy9K30NNf9xBByBCQJOPCdI+PIDRWB+UM3U9fK9eZw/iCstWUXbTtxWSCYNaaHoOASWOvB09GUrkhCzLKLm5hgsUbJGWecfNapsUnTsKY+FaZz+XXVQXFRgWDb1ZcZffL5q2mc4762FE9HoA30gr2zdIbCgj4bvYOFIsYS24xRfXw/37PvpiN2No2yPr6wYZxLi2dQRYzKNB1/UOIGVel8a5ke79S3a2J6Z8uPimstn2WCp134dj/EVh4DOdLN8N2T2oWblnS+tLdcvcvg0s0+OgCPgCHwkCMjjqHPltV43S26Pm+YTeVvvTus2Y/gUQlTIvSfrJjMeIDSSQfaqIZMoljKYBICWSE1hLw07g0JOcprbNyrJumQ4clt/hCeslm2zWtb16SpuvtMm9Vu7T6FhDmd8JM/sF3EEHIH1gYD1tdbHrfpdricE4qqdzdvmcFJXjyRRuT2N6PYTJ6ekLorJJLIOoYfIEvnUn0imkhso6QvCTcLPZglFevgNAzOqZIqViRBRyqnjr0GqI0m71ZWqenvUxM/GbfeZ6WxwYT1h5ff6ISOA5bNfb3u9ravnRnH0xjBKr/ajeNDnOyv5zlp9Uyg0MGLyhfGdqWM2iSWmf6XOmI1zp7hQDcdCXCcDrDBG3ViNwvfIp6vxP2Nip4pumm2hukfY89Uyju7+kJ/Oq3cEHAFH4AYC4o9zw2HemelO9ZJkz1QWM15nsz1RXDpKW7VtUpcpdl1tmyikqW9p35Q3IZPspT1rsYxKHouEonqTUA6WTeS2NiekU3KZhEIra8Ph+WFVvUwj+d25mcHZJ8cU9caN+Yoj4Ag4AiDgWW39M/igEYgXEFHTu4p9dM+/REDdJ4soui2NGyxMY2End8bJVdG4ytIpLaq0qgkkQFZNK8FuCTiZk2T9TOn0S0urfbJ2tmw3cdIfNtGr/bp9Fveev77ryM+f+k/+8mT11KR+X256BI7xuRy7dKn+6u65pGyj2SRpU76lOYDZbh8Tn57cyviijGDKBqCOlvpXcqnVrE+UsTqtuC10kA6XWQ0gnhpqRe62fMPisDrIMi7yNH3ty3u2vfwf7l+N/sBjjYHFJ0fAEfgwEdh75Eh+tTx3f1WVn82q4ReTqvoE7kbdDo0UsZ3IUTVP4prK0s26lL7jGwpENLSDauxikq+lRW5lNFSKCGqQ1UqslrHZjsqqXsPb6Llh0/wZh7+ZRyun/qF7HI0R9YUj4Ai8FwG3eL4XEd9+XwiYADt6NCnqeqqI6n1ZVO6P23JK1k46/EYqRSwtthOhp858RZxdpbgTBrIuEHJainjqmGYRTo2bKLJZ11yBTn6SMToG+6K8GLR5cbofpd/pJ9HFJ59+GjvoDTn6vp7FT95YCKzm6UqZpd+s0+Rfo7B4o0ySGhtAW9KhsnFgZbakM4aq3wioelhSeCR8f/peNVVVHZXDUq5lMEtZSvlWmfXN5jnfrrFOVCJk0O1kxX1FUeyZ6jSzvXIX+hefHAFHwBH4cBG4EF3Iaa0e5ir/ANl6uBkMpnG3zXNIZKY2CtlJKxeRBIh2D4umtjhBCja1f8Sp0/4FWc1JUbfTsXZNFlCGSzEXXGsXIZ6I48HaqFoqq+p7COT/s8za5xZP+9ApH+4b9todgfWNgMd4ru/3d8vd/W8/vGtqavns7iTv3pM31S5sRTO49GQipPTVIY38k+aUSVYlTWYiooNv44ghCLVbQ6tIuGnWOSopjauWcgdiqgZ1vTJs2rOjtjkBcXgW+/0l9oejVsR/HIGbEJg9Pxqu7buYDaOXR2n9HI3fbShB9jPMwLw+zneTVskCIGtASBykzpg+WSOfmEZlD+WTtO9YSxHUBnVHpXLhPO3OOWUGCntvO6o/txjVJ9l3SqV9cgQcAUfgg0Zg4XBU9PvT95VLqw/2pjpfzJLkcCfL5gtcMdCLEZoCmeSikqko3mxWSyZPpImSTSRUydZwCYGIEtLCISVgU7pahb2rtPIySBSP0ALT5r0OTX2Wlu87o7LzRn80c/1r0Vq78EE/nNfnCDgCGwYBJ54b5lXeGg/SdnqzaVve1yTZJxBbu0hk0OXO4JrBqiRzpMWWsNNoJEJQgkyTrJ4tllHsR5QJViSkpBFWkU5ZpdS1T4jvRNNaLQ9HV1ZGo9c46YVo587nIoiFVeQ/jsAPQGDhWFR//YlzSydPzr9JTPB3Omk6W3QyRlVJ5kPHigRWcpe1zldpipCqolvFn9zKZPmUHkSKD6OespAGCsq3y5cp8ho+ZY4rfLnNKXI/n+vPQmr7FHbi+QPei+9yBByBDwKB+SJuB5+hdfr3k6o+2MujA71OkZFgCK+iIRbOkclaKdAsC62IJQ1WUOfSYKFUY7RiFGh11KGMyGeDTK5GyhGEiy6J1CwMBtlcyse2HrU0ey/TQv4+Ld+LB6YvLZ48o2QOav58cgQcAUfgByPgMZ4/GBff+xMi8NPb8t11U38+b9tPMWbYXQxouAXBFgyXqFut486PliKjmmXx1I6GXjqbrEJGOa74OXO5Hd+LCckkJodLtILgO4fG9Rv9qvz/KPm9r720dN7HS/wJX9omOu3pk1H7+J7ZNlXGqjbG8zYh1rOd5atKSG7V0QeojLailN/fKQvu4eYmru+V79SIpmwA+pg1sbCYUDp64w84wo2XzllNiHPzymduK1+cPxpFJ7kHK+8/joAj4Ai8TwR+mZjOX7otOQRxfHwmy356Ok8/w9Ap890kmqYpQq9Lm2ZJgqQYk2Cd2Di5MNtq59Re4flh29aG0cZRWm5GaNC0pnZOlRFeAGEt23qpP6reZjCqv+hn0Z+iWLt47qXR6oJMpz45Ao6AI/BDEHCL5w8Bxw/9+Aiko3KmTOJ7iaN7gIEOt6QSbAgtDUmhDjqyC2cdBJqRzpAtD7FoAs8661q3YyKlk+M6KWhbZekcNtXVQdOcbtL4j1Dl/nFTRCs//p36GZsVgZnnLvav7d//8pYt11dXh/X8MI63TdfNA52omav51BQgRXpaPjlZBNRpw81MYPFdyjova3wjSygxUhqL1kZiZ7/6b7ISKM5TsVNoSOjz1dsbmUOTaEdv687O4ZOXh0/juLZZsffndgQcgQ8WgXvKs8VanD5Ge/XV2SJ+tBdFe7O2TlORTVksaX40hfaMZkwymVAWNUrWrqm9Y0WzcidY+0X7pnh2ZVuQDKfV43iQwzRyystwZaUcvUJlr8bFzJsrey/3F1520vnBvlmvzRHYmAg48dyY7/Ujf6qFJw4XnbVkOrpwdXevHO1B8O1smqqjHra50kqDqhg4tKemYRXXZN+YZ2phgo2+vhxtTSDKk9E6/RKUnMfZ/CUksI1eHRFTggvjawvno8sf+cP6Bdc1AgvSyp892//NXdsuDYbN8/S35lCSbGvb5Ha+MuydfKH6PkU01dmCXDZ8dEqskSjQSUoQEJAixYwE9vUGVb/iQkVQFa9ctziWx1E3S9M5st3uTdaSg534trej6J2L6xpAv3lHwBH42BH4Oi3T6UO7t0MQ98/m0ScYnuyRvG73pnGLyy2S1xRmkqwTmUtLx6bkqFimsshL0JpyjVJSEcvrSG2Xxbewxyin2kAlAuQ02jSGzK4ranwZkfynbVK9NNoD6TxmY3Z+7Jj4DTgCjsCtj4D6Tz45Au8bgd5wa6eqO7cVve6+biefz9NktqmrnJTu6qfTr5eEQ7ChRVUH3lxsEWjKCCp7krktUjBV+nYy6SUZ1ib+rANPeZ2jjLakbe+TyOXFtbb+5qhJvAP/vt/c5q1gMNjbz2azE91i6q/yTvdc0i0YiDPDGCC379AJk5Zf43by9YbvVt8us7Zx06X/pjV9qexXpw0LAxkeo5LMkBUWB0qkJPjoMv7sPsbPO5yl1c7Ni7g/uSPgCHxQCLx96FBWFfV+mp5Huk30iZm2vTevRtvacg1vjCHtUUk7hbIM2WsdPeSv2ii1XyKSsoDKBallVu4FKYlHtF1rw4HlW7Ckf5SxmFBqUAK1smpH/bJaId/CiaQo/qDbnXrxa8TOf1DP5PU4Ao7AxkfAiefGf8cfyRP2L7/di1YWb0fg3YmBaC5P6cLDNm3MsLGwCxYkJByddeSeddelj1XnXfOk405MnGUUlSYWs5Nko8xLqFnbtbJuLiM6Xyub6JVB3l77SB7OL7IxEXjiRFWNOlfruD4/rOsLo7q51CZJX+5mcg9XMLEpSYxoqqMWmktZ7kU3taWlPlNOsJ8xBdWGTcRLxVg8syyO9xFH+jDu47smx3zpCDgCjsBPgEC8cDTKVnujqbk6OjQVt5/pxs2d5FSYKuIot7E6JWbJgibXDSQrl2CGeFq7JSIqmasj7FM7J9dbCVplss1IpCbSySFTwCkbroJeCByQ4vfS2mj0/LCqTve25hemu9eXOdNav5/gOfwUR8AR2IQIhJ7UJnxwf+QPFoF0ZWW67q8eaOrRXXTZZ3KEVIHl8v9n701j7bqyO78z3+FNHB5HTZTEolSipJJEqVyqoYs2YiRpwAHyQfU5n9yfugF/6AQGEtQtBLHTbTTccSNxbARIECBooNhAGm6k047dtlyqSWWxNJKaKIqiKM7k4xvvvWfM77/2vY9PUpVGPvKR3Pu9M+2z9z7nrLvWXmvttfbaaJ8olDAuLJ3mtqMRVJiaLEmKVKvNXBbJk5tPgYW0qNhqwhbwx01sRrIbxVI8F1hC5SzKwHutfPFEe+v84rX9Ct/a7QSBXg+B6XdOD4aDYn6hv3J2aZifqsJoKUozswJUxB/SPCdFtlVKsMLbAIkkMqpKiLOlgbi2c4Q5Cow2UJfeVQMv1OOA4hnUX0uqZrva8slDwEPAQ+CLQMBpeXuSsC6n0qh6sB3U32JF6zvbURMx4Bum9FMM+tp8cw3ayuoJE+ZRzvqZolxqHqfdkRdRoWjy6q9YRzvJgk6rg4dSYvwYRRN+rGkD1KZvY2b7qcX+8Pm55fxEq7zc/93D3sX2i/yGvo6HwO0MAR/V9nb+9a/Bt8OPwvDgwSRc+uAuVMNvp031WLtpdsG2CKyHUskzNOKK6uhMRFw7hROrEYzMlFDdoyGNvupU+U6Ap7YYJMFcYHwrw6p5Z1jVL3H+i//2ncFxH8X2GvyAt3kTzz4bNL+9I4uHeTOFdpi242Qr2LdTUSCFk+iNZtGMTVijuxzhqeEq52aOl3QHnmrOFLYD8Fi4LaVTAywMnFgdNRWxtmd05snp6sLB2W7z7KV85TYHv/98DwEPgc8IAbqRMNy/P3t9Z2d6emmwv9M038Q34ztp2DzCNkFIM/oX64HgsQQ3ow9TPyRX2au8li5MHkjqyEbJotVaP0VfxSCxDaZxVBEFUtN0GCZ1LgyxdhZl9dPFQf43VVMcX3kruPibVmrckj96CHgIeAh8OgR8cKFPh5Ev8QkQOPRMEE2fOpYOqnIT6uG9BDjYU8fRJC6LWI1k4yQqHhZLJa3DyYLTZkWSZ0+aZQjnihDKaCyMzpaqgEmai60qMOrKDlcgW/yaoEL124O8eiVKmku67ZOHwLWAwHBxcz+auPxykqR1Xtf3ojh+LQMPE0b/QU4TxEw4A6fleivLvIwI8hfXup+aQ2X4rjESrAeKJCnrqO65uaIVU5bjqThLEpYgeDiqotNQw2Fa8IGxrsUP6NvwELgNIPCDXhBu+X+H7XqQbEvK/CBrZP9nRBHC9NnM0E9FhRRKjY0x0lUyx1z9UAaPTTJcZ0dDwEVROA8O+K6i08qtNo0z59lB38UEUDdwRl9n/Fhut2z5YHh5fqn/Lk94uR1WP83TwC+dchvgnP9ED4H1gIBXPNcDqrdRm0ePTs8UQX/vZBw9kQX13cwx2ZTK2wcYsHYhg6ZYgTTsSrJRVrklmhnJzS9xa3e60VcJ9xRHQdWMEspTlhbqkvUWcfGZ4/xtzl/DBfKyNeh3HgLXAAIPPXWiOHx884VuEb5H/IwzjO7PJWHcZY5US6P/ihDpoipL2wRFzYzACYqn8FRYjoYJvjo8d/OnhL/KUw0wv46YelVjpIBG0ugxBmVO6Y5PHgIeAh4CnwSBnkZff+dAu/v/XJouF688wDIpD6MWfj2LggfwqJ1m/nii6D7WD1nfhIUTDdT1RuqaNM1FnFh/zhNDvFheHbJmxvRR6qbUV7EeJxv1eaSsnUwymEeBnWdJlhcImPY848Mv1x8Ec7yT6wyp55OHgIeAh8DngYBXPD8PtHzZj0FgWGWz2HW+3cTRd7M4ubsbN+0WkzKFWA0jrm7h6hFjg+vJCiq3RbkmSunUyKyY3YjVWftYNjGAaoYnI7eUKppwpQiDi1USvhVPtI7c2b4wDN792Kv4DA+BLwSB7x0K6h8+M7d08tiuS3VTngNFzxFcYzvHlgZP5EA7slyOXNbGLrc8jkJmAeVUwpuCeWhep6Q4y5cgp3sIeVhLI7bdSRQ9UofNL8j2yUPAQ8BD4JMhcPBgFCxemG6S8G7cZH8zKtmS+p4sCLcypdOma0qttIkt8FWLicCxaeDC9DuKsm0KJU+Rh5FiL5TwZgUVCtmkQ0YcUg380o4FJJJFFC5OVPoL84OVdxh4+9u0TP8imOzP/zeuq/vkd/Z3PQQ8BDwEfg0EvOL5awDjsz8TBMJOK5zApHkvo673xVEzDbvjAEOzkVMFD6IdyeEcyDJBXcK6klmDuGHZXI8FeLsJExQzpaU8D+oLwzo8iTJ6sXfkwpLd9zsPgWsHgQbls/qDx5uVtAnfBz/fBC1TLJhbnNoogUwCmqz0eiiYCX7anE4yXJ7yHS7L4qmBE1lJDbnZOduopMSQJfeinRgVpnv7g+yhh4JKz3a1/d5DwEPAQ+BDEAi3XTjSXq7iB+KofqoTRU+krWAfMRSm6JMyp3DCQe1fO2fbVIaLmaC+yyXxWUt0WAS8JdEvcU60bRv4tTrK5l5VNwWeRxg5qzcJLvQs428v5x/0T/dcR6hSPnkIeAh4CHwhCFztlb5QdV/pNoZA2Ov1pHi2W1m0PUvDbXFYm4VIkzKNmcHANM/N1gOzyLSgm+bDwexkQRIjlADvXGwR1m0UltFZ/pQn62gVsrRY3ZxeqYp3B3WzcBvD23/6OkNgMsuHeRyfqIP4FSZtXlQQLGGpBeYY4alwV0E7bB6yLJskudSaMkppi9As/FU9yjqtlFYoG7POEHM/22mSTKdRPBlMbmmffTHwg38GRb/zEPAQ+CgExGNXBlE3HuSPJ8PiH7bi+JFuu7UlTqN2hfaIHwWbG7cSn3UKJ4qjotWyyf0/wnLJik4slUJXQ5dUM3FFfRNTYnCzpW9iHrsGiyPOTSGlTlHWw/4wn+f4Sh0nf8EiLW/0rPZH39Bfewh4CHgIfD4IeMXz88HLlx5BoHfwYLzyV/96omniGUKwzMDSphDDNY9tjcAtxXJUwWmZZvWE95EklEvF1KkT0KVsyhXILbcSSzUdoKBq3c5Xi6Z6oany8yruk4fAekCgjLpFFcanwbu3USWvSAzjnEc5K4Kdg9BSIoXDUkx12+Ysj15IpYXHpnga8kv4A4PZ2KPDNlpcpYuCuj1dGt53uTWxeVTVHzwEPAQ8BFYh8Cd797Y2/5//8/3ETXh6Mk0e60YJls5mlkBCGf1IHDKQRUeDw5Hb5FGkaSoVA7hK4qUa2LVCuqmNDkvDYvbHPcuhjvVwdsEuot9rwrN5Vb2MtfOt9uaZ9/Odi1ozW92eTx4CHgIeAl8KAl7x/FLgu40rLy5mwWJrJqzDLQQnmCI2bYvRU9xspURehYudwst0XM0Wg+PC+BxHc0lEzUQiD9I0tdFZGGaF0rnEyO0HtP+LokqeS4aDM1db9mceAtcWAgutU0W/Ls+ib76LLeCKbABIYaZ8rqK1KZ7MT+bRcqdFy7Q5y7KKyhoqsc4i3Ur5VFlasOWD8FVzQT6CmDmeLVxt7wyL4JG0DPy6ntf2Z/SteQjcEhCoyoudImie5GP+i3aSfm0ma80mdd2pilxMUx2JtEucM+h7pIBSEKbpotaiWhKlm76IuZpopuqqGiygChwkC6jW7FSfxb/xYWPItOGic2t+Z3gCV6MfsXj28Z/97FT+/Wf9dIBbAqn8R3gIbAAIeDevDfAj3IyvMD841+6G2U6WQtkVxc0EyqHGX03wFjMbj65++NuQwlXCHdzRclw9lZVrkJhnUTdDudgy1+Rtoie8/y/euuKXnhCAfFo/CDwb1IOnk6VqsbqUx+UVFhJYBJXbCGgtDZSYYilhjTcYu4Irzyyf3Hd3XDmzco7meMquILdxVcQ6qtgfMQi+rSmKr9RN9P76fZBv2UPAQ+Bmg8CfHTiQXknmd4T58L5sWB1ImuAJepA7cI9tEUzIrJjomiT6HjYC8HGuPoZOSANheO8r4pDi2tZSOlE4uaHuh2LqhOSXJE1U+eqTpJvSDi63LHk2X9bxFfjv66i3v4iq8tQhU13VA/rkIeAh4CHw5SFAl+OTh8Dnh0C3CDp1Prizrpq7sAl1FJKdNTxhbkIpNpibOJVtMDgJ6MbojNkplyQeqD8xUy51S25Cg7wMBsOcQ/kugYVe7zfFnJX3Ow+BdYRADwFr5menhkkwXGJ+01w/zy+XdT3A8mminc35NPzVvCm3Bh5jJEHOnCnpmMoTEguHFTHSBctSWYRAtM0Ii75ZQUF3Ij5vYa7VvUE12LSOn+Sb9hDwELjJIHClvdSGE361TuKDrSx9opXEe5mIuUkR4OVN0WZ9YWyW9FZBUGDKHDTwSwySOcpjyPrBrVYrSGTRlD6qeZ6sDxXWcq5N4bOEJUIlrVBIUS5ROOG89E1y0c2rolkphufnh8uvreT5y1GZ/LJVm5fRiGHfZID0r+sh4CGwISHgLZ4b8mfZ+C9VVcMOo6+7w7rZBYMj2J4bU5UCKXVSTodKsD27Vs6v4l7ie2KJOkp41+Bso7knSTigwvuEcTlWlbEPKmTQ9Lv1hkAPNPyDslgJ6/QdvNJeQnZ7hABXM26ARIMqV7FYOqhzV7O79mp21264QRVDbLnCqaYprSikxN5CLJzqZukuMidRXa2u33kIeAjcvhD4r/YE7S1R6+7L5898ZXO39Y0kTp/CVfZedMlJDeqqE4lk0YRZyjPIuhOyZeU0fyNXBD5KrwUzDVE45XmU4FqrTQGGCjofC44mHq1eSFZSWTvDZoBbb59gRUfyov47Gj3y+yf7fsD39kVH/+UeAusGAa94rhtob+2G20HZrptwZ1MFu6I0bIsxyplHfHBV8RwxwrGw7u6Nr8bwcRYh3VMkPgnocUq4ojge4q54eimv350OUhTPK+MK/ughsK4QSLPuoC6C1zAadAnhsbmKgr2J5kbxVAueBZYqKrNMCrJgRgndqGQ8JEENoEgZtdJSOKlk0ZkxjeI2zk21wtLsUTg50cq2M8gy4RXPdf05feMeAjcFBCbaUxNlUTwdNdV/EpTFg/Qe94VR2o2xUEZMZKHXUAdk/YwpnXxVJL99OVpwVOfD8ifBUFFrSy6JMdSKsyCLU+InKHZCGpT5gGi3hdULmSNa4aiLKtqwTvZSFYYXmjj4e0IN/dth0PcM96bAGv+SHgI3HwS84nnz/WYb443DOsPFdjOuP5thiZlTOiVUozxK+oZDjm2cUiYlmCvXdhq95URrfa5NKsdYLbpswBpiwTLa54W42z4fREV/bTl/7iGwnhCYTu/MrwRnT+FaO4lY9hsIeVo7tgW2pgo3ZPg82hsmo0yOcf0qors3lIDIou/gupZaWfPWddAiawrLRLuH/Ph9inHbNb2mmD/1EPAQuLUh8LsHgrQbzM6mRbWXSZyPp8zpbMfRznYYbNEyJxrQUsegeZjyntUFUwCCUpZNlM6E/sc8hXStsrJi0tkYf4UXayBMA2UNczhtwIyeRnFslXC+GBBLoU/9N6qweZURs1d++dTg/R8eCuqelfA7DwEPAQ+BawsBaQo+eQh8bggkUZ7EUTUFy5tifidjpyaCwxMdU1OId0nSdoQZjmVq8+zhyimdozrcN8boyleDuhyslPlCv8jniqXu3MJ/emr4uV/QV/AQ+IIQ+N3Dh8vOSudCnBYnBk11ZlBXcwhnLCNrHmwIcJzwb7hsqO0cyyXgjUye3GauJ4KgItna8gbcU9Rmi9yMX3rYsPh7XnSbssiC/fsTAnj4vvgL/l6+mofAzQyBVrKlgwb4QBom35zOskc2t1r3TKXxVIf+gmjxeEoUbmNIlmXFgpw+JWe+Z4HlUi61BEELohIFNWfIVv2S5pLjhRFlKb2Km785zIfBysqKRbzVep/qsVRlWNVLK2V9pl9VP1+s6n/TH9RHDqF00pOpZ/PJQ8BDwEPgmkPAWzyvOUhv+QbDXo8pmIeSLK6aiTQOuwjcIzzSvBFZOj+SJJCvzV1j6dRorgR02KXca8VC8RaqlhH2WTcsXO4dOZIHRz7Snr/0EFhHCJjQdezY8A8en5wPq+wMcTlOdhPGWeJwKsSNDW3S6Zd6B1kY1r6L1EehOzspojavUwVUjs38ADgkEf9p2qalqR3xxU2DR3csB6+cw8rvk4eAh8DtAIHe/v34wS6wLme1B9b3G0lQPd0Jmj2E0J4QQ8Xl1voMhTazQa01QNHawZHc/+ljItjn6sJP6mfof+w+Y1lcWqAzVbU88VgWPSuaMkd57RdN8xpzO19Etf35cDk/Opww744PdWlrHutPPQQ8BDwEvjQEvOL5pUF4ezXQk0R9aH8yEZ/K4HqdJAzaEYtZKyAQS0M4wZr9WkXTyeG2/xiwzDKkBa9hoHFGk1HCairV4qCs5hHdfdSVj0HMZ1wvCCyUcZmxrmc7TI6Bm5uzJN6NVxq+4CifiGbCaDN+StjTS5EhK6i5uUEPRg0IhfIBkNJZg+dynUNUxGcX22c3zYh8OzMsh7uGYXaWml7xFBx98hC4DSDQb/c7nah6KA3D3+gm4bdwsX28VVdTCX1ExOCWXPTNk4jBLCmeFhF7pBJmKJA471uHIw8MKZ6KeKshXC3lhMmTOlI8sZjS76SKhMscz0oWUPqpOi+XlvP8AtV+VEbVv4ma5NKlJJ/7zhEmffrkIeAh4CGwjhDwiuc6AvdWbPoh3AJPTc9PhivJTBKWE0wxyTDgiO+ZtXM8b/OqmskdmOZaRXQtXFAuqW2c1YR3OQyRcxYJ/iRcVHPrfPIQuCEQaNdZUUb9D+qoeYNIkfcXGh9ByDOc5Y2E6zJwCvdXXct1JUEQDVRYL4FRf5ZUUEltIFEiOsbYNLYWRXVvHfYH3Dln9/3OQ8BD4JaDQK9Hd/HvdreDojOZDhd3JoPlPU1UP0WAhMdbaYyrbbg9gYvajHGsnVqOyZZiMgVS1k/6E/6kgI67FK15rSi2Zs1UMDOgpnIa6HJ/UkVRPtkigqHhXcSiKYqhUL3L9IFXKfji5qn8jb8+nNe4+1f/6paDuv8gDwEPgY0GAa94brRfZIO/z4VtQRYMgy1J2mxJ8roLI0wlRBMRz95ce63pKX8fWXqkdOrSOKXMQfxbUSuj7JDRWNYWg2lqTTI4Yp+JLe/FSfo2Cinutj55CNwoCGzPg9aF96M6nM6Hw28g+gUtlMaW4Tb4De7qT5FrJQjikmtzOmXZVCAQUz7lEmdzqigjnFcUEJ1KYKxLPHerbUVZP1iG9QWy37Sbfuch4CFw60EAT6EgKzcF0WAPyuN3CS/79VZQ7Umj+g7skRMZ/vfWodCXVFIcUT5b9DERw7qV1gqWxwR9Saj1gikjl9pKcz3pS+KUqLVYOelYbGBLrLdG0XTWT/hqgzNtWTXDuipZv3MZs+Yr1Pl3NPDGmcNBhdLpOqZbD+r+izwEPAQ2GAQkMvnkIfCZITC/cqUVFP0tTVlthf21FeUdjqWgnXAuKZlu+3CDcEj+bWda5/h8nC1+65gtI7g5c1fONUnCGp4t73ooUPl0QyDw0ENHqm6cXgHJz2LsXCbKrVROpjGP5EOJauPNMNiQfFWCs1uiizUn5jInCz+lcCnHgNrMoKDegWPu1A35SP9QDwEPgfWGgOIiQPTzk2m+9EA7L77JgmHf6ATBgU4U7u1G4basqbsx/YFc8a1TUVcy4pUWEZv+woUEEoelN5JmaR2L46FW3PVO3OdK9xgks1MNiBGCvmTSKOrr6WGVv8xani/XcfZq0YrO9ayx1W6Ltn3yEPAQ8BBYPwh4i+f6wfaWbDmfn2uxruFsFoezcRy3IsydMuLI1dCSjmJ6NtmNo5L44CoTVQFYo/K4bbPjOHHh4O0eS4o1F8O6dRYevGL1/c5D4AZA4Oj+oFmaLwe758LlNE2GMSaIqKoxQCDhjeRDm7sJ/tYgtOQ84bZZJczVVoWgDSwSI2Qn/LMi22rulRRP2UWbbhxHs1x2rbDfeQh4CNxSEOipUziyP+mGC5ubovw6/j2/3Q6ae2Ge2zopvj3yiDDXWq2q6Xipuc7ijC82Ku8I1v1l2RSGek0/RPkcsdaYfqexoHwcrZ8x7ioOC8+ld6Feo4GukN4rjHEoat4Y5MWzQV2+vDKZnNkVnCc0rk8eAh4CHgLXDwJe8bx+sL4lntROmqQsWH8wiibha3IOckOlIyXSqZXiim5r5O5jf2s+37ipu1Z5FRWPNFm8aQY0O78UNXN1XPplVNaAzZ9eXwh8vxc0P9h/rgi7O/polQPUxxw0ZU6zOdc63VO4LAQeHRDzbFDF8FrCH0g9vmdvL3rRNvrDdtHhfIZ7rev7df5pHgIeAtcFAgd2tzsvnb0HbvkoiwE/xlSUr7aiZqYVBW2C86FU4u3DqJXcYmXPdKojewZ18a9FoaQPIdssmdaZuC5FTFOlFYBI/YncbFUmooOR0lmro5HiGcRSSc/iTXSKKTGHy6Z5nmZP9A6f9gO71wUB/EM8BDwE1kKAns0nD4HPDoG4ZHw1ijo4HLLBM+Fo8rXVpvHYq+5AMFGUzqsiNmfijcrRiTuDd8qFCKYK58QClJdlRdjQYqHb6SxMVrN+NBbY+HRjIIDY1rCUT9nk5TDP80GR533mWbECgUJ1uL/xYu0mBILLwme3CaclBo7+sDpEsnTyKbKAKiCI5oyyz7iaoijedz55CHgI3GoQSC/PTxEF4ethVf5D5nTu70bNllYctFNjfDUdTBkwx9vmiGvUatWVX4BwDBP9k76CjW7D+CjdCklKpa7Zs435aihmSpb01bohhFmYlMMqePNKP/8PK4PyJ0GSvtYtBufVgk8eAh4CHgLXGwLe4nm9IX6TP69o0lYc11vheVvhfRk8zhRHMUIxO/ZsUjhHSqcKrCbjlnYFa3S8kysVQVivm6phbexmBb/FlWCpNQieeaYMjvhFPFfB50+uOwR6IPI/LwcV846HWCf6BMHKxogrg8KqeXMk/MmFXNkO6xEix+hvZd3rS0C0KLgyVdRhxq0J6MErng48fu8hcFND4IfPPBMfvXC0ky4uTVXLC7NRXe7NovDpJAwf57g7DZu2G4KSVdJ5BGlvfYJjonQM+iPJlVbndkG/Ykc6Ff1zbnPGOYrbribrhOS+G8rSeRFr6pm8ql9YGgx/SqC0t3snB5dWy/oTDwEPAQ+B6wwBr3heZ4Df7I9rJVWHGSe7YXm7UDk7cgcyJgkjFIuUBWh1Apy4oyU4o+OYH/98MVAxXzhwXRN0zxZKZP3Ot46UvSNHxg18vJ7P8RC4ThAI47AOy3AImq5guJwAwUna2Qn469D0as5IaBRuj9/RztmNNVMKu0BDBHUOQ9aND9JxUX/0EPAQuHkh8LNTp7ItabyNgD73Q+ZPQfJPZEn4YDuO7mal6naMmqgwPyX+rpYoNGaP1l+oP2EuuFs2hZu4y4rP6pqAZKasjvseLUWmeZ4a9SVQGe3AheWiq/oBc1XK8q3FweB5eOxP2kn6y3xlyQfsu3lRy7+5h8AtAQGveN4SP+P1+4gwTBiwbTbxRLYGYVms0tilHc3CAx+8mm8XyvhQMivn2hyZQBtivqN8VgR+731kEHdtUX/uIXA9IRAOsBzE4TJOa3Ng85TUShMUQfsx5q/Fd4fxGoYZJ0Pu0QW5CIdSOuUqENdhK22aaUps/tP7J7cvTUws/9NXznnhcAw6f/QQuEkg8I/37m3tnEm3BPmFXVnR7AurZn8QxwcQsh5kcGkWxZHI1eoLSISDdyZOlFAURgUTYnamUzY1oDVSJOU2q6XGVE9WUfvj3mi417neUkZtWtxblE6OOA6Fl6uwOctSK4cXBv3naOP1Pzw+1JJNPnkIeAh4CNxQCHjF84aC/+Z7eFU1TPFs2lg224QyiJ1DrRgjjM8dRnagX/9to2LOxZYLE+TNM4hB4LApNa7762v7Ox4C1xcCUYriWQXzGBfOoTHOSmeUpGcC5OqrSJnkwnYuU8rl2BqqHHfuKuseW5hAS6pU1eGdg6bZly3lJynqFU8HQr/3ELhpILB1W2uiHhT7GUh6IqyKAxwfzOJkNg7jTThN4ErfELUWtZAuQGtXx/wxezwIWKMzQhGN8eWPWItTfUNOBL8Sq2iYENmWCiUssWEdTw3YKp6CmKymiJbkKTBRSGRblFxaZ4viMq/KY8t58QL20eeaJvlFq7OyeNMA0r+oh4CHwC0NAa943tI/7zX9uLAHu4uzJInqmnWtm5bCIUiYtgArn6pufvhdJH6vJhPCg4q8FdpbJoaCosr75CGwISCQ9+MqTes5BlrOgKN71r6U8PhDCij0sFb5XFvWnY+kRi5M+SSEc0IUIqwh++JO9FtIpe//X49vfX9YlfWQiVk6NnVYDeNoaVCVy0G7dbl3ZGHuo4/9+HN8joeAh8D1gMDvHjiQ3tvJJ+t+f08ahk/ETf2tpK6/mgb1XVzjSo82CI8zKyZ2Sy0dhjJq1k3rA7inZckUjZaFfekY2NSPkJyN0xlHLfwt9y3AkJpTm7J92jmKJ6uAFk2wUlTl5bysX10cFs/FYXX0D97Lz1hjfuch4CHgIbABIOAVzw3wI9wMr9CDrZ0+cCDe2pyCn5YtmCsDuk2keSWWxAN/ZRIjHd0Ym0R/RTmYJ1Hem0Xam6NZv4zKr4CRz7oxEBh0kios8stJ03wAnmI5EEKbxXKNRROBEFqQIPlpycqNiELFpXdi8XgEIXIXGugSOcsEM8rDsC4QSIf4nw9xnns3iuN38UJ/sRcEV9hGhPdpT/P3PQQ8BNYTAve3l9pYJO9Jk+CxrKh+I2nqJ1ircyYOqjSpMWJKJ+QFxP6IYYDqifLJ0Kr6Cq35G6Wpc52l/6iKAsUUhx8iYLNOtkW+Zu1NRqcSK4vpEzOncwhSNIWYulJiNVsUa2o1KIoLi/nwHe79MomCn6RhvrCe3+7b9hDwEPAQ+LwQ8Irn54XYbVr+oWeeCYPjx1P4aIaLjyJ7puZcOJKzx1KwMVjBSCejew5ka0u4nKt7E9rFOxdwG7oSBSX+Rz55CGwMCEzPt6oiy+cZZjmPqPf51r5bJQj3LRqnMd10RA52G6MFFLCtDutt0AwGEVx7MV5ESVSkcYDSGeWImnfh135PlsSbJh7fsfl/K+t8iGmD+dZLRD1aSqN6Pp1YXDhzOKh6fn70xkAc/xa3NAT+9uDB5K3k5MTyfHVn0hRPsCLKN9K6eQC32p240MvxFd1S6qFYoY5yhNVMTmfZhOZHo0duPrgpppaHO67mfKJ8VgpARKehwSola40OREf9xWi1YZxUpDn6gwvDqjqylBevYEB99b9/p/zAKvmdh4CHgIfABoKAVzw30I+xkV9l7vjxqM/UlE1NnTHXJMO9liFYeQsxIxOOOVYr9Q1jfVN54+2Tvk08FcYqi+dS3ZTzVZN4xfOTAObvXVcIJO1TKIJTS3ETX0bRYyqm0yZNFgT/7WqUpxczi6ZplyNaMEHxKoXovv2NhUkaKLGCaOMGS+MSw5KZ1Gkie0bSxipSV2XVKcr6HrL3Q23/ObrlEjrqEhGmjwdN8k5ZBa8vL80e3XXg4iA4rIZ88hDwEFhPCBwNLrTLsnVXEgy/Fhblb0ZN/RRK5w6pgjFTNV0AING00TXsMggSy43cWr5azxeC12bBhdSRoGxapHiOcFdzvzUracFsTVk66Wesx1G/Q1uKYIvHRNkvyrfnVlZ+ydrAP0+a6IVhmvtAQuv54/u2PQQ8BL4wBLzi+YVBd3tVfG1+Ptq1JcGLKMwQipm20hDFnVBAHwGDG8O1cdmP3PnkS3huDS8dwFVX4KV+jucng8vfvY4QuNwKmsk67jO3eRG8L/Rop3x+npcw9fRqhRHhOBVU8iQCKEXItjNz2Q2xmnClYCRYQDpxFG6lgd0M/JS8y/woxI0AAEAASURBVHLWRMvQy51ZGN2JZXRHlqQ785XtK//rV4gMHYclfrqYRIvF88Nggblji8cPzC0dOmReeVffw595CHgIfCYIiDZ/cPBgHJx6pRvUxc6l82fvmui09xHa/RGuH6VT2BPHTQKt4jsvyybUjdKpTdRvSqNoeUT7onG50YrxadyKA9toIEs9AfdUj+Z0aiH3pKCi16Ksqk6IntnM4WF7Fkvn4YV+n0BCwSt/eDp44zN9kC/kIeAh4CFwAyDgFc8bAPSb8ZHJtkGUL8ykU+0ky+IgieuKYVtmn1kAWnFSsUgd2XRq5zp+huS4a4Nlp0zCrCgZOv4MtXwRD4HrAoFd7aC5gv8a4mQfCwOWeT1WQuUI1SUxfkqyEiZAWmUrbZZPFEvL0Xp8GDmkfMoCwrq2QVUVnJGPrqhV+VoUqIsqKgvmjoXRJGZR3izqMMnrHiTdA9g+FqMwZuCmWKE6DgpBv6zCt7MmP8oQ0bHvvBi8/UP3iKsv8Snv7W97CHgIOAgceuaZKBgcz4JWcGfdr3+b+ZhP4Q57NyOwu4OmnA2Je6CQQVIURe+ohvQR0g1Fbq6PwCUWDyENJOEupCVV5HxrQ03qB1Sem9oUgUjUjyttwiYV1DadMzIrK2hREw+3LN5myZQX8rL8EWFzf76SB/NU9MlDwEPAQ2DDQsArnhv2p9lYL7Z7eUs0zIoWI7nwt1BrVsMubYDWvagxVzFLpfHRXf3qvWPE43sw3waWXYZJULaaUfSE8U1/9BC4gRDYfB/63qvxEKzv22iLhEBzrXWY7oTMD2O9CZBrUXx0Lh3VSGX1e3TDWTYkrppBQwqqlk8YWUsUwItAIeiXZkOR2Bkmii8dRRlu7l3uzzpqpJ2wHlBqQPkBEnB/Iop3ZVl3O3m7g7C7+1/uL5b/sBjmZRgvRGl9pWi6y8GRCys96bs+eQh4CHwMAj3mcgb9U93jxw9v2lTku+owfrhI029j6TyAC9AskWsnmZaNsVJ0jC1y1DdYj4CCCGtzrrS0jBpKNqQGjcsqejVJ6ZQrrXLYccupr+5S5W3jklKsahbOFU1zlsDXhxeHwx/HVf1q74PglGr75CHgIeAhsJEh4BXPjfzrbKB3W+6sxFODpFWWdTsKCuL0wX7xGZJrkARpjdZKE/1sSQx3xHRNCldFce2mwqjDI1pk+MC2nw2WvtR6Q+DooaDpPNDKt8YDAguFcrVFtNTcLGH/1fThKwoZbnN/bSFdjmqtCpZqQjIn5bGDIKSiWpJl8it5ypfyadEuaStibT/c3S3qJdFHgprN2oSE4girS1wzFRRraBJMRUnSCZPkvqKqvzkoCJCE8RYXvXkU1KPELXkljvN3tx8ITvp5ofoRfPIQ+BUQuHChHbfCO1gi5YGoqr/B9M3HJpJkL27w29OoaXE011qRtWhVg0YuQc/GEzWgxE026Za1FE5uNEQjsvJG39AxRyX1C1rnkyjWRLllnU7oW32BLJ3YSxW9NkfpfGtYN4dRZH/EEirPd7LhFfdMv/cQ8BDwENjYEPCK58b+fTbM27VWOnEe9SdgvlhYcLUV4+TtjCEaw4QzfsGkdlisUCEAC8yeBQx6zLm/YIu+mofAtYPA90Hz/2PXZJEs5APmSmr+sWREjIhg7kiJNOVSiDxKEiglQq6OxowuLU+DNFZhXJ0rNUUdk0+pqTX99AgezQY5cDAhVWQ23rgtl1ypwNrj6kf9Jk5tkcAm1bxRLDATFNrJAg4VYahLZmYvEhlsHkF4e5Kkm7Gy3DEYTL3zxw83l4pOZ67JmuX+Ty4u9+yhPMsnD4HbFAKydHaKM51guLI7KZpH46o8wDIpT0NHD2RhOIXC2RaVysrJ/GujXUyRQEsKpQOaZnq6QSGVhF4pJzpWdATxTuXan+gY+jU3XRRMa8zuqrOhYsSS2VFUEWBssayY0xkEL+GC8WPij736P7wz/757mt97CHgIeAhsfAh4xXPj/0Yb4g2HKytplA6nmYQ53UpZ6MEUTzdKOxaiHSP9fK9rzBhGDDOG7zZFXYV5Wg21tIpPHgIbBgL54tYqLucqBMYKeVGKp+mKUhbHQqKURgmV43T1XGXGuSruLsZ0oztSMRUHU1JmIwum5UmYZcPyQcuubUcrNre6ZDHAyiJjQi5ONw1irKEZM800B0xLMVQ1sXLzgeaURe1YKwYGU1mg07idxtF9edlc6NfN2ToOXqPoL+uw9c6WvXvfC44d8y4H+k18um0hsI2otfN1c0erDB5JyuK3UDoPtIJ6dxo002lYE2AP/gfR4GbraBelUsZMUa/RPmSveZxjDwZKo2xCx0BUQ0WyhqorkLJp3QjNaO6notWKrkuUWBtYIg/PhYZlUwZVMTy2MCxepdCPsbX+rL9S+zmdty2G+g/3ELg5IeAVz5vzd7vub03wgjgJq3YQN204qSLaShaWOGzv4kTpz/5aqvWROpo2VwUE4iw1WcYnD4ENAgHhaW9qqrnzXFh3WiP/OGRFw9KREqlX/RjSfgTBf93nqBjipv2ZKx5SqPIsHyFUc8FkDRGtSUDVc/AQMGXThFnE2LWUyFxpezmbb4byKdc/gg4xfTpVUEzmaQctSGySMCV3IBcvJ1hBEXZn0yiaYjbrtro72PzHj206l/eTS/1kx/D7R44UvMvHPo+H+uQhcMtB4PeevrPTXaxnL81fubObtvfh3fMY2xN4+3Bet5OgwcPWWTqNLIwoRY/OUilKdvR4lTs62nUKpgBm1E4xdR/kWnnVclRPbdG5DKehVleKhnUYnafwKaj5xZXhkGVT4lf/4O1lb+k0mPmdh4CHwM0EAa943ky/1g1816xeDuuCZbFTBX83+8yXfhuTZI3zInajdYaYaSRjIwx7IfdLQ9c3sC4QkI5HclZLJyo6y6YTHk1itBKyXNiJyZJjEVQ5Ki98t+NqEXPKM8SXUOqCC2HJhBikSGqt3FWqsIY171OhSmhLz2Gng65ZbUWGU/KwqkCqBD+xc5bKJYt5oKYx8yGcY7ZpES03xlT6MI+4g/lijw/C5gQLl/59nCQ/nQ7mzx56hkiZfhmW0S/lD7c6BGaWm61FU307KKMng7D8KoG69iRZuCOugg4TrSPRXSTaYtO6nCJwRXeXy7u8E5gzYt2AvG5lsRQ704iPLJvyQtBNWTYVoc9sn1wrWQ9ihEuLkKSCKNBiDqVeInztc8M8/2le5W83UXq8igeXrZLfeQh4CHgI3GQQ8IrnTfaD3bDX7XaCqEA0JfAszJOVxGCTkmft70u+ldrBBINlp5GBRo6FPnkIbBQISCD888XFsNNGOMQmb4KkXs7ORm9pwqMTIEe3VGBkFrXTccHR0R1UQ3qg2jSBlDZNQMWwWkkIpd2x8EqhUSWroEr86xku2x0Qf6m3mqcy4/eUlZQ0Lqe2qZ9g6UxocSdW1J3U3UnY6nsQnrtJK4xRVk9efGfX+T99rLk0Hw/nuvNbB//42LGcNqjik4fAzQ+BXi+ILj2/N916ZTCRrTSzBOvaTwChbzMo82Qa1fdCj1ttERMmXmsetTEpPlskL28Eo8HRgJR1AwIJNKc/ud2Kvs2jQbTNnw0WiXpEp2rPSlFGSiyEaxGzdQxjVkxpsHIGb7BO58/Pr8w9VybB2T98L7ikR/jkIeAh4CFwM0LAK5434692A9650+0GValR3hUEW9bvxCuW6WQmJI+ZrRisJSfZfva3pJ6YsU8eAhsVAmcGg/C+mLERSYXIj9LZkCN/Zfq1N35laZcpZVFabUI0yxiriURWW9QTwVRRLc1iIncAE1adxURRLyW4mqL5EQoyavro+5H50Sy7hnBrjfjw/DQIJ5Iw3MUDv43BZV/ZhGcYb/qAUL4vpXX6i6WppdM/OBjMBc8SXNMnD4FbAAJSOieXpqajKthb14Pvpg3LpEQEEIrD3YSsnVDUWuZdQyXQCJ6vIiLNwRTLYrjU/H/GNC9eKNrDtd2UT9NHbeBH3QYODJqvTQFZSAkSRI5UU+jZotgyixR3XR7FMVTAgxWe+ALH/0gU21cxfZ5aKYPBLQBy/wkeAh4CtzEEvOJ5G//4n/fTNR5rA7EaqBV3ZXOCrFjnF02uIQnyjO6y8gPtYHLxyUNgI0Fgy3AY1m3zkDPfOvDeof74JXUlevh12ui43EeO40aMgowUJNDKrIpLLG62po+OqEuDMxachErQodv0WMoa/dnOPUD3XXIn48vxcXzXPoN60qTVCPUI2MlavWEzjZa7J6rDy0jC57AAbUIpzlp1/e7Kudmzvb31+aB1+XzvSJBfbcufeQjcPBD4vTuZy9ntb0nP9LdNZuWOsKoeYZjnu3FYP9KKws1J2HQjBQ/SNEu5qcOhjLxFJ5Cps1WORqCwVkKGkBCUzFEFzYIJwWlyihimXG/lXmtzsFWba6mj6jMiFFibbkIQBa7LsqkXirI6WQTNS3N5//ksbZ35Z8dxeffJQ8BDwEPgJoeAVzxv8h/wer3+/GCAdFvXm1ipOkwZ5TUu6+aS6dSN54rjfpa0ttxIaHaiswRtjRX75CGwYSDwA9B7etsAYz+xX1k5AWTXaieIi2vTxzLW3vzEc7Uji6aUzQZBl3lcFp02waVA4XNNwEXSLWVl0VMhEOUpYq0EWjcKRL69kXsrt9djdXb1Suei17XJSqBOSygWNdoT1S7Pw69+MmIRFkyxnTTKvpIHzQdkvp+m1U/DauqvgmDRu/2tBaY/v2kg0N20MgtZPR0W+aNQ2n0EDdoTNOVdWPw3Z3HUEjUUucZV5InA2rnmVguhaGwIZVTkiHESsoOmZPcU/Umb1P+IxuSVoOy8KPBcwKPA1t+lPHM4CQ3vXCd4Qo1Wiotv0yRot3HSL4v8reWifJG1Po8GVffUZHilf9MA1r+oh4CHgIfAJ0DAK56fABx/6yoE8nxQwWAHVRIMGbGtIvijGLBbTkLlJL5qrzFfnX9EurW7a3dr7jtmTVNNjCDAfDOGf33yENhAEGgtDOMmafBEtXERyZIfSh+9/tDNT7lQXdGNZNca4VQKpZRDLcepB+l+g2BaQRyylkQIrbaMiiRfS6NCKji+5ugUTGVa6+zd+doyjk6hWWhQiq+u5eYrksTdT4Jxxly3jJozYV3todx9CM9nY14FRfXSHz06c6xbZRcubLsw6D2LhP7phO8e7/ceAjcIAr0Du7tBEW5Jm/xhaO6bWRQcSINqD1b9reiJGQ7sRHCHC9lgD9NK5IEAEZgFU67uolURplzfoUc5yzpa44NGPYMpnqKp0TeKskSt2my+p5ROzgmoJ0JrcKdnic5ggJPDReZ2foCL++GVQflCk9THeidWrlDUJw8BDwEPgVsCAl7xvCV+xvX/iKTbYsg2XEjifAGXo1JCrLkNibVi/hFjlYCr0V93wXGVG3/6+8HMJftmYdW0aMsrnp8OMl/iOkHgoWeC8OIbeVrUMUspYPUcS5PX5PnCfGRPhFxpe7JkumusLUSnFSXIGuqsnppjjQCM0CpLqOZ7jtf9k4g7pkH3WuOXXHtcS1bkuwpWXM/XmoQiX5OdR/cSJPEU/3e5/GKFURTPyckovqOK4m/lTb2F1QV/Mh/V/7FzZvaDHz5zceV7PvrtNcEK38j6QSCpm211WH6nFcXfaMfBU6zLuYcRz0mwPEvQLiE3aKEyhZO5niJA8F700jAvE5rkmEIXMXQYMjgjOrSottCIBoUcDyRPNMpAkkK1K58gXnZP9K3It5XRMM8q66oom8Wyqk83Tf4zDJ8vsKjYMaqcWIpyH712/VDBt+wh4CFwAyDgFc8bAPSb8ZF13imjiXKRkeFF5rzkIwkZI8ka6VUfJq66VnL9rB/bNBhXmjbMukP0XI+XnxVuvty6Q+DoBSY4NmUWx1EHHMX2ce2Sox4pnJJnUR8lpI4UPbNwUsCWXjEt8eqTdeZc/MaDPVfv6e005qPBodUkutT1h8h1fB8BWX9GyyqgmtzjX1I4pk28a3lHBTkKghYv2EKc/golt6dBlHaSeCVqB8cvvrN97k8eLS+30vblv77v9PDQIfdZq+/gTzwEbgAEegcPJhOXL7eCYHmiWJrfFPerh8NW+B0snU8SPOjetKk34wfLGI/mcI4GZ2TlhCZScF+KJ3tTMHE1MFohFjSDQIp1q5V0UR7JVVKdq3Qn5VMDStSXQiqNliRaU8RqvBik3+YYPefLqjlWVPWRYTH80aXFwd838fDC/3iSIF4+eQh4CHgI3GIQ8AL+LfaDrtfnFFuWGert9pthsMIztLYYsidzv1zs96vM1jg0zFX8es3LrJV3nWg7KjO6Abtm6YamA3eeKMMoDYLhmtr+1EPgBkLgAqpWnbZxvZsE41dDX40tG2tx+/O/pbNUShjVfLEkS4OULc+LoGSzJVUgNj3LImJCVZorJh1RrriWEGJFayN10eV99KVG12tp0hUc0SHCtUXi5D3GSc+UUK3lI9S6gh0pKfot4nmLMCib0EyfxEa0E730gzKozvBSL16Oln/89Kk7z+zvnRr2emsatNp+5yFwfSGwLbjQribDHYPF4QPM5XwqrZtHO0G6D//xXVFdT4iV1Y1oDS2QBUw0bmpL26IsJlIYRQcjq6ajONbgNLMlNVFEZe1UJemsjnq0H9GRnTr6tAK0LUtoXvE8FueEUV7kae+gm/4l86l/ElXN6VZnSOAuH732+mKJf5qHgIfA9YKAVzyvF6Rv8ufMLMxU89NBn7HaFZhtzmpk8jlCakYUXyvNitFyLYuLsd7VezpZvXCKqRUYAQbDCpddlM9JBAOPlzc5vtxKr79lGIRFO+6C0dMoiCPF8you61uFyh/O+TwQgIwQXHGc5YjdBZc8Fm6xPGsbQTWWYogQbMunoOVJGNYmhVWWStlkPvT8tbRlr6KMcea4JNdjd3iyUCApge2G9lTSlZLVxrUvYVw3FHSIN0gYKRKd3sPY093kXo7r+iyVpyareFhXg2Mz/2Hnpf/l29n8+eTkIvM/6S988hBYfwjIwhmgbAaXL3aD5Xp6cHFuezft3I2b+qNlEn+HOEFfYUneGfCXwSQC5BlqCudRImXphK2ZGy20YYM5IgYUT43CEGIIwhhRhimjI/rAmin6McKBXnRylcpG5Y2uoqbkoXnVLOdlfRlX+TfjMHmpioOf7E4Xfx4cCarvSRP2yUPAQ8BD4BaFgBfwb9Ef9pp/1rZtdXz59WHd5IO8CYaMARdwaKbASPh1aXz88LNhuhodXmXDH76rOrqL1hlzPgGDnyojgrj45CGwQSBQbrszChYXJ/Cq24xveWsseOr1hL9S1Eay6Bd+Y7n4SZHMiyroY+mU4BslWtUEaVeKH/fMDZAHyuK4mrgeq5xOvB3f0Zu597tKe7S1lg5FmvoCBGx9g4Rr++OZVtu+SxQ+ErZNEFcTfK+UT9Uh5Fhk79NMZXWd8GYx9tA7oOG3iJZydBiUr7X7m18Lgjm/FIR+EJ/WHQL9xZMTaRrvToLsK3E0eKQpqvvjKN/dDoOdYZbsJDDeNGtz4mFbBaXGT9HzErmTp7AdXGiNH43ohLmWzsWWa9FnpMWrOTpywfPAUYrds/u6Ft2sydcHyyoq8kLNLYsmWMir6u1+VR1lFOunzCt9MYizD46+FpTfH5PsukPJP8BDwEPAQ+DGQMArnjcG7jffU599tn5v//5iR3BqyNSUIey1QFZmuTO5443Z7Bf4rLG0bNFCmw4hhiYILe8Vzy8ASl9lfSBQLRcR66dMVVGzlTX5OiMH1488DIr4MkmTxdDoKplDqqqJiESChROtj2gnKHomx0ra5V+L1otsJOhqG8m4v+Lpa99pfG41r5aV0jn6k8BspSBspG0TrkcPXH2EKyEFViURsHWo0T5xvSVoSwurzwR9Atal4E6U0+1FkU+18yb+n/ZvPtFudy6e+Z3Tg15vVPnqW/gzD4EvDYHewT1YOfvTUVLelVbVg0FUfS1MmqfSsLkvCqotRK3txhAy9CR8RRFk1U5cZUVMIjW57uiG7tl9lEUC/lBOA0vO5da5y8LzGGxRvirYoJDq6Jo6wm4oyI236mjJwg8NUHMvFHV4Eib60kpZ/BJv2+f/6YnFNyhmqTc6+oOHgIeAh8CtCgGveN6qv+w1/q4e/LN35EgZP7S5YHA4R9UsYa5MS+NPFk1j5ZJCje/a8bPu1AYCLcGFwjYsvgvX9nj5WYHny607BForRVylwQw2+R3IkF2H69fusZomjRCLjNsUxMqskiipUC5beAC2sCdqFQd0OBRBNtGKZUBvJiQb6VGfexbIxHS6j76bo0vlyhazNpkzguroH8FZUXJjrDp6ViVdmDzJ03JDdDM9uZDFU4Yf/lRHz1YhtZwSRUUDUpS9I6rKLi9+B24Sj5R18/Plpvqr4Nk9p3q9E/lI+Vz7Kv7cQ+DLQaBfzLLg5mNZWT2WhfXjcVzfl7bD7WnTzGRRSVbDNMrC9MMkRg0FUfUnHA4rsBc01oCLuJEGdDTAVGsQRoitQEKMphTgOhTANdiP67kiuxv3Yt51jXVURaV0igjUviLXskHeLEXWBGe5+xwl/x6qfptlid4laMIFNeeTh4CHgIfA7QIBL+DfLr/0l//Opgdb/mO4K2PGWDvDApaLgZI9zFfCs7juyGYyYtZiw5+cXAkxb+PXHVxuuxh9PF5+Mtj83esIgeVOFbfqcAYc346thLmen5wkmP56zNcdE12tEdqUuCud8YOqrE+xdEmZRil6WtPF8t+BzojGGWQYXiYwhHaZY8bKDlGK3IzMq6U0uSvysWYd9UkQdml8HF3qMLJwrskZnY7f2DVmDggI2qbwmvUTBZNXtceZmZNyutDcN3uecwfW7FQEdoxKzWa+YTNy9w6U0PvDOGo3RXhxam4pKv/17JlecHG5N644egN/8BD4PBAA88JDzwTRe2/uaDetzhShBx7E7/tp3GWeTIP64TSst6VRTYxozZxWktKI6yxYrFnLIhxTPJVjQ6g6Qo4aWNF8TRBcvgVmH+VahKpI08J4WTk1SCMacOMz5I4GX4yCuCFSI5UEJlqGTM5iJH2jCqufDcrmx3krOtt7Z+iXSgGWPnkIeAjcXhDwAv7t9Xt/6a9lBU/Ya11WUVDW+C3BgY0RS+8UQxcntqMxdycIo526544OxpjtXJV0RSJIEayeaThNlzkvHi+/9C/lG7hWEGiKOqricAo0nkVRJPLy1ZbXnF51rbPbDtmNAiSBGpWM6wnvOYeSoBUmioV9JNxnaff/hhzQ7rT6X9TCUNJiib+tTEXbSsTNvVUTfgX62IT4uymLkoksjrrYUmSetNdwNho1bKab1dcUxYo+TaC2Vxi925qXd6fO+lMwz1SCdQxtU0nSs9USGV9175WlkwzlUU7uv06UJ4u1DjUgJX95LDstbKibmNf2yBChnZ5jR9KO/79gz56TvRMn8p6DhLXvdx4CnwcCPzh4MN41WMzCiUt3Ea7na8wxfjIOqm9kQXMvtLGJtTnhUAx7sMnyKPyMFZUA3KxYs9aIApVUfw7Thd86h34catvr6J7RgCMSy5PSKV4HPkNutbUhd90xDWBcNS+GomoWsJKeKprmZ7jY/oLrVzt1dnoyuNK3hvzOQ8BDwEPgNoOAF/Bvsx/8y35uicUzrKNl7C0rcOgS/hwg+hoPN/EXZgxHNqZs90zC1lNH6qhlujJmLaWsrmD3mkfXwYQzIYsOxawlq6jqPnkI3CgIlJpUWU8gum4CK9smdBrW8kLCZ0sacBEdOBXTCaCWQ77Lk6JpczJHNcB3VLEAWTRYoeSR6UcW//3RQ7i0I8r+7oEgfTC7M6nPLm0vwnw7i4ieQqzFLa+ZhV62YGWZxtFvGgdYWUahmbDDMztQE+M2jUKl2BKc7gUlSI9elPeTPilB+qowTQbUZp4LKJOa9yaLj609yLtK4TSS5qivFL2qrqyhEtMVbVfEagquytKGyjl3QwaRGlznw+Bu3BanaQupv7gw0ZnPmv3bLv5RHC3e88C5wfcO+UieQM6nT4ZA2APNJh7d0UmKajq8/NZ0M99MtcLgwTpsnkbRfAzn1q+mUbA5E56jQMpB3IJxCd+F41IYIQezW5JniqYQepyM64xoGcSlAgjrCmgvurZ2OIou3HJHPEs0MBqoYUCmxmWBoLX1fFkH73J+hIsfzw8GL1RZcK53YuXK+HH+6CHgIeAhcLtBwCuet9sv/iW/Nw1awzANLyBNnkfynGUymvi4glua8umsm2LRbOLMduYEUTFw96dbnLGZgG7HKMLNsNWO4g5ib/aPDnw16R0+XPXg89aI33kI3CAIMAoSlkXVJljJZJi2QdNUi7/bPEjcSWXZ0KQuE0hBZRDWCbkmrwp7JfSO3FUlxmpJBillilyb4x84rMpllNDhM4c0Z9ql3YeDauHgqWZbd9ulfFiuID/Ps9Lt64i+LZ7XZs5ZhyY7aK135VVwN0uZ3EvdexF/Z2h3Kk3iFutuZkTuZGqbi9wpZVHaqCyZ2ID4BihXZColU0d2MmKGaLX2DTxAIrhkdZGyzo2kKWRKqwpzU3NOlZxbrs4k0EPfZGuuaM1zeKdWN8024Ub/tf6wJBBR9TJukS+UTfzW0aPbThFzZUk1ffIQ+HUQ6PVAwSP7k+T1y3fXUfNUUuV78QbY1YqDOzBt3gXKbWOAqEuwABiSo0PRnpRLw3MaFsraHRGa8NNUUHCVaxGf6Y4qrCEhjsoXdosi1K7oV9NKICqjAedmKxVXSxGpJLTVNHm/yC8UZfE2138DHT4Pzb4vpZO47VoH2ycPAQ8BD4HbFgJe8bxtf/ov9uFxKxlgaTkX1+V5OO/9YrRi2BK43ZET8pSunsH8JYxaHkx79R5nEmhts4lrrTpuulUUdnZPnWydPhAMg8Om16o5nzwEbggEcvzmMGhoGRUCCxFvlkAjWvsPN1d7H+GzxFSndDo6EFJLiJXCaUiuklw77B9lUR1lbYg1ZJFlWliiSNTgUk9NPqtmTSGTUvahICR/dmBvmhPLZ2Hh1H1FEOzNmuZBFrW/mCXBFl5kUxqHm7A5bkLgnUBHnuC59PWafqmHjJ5kQjl3JF1bPo/j1KJ08v727iNheyyAS+HUJ4lmnYuiE8RdfVG5/lwbUnJlBVUFPT+JmoS5dPeUUbiN9maxHLWB5GQnqNp/+ujk6WJlaf6fHIPmffIQcBAIpWxO/+WdrTrvTsT/dmEyGl6cDMPqa6h5WqzzoSRs7kjqANdzBmMCxQZARTScc3g4asbhuFBxDFkQcPVcOAve20DJ+L6OtIMfu+UYjxrl2QHFVsSiQRfqUlLeC2GOUroAPV4YVPW7K3n1CpTwo7zacjjYdzr3a9kKZj55CHgI3O4QoKP2yUPgs0MgLLI+QUbOENbkDBFO+hJUzUWPJkzx5CgxFkFzdHaVvTu2P77WfSVxbdg2KY3jNIzjTj9oplfmi+nd0W5ckk7Dx33yELhxENiEupmHLRROXFkjQs5ixZM7qmZiSrs0iyGvJz1UAqySrH+KGCTxVyJujM5HtFpXCE2wom5VVhhO6xXQ/zLzNweu5mfbn8EbIDh4sAkG/dOt5WgJXfAEQvLPsUC20Ytbwzq4lzVB78fi+VWE4YeSJJkmimaXp4ZlOSYpWTqlPqL+8b5lmQdxHAdpij8DH1PzjqJj0bcE7ATrpr6bead8N7WIcMS7U89ponI1FHVr7qcpnOi6tkyF4MJfVTD3k/nbnTTtAoL7sYRO4Kq4bxg0bxZl/EIcd3+C1/EZQKhmfLrNIfDDZ56Jzj6/hJv227uLuPwqwanub8rBniSq78ecfz9K5yyOBizf0yhiLcZ+0MasmFcRSNR3lSONzwVYyhqtjlDNzsf1wFYhNniso813Bv9VhABfhvMawxHdQ1fwvbDBc4Gp0fV5xqiep8iLzC59B2p4F3p6P7//dO4GkfRcnzwEPAQ8BG5vCHjF8/b+/b/A11fDporOR0lyIYqboTF7WUfGTJxzNzqsjPG29jEjRm9Zo/scpHiSmJ8WtpF6ZxCFNw3yZQVg8K5Ja8Hnz68nBMJniJpZHs+ypCYkDi6uoGqstf3kQiqLoOJgac6nZpNJbBVGK8n9dmzt5MyUThNSCdzj5p2h2JlyGq6wTMMlwnR9Ljzv8YiAtXV5lCJjrkbHJD966JkgfPeV2b3kP0CglTmE8yJrorux296BQkjQIugMVTgh1KwUS6meehd2TphG0WTOnAndtEFCmjfLDqqtWYr4TgniKNIotqZgu3akeLp6onKjdCmtLM8iZV0ut1zFCQ+OiXZLeOwdPISJrMFdlO42YTr/x/s6YS/vX+qdCD6XIm6v6Xe3BAR+7+k7OzPLxdSJ4z+fanc6kwTw2RfVzZPYFh+C1PYluNRiOp9kJAjDvriM3N1xHdfXazo2edIbHS1qb8MnNoBiuGxQWsVQbltNh7A6H11aMS7UljKNunUBsxvxOEgJigqjPth9oWjqNxhAem6pLH+aNvV7v/9+cZEp3AwJuZb83kPAQ8BDwEMg8OsleiT4fBBo1d180Cqu4O40T02CVYoP215nJgRIEJDFwxg/Ox1Vwq4/dO7KaK6bFFdZgYZ1kRZRsGkijGfDLJqjuE8eAjcEAj1QduWV2W4/i2emU7OstLECxlKihMuoT2bRk6VP9hCJpu4G4q2sfwjBZjkRPUhho5Jt+hquUf0Ul2uJVs4hMC8r+8umHo9oCFD0gz3lOXxYB6jGuMRHLy1X1dNEm/0HWRTtyJLW5iwIickSZPZWWHawHmG9wbojHbMumM8WoiyjaPINWHGCknUOC7MAUQOFU99jyiqfLCuphH3VFQhMh0UpL80izBdigtVNKdx2n3zBy5SGKJxAQb+b2L71EJfgoM5+sjlq/1UQzJ38srDw9W9OCEzk+e4iDJ8E5faGeXlnVjd3NNXwjqipZ+M0mmHQgjnOmOlBIBYWMqVTkZjNOsknS820BN4q2rJw1fJ0LUQFR/mnvBV2R7uwXMqKXqlH+6Jsw1lwXwU12GLr6EIb9AI1XgV5UZdnyqb+MZFrnyfa3ktpXb+3lG/FPX7RvYffewh4CHgIeAisQsBbPFdB4U8+CwQWJpfLsIgWYb7zsOFcY82wZOPmYtjGnMmRDGpJvFzMnns6HYsFo/FjuzeSBRBYK2bO1SmjxrNBGu1CaP7Aqvidh8ANgABzjONNS8FUFVWzSKGT4LRWCAHFJYAKdW03ejPyRAmWOJf4yn3ow8oL+UUpZheFHGQljZj0GNfhIkre2Siur1VwHcRr0okripx5pbd//xmOr+X5+6xmUrZnWq27sNJuT5polkA/W4kE2uGtMpRfXidG/UQDlMKIXC9rLrTIqyvokJagIFs2UrkZ6ktk8dXdMRh4sMagpHRLTieqJxUQ3bWSIkd1Cs6yyhUFZW8FDG1MRszPC9pVFW5DmUiZCXrqXz68fRgNpq/8k2PH/JxPgHMrJ1xq46MXLqSt8ninWqy7INrD8ITvpHXzSNiU94Z1tTmuKyKe1zGL2DrFT4jGeAZBhgzXcHcViYFl4JkUTFGBHVEgdeQ+/5bHblxS7IoacCNlKZ8TldVgqKNveQPojiyqGizRIEsMeoc4ygfLRVleHBTl68Ow+SmLdf40zePTv39ykQFTr3QKoj55CHgIeAh8FAJe8fwoRPz1J0KgtTJVXo5WlmejcBnXIoTCBvnV5tdIrDSFE1ngquJJa+LpYtrG22H+TkB3iqhEcc2Ek6AqYTSqgxby7F1xXt8XxNVbn/gy/qaHwDpCYILlTGYm8tmkbu5G+pw2LAZHZQmR4sjSPyMXUgmlhsUcQWSEV81tVDnDed7RrH9IsLIkUtuUN1lOUPWuEE7nJErdwrp8ypEj5ekDB5ptK/lrCNTzLPuwqQ6TmeWyfBTN8AAz1O4iRu+uLG7aRE9KJHebSyzKJdE4jaKNdiW48828vH2jhHO9v5RP1hi1r5dcL6UzSVMUVnoD1jiUolmVmtspQd4J9IKVQYYymj+XoZjSZ7TQe7fgmPjwsK7/yyKotlXty39Hk++vC1x8oxsGAu8OT3dbwfLWepjcH0WD/a0g+FoWBY/FVbELwpnC7t5KQTdcbFEIHY6J/pghHQwGA6MxubGLrizgl8Y7LAkj3SY9VcmUTGro2miVk9EtuzsqbW1JcdX8ZfEmzenUoItmPRNBqCiKcg6afg8vgMNYOn/Z1NFLaTc4PRHMfy6Xeb2TTx4CHgIeArcTBLzieTv92tfgWy8fO1YFu3evlFPVMnx+wBIPTNXCn0nM3Bi6rJ2IAMbNx8ol7FwcneSE2PEZ15QTY19l/6G5AO4k926CSUxaJb/zELgBENh5eZAEnWgH0WLvY1BkBiRHeRq9CEehuOZxmhVPCqmuUbQUVMgiuholOOXT5asB8xA0epD4izJ2pYmKkwTmkuv6NU89jQYdPixR/D1tf7L3jtZKq24PB/n5pqzyTtxcbkfBIgVYiiJURNyWfGkjJp7KpKQ5nSbHo2RKcTQ6FdHq4/XBoyQrsP7kASkXZC03oU5AioC+XSkyl1wq8S8FfJwEU5T4lEdi5AruRaFlPi3TQKrmwh/f0y3LmakFrfU5Wm5GT/bpJoYA86bj/cH+OHj7g26xeGWqeP/NHa3O5B2oeV8DWb6eheFXGAS5C1tjp65ymw/E8kAcGfwAz4Q7GvTRAAmOriCTvAcy9MIYj5nxXE8N8Iz/BCxXV4irNgyJTBvVGZvQ0Q6ujjKE5gqUJRSmcbY4Z6mUZYJrXeoX5fvDonidyNLPFWH9Ujvonvv9V+fWhYb19j55CHgIeAjcKhDwiuet8ktep+/4PlMxf7BvX56feq3PGoJ91jYbsGC3TVezgPK8h1k8R4KlRE4JlvDw1aTzEZ+3PNmK7L4TQAla2MzEdbCV9hj89slD4MZAIE3ylFg8dzH18aE0irZm0sWY/8hk5AAXO1Oq5JIXE6pHljspZlWFs3hdmkVUeQ7TdbyapKQVUsYI6Ypid6XKWifLaHhdhNadjx8rjx7dT+DoK6wJGs43cfhCFce78qZ8Ii+rb2RxtqudRZsUsrZW8CDe1c3ldAK7pHHU0ZHCzVxNWTgV3Rb1VNFumZdniqYUVll90b0NTgaJ0dxOg4vKmbVUFlM2CfpmVYo67SzdUWONZZ2ZpIij+6PB8CdnT255988PXO6zvBI/gE83MwS+Pv9ou14ezvSHxUNNkzwV9Ff2EARrRxrFO0GZnVg2Z/BpT+UBw0RjUAic08AO+AUyGq+oSg1uNowLgXvCNUWbZaKw3RR3+SjtUdZugnPCYbtNYeM8o2FTc601zuTcyiFOLPVY43kq+Al51GfzunqJ5Y9eA2Pfpu6JNG5OF2Xn0mBiToHwfPIQ8BDwEPAQ+BQIeMXzUwDkb38YApIXiaZZ/os9W1h3sOonYTSAMXdsrhe3JAxYQAfTJJE7qeDsHVTkXEmH0W27liBALRPcaUvi6hQ+f5uRRDs/ZHTcWzocmPz++kGgJ9Sts1ZU1rtRlPZi79tkQbBAYom+5l6KEBxFqSlYZuWXNGvGfwnLspw4XNdet5Snc+E6lpMaWbkkYyG7585z2WkpVIe5XN/0vUPoeMERTeI8pe2ffeuBqZU83RQvnp3no1K06H1pkt3NnLkp7neQ9jWpDfJmxqosuby9aFpWTMFAFly53Fq4JUacROtSVBVwSXNBiQRMDcvkhlG5ud0KFFaW+/jqG0xVDOU9Q/HI6ihs0fosjc+g26+Ey02zEO0429tzbuHIiaA4hNqu8j5tfAj0eqDNswejTnGmU16+NBlfujybJtFOBhqeJjDVbxPl6t6kqbZg7m4xuCMHbnBN9AK+4OEq/VO4B9K5+cfgC5M7bdAjw4ouxZMxHMMnIzSBxDRLR2+O26gO7aku7Y6w0jWusipqO0N12oPKnesC05w1raS5VDTVm7ioPzefr/wiDtpv994dnFetwC8968Dg9x4CHgIeAp8BAl7x/AxA8kU+DoEyDJEEkiEeSENkcYRAiZ5u7pZEbuPj7DVq7Bi9BG6XxkfH67niROcIHBzDmNHuNiPMk6igk0dP7p34wf7WIDhyBK8mnzwE1h8Cwsh/tXdvWkbzEyx6uRUhdgezmLsKYCKLi5IiuWqT+6iSrcspYdWwHCFYShkNqbRIwIIJSUiWOO3CQBPENVhE0ep/sDiVB7/zLC6x1tR13fWvJMNgWzPXLIUv4F97jjC4+8th+QgvsY+338v6RjMsW9GFJm2Kp5Rnpn7yHaJxUSxKOFZeaaNSQDXbUwqpArpgrKIW5UTc2ijrLKgcx20Ak1aWGpxkMTUVtCKqbh1knSTehLr7ENbhqMqre+Kw/3wrm3nr64+2zx165dw1iQKst/JpnSHw7MFsujXsrlwZPIgX9+Nlkd/LiMbumSy9h85+D26zM2lYpyiF4iSr6OLma9qQBpmGQIZ7QkQW5TGck0e4UeRYoYSohGtjxVJ45lxrRdW6OdrUnK6tWeWNkgZRqKTBEIJjMYWzusIA0XtV2Px9GdYvQtVHqjJ7b3O15KMHjWHmjx4CHgIeAp8DAl7x/BzA8kWvQqBsohwBYK6K6jlETwRE7sGsnT1HR13D1yV42t9YFHCsX3KE5RjP58L+EWoZXkawbbWiYKIIwi1Jvrw5La9onUKveAqmPq07BP78QJD0l65sTUqCXDXNTlTFLRhbMMoIkxGEhdNCYDYLsMPR5nrKlVSWPrtGhYIehN4m/I4VMy5koeEwRG9b4Lzfw4OABeZvSOq5AR3R1tva/ut7Zz+IouJ8FjaXcW/MW0l8T5sI07xrByUUHYE3duSKRUjUzh9BXmTplXItw5SsRU6idzBiT6KcO+EMBV1wIFfz8uIkNbjWWuPULFvks9YoFuZJQLiHbZZlXbakqoBiEFd5+Sd7g/K5Y0HpLZ+C7cZKRFLOgslhO8uXWvxWrc788em4nW5Clfs6CtxvEcxqL3Fhd9HHd9thwkwNhnT4kfXbY5QEVRzdOD1xNMQh3GET7VigKuEaNKWSwjZQUdUoM6or7FIdtbVW4TSso81Rezqqmnumw2ShMOuEDVka5XJelSc5f6Voir9dbuqX8nh4/p+/50PWCmQ+eQh4CHgIfBEIeMXzi0DN12FF+mghqqLX06jZjgCwFe6+yUkGMHUTHtYAyQSCNdecSjwwuYCjLciCIBqyfAOOVpI4mbgTTZZhc3erqu8fthu5JPoR5g+D0F+tEwTm5jZ3m6T8DSTcg1mW7UMyxnhX4e1XoyShbCL05gQ1kZUzJIJrSkRNMglwogM2QSx9bl6kFCkTay0QCs61WFGIcAvya340kq3mdQ7W6TO+ULPdpjw3CNLDyPRnGAV6GavPN5YG+W8GWXxHp51MQ6aJoolKRK8hS2mhsvwqNVK8+dyWAKAEvPT9tu6p4IPrbShHeihf1iwFh1HkW9ddABQUD83rk0WV4laf9uM0jieILbMna8LfAnab8qpKF6L2ka8/OuMtn4LzBkvT08U2JkTez095b1RHe5qmvy1aHmyeisI7wKm7URk3ETyqE5daExc84vc2N3ZwySmJZIA3mgucgAxgDTjBPfCD398UTWYTQ0tNkMvLAFxRQCtDGiM37aSOuiReYxyHZoVfpq5ybnl2S7inGqLwsGBQdW6AwplX9esQ8y9A7COs0/lBUQ8vEn7XL+/jwOr3HgIeAh4CXwgCXvH8QmDzlfKiu1ynw+PtOLwLbv6YRqLF342fAx7USC7dlfZSRnVEcNVeO7fnhlM8JWjIrcrMKtJCJ7i8h+iY+9pNepbiH1glv/MQWF8IhFUr7qZluR8h9bsIxLtbLHApRVLKkvBaqC5JVYpnI5c/0FmWTmmcEpbN4mkCrkq7siA5/1LWsJki57Lq/CKRMc/QzrVav/OaQKU3Xv/z4J5TWTnVWT79/rAq881Z1OKVofWomWTtzwwlAG/YmhVQULRH8DDFnLeIUTDlUlvJgiW4ASelUEteSKN0FchHORBcpI0LXrYBS4OdaigPp0pprE24M6rDTVjH2sBwfipuDYqi6veCQJs6FNepcOLT9YWA1uE8u/RisnK+breTpXZYL+9jkOBJfpFHwIOH46DezvqbM1isWxwZutF8YX53fvtKmiT40EgSMRoytXD0AXAD1E6jKRoTdxD/EDZJmSzIGWpMkkwproY3nIM+5DmUcEqnmhuhB+inM0eXKoZrOIiKO20BFi6j0F7Om/rkSlUdZT7nLxlY/dF/d2z4jlrwyUPAQ8BDwEPgy0PAK55fHoa3ZQv9blGkYftKkwyvMEoN09YIs4QGsXQdHYN37N7Y/CjHbttNCRESzZ2BxC5cGQQSpPwO0W3vZ2T8Itam17jhk4fAekMgJJhVdOZolZZxNIMNZSuY3BE2mwEOFK2lbILqUjRbaWY6lFk+R5iPhdCULgm8st5ICTVFFLOO/hIsMwytIC6XH1Rl9SIupRpU2XDpoW1PFSgTzTCsXymjaIXJbo8vDIunWlF9XxY1d6BCTiZJmgGbyIIJQbJyl5TrsWClgSi505piiqoha5TBwRQOKaRj2pfSIBgBW+0EN920jsNd60It0AzemeFuzM7fToMEp994rntg9/wP7zs9dEGTNhwYb4sXOj53eDKO0i2dLL8vLKN9UVPtZ2RiP7b9XRgQt6Rh1G1FIWiDFkmoHlkvRT8aoEjwJTBaAVLq9oUIwhPDA/CHIFxGTyI6ueKafVwKKiZw4RpBiozzCEGgPPKEV0qqp4PjSBoIMfzTXf4NvTiYB0LQ9BkDuUg86mOELnieVoj43JxJq/r0UjBx0QcPMoD6nYeAh4CHwDWBgFc8rwkYb79GhsFMnrSGc2EdzSEwDrBCIDdIYsBuYYKDxHXSiMmL6Vu2gQqhgPwx91cEzFVxQVI9lcImlpCppSyuIGzs6u3fNrmrfWH4j/xyCgZBv7v2EOiBeEeP725NJ/VUGpSbUDw3YUVpaZkgIathNOe6lNAst1Gbl4aiJGVLuC63UlPELIMsw3snTKsF6iF5pyXWnw/KfvhykFXnVHWjpe8dOiTDUtULguPtgwdPrJz8xcWlMh9OJ9H8ZBav8CG78IKcBRhtFEVb7UKfLBoXNSvp250i4Objid5NyZCGIZCSdN9ZiVVPEJZlWBs3rS0pE7J1YdPiFLV2G3dYejRk6l1wrFoOF+Ze3n35f9+TLU2cOFF8zxnE1LRP1xgCwDv83jPPRF9/80ftMI079aBImuFS0l5c2BElnTtA/K/x+z2FRfwrzI2+lwFDAtbWrIvC2igaeOBHFb3IjilLpot8TCnyZR13lkpwgPL6+XVUadGT6llgqtFgjs2lpk3UT0q6+07THH+0Whgl00Bdmw7H9CbY25nHCRIxqBJcyOvmJHzml1VT/mXVar02DJeXe28proAPLTAGoz96CHgIeAhcCwi4yTnXoiXfxm0FgcfvvrvpBv1iIhxuhY0/juvU7rhmRUDZNggYoqD4cmMyNdJJlyaISjJFnriauJCAqkwJFpI2rD5CBcosy3kSVzQILhZVuLxYdwfPXljZUK6JVz/En93sEHhkb5BlKFRpHe7rZsk3WdrhISYbo1TVGPPQw8BnufTFKJzjOYrCXeXpaIMpI1w2jcpwWtWkPCEio6zKpY91AJeRev+uX9d/TQydi89eylc2Kuye5cUOnjgRxFtaBdMxL3Vayfss8fkO2sJiWVRdlME0Dhkk4uOcSyQV9N0cbAMoUiRl/TTalsqhNTJIsh47mKoKajnltI2TqyK4olwIrmpY4XJR+SmehVW9mYm3s1jFkqV0WAWz3cFfXFrxmsIYgNf4GD6zP7tneKYTDZsHmN/7raYZfpM1aw8Sdeu7WVBhhS4fS5r6PlxrZyEaltgC7Vd/On5H/XT2G+qovl4bHMKOnCub5AYewBl+cyb8iwLN0klgIvgJG+XMok5ZStleSqtUUCjRNTNqTvNDx392FxoEnwYYXi8TufZtLPnPMVf0b3iNHzFo9AJRd98drCwtHnk7KI+qeZ88BDwEPAQ8BK4pBLzF85qC8/Zp7M8PH9ZC7vN/9Mj2y0XULCIwDnA8TGQMUrRBJScSsDcJkgwJEhIa3A0TGiQU6FI1nOKJqok0S36MvNHFvW4biueDREI8ixX0CsU2pGsi7+XTTQ6Bra1taVSVu5m9uE/WPOYWprh7SxIGNyUgy/7iFKcGZ1nNUZRk7XB4JAILx1FE7Uqor7pscieVtXNY1MWwKFmVMjg/MbvpxER+SoGzNnJqenxG8M6S1iw83zuw+81BlE1PXrl4KSqqTtSK6zjDjTIMJvlcPOMBBx/HcbSJvlEJnBZpVi7TRsg1t0mOUidMcRjVkwIxKm53ddP6Bo64JqPT4P7cMN+0CTcrOip9RKfNcAC/UE6029xHuwWA1yBp7uZzzN3sMndzerjUTo8vTLbjZJIIr08kdfMP6KXv5XfazY++CYVzWq606sdd78+JfkiHDuYya5SiQRoxACEIO831VBINqTi/oSVnGWXQgjEKcQNRXo3GqU08xHJH7QjDHBdxzxYuKWmMQn/uHZQZYjwNyyoMr6BwvlM00UuDOvrRYlW+GtT56d6xYAH3YFX1yUPAQ8BDwENgnSDgFc91Auzt0ixr75XMk1lCGlhGKGljG8q0BpqECLkiSsjQ+nx4SwVxqqi1CA/kSZA3SyflzDJKnpsrhtCO5KBAIzYPCCETifI+5gxdQGQ4crvA1X/nDYBAMWgnYbwvjuqn8iDfKfwjwjLz0OKgLEpzCTQcDStn+cyw7YDHstzJL9Xw1gZdnOgtAdmiuCKOE5xV4nGD2bC/MhzMo7KurLROFQs/W5W1b8AHf4FHTu3Lg8W3FqooPIKCnWNnPF8MyjCLw7tbaTiD1ZMgwKJpFEtTuOMgJfKveUBg7lUUU0UEliUsa7E6KFChC3GKJVeCnJROMtiNzgGRrmwOKPXUPpsA2qXC3cD5H/Dc6X5QJ4N0OnnygezsoTcv+ijYAuCXSEcvvD21texsCfKFB4sqerhVVltRMmfSur6rrvJ7+aFnknZrUu7oo59l9XfUY23wQL+o0xSF/2Ryg2sNN4yX1LFX1G+uotCPfl/Ri371vMg5Jw86dJ40UiXFH1SBZLzE8ROXAc/h3vhPiqpepAbh4FODwSC/BLa9FibRXzdx9FLSRO+3WvnFIfdcfb/3EPAQ8BDwEFhPCHjFcz2hexu0vVjWQ9yZzrPMxLkmSCZQPLtNXSI84IPH6DaDzBa1UkJE1FBSgsd4020uTRGVZciETXfTFE9OCUTRQgS5Kw3DOepu/bMDB9Izhw9r7tl4cPw2gLL/xOsAARbzyVi2stqD0PpoXVez5uqHwCqhN2QNT2mXwlVcPFFIE1kwA9ZesAETKZ1CSFlZ5HKqJEw2IdhcS0URIcFMalYnKc9DD4u9Z28+84qtOYpZCDo8vlAUp5bmj6F7lzs6WcJ07zhGF59Mwoip2TVgQr1GkYhR3KUIaABKg0xlVRAaSIFlMlMcWCvRaN/gbYADcg6EDohATvB1f6gduicDMhvHncB1C6GGJlCA5lthsjyog2VKeMVTsPz/2XuzIDuy884v13tvrSgUdjTQjUajVzSbZINsstkUCYmzSIqZcIwjmk9+cPjBDDtCE5ZDmhlLcqg4odFoPNZMWPSDxYjxOPziCMIeOYbSyBIpEWJzJ9HsrdANNBr7ViigFtRy783Vv/938lajKYqSSHYDVXVOIW9mnnPyZOZ3vjz4/udbzt8iaWwNgmvparnKPEIn7a2s3Idx+X6mVZ5jXP8k+sIdmKFswbx5GLeKIeyrQz4YukC8zx9jOP9I6i/t+LG9cnRAUhZ1dK6qVt361pUZ6qRME5ayFGBa00zbZd5u68SqjcH/E9aANSZjBJfUuK7XN1ijT6WJsopYISXMiFZ7cyUrzq0Bxim9AABAAElEQVTm2Xf5kr/06rPByWPH7LO1x2ha8DtPAU8BTwFPgXeRAh54vovE3RRNR/Es8sFXY0XJj6MRBOqtRAbk1atQk80SOJFHEQKkGaK0+S9eQsQgmXAuKVJmWBL0TfqgoqSYigUr6miMZnZgZbdrNbi5feSpXbeDV2YkXPrkKfDToED4BZRoV6I0BbyMIbNu7SRRW6o7AaVcXsYkW68SBpaW05ZSgT/FzwKgzKrAu9TXRl1dZ9FZTQh2ZRRV+Kxdi9P0NTw+MV1dvyysyZ89R45kc3X1BtrPYznkWy6jnxuKkgdHWskk4ATz29zoIfqJFtIaQw7TdAqQEtXX6NSgFSsz2hm1OeWEakZjdo6uOqdf1nAGdrtAGFa9CHayfuiHsanojbfCK/TLtTvwf9Oi3/1VFIDU4f/WmtlJt+1Pymp/URT7h+vl/VES31/F5T56kMm/apjZBEBpzbyLtNhYs2g5FAcf+VUvkSC8mdPannNVIak/mxo6M96QCa0q2MQNh4pby5djm6ApE476tAIW/FQTDpDatzVoTBM98ruW3zANkK1vErds+VMTMyi+jQ/wTF5U5/OyPE3ZazDQG3zD174A6HRXWNP+x1PAU8BTwFPgPaCAB57vAZE38i1a3dH5haH6e5NJ3cF35mn+u3+QOCMpQob8vUwYN+DJf/Fmloj8IOdNm5GWwKE6EhgQJt2agIBP6mi2WxIExyhTgxEE9W2s27avWu09kMb1OS5bv1L7RmaIdfhuAp3nHt0+PN4ut8KFW2HPcSLmtBKBozJjK9DQMTGC1sUmT+BN8bK4l2UmbYuRjtEKmcA8WAJC4NMYW/tQSwWGshu83BoaerkMK/lMrts0JYxw4kT1/PPBhd3Lh65sOzvfw452ImrFxVDcegDguYWPeAjNcVKUBcqyMiwqNJ1oipMWoIXPm+BEaMnMSNnGAwMuDAU2KIi2og71nPaKwwYl2F6TAvSJVSNCE+1NEkn1fYweq8SBeuX/enTs2r8/sG35vzx/vt9cptY2exLZg88fOZK0xm7FFy7fbvWXs/au7cPR/56246RfPUovHYZvDwMyDydBuY9AW3sJWJ7g9yyAb/2m5VC0LJAmE0qsW5RsDIfQrq/UafzTzZSaPVlNnh0Nsq0f3bdzJ+x0DqP4WfMfCfWZpNBValj/NUi7qgwWkjXgyWqv+u+CpXIxhhfgZIlP9gvg4pm8Ds8sZ/nL/ax6pZvEL//2lZ5Fkp6y9vyPp4CngKeAp8B7SQFNE/rkKfBjU+DoBxaCIuuUw1W0BR+agwgt25gRbyEvsMafBG8J3fzTzLWECPPVcSKEZqZNcqRMMqT855xWVJokbQgWJuSkaJWSkpXsi5VeNyz69Y0/W+z5IEM/dq/5C++kwDNP7SKIVfUE/pgfGUqTj6D2fIhItnFV5ewQrAFHsK7xovEyP+JlRakVcwuAGgji2CZXAJpOC5NYHcBpnZf1cj8rZgGlX8Hf7E9a7fb1P76+fM9Gs72TPj/qeJrQn//+g3P13itDrExRzyRJcpFv/SLmtMtZUY7wCbcBBxgzQC3AgYCCfed860Ieg3FBGlCIpgx3O40J9geUHPyp2ErdgdGdc+U1oAj33Dph7BjLw3i0CPtL33vwiYUPXbsWHF+DP9bApvx5nmBBJw+HSXlrbkc3w0+zt/o04PJoJ4mf67TiT8RV8TNJ1XuGtVof6cThXhbenECV3I7qghVtCtwi0VbzI4sW88tlbHe++Izr+h6sn9QX+hvsOQY4Dv4GvTXYK2Kx/hsQtsRw2nw8xQLaMNkOWprYoUIF8FRFAV5ZxcAsCj/HhnVwxFtwB76xXjcrFgjgdQYN7dfRevKtsVXBN7IyOFlF+cWw350/vhQoMJ5PngKeAp4CngJ3gQJe43kXiL6Rbun81GaKqcO7Z8MyOlcm9QEE9xG0lKPyhzOtJVKEBEsJmZIvzASRMgkU/HNShoCmgCd75w0njYeWoGB2HaGGpVWGNRNPGTJlOY0/0mve13MjcdLdeRf4L/xcHA5jyfcocvRHEGXvg39T+SFK0wlTwofGpdTkGXWB+BnhVwKwAui4SRJXy5Sc4mF832T+p6sxKCUWS7nQLbJLwK43f+VMPn133vanf1dIUgfHgvJYMHeJ1i/99qHdr83m1QNpkM22gqrTwfYBSLIT+8yhlGhE0nyWBXI/NIJCjo4GOPVsAygJjQckN0TCXfgnJZedQlWNDtoEUHQd9ROUzoDO4ABtj9JHW/DNnestX1jccXjH7S88Mdt9fpOYVk4JlR09Gu1ZOt1avbXaSjssc5XXcX7qz1plO21hWnI//vYPlEn8QUxqjwAeJxlbJ+DmsaguRwXt5EDr/jCn5Q8PXcAlE4AKtMUMY1m5oD8Cf4rypO9B/aD5BJesY9zhoA85c/2nsuZ70Z5TmdoqT/2p++pMQFZWMIoere/MvjvlkocGlor4cEbMDwVYw1cVga6qOYDnVU5eYVmUF4JW/OpwFlz4x2fmiFbrk6eAp4CngKfAvUABDzzvhV7YCM9QpAt1EnyfZTfH8enaFUbVzo6ccyRUIA0OzA8lX0hEkRChWXIJK4p0KZFTeQKZmiF3YgciCPVZM44tStGWTg53OvvKMLp/tprbO/Tco3PB10/5ICIbgX/uwjuIOz97+HC6pbg5llThQYTuw0Wv2CamgyvhRzQsRGKWabiZFcpHWegHSVd5MjkUf1NZTG5vMOBtyxbfIxYjFJfEObkEc5/AKvQacvJdeNv35pbZlmgl7ReX6jr+Jq8+R0ymZ4gY+kk0wfsxuB3FHBarZaAotFPkUiMgx6I4XuGOlhBPdGyGD3twtwakim2kcHvqaaJK0W6FXfVD0ylwdoIWH6PP/lELf0Xu/63LJ8dPf+7QzpXgzJm+NbiBf3YcPTy8sjI7utorHipbwSE0f5OYgm/F5nm4HdTDmDpPxGm0tTOS7MzSchfa/k5V9ztMisil0nhWaE7gU4G19D1oqNYUitC/9qiW7fswfSXjdcVEDbUFC9URbNq7TVcIXWpY13juvhSd3NkJ5HJTpmjI5NujX/UnQ1612mp17EjTktis6/+DIK8IkFwUy/DYFbYzgNM3afRNjIIvpFV0GTXpzbn2ko9WeyeZ/bGngKeAp8BdpoAHnne5AzbK7UfaWxcX02o6yOe3FmX1Ua2Y1k4xQARFSvAwAdEWjEctoYiWJrhLQBEoVVRLnDmZPTfzRUkmbJr51j/NeOO4E6dxNI7wvjsL6gNR0D2QLytaiY9euVF46L1+j88eDeLx2cVROGwXQYUAnvXDCNCdUlpOMFGUAi4RvFO0PHmOhzFMKVNax5tObharikcNeIpnOXbaH5cnzJmx3gotXiJQ6ItY8GIivnHdk6dOXJX58Orv/cKhhbmF3pmg213CD3AboCBJ6+C+VhSMtJhxAnxCKXRl+r6hm+gIZS3pu9e5WT5wrIko1VOm1bGJAXfswAwFAkl2jXTN4RjXHGQBnG0MQLtAU91+HC+HozcvU2XDAE/8a+PDJw/DqTda/bLXbsNkk9VImCytbNuSRNt7QfUMDPkMzvb3MUmyF2qPwuOA/4oFbqo04H9/rKBtUqWuCQQlumsSQEQW8hRFTbNIic0CyNxVoFCm5NyMP/WR+k8ezPpoBubnrsPUaeoVdZ2N5upCjlx/D05cb5OnGwM8+d/C6qhh1yymvBYBmeWIyNA/ZnKKvCrnV4vqWq8up9G/fpv/F15O28nJqenbc4FfHUVk98lTwFPAU+Ceo4AHnvdcl6zPBxpP02ylLG8hNMwgpcwBOJcRSYYQfFhVhTlrJA6t7ymNkcmcvKZC5SPKS+JAkHEaUGk9na+nRBQl7SUAySzPhMuRuiifDHrVQhwVyxReUS2fPAX+1hS4PDncbffezxqxHx2O4wOtMOy0sB1MEIBlXqhQJ5gimsmtidDiY1RqEqolSBfUc9p5zsXbnMsUUfwugCpNPqI6MbeiLrjoMuL6dKvKZv/Wz7kOL9g9eqaY6x5YDVbC1+s4/g8VACGr65/jC34A80nAfogRroCG6MY3LjApdViTlCUaryUVcWo5qs4BAYxsdFAdjRtRQkxbyjSuMNHF3FY0GsbhAaILfWo4SDqonv+Uqguqv96TSPBrFx6bKEa7k8Fy/XhUJo/hWN8q0rzdyYPJTh1PDkXx7jKq9gDbRtF4jnJNCo+mYZGjeMZvGWLFAEhFCRZlIw7Ez9BMwy39Iv4XEKQnRHjrI/LVZ2xygzBTWK5nLSIK1JD1kMOd3FDJdrrWnboytblWyrF4QTfR5KMBWO6qj4foQMzaBH3mGPl+CAEQs4JRPZdX1VX2J8n8Hn1/hrV8rgdR/0aw0l33ftMNmfzOU8BTwFNgQ1LAA88N2a3v/Ut95sQJ2Q8u/C/v2z5LhMKbCBGLbLh6ajlP5sWROnDxQtjQbLlJOibQS1i3RcMl1A9mxxFqBD4lmdg8uSQUCTfsCR4yxNljSVCxLFt9cmrv3teDR65m63FNxPe+l/wdGwqEU7BTMhKOxWX9JIz1cZRw97MuYYtIOCaMh6hVMjT0DsSwbiegxgKbwKfiysKpXeBlhHTOB0K1aYHgb/FvjX25LAKRn1epdi3c0X5z4crCxrWzvYO9Po3fZxCcL7Xe57Vk8Vonv9UF1OwC3BDTNtqnTxmrCAYGwl0b6DCyirRGS8ESRgCjrfLWksYRzmWKKeA0gDMaO2xYESjiSiiPpWg4DOi/j5t0wFco9+I3/s2z+87fbl/O18t4odf9LJr5ycuH4v7wUlKmWTKejUWfS7Jka9ndX+Cvibbvk/DZJ6DHMJrNIUDcRFTh4wp9WNOGF9ekHiAOOsO2KBUVTRhjEQOYIiZcKxU/XTHgX5s8EegDxFsAIfUB9aRhVncJeKpfBPjtC6B9mUNbGVUppZBf+skF3uJQ52tJx+plV0d1daz/C7Q8kaxfSvIIYlRrfpJwtXr0Lma0t4sqOt8tipNo0b9BxKov/7PTC37ycY2u/sBTwFPAU+DepoAHnvd2/6y7p+uWVQ9B7yphRK4whT6EfDKsWetBkimWiSpksc482RxIlidJu2TaD44tGJGEfAQbyTha3U0Gi8DUhCiMk8TIeLCbFx/qpiu3gzcnTwfB3GVrxP94Cvw1FPjC80F09uzB0XbQ24Wwewitz6MAma01wYQUOEXARdpOJdPWg2i0VzJtPPwoIdtNpDjBXebjEsAVlTmXBbgJ9Rg2luUSAPYGkzFL47dmsu88QdMbJrSQkeRH/nz54IkKc9BeXiWnk7j6f8Di11b71acIlXqgTQAydJRY0Iu2gBw203QK3CgH4IHvnuEXdm8nDRkCMQI1VlOVBaoyDuhRwAsdBqGFpaqUoi1kPwBoeSYpit5wseNUEMze81Gx4dP4c8uHkvRGPtmf6G+r++H97ay1L6t7WwgWtGVLq9yBB/LOfivGf7bGjDlKAZqEeC3bMg2HsAH+CUYjgTjNgohc4l0tYyONogCkQJ4LhOXORXd9BRCRyRat1ymqkkRvDca0Azy0dopSfadSRn1V4dAgpF3grrH1sThUiUsNyLRz9ZLLV9/LG0OGtgQNoj9DFuBhq+uVoqoX+Jje5I2+jzb7DH69l+GOi0Sa84GDGqr6naeAp4CnwHqggAee66GX1tEz9oqyy5KFl5FXLsgfE2FiG8FVTAyRgKkZckknBj4REDXLLXnIlqHArEuCvcCpBCEJ9hZuH4FE+QpQhJCTtJMWESvT/Tj5PE0wolV88Vb+6yNHZvayqP2U5BafPAV+BAVOzh5I21GxrS6jB1px/RA+cA/GRFuVf5kJ5EjklWzDKZBGU1oY41uOzXwW3Yut3ymuNs4GcsKrwMygQr9ZIPRbBNA4RlFTzGdZdpGa85/BAzo48SMebAMWHbOIt9Pl1NGj5xbn5q5uzy6vQufdmHOygkd4HxNMxLlBp9aoywQ+lQQoFTRIR9oJZ9pGjpEdWmvsUBLYMW0e/SLtWoQHo4CnJrHI0v9x+HzW+xgYPgS67Y1UweLU4WCOCYBi6r0fL/QawaeZ/Dg8ezQMZmej8fHF+Pbtfhz0QXGo89pjddgmjPfi65203V5t80r7CaYDcA7eH1b1+4B8+CQHu7D6GG/V0ZgiAlXYligYkIKzZcC1jPVn47hFdCxb31KmxxBOlEOzKcDZqCaVIx438C96ca6qApjSIsvHWUn1NAbzwzF5vIXqaZUTtauAUQY6qai9S7onm/WT26vPrFgX2/HbwJNb1pr3oX3pwlFoBn3mLLsAz5v9IrhGxrcIifzHS0F6JujsXJg6jWunT54CngKeAp4C64oCHniuq+669x+2FVWLaBZeRgAaYy79IHLEfcgk8hhCLkewkeCCgGRiowk/EmDcDLuEF7fOpwAqwg0iiMQTgVLtFUlUQg/AVtcMMbv/yMRwuyziaObBaHY2PHLwVnDi7OK9TyX/hHeLAlPI2SNz3XEC3nyM6ZCfjZL0QfgojGFLM0lE0JZgXCrCqoRr/cGfA+BJphOm2QnkSKBXlE/5oZkILSGeQCiaNMG6s2AC5RRezl8Gx54zif9uvfjdvu/x49XtI0eynVVypuiXf4AGbqZXhz9H0LAHoeEIGkxCOfF1i672p73SAF4a5ckk1xU0GW6n6wArBnp0vXpDk1aCTZrYoitZJqR+AvCEu2k9P15uLTvvqy4Hry7O6y7vReKpMJs9Gv/q3Fz78OWynfRmxsKhYKy72t7BUjM76nhpkpmLiaQHxyTy1yyGOmUw1I7CLayduYX32sm2A34cBgCO4CTbSpgkEYi0Jao0ccKLMkwGnbY0lTIJxzeSMVebrEg0QSLqaO/oLQrBmSA+EV/5rj6+ndDPYCIXDIJqidpqV2BVdJYCVEk7O+TeSgPw6frCRntXYIW0onrNBa6UdTjBnf267mF1sFBX2U0W4jmPawXWLPjx1wHuG/WlbhxeCJbj5em3pgV5ffIU8BTwFPAUWGcU8MBznXXYvf64WXw/y5ssvpG2+luYof4EskWfReNZWQXgyUy8gUgBSgQPCUuaWTfhRMKMhCEBToQbbSbMmKBpEorNykvgCWWSWwadJEweHErjTjeozlR17yKxchXlVqZX7gIOfPIUGFBAUUBHTu3qZFW2G378CJL2p3A0nGShepyRJbA7Dad8kI33AC+a8pBwrXOTlcW31qAEcI7hT23K5HKnHUVjD9iRxqYXRcnp1tDoC3mRY9q5Kdw7B+R+x35KSPDEiQrLhIt7695MJ7ix2qvr3QwBw5h27lUAYaxC9fWLzHI3NI2n0XqAYpoWNTJYpbW9O7NMDh3YcZUFklBcq3tG6KZD+JUSS6qaIQbUCjAtnzoQdJ/4cJA7n9TmBn/9Tl0dfHaKOx4PWC8zCPuLh6JiRy8qV/KIRWHDTlETw6eMVsfRXmIz2kKD+fnOaLRj5XwynhSjRZGMhkSeZcJiJ093EOZ5kImMfZgJ38czY4Vc46upgED1iBTvKDQZHAcATlMcAEkuDmUv26SS4wLwmaDxjVkGCEsTgCeTIvLpZIvRfoppjX6iC9SWP6UmA21CkHNNmIiOAp+qqfFWYJ8JAmVbngFPQKrY3sp4LpnnKllWs9fZIF8Fut5+Vd/1KQf2eZVE4JI36TLAc6FXVle6eXmBUf5FnvIbQ2F0cdvW5YXPnNjEH5DRzv94CngKeAqsfwp44Ln++/CeeoPpJ6bLw7MHVrMb+VxWl5eSKLwyFMR7kO3HZQoWaukU5IcCIUlSplltSVXRiDVOIHEizkDMUiX5dElgEuJ0gpMuwQkoKFgioHqqneWriGO9qecPX58OpkuZ+N1ThPEPc9cpcPjNibFe0HsapeZHkewPp1G1NQnyNoFYYCV4CwYySZgnRePEDwCUICyK7mlm3gjjzmRRryJeRDiHVSWIWzRQhGmBVBBnlWflApE3r8C1l6NOdW08HWcNFQVh3txJ5vDB4cMykcRPL/oDDmbAaD/bDqsH+bZHWvhkYh4hlAXNtQkEidYCQU6D6TTH6inKbJkPdZ0DRxpHVE84zS4TYFJFNo0qNDMBiPsI21hehduHhzsvnT8Zs/7jyt/I51PNHEdr+W/7Z9J9fxIMrVb18FLWGw3a82PhSjCO5nw8r4ORPA5HmHAbTfrhcI3vZR6hxcyLtBWWaRoF7ags2rQ1BMsNM/xNANC28GzjxOJVBFo5GhCVt2b1mZJREyMPCm3804mWOIFfpXF3L8eLkVRj4C8roCmeJnyt8WcFL2v8VbnKZDKuJVKM72mGbIC+42/RUuOyfDO5rbuHjb9kN3sjfkNTtWHt0L4or+tlAUBlzvmGKFdf6NjcJzh2GtSalVDKZfn98iVdyMP6PJedh143WLt5Hi3v9bhMrmTZ+MqXzyyrRZ88BTwFPAU8BdY5BTzwXOcdeK89vvPpOl9OHdw+H1bhxaE0uphG6TgajXFAKI8L7Cz7CCcFwo4TTJxsg6QjmzgTrwxaOtmGQhPsVSJBX7kNCGU2XrEYhxF6nkDAQq6qT49fvjR9uB2sHtvUdo33Glfc9eexKLadOAQU1B9GXv97SVQ/DPgcZ01DsZPY0jYJyBLgxYnSCGmaQ8lADJUGVQcXqK4Dn7pCQn3FiohVia/zjZV+doa2L/3T17WEigedouOUMOL0dIbm88LeXu96Wt1eBmTsHgnyEXR0e/BIRPMpuKOVIkkcuoA20Bl0pCHETQ4IeAFo2FTb+oW99Z2AJ5tQq2nqrE/ls6gK9TjatQ/Q8h5MO4cxSG3HQdX//SNbu/Pz88GwKbsndedgVVCQtFU/pBZI+N8NjUb9lenWUB53ila8JanDiSqMtwdRvj2s4t3cYGcUlpM81STj33aefitbhyfs8Gys2BO2wHvCgILM8kEguXexJUkMNDsuk8/wQKPJoeNEvau9hrvOLm9+xIe2vAl1tfaxko2oqs8NzZRc1+tP7gqiHX/GwJTrrvKVNTJRz9XUuerwLGpPN6GO9QnnGpv1nAKXmMbaudpxl/NLua40y4CQUbrGGgAeUJRavpWFqqivYfo8vVIFL2ZV9WowPPJaHuyYj85ON/63shLYuOve8nI+eQp4CngKbCoKeOC5qbr7PXzZodHbUVa9SuDarQgfexEu9miW3swZmc/XzDnCBwKM5sclEkpcUZLI0ggs7JRrwpGKmmR1JQy5K+NOTICNINjbL8sPLs3350bqzmsoP88N6vv95qbA1NEgbhf3j4Wry3uHo+hBRN8HQQBMhsB5kujNrBAIALARW4mzcgW6kn+cMsg3TRLCuUwXZYYo4VuV3VQIgEjXkguwLRWFE//Cl5gK+VPqoU3z6QcpMNB8RnH9Flb4/y9En8mq4ChA6UEIic9nkLqQZNLSMV7YuNCMBBoiSNYNXKh1JwVKBYJkMVEq4g39Iw2bXWn1VaZ8xiBU3tQeZTLhMOhvjEUrHy6z/HorbeVdlIFR0pdZatjqEVuVihlsAqCLinaasIpkEmd5m9Wc2sPJUCtN0k6RhENFoaVbKsx562FuMQR+7eBcMMTTDQnzwSwJj6fhT9hQ+FiPYrymX/3ZYyrTEue8S/OqxpdubGxKVTCo6rLcr2gAYaSZV4A28aXAJCbG3A9NJPwrn1CLGq422KR9lF24aKglg3TtwAVCZU01u51uafUBtqqrZYbUpsLROnNcatOORcmlstqVry36W76dmrhbJda09TxFs0wYvkZPfBcrmPOA9Jm6Tm/gz7r80qNYrEz/0Le78039saeAp4CngKfAOqSAB57rsNPWwyOPxONLvR3p62l3aStrwX0UdyqCVCJJIYPECCEy8yLKB9IFAvyajNFIUhKeGpFLOU0uRxKBJKK5I9VCkkM4jEbKMN5NUIr3x1W4igna3FQQXGB75+Vc59Omo0AYLO1t1bEtPfFAGpYPMujd34KV0MLDIQ2L6Bi+kzpJArqCspg5OLyqBe2lQROwUSAhd43ouAYXTFgXeyJn95lkWYAxX+7Xo38aJCE+xyg8fXoHBaYglTSfrPN5gXU+b1RLq8t5WeHvKNAZ7gFLOrQpTAntpbkTcY3ia/3kusJ1HUML9QRGc4Er9li4NgBLIwUjjQob5EdfjWBu+zA+lQ/S5R+iT1e5Cz65NVay6mnhMDqeIYY7Czgy1IREjapbNNGmfiqVpf0HSmXAJUWOl3Sx8QgV9ZriK8vjTDzC/WhWe56KA+1dhir85aRiNWnN2ZGro3bsusElug/H3NHe1YAn4FB4W97KZiYuGnCRPY9+2BzwxDdUgFF8LiDKpu/ATa24erqN5ZAvU91I3wbIXKM4Ckwr0zUa5PFtNu0/QbxAueiC44T4ReVKN88XMa29SOZbVPpqVfT/+NfOLL/zA3lFd/LJU8BTwFPAU2AjUsADz43Yq/fAO42naVZE2Vyv37uaF8VVTBtnkQPHEUqGmPfmCRFcJChJqB9IUBLETIxBwJFAxOYENBOVEGj0ZyIoGc1MPHKURXSs61arDveNpa0n6jB5Kf3ArvHfW066//jMmf49QA7/CHeBApLXP3MEpUy/tw2Q+RyA4mgrjR/AcS5IJDgDZAxUInCbpsy0M+JBEkI1nGlaIAnnMl2szOFQkx1uuR9pkww4wL/mj1iia6uqS0Vdvc4KQhcb0OmXfPgRfa91Pnd//1B/LInfgm5fZJy4mQXhJ4E0BwFBw0CepCxz++pdxOsGgNEnCeBG2rsKDaeAjyrZCCGEBhJEUWqV1Z8GrjSm0LsGmnS9aQTDCC12B9AYD7fSYfBlqaVyBHcxR0VRiMchZ+KEuCReN4CYtUelADWAJq24zFaNEQyfUVtM0aTBkfPHpIg6bhOfOUBs1cmPKNCmpPe4M/0l0Gl1XFuDehaFlvcWwFSUNQPCHEtzbG/RVLQouM34KaAokNhOUmhI3YyxWXk8uHsUaS+dBtOAKGX8oz3oyJ5ZFleRwd2eGeDKt1TnODhnZdXNimC5jooZCH8NwHmeT+ws2wyVbvGAF7Mt3vd50H9+7yngKeApsBko4IHnZujlu/COnzlxQuhyfur+yWsIWBeG0vBKJ0kktLH+icQwDLBQOcjvyCWJaJqNd3KME8pUawBATaREtpToiHBjFaklKUj+TFWAHVy6F7M8YkqGD2AUuaMaqm5OoQBhU3W7RJf5tCkoYKBzbzkxkpaBlvT5GNvfId7nFi2MaP7CSM5mS4l6DY8zhHXxluM55VuQGnEqPKaALFLemK8coEOgJ8LMUEK+zAnL3LzWUNpVFwA2J9DAX5ianvWOnX8Nq7kgYGfKqcOHzwedlRtRsbzMiqp7AaAT7ShOWDopYQEU4UjQH/9d6QCayw001jmgD/NNeo6+YTwxwKkhRfXBgPrsrY9AbsBGmyBgdgDzXSL7EPlVOlE6X1Fk24r6GmntS7JsWAG9qWWNMQb8uE7DldbNNO23gV6AmICnDS/kcw9dqwcQwFNqsKSNZTo2TSdt6LlcmfhRF7HXn2XqJX54Ggxkg/1aLT0cz64JO91ZT6V2VW8APPXceizdzq7nJ4UYKZFwS9b+LECKqmO+nHoXO9ZECya1et/GZJcM2uc++oYgNGYsejFa5suq6gzQmWVFNdcvyllMz0/1g+y1IgxeZirh+0H5wMJvTk/nIgX/Raw9vj/wFPAU8BTwFNj4FNCcsE+eAu8aBY6OEH4jjpdxhlpqt1IiPUZjOEzFmHURN1RClkSVgZDF3qQRCTx6JCf4WCYCkLIGm47sj4r6kzEeQh+HcqNiwr4qx+o6L+IdyeKzh/fUx88vSAng0yagwBT9f/Tw4XRrme4eCuOjrST6+U4cH2lH0f6krokoWsrhTGowE8DZmZAuzRBaGYR2B0jNr1MSuiqIqeAzAc4EjafO5dOm9Q9LLtJC92y3aPDPszr8/yi4+OW5Qkv7+PQ3oMB/e3Q2mD07UbfbZWKAiUGDr3knKMiiYUvrFrJpXDC/cJmMSuXGP4EimZVyaMkMZQWaODMNJ4BJAEom/mYaClBUG6YQpY6pMaX9FFIVUJPZqDbqaYLCRYN1YIxmDXyqdfODFOjkRjRvgG3wEA7uqcgd6f6wj3t+7im2UgZZbvzjPCI4jzaNZm4AtFKrZzegRBMjus7GxzuKla13tWVQ9K68j0CwnsD4VO9CfkS+zGntXSklwI8rB7yLz6XNj9D4yq/WtLoCsuTnudYD5V24sSb+6AzbM8sH0OWY74LgQIur/fwqgPP7TCt+CQoer6vwBSZmvgfwPYlTxKXlZHj+zcfP5Z8+yeU+eQp4CngKeApsOgp4jeem6/L39oWnri7dRML4yv965OAsES52IIzsIsoGgSujDtPrCDvElkQ+MhGJHxPTgI4SySSZmKbByU+ukj2+MlymtAcW4l/yWhilyFpbkY8+SsMIrXU/D9KZ1vVbN2irb82/t6/v73YXKHD1SBBPZpdHJuL2fmY3PoUI/fcBnZNpFYwGWgOWDdTAk8Ft0v4gR5doy6QpwrgS4bpGE4ZuXpovBHOBFDOD5NwEcwR3Wx8RTZywD60RnDNcZXmQGwj3r/2TU0tfvwuvva5v6dbRPF/+y/fdf3k1ib82HmRtKPs4qsjdqaapNDvFt26mtdLn0SfSQKcyE20RWow+rBhPFEDImcrSp9TRRIL6SNazUezMQfOcuMMqA2tpwspALX1vAE2ms1ygYyUF4WGdV9vTODmMS+xdXUYzjtfWH7ZLeEYNTUpWn50NPO5aG9SaQxvBuK+SxjsDnHoRyq3MSpof8gbtmsb0zrLmeKCRlPZyEPRHgX9kWiyNvZ7TDZPaBwBF0ZNyWxe5MnPbNMWNlWfSRqk9boFrRAbNmAsAvHMl7fBtsNIQ8YhReWLiS6DgqOxXxcztbv8tgOZXo1brS/lw53Kwa2Zu6rhZ/jZPuRgE3ofzh/Sez/IU8BTwFNgcFPDAc3P08119SwlRv9PrLRLZ8BWctrYiu7QR9ybiGtM2yhAN2RwQMImLM5mINQa1Tn6jESfHSUBDMJMg1rwVAULcZU6I0xT9CFLlffh1fSIuyyEEy6999vCOF3+/c3+/MQFurvS7jUiBbYujE1HQ/Vg/LZ4barefbMXJREpAGLzY7HXlC2dggbMSRpKGTckEe2nWxI3kWwRbAREADmbcpu2UVkhCvPbSTgm0IKVjaVte6RfFa7DgTdea//1xKNDfFnXLm8H1Iq7O8VWfYRCYwJ1wBxBoiO+aTtIm7APtmxU/oT390dyNvjVwqvFBAwVJw4JNY0nLzZHgJ9o3yzctofpTdZsLNBFh2kEudAAMkMq9bdzhV+0ZWNUlDErW/uAedgcV2D/VtusGY5e7ka5zFV2+qzyw/DDtKMVKDvq5tuyX+1ieBsAfSGYS3DwHgdy4rxtD9Q5E94Ff4V1AJlVMia8mWgB3fOJZxEYAmnqU6Z2cmbDdDJAJuG9TR1fapEsFdicOcBWsAvNXueos0YlPcXwBLesFrj+ft1tXseFdDo6v9cwPPK0/9RTwFPAU8BTYjBTwwHMz9vp7/8719ZXV21Vcv7Iz6Yy12+mj2NE9lLKmG8JQKNhp2gztSRKgJF65vWWZzCWBzISfJst2kqK0KUkClBKjLFnWoGyjlXiOC/aALBaG0tbZondxgXL5nvq0ASkgLvosS6cEV7NtKK0+zhqIv4heZg+AcwvemBaB1NgF4XmwPIqAjP5sJkPCOsK3+Mg0XjJDFFiRbx++fwlghfhBBjy1ZqHpj8KkpgCVUHBpJe+9itXhOyN0bkA6v5uvNHX8fI/2e//8ib3nMVE4zeKeO1n2Zhgk1KGvCIaN9pkK0kbTi3SbW+JGSE7ASUOAQKIF1NGJQKSNJ/QxfScYiC7btHbSHFrvU19gToGmzLdRtWhLPKL60hqaCSvHZs2viQuxiSYdDKQ145aei03ATUnHSjpVjtp6O9flDcptr58muXHOtSM87I5UyJEQ4x05zSUOAHOzwShpe85FFyhll9Tws3xLhTxlopwQVMiSeJ58C8IEjUVDPSua/lqe+Uy8kAscpYBtpdcvlgGac2US36Lq11aq4st5XJ6b3bpy/fMnNMZ2B4/l954CngKeAp4CngJrFPDAc40U/uDdpMBCMNGbKJavEvzwbK+sryLWzDHVPpqGURsJDzHKCTpOdSERTcKVy5OQrzQQt0woa4Qx5RUmOCrwB9eRr6BFbVQSUcWSCVWwp1/WH+/3lsKFOpIJ5Etqy6eNR4H/6bnto8FS/nBnNDiCVusxlqvfCegcigAc8lsTjNDasQIRqHhgL84R4p3poiCIuMnBA4cWJLQDMkzyl7YIs0TziUPjJX/BKKm7ddnt9fKbCO3TxCj6Bi1f2XiUfe/fqGrHM1VWHO8THBWkHwE+H21rvd4oIigx/aIRQt2lYwOIDtJpHFEP2vjBWGAIkXrCavLZlI+igUvAmMCp4Ku8zdWU0/S5NvXrktP+gbZsfLG7yERVA42S2rUH0TMJ5ZLPpvbWknvQtee1fF3+jkprtcmm4A5w6c5VrgsGmz1Jc64y3db5dupGRSazY+ryz7TDgEetb1rUMjNXZSjIpr3AprT7Ris0o0RkZq4OGtZBRohfggRhRZsVig6O20Q4y6TMOYrf4n6ayFuGpJeCqDif9sLFva+tGRBQ5JOngKeAp4CngKfAOynggec76eHP3iUK/B/nTZNx7XcO7T7XLevLyDazCZPpzMa3pV0wIciApgQqSUbau6RzExw5VYnDAU7AEzRlGQakHUQlE7LCoAUoIERlFFf1cFzWuxGbno3yYitI48bvHwmmr50IyimHarnapw1AgfALzwfR6fPVBIFg3o/m6uMjUfQIg9v2sM/iHPgRm4yN3sfMMAU8xVwCCKa6ErgQZBF4UKLQhHYFW5E5rYAMCjOEcwtsw7EB2TSpil6xstzrz8CTrx96uvud548F1W+oCZ9+MgpseejG6tzc17Lqan+1LPYNRdFWAuMk+IcnNlyAIAUkNSBIMykgqj4TaLIBgrsPJqJszKBMfS/gKR9QlSmfjjRgpkOt3SoQpr52yWo012mkAayyiVdUx7WvyQyVWYZ7Dne29qvxyt1M7TWtu6Zdnbdv2JwLat5RYQ2EKu+OfI7vvFSAWiCzwJxWm0Wb5Ym0l2ZTWnwHkkUtrtRHwV7zdlr7FNISAyiSlyxuruiJw2AVWi71ymKp2+3dZnLlLfTNp8n/XjwUfzuL9y29HZ3WPbr/9RTwFPAU8BTwFPhRFPDA80dRx5f91ClQpu25qCq+hsYAmT75WSLwjzk9gcQzjiTwk2Qe50RDhCmXQ55ytDFLT56JXZKf5L+E0CVtlsx2tUlEVEsEJYmJarp1PGw9yIT/0cWlLdHQo9VLwamlU9as/1n3FPhXaDrfOh0eGkqr9xFx9mcwpfxAXFfbtU6nwImAgZkRogLX+oNSoEtjpckOuBBhHY5CuEfXQ/1G5Bc2hYHEVwZsADQm5KM5Eh8SwTMo+1mOtv1MHcffBYRcEei0OuueovfACxw/Xt0+ciTbsVqcw+LhDxgXLrJm5DPQ+VG6ZFcrDEYV9EejgUCW+kr9pKSeUr4FhiJfPap+iVtO622jg/oP3126m/53QBSGGFxJbUCsQKjysMhQZFs7poY05gbgbNJCN3T3tTFJwanIujPZkLbGGD9YqjspuWfW3nIMbFoBOarhtjvdD1RzrVlVNT7XXvwszS70YdPzZmhAC2nsGTsVeCgGiKK9J/paDsise5CiW+WYz+bFCi3cIFrQDQboq6xocxV2X4GGPT6cOVq7Faata+3l8dVDz06X4fRfel09iU+eAp4CngKeAp4CP5QCHnj+ULL4zHeLAnk3nMfJ6psjnRYT69HDVVg+jCgXxzWijolRjeC1Jo5JuHLmc06TIdDpRDVBVRMWEQylNXWCJsAToU2BNEwAQ97ERG8LgKSDWeQn+2WA5jPuTh0N3lLgi6mBRPduvbBv912jAD0cHkPTefZsuRUh+f3gyk+24/Bj6DUfSUAUrAFp4EECufSZ4iJTiA2Ap8CEAU+EdCYtBB8ENgxUCGjCYAIc8u00NiFPy0yonV6eV92i6OdheKZqxd/CJPEK7OgY8117483T8JQsEk6cEJa7oO2fH5o8txTioRiXWEkELMsUjySpVlwBQKKpFIIMAVNrZrf6/IUq6U/rFsxpiXlt5baESC7ACn9wqVw1BS7FC9oEVDV8iGtsiJFWVKMTmxIhjE17KNyp8YdC9tyFizTBISbQtpZUj6Q2/+qk6TTu0Vzt9oPazXNYAxw37ajZpmmraG8qLTDJ2uLZRA9bZxbgyYAr3q3rGM1mu1Vn3azs5qy4GQSLRHSeJ3Lt7Gq/Nwsvv5GH8UmWvTodd0ZOBbve35s6flwNN3eWGy4rBR3TnXzyFPAU8BTwFPAU+JtTwAPPvzmtfM2fBgUOHCiCy5dvF3V5ebUoX0niattQHD6Amdd2QUoncCEKSZCTnNMIcrq1k/skXqkY0YpilFUm8KmexDarxHFpBmOcqo7+4hrL22gnGoDDtPCL6a3d26r3ha9MVZPSfGZT09Os7eLTeqEA3Rp+7tDo9uzV6GkUWR/sJPX7iTL7eFyU28EOYAEnrGvdQqRvAwS5AIqSgILAJ4fSiCqQioCpIoEK1ZhmS3wDo8g8UdcZD1FfNYlzqwU5LrF8xJusYfg9NJ6vxmnmgwqJtu9SYpXIG1WY/gXN91m6JspwzmWF4K3Exe4kSUsdZXcW2FQwHWkxlSO0JL/Gmj4EZzIewAtaX4VCaf4wvLD+5od5LfIZOwQyHfh0541Csxln3JgCB60lZ8Lb8FOTa5NiHL9db3Dk9oOztUbswIFWd3d3H9fqoBYjHI+kpOvf2YZGP3J4dtPu8wYKloQDK/yKDyfvXdT1KiB0lUmTuaiobsH7F9H8X+CVF7hygfdf5YIVZmxu4gJ9syySW3GwMwuOHq+YpGvubLf3P54CngKeAp4CngI/FgU88PyxyOYv+nEpwMy5pP/bv/XIvitFXr9K1MptSSccY33EbUzFS2xyik1JhkpIWk4ckxAo0Upz+S7PhC+JQ9JsmKClksFyCja3b7UVZYiZ/6QVhzsQKid6VbgFKfIQrSF75tdv90Km7y3arReuIMS9nuik8PjRIC5utHai7voULPL34jrc36rrSfGCJjDAj6YFN+DJC8kcU5ougQozyaRcSQFXStReMr8VYJH5prSaxmFI5ForUqaKxKuiAlFtYRzwSx9T27NLRf6tuu5/7zfeLF6zxvzPu0aBXzuzLGA/+7tPTKz0yug+unGyVdYdtHKdFE0nDp9ByXSAQKD6z/mNMypobGCTGb7i6mjSQUrQCGTFMju2TI6cGU1bqd6FdzTxoP53JtqcU58sq2MvCF80MI9aLt80naqkNNhzqPKBppQjlb4NHu+op3zTtNsVrqZdq4J3JO5MQXMn27spFlVykyZqhzU9qSWmJqgQxzl253lVLWdhebPb658lLO0ZtLzfDoeGv1mMhAu/c2L+tl7xHbciVHMQTNu/d+b7M08BTwFPAU8BT4EfjwIeeP54dPNX/YQUSMPe7SLovISgmPTyeicKjG3tiCi3UdweCG7y1pQsJE2ElFQOdipL8JN8ZCsJYYKrijw6MHOzRzMRSuKZE9EkkLrjMAZETLSq8ACQ4lNFvTCxdSj67tSz+15hBfXVZjkHa8L/3HMUCJ/HtPbzZ7fvLOaCDw1F9UfQYH8ImLEbndcQUWztga3HORR/SEM5yJQZpXhLgjpGlgZWxEACnMYpVI1keCigoUkOAQPKqGmcCH8VaDlvZnV1sazKb1DylTpJLwFr7zlCbdQHKpJoFnvpF1B6hmjxOnEVjkRhlWgZSgNaoESNA9KA6k8AUuam+vYHANACDKnHVa3hGR3zzzb1v/hEWm67TnX4Jy4RqNNe/GJ5nOs68Yuu0aYcXbJ2P/hQ1w18Lh2/wT3wmuFD4zM1qGvVrP7c9dauipRBsvu+40jPpPegSmgQucrrKiMcLQGBy15V9lnXJHyLIFpvcbcZHnSG55qnnfm4Ci6PDIcLw4vbemEwb636H08BTwFPAU8BT4F3kwIeeL6b1PVt/5UU+Kenbi5R+MpvH9iWrRbR+4o4PMTkPEvGATwNZUpYc8BT4ECbdJ2SCWOLDiMBkDOKsKKV1MWZNie0kf224GdSm9CECZ+KJbMlJThJP4jGAawPg0mxw21dIViMnlfLBuhyn+4xCkxNBeHktw8lvXphL0aSP49y8u+2q2gXS9uPJ0jfTk+pzoMPOJdALoHfTCjV9wKYBgyUL94ylrA8+QTLbJu1efgRWHEmuoT5pDUALP6dZVkXq2V+faUspgEM3/y188VfeNApKr53qTs5fjPrhl9vdbMI09HDYVXdz8STeglltoNl5qerkaDpe5VqzkH96v4JOAIqG/5Qkbq+KdYR5YKx0iDCPzLjFTNZvuMhO7G8hs+4twFV9k5TKqDpnsfWxBR/cUubJINxxVWKxl0APvV8upuwq25sIJKHUV2NWW8/nCooObBJK7C6jsWf/GJNi06/kGazVwZLvSpf6FU1iDL8c9bb/LMqSK/+i9OLV2nAvYyauqgxz4NOkcInTwFPAU8BT4F3nwIeeL77NPZ3+BEUqMN4vgzjFwgIVOZh8Bwi1OPMxOP2GbXimGAh8lPCRm6w/qIWkJewJVFNQpr2FulR0prJUwiC/Ak+uELl6s+VSo5rFF+IlNUIwHNXv66fq1aWWphZfmfqyF6t87k6deIq/k4+3UsUGPkPo9vL4sYRZieeZZ3WJwGfk1FVtgUaJZI7abrpaTIsTx2urUmujjuxXKtErgqMh1QGv5j0Ly4SkAixuMVMsa5myP460OPPiY77lmr69F5T4EDRWp5d6Qf96wQVOkUwqR1pEj0A7JywcQBecJYSPJd1PfDMJrIwq5YWVOV0q0E9AB+QVNFdLV9ruhqviCfgGao2yTjF+EkZqtYwl9vrhDzxjECg1RHPOfahvis3uMlxkTmz75iZtlbSdqzHRaaj1fVcKxA9mDzR3bXxY+6agExsihVYWRizZqIsRJMZzQBUZ8KovsHVy5SvYD/eDeu8V4fpuThsXaGiJvvcA6o9nzwFPAU8BTwFPAXeYwp44PkeE9zf7p0UyId3zPf7/RfGk95cL6gmAZ17WCw+bgURq6DE+GvZbL6ZpcnXTsFebPkUhEbJdghZTiiTwMYmAc1AJweWpb3d0v1KgyE51GTOOhrmsF1U9XM0/EAVR2Wcdq7EVXGDSzzwfGdX3e2zsF0G24nM+XMslfJ3CSqznyU1JgUzmLPg2ejJH0ygi4Y7HA+IRXREVdWWJtRAhK6DWcQvBl4odVpS8ozJwrJfV0vdIr/MRMXX7x86+IfB9LRTmf7gPf35u0qBxkd8+VcP7phJiur0lk68p5NG2/ieJ2R+D1oDAGolSvqWvpPWUZNXwn4UWeRrG0M4j1jvV/6gBkgZWwYaR9OKc514xDGOHdmxjjSGGN+IN6g1sLKwZVa4wPSv7mp3vbFcM1I1wDPHH3V4KAnStGXAVw8ngKopM1tnlKBY8j9WJCTT5HJTgCixeOs+ht0rvOJyPy9XWdFnuY7iV4no+0pUhq/HQ+03iBq+8qsnZ7QsSpMUhVaY0ydPAU8BTwFPAU+Bu0sBDzzvLv03/d2nn5guD5/du1L040tJEXwZWW6ZSKHPIXI9hoDYQtBKwKG2xmLjwmSogXxJgIIIDixwKi0GOxICIQcSNLUXiKAW2U0pFRWxNMEliiiXNBKPpHG0m/Y+GXSziayqT/32YztP4SN18TdO37piTfqf95wCU3uD4WC8s7NVp/fRQQeTMDycVMWHCSWzKwrLIfUzGh7jg0a59PYzNqBA0GCQGi6AIRwfKF9HVlUTGeIRARcyBVaw4KxZZkKrUdwmsNCLZVh9HcY5K9D5PDUH7fr9e0+BpN+bC9LWt/O6CBfyerRThclQK5pICDYk01hpwdOmT8tcy+poHEDnqH7FiEJ9XZTkU1eJIEUsw6Q62owTbOkdM78WExmjWFXHJ8Y0TT47VYFfbG8+pRzbRJmYSTekRLaw2suSA7sLniVRsN0aE+48L8u8z1le1QXLvhQoQ1ndpFws8nwhSZPraZqi1ayIOKsJsbBLbGWhSexkQ9nK3uD9ZoiRNcudVsbTfeTNkO2Tp4CngKeAp4CnwL1FAQ88763+2HRPc+xYUB4Lrq5OHT58aaXVW0qjfHakKncgyD3AwuZRUlWJIlAqaqXJ+gM/PWkdjFoIiQh3JhuaxoAj/ilHwidtGJCQGZ00FYOEXGi+ojHIMw3D4aqOh1AnfDKv6w9Q7RtVXE3KCo/6HngOiPZe70fHhnHkeyBMo2eABn+HXn2K/tqC/oq4QnSzVNdElRFrmJ+b8gaA08CDuMKYgV2DExsWMI1m8z7iFQMNABX55ynZMhtow9AyFfAOwDN6sRemf8JSklc+7VbpaK72u7tBgX95ZekW9731qwdG+gtl+OBYK9m1vdXudKKoI15AKx6kof57w/ExzwCBHKUYZxPJ1vleMjYUuSK+BrGWVaHvNWqo98VCYhPxmNZ9tWFDrCT+YmcV3JHO1pJ4T5v8g7XHgpeN9WFp28CoxifaiKMWm9piYoMHyIuq32dZ2H5RdokI1EvKqIe9x8pqt7i41F09n6Sdl0Z3jL9CW7eD0eGlofEy+6U/PpPZs6zd3R65OfOg822y+CNPAU8BTwFPgXuJAh543ku9sYmfRZrPB07tWpkshy6xqMHX0DNprb4jaB8eainqkKQsE/605IGSdJ0cSZKTCOeyOHJ/wiRoqDhzl0lqVFVdNUg6tlYQPmWuiXCaInmOsgTH460gHekX+f7fOjj6dGto6Hw0uuViUEQ3fuXE6ZuD6/3+p0uBqSm68djhJAmv7Qqz+Ml2Wj/WiqOHW1H4UBxWD8VVNcpanamWSxHaRB3pOpfONzYQOzRZrkC93/T/WreLa5oTilVfp9JyGTdIU2VZnFdBnwihb3ar6lW0YW/krfz6SDyKxmlZzfp0b1DgOujuT8BvNwFuHwZxPtZOWnswux2r6EvxRZQSKFsdDSAEYbre52MXH7jvn/klKhoPiCd4L40ixht6RwHK5l1Vpk0Zdsx14hdtSpaH0yh7/ILrEo251njJUGvibxnMMc81x1Nom8cnc4VtmfaJKlv3uA3zXkHBsxbkZTS2yH0WYO9rKDdvBsNj/e5C0n9w71Ow4xl7DHdX/+sp4CngKeAp4CmwPijggef66KcN/5TSfGIetvJPHn30SjvJvjYSoKaoq92VgQ5MbZHKLGmPBKc/Bd+QpLcGOhtRzDQPSGzuCmUiYKqqqS506ipK6JQY2iwAH+JfmlIJvUj8OP6ej6AQ+SDGcwQxqf4iCsoXgpaFPPXA0/XET//3+NFox47p1tLNZH8Vlb+AUeInmHTY34nDCVYjRMEJFKgEJgQ8JfDTr8YPTU9zbOcNKhh0tz0oXa5arue1158whfjJAgi5PTMW0o4RUEg1+v2iPr1YlN9gKYw3pt5cQZW0Mmjip//+vsW/NQX+9fmVmakg+JPi0bGz86vd7lgrjdrD7RECCo1pDVb1dJxi1qovnZ5zAYDEPyrSD1xke/GDRhLqOXZyxeKahpGabOq5I12huQ9ZVdidBGphG8xmK6LVFtjU9qnbJTDVEhF45wDIZ1hO9i2qnMGC42zQSm8kUXBrpDPa2zp9Q9G0g2Nsh4PlNR7Tf9D/I+fhxbfzMPVWVZ88BTwFPAU8BTwF1h0FPPBcd122sR94OEn6aZhdL+v4TBVFr6Mu2NMr653oEDCxlPiooEICHNDBzG4R+px86fLJdkKg6OTAp+RGVTeth7ItSWzkWtOccYT/VYRmVSZxwi8EMo2H43A0aqW7CULyTNztb8f39PHPf/CBk4iqr1///j6vFwAAQABJREFUz/6rN35zakoy6pqQOGjZ7/92FPhXz20fC7rpvnr+1P2E4DzYqusnkiR+msmG3ag3h9FBRuYMx9yEoIHMYkv+rAdFfetc/bg0yLKusd5xUMF1VMMTBjhVX2BBS1s0PYkpJrMcRVFUt/KiPIcL3othGXwXOHGdyq4Jdxv/e29QoJ6iX6bq4FZeh9+l81pFGW5n+ZutTEy1+PYJIYQ5LeBQft0ynzV4SZ/L9FbMU2AOiz83QWDtlI9fB385GSBt+EljjNtqQgDVtzm+xSByDk67wnEXf9Iu3LLCzVZxI++HmNHyCLfY5rjwFoBzDjZeub0yuXp7x/niM3eYbwt83pmm7jzxx54CngKeAp4CngLrmAIeeK7jztuIjz41PW3BMn73yYdafYAnvlr76jJrE9txSwrQVKRbW3MRidJ8tdhL3yDjNoX2MD0VhDH5UAiSXGeaqTwHTlzkUioZ1pAfKFASwTNtxUGCdkQSJVoQFG7hCAu6DJd1sINAR09HUXWa5zjJZf/3ni9+8c3POmHRg5GfkBHz5c44Pm9P4I33MWj/ceK8yLx2mK3FGp1hJLNIAsFomYwQid1mHVwfuX6mqwxHqnvXemNwwL45VLFVNK4Q38AtSP+EogF4ahJCgV80+RDn/arPep3l6wS0OtE9d/t7U2utqBGf7jUKTL9/af7w7IHvxIv9oFeGH8Sn9yH6k7mLKhHoTOGBFJ5J6WOCVIFGowCbbpt0KDOAJ/xlvEG58wcWt+hYbype4bDhI2k5aco0nWg7BTxvwT+nAbp/1q3q7+BHuli2CUgVBIu9sfmVJ3Y4DsSqA21mUP9mw0th0KXK7To4z84nTwFPAU8BTwFPgU1AAQ88N0Enr8NXrJeScqlVxS8CDkCOwA/pJ9LWFuxhh+sqQ+jDEheBUr6ZApsmHzrx0F5XWiwlyZGuVKE8LMfq6hqrTpb8QRXctqatssik7rQLBXBJWGMqNFHN6g3BLkmc+I79Ql1d2bH9/bsu/m5UX4rz4Pp/99oNH9FD1PobpC88H8SXL+9rraws7SZ+52PtoPdEUodPMrHwCLjyPiYQhgCbRDOmF5HypeGO0VsJBWiSQeaShghgDdfLdtYAA/EExfSddR/Hrs7bv443XB8LeGrKQv2Pp28PE8lLZVG9xXYCvPsiq128NeVwBo36dK9S4AvHgurY8+fzN2/vW2DJmzOE99kXpfHDdCvrvDK1AM9oziIRXwAVUWnbZJWBTBhGS6sITLpZJ/GKJq3cr/jJNp0344rxGOdkZDR5mVZfK6P6zbhOL6Zx1ptLWv1gea43dYK1N+9I0mZO3XHuDz0FPAU8BTwFPAU2EwU88NxMvb2O3nX6pfNLh48cOVFmKwsEndwxFLV2D7eTJIrq4bK/FFSsgyczWRMqkQIlDwpgSli0E84G4FM2dCZEAigFL3Ri+wE9kE5VrmUYijIzHanTnkrpyUYpbWPfWW7PymqSNfN2oNU4wjXfxET3m2VavcTlHngO6PnX7F/4/qFkz2R3uAqSg1FY/QO0zc+ynM397SiaaBNeVMavigaq/rC+IidJWYKCZSlyXH/lU6c+Fggw/zwBTSX1q8rWNpe9xhfWyw2PaHKBntbMhIFPNGBos/urWXZqsdt/gX4/Htx3+8Xu8QaPuKb87z1KAXqzxkGy/PUPpotEin1zqJWwBE/Esjv19rDM0WLLgRs+gq8KJpcs0q006ERFTtopmm5iJQNOtWksUXNrYNPGDfGN/sRfDQ9ZrSDDD/0SvDNNKKG3/vvX5i7ramtCjfjkKeAp4CngKeAp4CmwRgEPPNdI4Q/uJQqgGagOj41l8dwCgC76CsZw86tF8RQLIDyRVvX+OEx2sLQGwFNCoFY9cTKeCyCEADkQ/dg7IdDtLf7tmjjohEyBS/2hAzF/L8MjgJ1BMi2brmEByVTQNw7GuDEH9RGA73YW3Hj89x4Ze6aMw6tV2L4aFtWN23vfNxMcPV5NTXng8m+e3Tc0ksUTq3m+p8xWD0Thrd2d1WSC6MEPVHH4fkT+PSybg1lzSRwYwXwSEYnx7LQuQMcZ5MRq0ZkCSqlvB3/MGXCsEnJNE0r5AHja1dR0DdqZGjfeEOBUe2DbMqx7+PldwkfwNEtgfBVl2LeqNL/yL46/U1vlGvC/9zIF0rpezML6ZTo1ZWHMMZgixtR2O8F8RooqV48DMhlRsKLIsaF344UxiAFNffWD5ZnEfgY+tTeucVwnvrFJD+XWQYeihxmJFlgj5fLnjwRnrv1DBhL/3d/LbOKfzVPAU8BTwFPgLlFA9ms+eQrckxQ4fv589ZWZ+dXjjz11YWlu9uxy1iv6ZdHC9297K4p2mK/WHcBDoEJJi6gYuDDE0UAUgIaEStN9miDpAImqJGjS5Dta4uelTetD4h0mxQYXADuRPiuAkBaZj7k5vmGoXsNhhNrdCKkP4//5MIDlCcTRMQUpquKgO5Qs3exffrrWO+iZNnN6fv/4eBG27i/z/ocIEvQP6IdfaIfxJ1k/9UNDYbi/E9bjaZUnCeujYF+LhlmivTYSfSH6ExkUjSRgVKCS/pVeNKbfYu11Tr6t9Uod9b4QgbrPTCPVye6EEoMW7AUamLKgalFXy9jYfn+pyL9GONLj0f6l78YniqXjaw9BQz6tCwocv77Q3/2JxRs7ZsZXi34xGZXVRLuqxrUUT50TOJYJjLZ8ubG71YSGeIsJEPgEvjAeEofIyoEwRUxkCHyaTzllDohqPHHs1DAVuDYc55jxIHpj9dC2N/onb/Pd07xPngKeAp4CngKeAp4C76CA/g/1yVPgnqfArzy1ayTopw/h/PcEa2t8bCgOjnSi6mAq8CdNRo1GDCFSSRKfgIWgpiJUSpCUZlR7VZHOzP1SU4Jng0uANWa+qzA2EkoljAqEGgC1K3SVgp4iqAJ4MOkDqCKuVuEqG+tshBeBp5eof6Gqoot5Ha0i6q4QMfV6P42JiprdmHplZrZpit3GSvLdPDl7IE3ml7ZBlf1pGe0ERG5txfHOdhLvhWAH6qI4hCntLsD+SBoGLXzuMHJltUPTWjt/XZlIE9HYcgUj1Z/SaUvQd0K/9g0oIEPBY3QuTZV6ziIVW31dIsNdQIXAJxxA/xjgJOqptJ29Igzop+BUP6i+upTl3ybM0NnfON29Mrjc79cnBf6HQ7t3tOP4fZ0o/NBIVP1MK6wOp0GxI43KUQWzxXkYLTp2FJqogDfEHfrQNT7Y1AR7l8eB8ZeuUQ5bw1PiTUxs8TgPc4YBInGHX8zC8EtFHb/2y6/OnF2flPNP7SngKeAp4CngKfDuUcCb2r57tPUt/xQp8D+/MrMKsJk++eKu60t1sJxX0UrUjjuAw93y35Kvp0CHA5QOWuKwtSZQmsBovp4IjkKPAwGSOlpOQYGFEiTSlGgyZYYPGPaWEQt7sn6jgUwBzZK8CtWm1mWIsbfV7dCChHGUDBMJdQhwNMmK8U+xLRFRhIX3qnmK55Fnv4+m7sWoTl/l1rMm0P4UaXOvNCXfzb27s6GyTvaHVfkcvfAU20P0A6AzmMRSeShCtUygF1zrgIOgdfWbNJwC/9JAFiUGz0j/+NGCKFWiP1GMTQCBfjCAST/ID1RJgEAaKsMFBhgEQwfXWRUwhSYQAJ7wAACBvaIZ112OWbIn+CplX708tvTy3hMNxnWX+d91SoH2meu3rh458sIjvSvXsyJMsVboDHVanSQsR6uqD0vyhTbzERYxGb7RhJKmqZxm040ken3HS+JC/jQeiD+1wUfwbZTUQQsO3s7U10fLqkqZTFnmMg881ynv+Mf2FPAU8BTwFHj3KLBRZeB3j2K+5btKgV/et29oy2i9v5UUj4y3kmfTsP5QVBePhkG+H2NZ4AVgRgIlT2nRTxUsBICo6KgJfl0SLk3bJfBJPWRHMJH8B2ViK5CJdq0BNaYJMeHUgR6wChfox0RQ26sRp0sVqJHeTqAmzLhtVrB4PCBU6/hdpugyrVwAy15EYL3N8i+3qTfTr4qZotVe+GevXlygXI3f82mKl95zJIjn57fuwfz10XYSbW932p04qkfpgHFUwHsg00Ek8z3oF7dDoS0EDUVJXSfOJFZCvDSWEt7Z88bysxVpS4An3YX9M/2EVF9ASPVRODCHFIlQVQosyLTWgj9xrdpRmwP0aaa5NMOEAD+0ZX0j7SdcUod5kZe3iFx7tgyj/1RF8XHaPPvLr9+8plv7tHEo8K+f2rUz7KVH2mn93HBa//0krJ5M6oxho4jrUN89k1OwjbOISDiGXziHmeAVtOcUamzQr1VUkQYJffdMYihwmbToZR0R7iyYJfL1WVab/Y9VVP0ZhuCX/5tXZm5sHGr6N/EU8BTwFPAU8BT4ySjgNZ4/Gf381e8xBf7t5cs9NJ9vvfXG/bMLVTjXCvPrqD3RVcZ78RGM8RHU4n34/kl+bBaGB7xUJXkIk1JRCOpIFyrAKAETVGN7fP0ANJRSBy0mQAhxU2gI0KJq8ieU76czsUXcBAwJ2NC8tGdNWyaSYkWKlqUKhrnFJEBqL00cQam6BABaosHLNMdWv0Qj30f7d+7TLOhHnlPhcXBPp6NBdHtuF2ay/QNI37/Iuz4BiNwKjdjqrZBoSCRUNwDeISf6Rm1Q3vwwJcTzz8yZRTeIZMI8kwPSekrId9pJaSUFQ8MgRdhHV2rAFGBLDfUg16o/uTG+mUayWECTO0kxrbU5rc/IUyAZ5dFhujLrV+W1Xp5PE5DoOxOTK9+55jWdRr+N9tNeHVtc6pQvahqjX+SH4ZKHCCwUMU6wRDBTQ3BDAm/FApM4ZxOLCK4yzuIKxg8+YvFjFXIsfjNNp2rIykIaUnGnrif0WBXs5ltowetX+2G01C+x/w8CDzw3GlP59/EU8BTwFPAU+LEp4IHnj006f+FdokD9aZZNmDo8thKECxexyIzQMowg/S2irnwUMfIA2qsUBINyw0RCbOEQB7WIn5lZIj4KRSIsyqdTuMeC1nAMXjGtpwtcI4CpctCKsJEBJA64WOa3WldS5poVGjqBJLt4jSDyWeQvEtYSzAXZsoa93TQgCibxcRFOt6KfnRyO6od7VXb56UcnLn+kM7TQGR9bzKpicW5uaTHp1CtBa2J5cjLo/9Ifn8l4PD3Ju564SXjs+SDSWps3lqNOJ1sdivNsJK7yyagKd45eak0OdYKtwXDrELT7AE+1F2oOI6cPYYY8xHOyJKcEcpIJ6joW6hP9mldo9tpJoNfSKeotwVMDoew5g9Z6Gl2qitTRXm1b+6rbbIBSTRJYW+pgwKaCDjkAG1b42eKHF9yuyvICGs+zmFdPM2HwWhknZz9zIlC4U582IAV2f/CDxdzZs0tl78aNXlVfSKP6cos1PoGMLeZFjMfEYmIq5kbYOyhpkx/GP+JPNopUrKqCpY4tdeYmU7haJbLSHS7K+hA244uw5LnfP3Lk9Wv/8EQ5NWXNUMcnTwFPAU8BTwFPgc1LAQ88N2/fr+s3n5qezp9/Prj2oavbF+dXo6UOOGmorv8RGHMnWqwRUIgwqTQRQcpCoNKE5XnBhhhpMiLCJFKitgLFhMBnKr2pAAtaMcCigCPNAJlk2qmK+ofEmaSKipkEfYzr5PeptQCFLZXk+yUJtRFEaQNRFqm1uSVujjXa0GCYansAno+gEqlYgX4W0HSDsvMAqfNoZy+imbtQZuG1iaS+vnqjvs3yMgUtm/z7bnecQOf15UNJr+wOJ3WPZU/q7UEZ7QK4PwK0ewrA/iCk2Yvj3ATwcBjongLSgYAilrSb7gltL6CoZPvmeHDa7A0wQmMRSZrmgcmzQOSal6eupw9M6CffAVTRG9rqRtJGU0cmtqoaxWis6UuZPtNDUnh386qe6RXFt7r94utkvxJUy2efOOtBp7pno6ZPHzumwMXd3zq0c45piwsjSXChE4dbCW61VVMTztxbPEMtQ5bi4obLMLUld5C99vGpVAiTEvuTFl+gNWIMYLxph3V5kIVoFXTsm0Pb8taeLx7JguCE8KtPngKeAp4CngKeApuaAh54buruX9cvXx9D87n1yM3e3nLXNaE7fAKHqyq+VZThU4CQh1lycxhZsFMC2SRCytTSIKABFcCJSZVEBkEARSVqACaqQIoAHIuMamAToCkgCpBRMBuWTsEcl8A2gjMInCyrYkR05p8Dejqtic6c4Kq7Iq4KzZrASmwiE27RynI5tnnbtsRJG+3eSNxb2s2alo+MpPVcVRW3w978bQD16uyTE6ufT+Li82GL18krQK8kW8TbsODxUOIlJc3nAOU8ROqVjV8USua294QcdQQmY+lT7AOxSAZAg8zA11GJghdrWJnFynaQ/a1TSdKJFlrDYdhBdzmMSD2KvnasJkothLmPh96WBNUWtJwdXkjtgP0khDsgqHtaspfnSCQyMO6y9SuBX7K+E95VzAn11I4ijhqdTaC/o5GmXBWb6kZgTQrYRmshHW5OvoFMpUNW1ChXs7KaxfP3NdjgNcykX86C7PVWr3N96nLQ0xP4tLEpANvUv52kC1VdvsSXO9TPq0k4fXI4DltMNCU1sxJriUPz6xSDNfynUjdkMK8i/hRAVYYY1njYXa2PCP7DkDcgwFa5IyuLp668eeoKkx+nqHHB1fK/ngKeAp4CngKeApuXAh54bt6+3xBv/vkTQTEVzNy8+ey+pS0r9c3hOjxF6Bg0DOFkO5V7IcCz7OMbmEkpZlpM+XCaKhTBUoKjgg6xNKf5bkq7KRNbB90kWoLE0G620jTI0HDmLN2iwDYqF8BJ8fO0axQZV3KoBFEJrVw3OBe+kz5QcqpLzYEJrTUqkmi4E0VDVVVuK7L8IUxNFSEJ81AepUQXS+Qkrs2onkWs3sBjFzSHci8kPGfdB1P2uVufOqvkrwBGS6LFOphNAQiVhwzRtgYpzycfNBa9r1l3EHQGJThO8V3F9DBsQY8W2LsNbGvjoAnmVgRa6RTxZgWaotFR/ajKwbkC5g4DgiTtkObcuzWv5s5VTcRQZftFeDf9j8Aqf9DLAU8oxWyAgXiZOesVrL7tqMP1ttGS9spWF/JSmlxQX8Yt9Nz0pwV8QfrPevnictZ/ixjFX+oG4Qssw3r95kQ2v/dEtj78ad2r+9+fkALZ7ocXg+7lE8XizWopK55sx9GhtJOOM0QQlJZpGngIlhKjio2MLy2PfJl862O2NT/FdeI9VWoSVYwXZaLPDFWY6hvC37lflx/Ezxh3z3KVqhcG9f3eU8BTwFPAU8BTYLNSwGS3zfry/r03DgWmEPmWn9o1NJEPbx+tsmdAR8900vjDIKsnq7I/EgQ5pwKRvLNM6LRJYiQ5kzvES4EYwJR9FEiWpnVD6JQJbopPZ2GAU9o4NJ9ECooBndoEPGWqq2QtOglWsqo7p0XLshr6AQ3qLgOBlWNpS0yjyj3iODWwq/sVmAdL5pX6kldUvBwZ8bHxEIBPzPvIq4FdNUtSRhmibx8Qp5fTjfixf4LacoJsgCYAtKpbtAu2pDYWyTxgIltBXltKXN42SjA5Jp4Praop0UVtsok+An6in5kh604Sul2J7nhHstoN8GxqUEFtSXh3gJPH1U1Ec/5cu+4+Ct6kezVvYns1LjNoZQv7Wn321rr6g+BB+P0u5FV1qZvn31vJ8hfzOnxlKUvOjLWWlqfOe02nqLWZkrjrM0eOJHtXzz6KQcB/MRTFn9rajg/gkLxdpgDSwNsnYjysiRC+5ybqLdMsxqeVJkXEzvxoIiVmhsbM6GUlwUfkzO1dbG1sDfr9Mr/QrYpXmbv5P3c9tfBHzx8Du65x8Gaivn9XTwFPAU8BTwFPAUcBCaI+eQqsewpMCYOw1udnDx++tprHx1tRdb4oSjSe9U5A1C50mp0I70rho7LODDxKhjQwheCpJVakWpRAmQC75OuJ56dQntXNpVHjAgEegSBpRU3D0VBOIEpJbQ50Jpahc13SlCtPkEqb6qotK0LOjYQlaRffSYvOk0jVqUpEMyKFaD+TnOithhZxHk1iVhMFaKEZBImCS0GTgDR3JwNrDrzpkMROD8KBHFdNZdg8Kdl6dRWSbXuwLZpOt14pPrOm5TVNMMGUFM03baEcpabAsW4oK+KmebuZ+7Gm7jjncI0QlOl+VqrHEehkoz2BWaOQ6ECEFvWFJgFs0/V6B6lY9QB6NtpQXyiQkBbI6JdV1s2ya928JGpw+Af5cO/rt/pBvu18kE/Z1XZT/7OJKGCceOJE8euP71kK0vIi5rDnMSPYjrpzO5G+jP8ca4qfNIkkhbg4Cx5VAfzptPY61MfS/OlzYUzQvJP8vbUecIR3ORNVTOQkO5M6OUD83ImTweH42PPTQYB7wCYiu39VTwFPAU8BTwFPgXdQwAPPd5DDn6xnCki4rAk69LlDh2730uoSLo5fQV5crKPoMdbSPARU2YOmcAcohRhEGI4iUArgCLRgTsqSHA7cSAunTUunqEzazALAZVo2AzjkY35LoYmmgkEWiVVn1qYTWWnCsFFTaY20Em1N02fCq8uWqMsNUL9iwYogy0L0BsR4bqsgg1sdx2hfudwyTUQ25aaOuLzJdVcMzvV0zWaV3j53fqYCnQ6QO2pQuamnncCe6KRj4TxbT3PtvUU7UVDJ/b6915EuaIrcw7k2qKpT0cd+RGtdj5YJTIscz1kj3AuEWhFA01xkqSYcIPFdOy7SfVgFJySYaL2KHfL1vKzO5XXwEprQF4t+eWbqTLBsVf3PZqdAvRrFS504eBXeGMXYeidsuA1lZQfwqUjTa9+Q4y5xWMNl7PS1i1PF0gPwKf7Tpvka2aGLb2UlQG4UV3WH8WYrEzYHxt84/+jF/hjrxC7d3Oyd4N/fU8BTwFPAU2DzUsADz83b9xvyzRH46uDMmewLLOY+f2Tvny/kwy9VdfwsIuGzZZg9g//VOF6AYar1UIB2EiaJZcuGtizEfxMbTZnWyY5VoEoRbksi4RIohBqySUXMJD/CMlUJXCax0wRPU3tIDiU1u4HcSo4TYFVmwFboydAXgBdhVWoQgVxFxhQQxEzUrgA0Uy6NLBFepf0DeMr3UdpHtVja/u22JTzrzECd9gbqmnMeSvnNbSnVs7hnXwOh1pTez7Wj9UlN46O27Pl0vcCeu6eZGg+AqWmKrFkDmNa+Pczbb697O1BJO00brlQiPbgb4d0APXjTNJymUXX2vzyVo6vu1wBP0QfggMtpkOPwOtcvildWiuI7XPzV9mp3+ty+IAsuuWfyv54CW3Ycut1duvhKlXeDXl4/DpsdJBqQLLpx92QiRRbtSuJ7+HPwHQ1Y1c71HVFFm371p0kj8a7xKDypgrCq2gweE3DrQZp9kjwt2+OBp6jjk6eAp4CngKfApqSA5GifPAU2HAVYfqT+w2tL+ceHxrN4JJEf5G0Ey1u4P97AhLabVZWQY4QWseUADkAOVCTwJ1AlwCUNnwNkDmQNAJfqCIQpOeFzsHf1BvkqG5Qrb5DMmpUTt29qSdtJbW7Lpicw2be5xIFDq2+3UKW1IgOSkpAF6pQGQNGdubbsuLlmcKn22qRtFYBWGBVI4tppKjmhWk9G4/aoJo5Tj/rNo9tzc+zoRYGOXY3mGpc3aML2zbUCxnp2Z97Y3NSuVQWeR1lrNxLdAd5mBKz5gLDXr6pF4vteIjzMd1me5gX69dt5kb9S1vG5X7+Sz5+4dgcatnb9z2amwFfOn6+P7T1Ybim6xN8KRviME5ZWGQNxbmGyhU9MzIapN9p3400YUJyo1LAsgwZfg/Gk+17sm6HUauoDNnTKHisFcrHir7OKwaeV1lf+6EZ2wbXmfz0FPAU8BTwFPAU2HwU88Nx8fb6p3vgrCwvln2/bs9jKw0tZKzjbC6q3Vvuraa8strLywRBIc7yQuowgPlKCKpCQ1oLMG99FiZsCfPJrNAxEmWkmBTwdSnSCqeTNhrImoDbnljcoGFCec2eaKzinE4E91HaNls+Ap25G0i1w8TQ/R50rsJHK9Uz2XA0AFnQz0deu04/bdL1SA2Vdg3bW5HD7AfC0d0X1o73uoT034Zc/ydjK53ewuWLyqDbIc2bK7lKV37nRlJqzPPOV1bm1p2fhj3u659UdRZPmftzAPQ4a4biFWjSpAJ15VtbLK0U5s1rkJwke9MUiaf1RFscvl9ni2SfO50uafKB5nzwF1ijwWY5OXLtWf3LvZJVnQTeOkwIf4v1w3B5sY7HyNkN3+I+vwgCkLnXgUxM6A9A5AJ4q0Z842fFv8yWoLteBNxV/qEP8oQ628q//4Y0+jp4+eQp4CngKeAp4CmxOCnjguTn7fdO8tQTN47Oz5cdv3Sqq+4azfpR1WRelh37zZjtNrmBjdxUZcQUBEsta2cpFRHtl55CWmXsa8OPclHO0Jx8uAvyYmlDBZQVvDFA1AqrOG/HT7U2j5/IUNkeVdQ/T6OnctCdqE4DJZhpVlVJHpr7mYynkxebEXD2fRF2S5TnBmJrkN2UqtGNVdHl2hV3o8txtraIqG8DVPZXj2rIrOCPZde5R9W4y9DXASWXtBV7t3D2VrlhLatG1yi+V7Fh7NWTPRgPsDdDLyRMamCkxjWppFNlBKmIo5s+sXlrdZl3OS7jjfofAT1/Py+K75H2vqONXuiPFparcvTT15mzfg8418vuDH0KB/3x0ez0flUWKmpMvbgTA2cLYnnVpyxGBzoEm3rE9vAmv6psYAE8xu4JZ2XdB/oCP9f0503iCDDU8DZQVBoV/62sf3x4v/vyedvWlmWzlhzyWz/IU8BTwFPAU8BTY0BTwwHNDd69/uQEFjoOLjl5bKuNHV7Gxy69EvaHXy7GhMyxveV6QBwetCaTHNlrHMdaUJyply0BnSRTZBLkRNzDES2eMKtApoVLaRyLNSux08ufgZuyFqbSh7TBQpr3AphnfqSWOuQrcKM2pQBg+nNyjRURME1h1Th3lyadTETN1hfw8DRyqcd3BgKfu755JJsAOfNImeW5z5e6WtKIDd2J7ajmgqV+eRW9qAVJUx+6jR9Xb26Ma6BTwdGBT76T31Du5cr2bvR97u78u1x/v6jRFdtbkqmnOAZfSKstnVLWlhcYU0vohVl8APHG/7S31shtLvd5rzBz8xzJNv4h57TdXovjlLfH89e7JXneKSQYa8MlT4EdS4D/NzVXfeN/T3WzxVq9UmLGqJOh1sSsMy11Me8CBAp/G9hw7/hXo1GaMTq7xOV8LH6RVtIkTLtK3WuITnjCPpcVv+W4Sqsd5WK30WVuW2gtfms2v/8gH9IWeAp4CngKeAp4CG5ACHnhuwE71r/TDKXAckfH4+aA6fi3Ij/5S1uue35axSuQyq72vIBjOlSy+V9Rhh9iqAlL4fqodrWUCKAL4CABqnU8BM4G/NdCH4KlTsqUWeQcAk1B6JxBz0qxa0PX8IpU2lzkABpB09wHQUmAyLSBPdUzBYkf/P3vvFmzHdZ/5da/u3nufg4M7AYL3i0hRIkVdTMuyLMfm2KUknsQvqVCVhzwklar4KVOZefOToEoqVZPbgyd5iPOSVCVVKbEqlVQy9kzZU8Z47FHGY1oWJVCiBIkQSQEkQRzgXPele62V7/uv7r33OQQIggQOzuXrw96re93Xr3cT69v/dcGN+SVVaGXTa3rQGokT9ylGcq3P3PpZmFXBcrb2MTL2CG3LQr0Rl9YbHl0ZthovbigW6ck8Z0d3w9alfJOMZYd9TnRaolkcqwsy4aJDLJ2LLZnE51xOV8Y6uvEohGvDxv8U28n8OYZJ/3NsuvK3xVL25mr24MrZ19/c/OPlzJ+bNXdWJV2JwA0IfAt+5y5eDL99po+vX1ljgD2Wug6P4it0BsuJ8a3F/xqYsPsGQznSNspfWezgdx8/CjGmvaTwx7vDX0v4kwxfDy42hN+B+A5hRyL8YQQ/vuMR3m/+6pX6jT9DPt9qc5MjAiIgAiIgAgeBgITnQXjKauMHCJw7l8UHvrJS3/f2I2tHjq29tTkuL2zUYWEcshOQfAMsVnMUXUfsHlJCY7EPCkHEFWRh4TSLJHqWdKeWQfZH2QFtO6GpQ4p+KHugSJuG5aEXis6qibJWiNnQPSaFL3qo6LfS0gdZhQ5syhKxkWcJS6cJPevYJnHIRln2cNOczOQmITcTnukeYYyHTO3kdXtO55Ci48x9NBmC+a/IE5ZW1gc+7H6ndLhDHjYcuCsc4bODtUadETl12VN7eWd/zMTC0R64Vgd8UORD9xMB/JDGVej6l1gGNPcjHzfW68mltbr5myaG/3Oc9//U52vv/M2PRsP/ERbOb80K15UI3BaBF69sNlePnlo5Vg75q9Kn8TV8FIO6Mew29uxdxfvKb7CdEJ1m8cQ9v7u08tsL2Lp8X6gu+b7y/wvdVkPYZbcVn1kfVv8K52tf/txXz/+vFy9m59JreFt1VmQREAEREAER2KsEJDz36pNTvT8xgddegwUUwuWPLm5Ofr1/cuyrhsNHsfqtu4Shn5cggK6jG4ltIbFbh8e6lOhslhw7h44mJVPqb/IK25ug04neaRKerWvWO0orik2c7KzaLcQXLYCcN0aLZxKyXTA8uoPRGcES0RMl0aoC12Ql+73o4M75dEVM3RSGOKgszyRn0/XWTnMrVOfyZJswMtCicRisNaErjQqxvUYStix1zlGGdc6Bw6y5FKCImmQn2mwUwQLhzCFxwT3rh3VYIHuxZlC+hn0n3sMuNj9F6Zi/Gb8zDs1fTZr41zH6V7/58/V3zl3PmteQxbeQhw4R+LgEzuE79FfLy/43TlQLWC35YUz5PNEr3VJVFIfxlbTvLd97/vSUJCi/p3wPkRDvhJ387qIC9h7wo3tHzIUYZaAd/DmHuWbvv7V6efPQ8cL/8XKz2gbKEQEREAEREIF9T0DCc98/YjXwoxDg6rd//ujR992weH3Yr37is96PsYgNt+uouG8HLIGDqiyLfq/XY0+SVkkKUFo2GogzCjRu8pmX6FdSXOFElxP+WAWXVhMukMMOKAQXBu5CnOHTxBnkLZIkyykiJJXWCkqUw7KQLJ0MZxbJnwm5HtJ0WC3SJoMiO8JzJ9J0wtMEHjvK7P/SRT3TapysDKrO7U1ZhrWJghrtYjvh3wlPs4RiDhvTse4mqVE1Ck7Oh2UTOCSZbWWnvfuj6IQF2e5pWWWH3KzJ5IV0qHMTotuA1fl9WDd/tjap/xpDbP9f7Ib4R2Hk/hWIna8PrS+fu2Lbnn6Ux6o4IvCRCPzmmSODUfDHMcbh8NJCdT+E5yl76WDB5HeYotO+23gXuP0SrfMYhoAXl8Py0/tJC6et1ox33t4buHxHEMz/B+R4PzDhMy+xKBZ+yQqwfmZX/8m15s2PVEFFEgEREAEREIF9QIB7GeoQgQNPwPqOr1zaPJtlI/+1Z8ZYVGi1hOopfPZeGcN9GGV7Cha4x4Y+PgLr50mMQT1elXkfOrMPsQQDZkkNhk4pBR//MLwOHVT0PZMYhDrjirW2cK6NZqUgZUcVnVfEtSGtFI5UazjSHEqkNXFm2g9hlHC4hh+FHTu1tICyD8wAE3jWEIuV8mAYDhOkdBmRmdp190H/7mD5zBM+KIiC0OrChlgJSUy2KtQ65NNyESVgMSbmRbGNhCwN90kEs7PeYOEVOFw5CRixXpD3EzR/Hfldh/+7sMj+HO7bwcf3RjG8ifmePyonvV9cOnpl/IevYOStDhG4CwQ2m7gRfXgdAxGOjOv8Cbwvj/byoo/Fvcrga9teiT8oUYTyxxr8Z0Nt06iAJDD5fef/BNq3x94bE632HlC88m2PmFRaPIrLDfz484OzLxxffCC7VP+evtt34akqSxEQAREQgd1GgL1eHSIgAi2Bc+g3fv0/udpc+dETm8cmy++6rPqxn8TvFaF5ZZjnV1cnzXjkJ2EY/AL0o4Pds8IgXKw9VGLdEXRKoZo89vqosQRrsiQmCyetnBimm1VFBT2HrinCaeWsYDWhdaQxC6LZMqnvqNzstGG9uDZrCjuw6PGiiCQ82cnlDXxsCCvDTSiyY4wT150VxsQjMk5S0HrHSJfqyxysTLtI3WZ+WmyWjegUuzxwmTrUKMvyZxl2Ii+I4Qb7obJOZYltULhCLcKYlFobQ2azMSydmKcZYlk2Po+bm3V9bWMyeRurff5g3MS/RJz/B7Pr/tmobr4Xsv6F++LK1eHrm+P/7nKryJGPDhG40wS+fnWzGS6eurbYG0+aSf00fiR5rF/1ql5RVs2kyeBn32+W6/jdxnvL5Wn5neYKtvwVxbZgwbedIwL4onBFar7ztgp2+xMNrJ44ij5GQPTh//qmz37cxCX/J+9u6EeVO/1QlZ8IiIAIiMCuI8B+pA4REIFbEPg2+pHfffK+TxV5eLLK6kcwF+yhQeWO9svyGDqYZ/ISZ2hO5j6cgFDroVNZwSiC7iYtnWbtgHhLsi+tWkuxCH8MlaW1swnYLoVGQvglSyYsohSPOKncKPxoXbGhe/DDpvdIhzmYEHJJnNK20r3OdJFPezt1pxeWpbWYohA54+QVXHSkUd2UJ3xMcDKI/nB4sByzaPLGMjCJatZXDCNEBNQPHXMuqMScMdy4qUMc18FvND6sIPl7GLH8NlJdGW5sro3HzXLMysveuTdhXf7Jv/7yxpVvvzwdwchSdIjAjhD4Lz977DG8Of9Bz5X/9vF+/9N9lz0YxiMozDorq8IW+eJrxK89h9F7vBftz0XpBxrW0t4VfKPxItkoB97zRbDXLI9NXkCqumvjxv9f7w83/jGWuT3/+z8dX2BSHSIgAiIgAiKwnwloqO1+frpq2x0j8A10G/8zd+znC8X1y7B09I4XsWr6/aWYLx4pQvgirH1fdJP8WYjPZxer8jD240Q3FZ1PdlG5ZA5EYoPOa43T9uLEMiMclAohlgQiBCiXHqElhdaVBkNWbUGTdnXZYCITlhf49/v9rOpjv08OW4XwZBHWsbXW4sb+wweO9GmXJhjTYj68p7pEuHWiOc+TtWmtNQgw0WspmEk7pBeupbSk+MBhIhr+Zh+FGO710GIITnbIaRHiie1Q6nHwa5M8Xprk4WcYhPxqr8m/s1j1LuYhjPKymvi6qKvNwWTjs++OX5boNLb62HkCTdUfQiz+BCU/CJP8fc7HB8u8zMoeRiv0acXPs0k9xnvMIePpfeD7jBcG7zh9+OONvVrtywU/vLsYOp7u+ZMORtwi+hJGOTwPf7wSYQPlSXju/ONWiSIgAiIgAjtMQMJzh4GruD1LIP6jCxfGqD1PO/7gdx7ob9ZHB9nKVUxVjNeKvP5pEfPv+Vg8MvHZoxBsJ533J2EdhQU09iLGnroeVBn7qNZP5SIk6KSiF0qrJa8DhuByH0uH7UTon9QhXVxhWxfuDUi16GsIRSRgZsnemOJwL0w74CK7bQdjdnkhmzZuhGrlEiqd5cZy6BKbi3SodnewrrRqMigtrMKyLO+IUcbYdSY2dQwYPRuvB5e/GyA4fR7eRt/7cp2HdyCiL9b55PU3V1eunPwPs/rsWbMFIbcVzPLsSpErAjtPYOHwseFwNLoYmuY0lld+HrJx4mi+x18NARkjhtXyRyB7Y/he8H1EPe1Fxmth7x1eAtxzSD1/tOEbaiMX4PJ9hjTFCxNK/N/g/qV+70kM0j1+Nlt337Q323Lb+YarRBEQAREQARHYAQKa47kDkFXE/iTwRxeWw+UXfr2+tHxxZSmUb8F++cN85P96EvP3133cHI3HYWM0OcT5jRiHV+bYp6Fa6BexhGhjfxXDaincTGDCWkirCOdIUuSVJYUnXk8Th+jgog+LiaQY6kc/WBJhcWGnlkP56E9BadKvvaIgtQ7v9J4xON+s82c65tmmZD3sj5XlFQ6Uw2u7RzrWK61CizqwvsgRu5rCqsn2FNxzM45h6Bx5v7lRN9c2a/+Tjab5c+yP+qfR5/8kz+q/yHzxWi8svtnkq6v/8PWs/jvn1NEmZR27g8CTpx/Hr0Rx1JvURaibz+IVe7yPwQuwURZjWDp58mca6k0bFWDCE/IUw27TDzIIgOjkj0K2cjNEKuOVWM0Zedi1jbpFxnyfoGkDhux/d+XZ0ff/+cVM+3rujq+BaiECIiACInCXCMjieZfAKtv9TwBdzJi9/DJ15WZ7stH5f/HU6R7skcPC+7dhHvlRFcNSE90hdEyPQugdgSXluG/CMQxvXcS2LIuYL1lgT08YRTEyF11RbA7osKclTJDs0NJyQumH5YlQIK/ZyUV/1gSrzbWkQGxPRGEV7DT5mDzMlyIW2bXXyJuJmKElRgcZcTl3lP62Ii/u2TlGUdTEMGDm2GITLv6aWPN+hGG1G5iXuoq2rSKnVXiuwWi7BncVMX4xyvyPva8vrvcnv/ivz2drqfDknE03+hSBXUPgwVde8Vd/56n1hXV3BT8BvQl75ZuTmD2EV+JE2skXP7rYuHba+CE+cVJI2iuElyu9Xnjz+CMNAvEi2zX90xxtuoiHjAtXLkCKnsCPT4+cvHr4qfwz2ZXsR2tXmZ0OERABERABEdiPBCQ89+NTVZvuJYF4NDvy9nK2fKUo/HexYV+Pq1g2LvY2m+aB4JsHmmby6cbXzxQh3o+O6f2YrTmoctfrFbSHVguofIVpoWllHohPisvOmsLOri1SBD/4omPL+ZkQolxkiK2GBcb+6Jo1xnwZgnjo/pqYTdepm8zhgzyhemGJLTFHkx3pGosd0SJLyyYjYJjhBKvRjrEo5xCLokzGNf6L+bIrq1/AmPtmLOIbVUarr7uMOWsroXSjfII4eW+0kG2Mz8O6aZXQhwjsYgJn8Yac/eML9fhzD67mvngD3/efYGmhJbwDJ2i1xIK2mFcN2z4XA8M7w1eM4w04cgE/tpiotMXEWusmhSnfQA5jb/COcphuekfxVmMrJvwQdXQSsiezpvpCDPn3EFXCExB0iIAIiIAI7E8CEp7787mqVfeQwN/bNhf02y8Ni9deew5jU9+7Ps78u1CVV0ITf96L8TiEJzatjxXMplV0cQCx2Idlso/ubR8L8/QhWmE9zRbQo12ElOyhs9rDoL4+bI899HxhHfUwUaIzi14rO7gUnVSm5lqX1/zMPIN+MfSlWVsQn8YZJIQFE3EnuB7jboJ61ZiTOYY+HcGiOUSneogkI1hpcI/dUGKcNCHWI4+YMVuNeXk1K8J7WV28s55nV5bqxeXjx49vXobl6Cz72xnXTdEhAnuHwFl8b//z9d7aQs//AHOxFyYxLEJkLuHNWsL7sJDeM1o70zB1WjDxZsHCiXt7C/l68T3Eab/1cD42pCe9IEj5gxBTYliBa3zs40edJyBIv4TdgN8BpR/tHVKqqQiIgAiIgAjcHgEJz9vjpdgicNsEvoFVWmN2PvzhC9nVH/UeXgnvxl84V//tqArl0ZrjajPswuJdXCiLCSaChqJeKLxbiGXvKHbEPLo5Hp4eD0enXZkdLYryMDqsx3hi6N4Aq9r20Z/Fzixm32y7vawiOra0ZHa1tbWG0nIniIk+cAGDZoTgzCaw0Kxi9ul1GDZX6+FoDT3oa9jC8Cr2GX2/iP5KHuJaHsMwetdwtG5dlhEr6sZmkmPp3dj0exGr1rr69PhwfeaFC81LWpW2oy53jxL4tS9fXPvrV+/7W/y+s455y6cx9Pw09kd6FO/TAkenm+ikkGT7+J5BeGK8AJUlXvZ0T/FJTdpwwTAMYSiwMi7XKWJappuMG8wZbUq8hI9BjY6Rx9/sUVyqtgiIgAiIgAh8JAL27+ZHiqlIIiACd5XAWfRnn33ppfztt7/Ty4dlPy70DvUKd2jj2vVjG6ubx6uqOuSqYhHbtxzCcNalEH3PN3UF6wnXLbF3mUP77OB4WRytw8DIlXQpRxEfJlEM0s3zBkq1QeKNqijWfT3e3ByOhjDbrLkjg9WqGlwf+eHKeG1lmF3MJmdn2Vne+hCB/U7g7OfvP43BtL9V5fE3jzr/tX4Wnq1CgzWnA7buTRZObq1i+9diKC6HpqfBBGm+NC2gTT3BfrsN9gHFUF1sskQ1ysWHPLZGwvZIYZy79TrPsfJz8T9fKw//H9nR0erZc1fW9ztbtU8EREAERODgEZDF8+A9c7V4lxI4S2H38ss53HH2IuZEXnlu87FTG1ffz/wlrkTiJ7VbKPtu3DTF4iBzG2tDmCAx9g9ry2a91CizcA5nDZz/ZclxGSTMII2IzHiwaEZ0eGN/gk1fggtNP/p+sxBWShceGAya8cqiHz/8js++j3lvEp0zqLo6MASOHKrWVn3vb6rxRsQWK49gqPnTPReqMsdIBVouOcTWaFBM0tKJG87J5hZJWIHaXFg703xQ/uyDFwl799ICytVue72KvwAdQsRTyOlRVzSfGm9UF5GLhKdx1YcIiIAIiMB+IiDhuZ+eptqyHwjEs+yenqOx8vwN2rN6A7/b9ZpTprdKqm3tb0VI4fuYwGr/qXqw9ua7EJQ/xzzMK00esSSzW8IrukCrJRfmovDkNkVcYAjzo/Hy0p8rQ7fjDShEIUKpSenHcBsYT25IA6sotufF0PoYH4/jyRf7Iecq2W8xWIcIiIAIiIAI7CcC+AlWhwiIgAiIgAiIwHYCZ8+d86PDj274iV+uY3YVK2+thNxhq16HVWpDxmG2PErYPzGCACISWpLiE4LUhtLWWFgI6tK1wtNWtUV8Ck8KUFo+eYUFxkpYTJ/AuNwvhzh+wDLVhwiIgAiIgAjsMwKYcKJDBERABERABETgRgTOXbwYfuvUYs+7/AwE5pHKFUdgpTwO+yXnTHNlLwhJXODEBOp0mGuhJjLTckImNWdxaQLlQYsoTiTG0kRFiVH0P/m7RxYu/M6JYfbHyxxHr0MEREAEREAE9gcBDbXdH89RrRABERABEbhLBOr+0hC7CP2wzMOxiQtnMD36iR5WsaXopACF7bKd35msmdxlNylRuBiDG20ILuJCYDI2dv40AUpBilWjESe6Q648sdhzEYvgPvh+PjxZumPXsgw7MOkQAREQAREQgX1CgP866hABERABERABEbgZgWPZaNIrfh6K8jUMrr00CtlGHWONxYagGWm6nD9nmXQGUAu2QbUUnyl2igXhiaRYfCjHatW90ocj2Xj86Wxl+NXx8uZDs5x0JQIiIAIiIAJ7n4Asnnv/GaoFIiACIiACd5PAuYuTwYuPX4rLw8VxHi/VMVzDlkbHsuirPiascNsUmC7bGlCEUkzig6LSrJ0cSZtOC+MHFaidjAsLqFk+s6oeT56PfsLsuLLtjVYYY2IdIiACIiACIrDnCGiO5557ZKqwCIiACIjAThI4B8147uL15rfODKqQlQ9jqNAJ7OW5hE10j3A/T6wt1A6gpcuBRBxEm1yToaYxIUxbNcrbdDBekp9cGZcCtg7BwapaFmXxo3/nq0+e/4+/tJy9/FqymXap5IqACIiACIjAXiQgi+defGqqswiIgAiIwI4TaJqFYe7CBefi9wpXnXS5e4gWzdk8T5o4KT558LM7071FNanJexxtXMpP7vmJxYUc/lFe6rvsVHTu2JXro0PN9Yex/9Hbt7EHUspanyIgAiIgAiKw2wjwJ1kdIiACIiACIiACtyCwXtTjGN0bWV6+irGzl30sxhgh6zlKFtM0ITPTyWy4hm1mi9JyYVru98n77kg2z06WcvGhtERR4LYsvV7VO4w9WB4pV1ee3Vy7el+XSq4IiIAIiIAI7GUCEp57+emp7iIgAiIgAjtG4FeeeXeUHRpcrHz4PtTmJWzTud40ed1AWwbbS8VBXvKksOTQWgRw7idPqExaPHPE44krq7eJTgQ0ockmoUZgXpRVNYD7dJg0v5aNMi0ytGNPWAWJgAiIgAjcTQISnneTrvIWAREQARHYNwS+8TJMmP/qwnqchOVRHa+Pm7BWR0zLhNjk2Vk8zbZp42ohOClA7UxydCo5LVJCk3b4hOmUK+RCesLqWeEf5wfLmH2uzPJT+wagGiICIiACInCgCUh4HujHr8aLgAiIgAjcDoGzsF2Om7rZrMPGZhNW65hPgitaS+f8P6lm3oSQTBZPG4RrXpCercWT2pOX8ycNoYiLGZ/ZqV6WP1XG/MTt1E9xRUAEREAERGC3EtCqtrv1yaheIiACIiACu5LAb5wqez64Y7BM9gdVcdQ5B3HIUbL8D1cQmzmsnDwhK60NeXS4pzBFJPxFE6RJnKYYKQSrDDE8Dz46GE2xuG3x4999aOmN3zh2KPvTq5sTy0wfIiACIiACIrAHCWhV2z340FRlERABERCBe0hgcnK9Wmj+qnJ+BC153GfxCUjFHnb0hLKE4KSSxAfFpV0nqYnPToYyvI1DP0SiGE2RscxQzDHWNl9wvQp5548PfXiu1ysvIOoaTh0iIAIiIAIisCcJzI8L2pMNUKVFQAREQAREYEcJ/EcXJ4PqxKV+Ub7eZO4ixtq+E6LbTDZL2jXTbE/KTIrKJDeTXZN6k0cSpLxKcz95xcNiYa4n/nEuyswN8hgebibh+Xw01FzPhEifIiACIiACe5SAhOcefXCqtgiIgAiIwL0hcPZsFh975pnRKAvX1yfhLSw09NPg8xUbTgvlmETlvOCcF6BdeHJbw6cZQK01EJ0R+7MwDxdjEevwYFbXz9dNc/retFalioAIiIAIiMCdISDheWc4KhcREAEREIGDQyB+4+WX/bVYbDQxv+Bj/iqmZV6hlEzbpdjVlIatJWR3UJNcuXZqEd0abyZCk8UUkzy5wu3JyrknB2Vx3x889VT/2y9lWpthSlYXIiACIiACe4mA5njupaeluoqACIiACOwaAoM1N4xHB69XIQ6K3H82Rg9VafKxHVHbOuaXBGcSnUl/Wig/qEztP7ux9nEVXBdzVzp3dKHffwBrE51YOzw69PbbDw+z7G2cOkRABERABERgbxGQxXNvPS/VVgREQAREYJcQePbLX64H5fF38zJ/o2n8FZzrGCZbm9XTVrBtZ3ty+CwtnbHb05Mr3qa5nZSaXFjI1rK1djFuCncuz4oiH5QuPw7PJ8bXrn8eg3s15HaXPH9VQwREQARE4PYISHjeHi/FFgEREAEREAEj8NLLL4efZdlmvrGxPJyM3x9NJsvexxGFZJKSEJ7QmwF6k/M2KSgpPrFgEM40j9NiYhOWtNkKZCj1KeNRkRa2OwtGJsVDTfDPuUn8N/2keVL4RUAEREAERGAvEpDw3ItPTXUWAREQARG45wQoE//wlVfqxmfrsHb+vAnZD1GpZa5JOz0xRpa2zRw7rWC/T5y4RsIcH/zjVp8RytQsotaiNCQXMtX+qEmRDLur5A9XhftCVWT3IwZlKU8dIiACIiACIrBnCGiRgj3zqFRRERABERCB3Ujgd0/2C1/2+iUmZC4U+Rloy4cDlqXlyYMis4fNUSpukNIJTrhYtzbzEJ3BQ30yHj9SElxzMC4P/D5scXmdl2VRvHrxxdF3n3sty85NYzNMhwiIgAiIgAjsbgKyeO7u56PaiYAIiIAI7HICy82RSciLt5yrXovOXfGZa3x0IdLaiZOLB9kUT5OStFfihActnSY/YdI0+yeDIDIL3sOl8IQsRdyQI5dDvcLdV8T8wZ9+/9gj2ePHjuxyLKqeCIiACIiACGwhIOG5BYduREAEREAEROD2CDz75Yt16JXvudxdDDFfrjM3DlnhY+T0TPwzG/KsaRpsxzmBhbOB5gyZ9978KDL7vV4GS2YSnXDLEpbR9h7qNat9Q+Xaq/J8CdurPI6cX1jq+TO3V0vFFgEREAEREIF7S0DC897yV+kiIAIiIAJ7nMBLL2fhRO/Uus+z5aGPK6OQbfisqDEyFi3jjJZuzVoMv4WQDLbaEGZ+2hDaNNczh02TJ+d6cvitzfmEOZRR8rS6LbdW6cH/Ie/r55u61uq2e/x7o+qLgAiIwEEjIOF50J642isCIiACInBHCfjPPAoAAEAASURBVEAbxsuvvOKHo43xWhPWN5qwCqvnBLtwQjQWmNfpsgJWzKqsUC6EJayd8DQ/6ExYPj2EJkWms+vRaJQ1vrbtPV3hzAJaYH5oURQuhHg6juvPhLq+7442QpmJgAiIgAiIwF0mIOF5lwErexEQAREQgf1P4CwG1A7dYDT28SImfP4Aszffx1xPNDxZMrGeLa4pUfkfZ2/Oju6OLi2dPGkZ7f5STPOjNj3Wq8pHql51FPGRoZ2zzHQlAiIgAiIgAruUAMcB6RABERABERABEfikBA5zT8/Fv3FFyDHXcwkrDH2qgDqk9LThtRksm1xGCPM6TVhGD2tmhfmcJcSmhx/kKiycVQ7LKFzOBcX2n1hbyCMVhGuE7bRwi4eWFk9gvaLFl18auYhhvlSfOkRABERABERgtxOQxXO3PyHVTwREQAREYG8QOPzpSTg0+Lnrl682MbxV+7iK/TwnRY55nhCQ021TOHGT+3lCgMLbRGhn4eR8TldyoaH0z3OyflKAwv6J1XARPnBVcawo8xM/+dl9p7/13KlDewOOaikCIiACInDQCUh4HvRvgNovAiIgAiJwRwh889w5f3UlrIU6vDcZN5fHdf0O5OUmV6zl8kIwYaYTwpNzPotehc1SYjbharewbqaVhBAP4Vx4qDtZOepQiE54xj4soEtNCA+5cfNMv9Jczzvy8JSJCIiACIjAXScg4XnXEasAERABERCBg0CA0vIfXbgwHo+b1SbEX0BnvuHyuELRibD2SIIyiUxYO+HLAbi0aFKEcmjt1PqJMGpNLCpk1lFaSZFRARHahyX0QefDs24YtchQh1auCIiACIjAriYg4bmrH48qJwIiIAIisNcInAiLk6pfvo1VbH/oYrYcuIothCXlJ4fSUnRyPmcDf8zVtKG1HHLL1W7TCQnqaR3lVM8i62EeKIflUqBSfGKeJyeAnskmzfO5tlXZa18P1VcEREAEDiwBCc8D++jVcBEQAREQgbtBYPnoZlP1BpfKovpJHvNrHmZNLBtkopEOD5u7SfOm6VCOo83hx8DWIpoiYWQt9/u0YItrapQRYzxR5tkTzuXHGVWHCIiACIiACOx2AlrVdrc/IdVPBERABERgbxEYHW8mg+F7fZ+9ETK3AkulrQqUc5GhNKAWtksuIMRm2QeuIT4LWDNp0aQINbWKRYWwoi2WtUU0bMiCMA+xGr3PixgPVc6dRsDi3oKj2oqACIiACBxUAvxXUIcIiIAIiIAIiMAdInDqxSvZibWTYRBjiXmYX4BW/GzmInRndJCSNszWht1STKJMLiJEFUqXo2ixaYpZOiNFJkfctgsP2TDdABFKHQujJ5csKkr3t798aPTdF7+YZecuInMdIiACIiACIrBLCWio7S59MKqWCIiACIjA3iTwbeyt+UBzdOiHcWV9Eq+tN/m1ccxHNQRlgyZxrib/OIyW/wg7uklh0iA6nd+ZVrWFJrW4sJ1iDiiG12YVTKK9Ih9UlTvWc+74qUOHjp26cmqwN2mp1iIgAiIgAgeFgITnQXnSaqcIiIAIiMCOEIA2jL/3yiv1sBltbHr3zjBkbzbOrUUsFBRg1ZytWgvxCVFp/xBzuietm5z3if94mvDEJQfj5rB68nQ4KT6LPK8wZAnDbOOpUVE8vl6sH9uRxqkQERABERABEfiYBCQ8PyY4JRMBERABERCBDyPgsLrtJM8hOotX87K8gpNqMg2d5XDZucRJXCYPLjz0gYNClGkgTHMMt80x9zOPHpfNg3kdfqkK+ZkPpJGHCIiACIiACOwiAhKeu+hhqCoiIAIiIAL7h8Do+Kgel723Ql6+hiWDrsaAeZyYm8mZnZzjSbOmrW4LK+ZUbLaic7v0NJFqYRCedHmGSB16ClL2067JT+4fcmqJCIiACIjAfiSgVW3341NVm0RABERABO49Aaxu2x/4y5Wvf+zr+nrdNFkPgrMqSpOe3MSTq9ZydC1XvKUktYWG2pojuBt1azKVYpWC1ERq0p70OIxoD2KHlcP3vsGqgQiIgAiIgAjcnIAsnjdnoxAREAEREAER+NgEzj/7rM/6R5eLKvwi+uZ6qP0Ei9v6KishIVuLJ3LnQkNmwZwvqRWd8168Ziqe/MQfdeoR5Plg6fKj/9MLWfUSpn9asD5EQAREQAREYJcRkPDcZQ9E1REBERABEdgfBL798stY3bYZLsTRCrTlCgbJrmGobQ2haKvXBs7VxN6cRQlrJ7ZRmT/MsknxaSc+oDDTYkNpn08sLpS2XnHFkbIoHnLOnXxjcnTpuccfr+bz0bUIiIAIiIAI7BYCW/+l2y21Uj1EQAREQAREYI8ToGbk6raFD0OsVrsWQlzFyrVjzvM0I6e1j4IyDbHdMswWYZ34TGZOpEk2TnwyvqXJIUAXS4hOeDxUbdZPZv33TuxxbKq+CIiACIjAPiUg4blPH6yaJQIiIAIisDsIbIw2w6SuN3wdlmMTRpnnAkFpsCxraENtadTEdSc+KTqx5JCJTwbwPh3J8omtPDOeRe6KMnd9H8KnQz357fFw8kQXU64IiIAIiIAI7CYCEp676WmoLiIgAiIgAvuOQD1yHmsILfuQXYLkXKfExGJArZqED1psJ4Tk7Eii06yeM890xbQ4YPPEhM7cQXhWGL77EOZ5fqnKnbZVSZT0KQIiIAIisMsISHjusgei6oiACIiACOwvAm6hamLV+4Urq9fKoroKnWgWTO89xCeEJ3TkvORk69PczqRNsWuKrT00W80WcpT/2fYqFKC2otDhBVfcP8jd0v6ip9aIgAiIgAjsFwISnvvlSaodIiACIiACu5LA6fFS7cvqMoTnj/OivBawkFDEHM3usH05uxu4s2G1vG63UGnDk/g01Wk+FKwOt5zr2cuL+/rOLbZR5YiACIiACIjAriIw+5dvV1VLlREBERABERCB/UFgcvKkd5P8CuZvXoSNc6WJecTMzFj1+5inCRGK1W3xgXmfnaDEMFtesvlUlq1J1O7nkFgQPaFOi5j3e7k70ndlH14WNBdVlyIgAiIgAiJwzwlov697/ghUAREQAREQgf1M4JcvX86aBwa+l0MWZv5LkJnPO0zKLBxHyUImUnS2f2nGJxYWgnTkcFsqSH7QqsmzizfTloyRhuJiZxbsypL/7b9YGnzvq8dG2bnrWbOfuaptIiACIiACe4uALJ5763mptiIgAiIgAnuMwFloyEuDR8chq9eH3q9tNH5t7LHQLVYbwhYrMzHJ+Z7Jzrm1hWbxTKvZ2l6euJ+5EKRYIrcqXTXo9RbLojwzycefPtIsnNyaie5EQAREQARE4N4SkPC8t/xVugiIgAiIwP4nEP8Q+3nGSTbcDGEFm3ouQ3iOPESn2TC5J6ddfRAEY9zqYFrM8Swq5/oQrvd7H5+ZVM19t0qncBEQAREQARHYSQISnjtJW2WJgAiIgAgcWAJ1f8OP8/zqJHdvhtytYmCszfHEdijT/TtvCAeWUArQzh7KO/ujf3vapFAf8+D9fZlvPuMnkcKTmlSHCIiACIiACOwKAhKeu+IxqBIiIAIiIAL7ncA1mCHHRXl54tzrWeGWMcuznbUJhfghpk0Lwgfd7eeUGQQoxWf08QT29vxUmcXj0zBdiIAIiIAIiMAuIFDugjqoCiIgAiIgAiKw7wkM/bHJYn/848rFAXZUeThm/nnfBNf4BqZP/A4My2d3fNjQW4pPOxgJYjPF5bJDGHJb5Ev9Xnl/jNzPcyPF06cIiIAIiIAI7AICs3/ldkFlVAUREAEREAER2K8E3vnShSY7cfLthYXe9yET3/Ehx1TP6AMWGYo23zO1nALyw455q2caTDvzgYJd7JXlfb1evng2DbW9VXYfVpTCREAEREAEROCOEZDwvGMolZEIiIAIiIAI3JzAt1/OQnaq3ozN6Ppo3FwbTpoVis8Mm6zMrJ1JRHJ1W9s+BbfdMFxurzI7Z2KTJQbsBdqEBhuEhl5RukNFVQ4eeCErzibxefNKKUQEREAEREAEdoiAhOcOgVYxIiACIiACB5sAdePZl89PJqON9VHTLE9CeBcDZTedw6xMDLOllEwHfFvBae7UdyY8u3htEJy00BC2WaHwXMLI3cXLK9nC1aeyahZHVyIgAiIgAiJw7whIeN479ipZBERABETgABIYDwuPOZ3vxLz8iSvLa3kJbQilGLE/Z5qxmcyUtHjyH+nO4klUZuect3xScDICIroi5xzPXlEUmN/pjmexf/pk/8ihA4hYTRYBERABEdiFBCQ8d+FDUZVEQAREQAT2MYGjg6Yuine8K36cu2KZohPbq0xFJ1veWTqn7hwOE5/tvQ29pRyFaM2dnSWsngPs03LC5dVDmZ8cYXZzyXUpAiIgAiIgAveEgITnPcGuQkVABERABA4sgdHxxrv+JVcUr/kQro69z3wMEJ9bh9KaIRPK0uHMcdIa2p3UkhSdPOhOT/NAXjGcLMvsM2V091Go6hABERABERCBe01AwvNePwGVLwIiIAIicKAIPPvsed8r+u/G3P0UawIt1yH4JuIAhXmRaNZOGjNNYVJlzs550Ul4GHCbefvk0FskifEkbKhPFXl+4luyeBKRDhEQAREQgXtMQMLzHj8AFS8CIiACInCwCLyE1W0Hg9H6YqyvNHlYrbNsCGtnnSyeSX6axKSCxJ+tbtsislAEdi69KUJpMW1gOQ24xxxPDrs9kgX/MPZpOdomlSMCIiACIiAC95SAhOc9xa/CRUAEREAEDhoB6sZ/8J23hwt+uIJtUNZ9jKMmz31nxTRZSUsn/+iaymwpzYnOLeITwdgNFCLUEuIuLmHK5wMl3IPGV+0VAREQARHYnQSweZgOERABERABERCBnSawigJdiNCcYVIExwWBplXgFS2dFKMUmPMH7xk+9cdNURZZiUWKJo3PRqMh9vXM+v2idwRzPQfzaXUtAiIgAiIgAveKgCye94q8yhUBERABETjQBMYujxMf6jpkI59lDYVkEpO0dSZxSZdH507FZvK2+PTLC2fik3M9mwaDd2Psly4/jE09e8/Okrep5IiACIiACIjAzhOQxXPnmatEERABERABEcjGa3ksB9mmy/Pr/cwd6vbwxIxNyMe0am3nlwQnP3FShdpSRAkifT3nd8LMiV1Vsl6vh/us9D4swGKKTUJ1iIAIiIAIiMC9JyCL571/BqqBCIiACIjAQSRQujB21XqTFe9HV2zaXp5UjlSWcLutUzrxOUNEu+bWg6KzaRqkzDNYOTHsNq9cjAtlyHrXXtiyPtHWhLoTAREQAREQgR0iIOG5Q6BVjAiIgAiIgAjME1hfrHydV1cmRfmGz90K7JUmNvNWfGK7FczxpOUzCVFzECNiBVusVgs3yU/Gtz+YN3MEQXBmVcyrQe4W+3mxkGXHF19+7jlZPufh61oEREAERGDHCUh47jhyFSgCIiACIiACGB57qAqTrLc8cYO3IDLXwlRgUmxCdGY8kxiFY8No0xK3tn7tTHgCZis9kYILFmVZmeVlP3f9ymWHXLl4eO3Yu30xFwEREAEREIF7SUBzPO8lfZUtAiIgAiJwYAk0Vwaht+TWCxffz50f2vzNjgaMmTRo0qZpW6TwClulcLcUzAm1WGnFWw67hew0YeogPLHvZytSoV0ZsOQm4Uw2yQKSriOIWeoQAREQAREQgR0nIIvnjiNXgSIgAiIgAiKQZSf7/egHS+tF1bvqnBtmUIq0XX7ggFRMszpxYaKSH4w6ryEpOFsBikDmVOAe7lL09QM+ZNrP8wNg5SECIiACIrCTBGTx3EnaKksEREAEREAEOgKnTgW3sbGO7TevupjD4tmKTupJM3faBW9MY9KLlk2zgM5pTpvrifsAm2bKgZGSLm1CdrSJk0eiy979VipgLmVXEbkiIAIiIAIicPcJyOJ59xmrBBEQAREQARH4IIEXXwyxLDfKKlvO87AJYZkmb1JAtsJxatTkveXQicut2VF8didXuJ1eZ/5o4/2jfuKPbk2hOxEQAREQARHYWQISnjvLW6WJgAiIgAiIgBE4e/ZsvNbvb7qweT14vx6CH0I0NsmCScMkReZsiSFaQU2Idu48R5pC28mdeTfJE26I+dHgw6NNDMfOd9p1Pp2uRUAEREAERGCHCEh47hBoFSMCIiACIiAC2wjE/+XcudGJNb8avd/wTRhBKTY2zNZEJ5Qi9CQtnWltW4jRqeikMOWRXMZj5E50pumiTBWPQMg+HH08+pLF14cIiIAIiIAI3BsCmuN5b7irVBEQAREQAREwAivZSlbVVV3kceSzgG1P0nBaGi5NVnbjbXFDgZksohCZEKEmNttwas9Wh+KCCw3BJ8+wnac7XsQ4sML0IQIiIAIiIAL3iIAsnvcIvIoVAREQAREQARIYQHE2oam9D8MYQk3xaENsoRsdRCUFpZ1UoRSbdtgNAixy8mIkU55dHATn+aBw+TFXukPvPPVUeRZZMpYOERABERABEdhpAvoHaKeJqzwREAEREAERmCMwXoV6jG4zxLiCq/HUatmKTgcPs25i7SFzp8NtUyZJgraLC8ELV+mP8SA8q7I82uv1jlen3H0LX3vmEKKYRJ2rgi5FQAREQARE4K4T0FDbu45YBYiACIiACIjAzQnkVRF85jewpcpVaMITnSqkSwlJ1+Z4mrUz3c9smsnGaXGn1tCZ3RPDbHuwePaCy08O/fCB3sRhzdxsvSvj5rVSiAiIgAiIgAjcWQISnneWp3ITAREQAREQgdsi4PpFqCfhfajLNzAt8zSVZhKGFJmUngH5QS7iP07bpGtx7KYrKs8cJoUyOI2+xRXiFRhZW2GloaH3p1evLX/Ox+i/lWXvtrl0ieWKgAiIgAiIwF0noKG2dx2xChABERABERCBmxPYWF3wLnPvQzJehHhcMXUJ3UjRmQQnXA6btSxacTnNrvVlfAhRns45c5mAYrQsHBbLjfdNJvWzk2Zy+llmrUMEREAEREAEdpiAhOcOA1dxIiACIiACIrCFwKFDocmK5bzI33R5sQq1iOBOdqb5mozfDbt1FJjTv5QTR9liD9AsYiAt3e70HMSLM8aw1CvdGVg/D7/2ooRnoqZPERABERCBnSQg4bmTtFWWCIiACIiACGwncOp86PfKa4UrfwEL5Ro248wixCWFZjJ64orKEv/RVGmisxWfyYcZpjiMxzPEVnyaC+GZhaXSZfdDfC5tL173IiACIiACIrATBCQ8d4KyyhABERABERCBmxA4fy6LfpAN+0WxAlE5xKDaJkA5YnsVzO6E2mznbvLSTjg2Vhbik0eMrRzlPf/r/Lu5oUiEbVl6WGXoMM7+A5C2llAfIiACIiACIrCDBCQ8dxC2ihIBERABERCB7QSeg3asRidHvnFrsHSOfMw9B8d6WCtp9eyE5PxWKmmoLXOaaUib4zl3z7RJqXJ+aN4r83ypj1Vut5evexEQAREQARHYCQISnjtBWWWIgAiIgAiIwE0InIU63PC+zuvhcDRuxuPG15CM3lVYeB7zPSk/sThQRgsohWbhsFYtzqJIC9PDNDqd09kNtaX+xFYqpks5aBeitXAh9JBJcZNqyFsEREAEREAE7ioBCc+7ileZi4AIiIAIiMAtCcRvnj9fF8N6OGn8uPZ+4jMXXAGNiGG2tFti6K2dVJJ5KzxzzAXl1ilQpbaoUCc66fLIOUTXDKIYaptFV8RYFRE7rOgQAREQAREQgXtAQMLzHkBXkSIgAiIgAiIwT4D6cOEEJmL2+7Xr9Schz/y4aTJM9rSZmjm2RHElLZwIgIWzYRhOKsuy6sH6WdiQ3PntVGzoLcLpFnleYluVAU7t3z0PXtciIAIiIAI7RkD/AO0YahUkAiIgAiIgAjclECfFiVgWdYOtTyahhukTwrIq8qzCT8SOwhOuGTgx5NZDqUJ2ZkVZZRXO4BtYRD3toSY0WQqtnbSI0kXysufyfshjeXSESDpEQAREQAREYIcJyOK5w8BVnAiIgAiIgAjciMC1a9ey1c3NsM6JngHqEqITe3vipPLEyaG1eZrfCQ+o0ByCM5jl03MPT26l0mbMa1pEKUgjLKSc41k616/ysnfl1Knet196SUNub/QQ5CcCIiACInDXCMjiedfQKmMREAEREAER+OgERtjzpB6Ogstz7wZ5wJ6bNsfTxKfn6rbMi2ZMCFAITqx7a3M7Q2ySdZOy0yZ9QpBCiHJILofZWiqsRoR8e5gz2uuP+7131r9bw99boD5EQAREQAREYAcISHjuAGQVIQIiIAIiIAIfhQAMklwJCCvaulj2adXkPE/owwYr2uLkSrYFrJ82bxPzOs3CSS2KK0pMDrU1/ckriE6TnfighHVYbChk+eLm2trx/mQDUjabpNgfpWaKIwIiIAIiIAKfjICE5yfjp9QiIAIiIAIicMcIxKLwWI22cb0yFD3IxZqWy9qGy1J4YpkgLnQLo6fjvE3bZoUDbHGZ5nPS6MlwO1vhyXCoUCwwVMQQF2NTH2tivoEkq3es4spIBERABERABG5BQMLzFoAULAIiIAIiIAI7QqBfhM3RZLV0+Tuj2i+VuTtVxpDBxSJCuQlOhzme3fBZbrEyNWmigklmctsVCFSo0xKr4Eab+wlrKbdYoX/M+r1edRSZXf1WSo0AHSIgAiIgAiJw9wnwR1IdIiACIiACIiAC95rAtSth5Ccrw6a+PKrr9WE9gZETohHmS4chtmVVTbdNYVWpJSMWGDL92LrJj1oStlEMxcX4WhOqjEXhiaPfK8ujg6IYZGd5q0MEREAEREAEdoaALJ47w1mliIAIiIAIiMCHE+g9Hqpq9WqvzC72++7JoqSy9BhOi+G2OPMAEYkcaNmMnL9p42nNw1QorZuMGzknFBFz6ExaP7nyLVa1TUZPF5eCK8644N5+9rxl9+F1UqgIiIAIiIAI3CECEp53CKSyEQEREAEREIFPRODQobA4iFerPLvYKycrhYNyxLxOb8IRKw5BRDquaIs5m9G2VqEApXWTJ7Un/BHHVrPFUFsHK2jnFxBm4jPPluB5f+Oaw69dkfA0cPoQAREQARHYEQIaarsjmFWICIiACIiACNyCwKnzUJrF+9CRb2D65nLwEX/QliHN3sQCQbaAEE2XOQQmVCZXFzLdSesn53RyeG0aYpssolyIiKvZFliJqOCcz5iV4+F4cbQ5qm5RGwWLgAiIgAiIwB0lIOF5R3EqMxEQAREQARH4eAS+eY77ah5/H8Nsf5Y18ZpvcsjOLNComcN6SRFJa2dOwWmiky6FJ1ethbBs53RyXqedjE/LJ4Un/EqE46gmk/HCZNJUD6zJ4vnxnpRSiYAIiIAIfBwCEp4fh5rSiIAIiIAIiMAdJgCdmGWjURPqOMY0zbGvY501LpShzCpsmFLCqumoQmEGpfh0FJxwOYQ2IEHTNLa9Chcj4hBb+pkwtXoidy5AFIsF53onS9dbvMPVV3YiIAIiIAIi8KEEJDw/FI8CRUAEREAERGDHCMRv/uB8XdXXsbhtnIQmq50vPHb0zEoIz4qWy4xCs5kKT4pOilDO7Ww8FyKieRT6kn/0b4UpbpPwzNxC6coTeV4uXh7J4rljT1YFiYAIiIAI2J7TwiACIiACIiACIrALCMBYmRV9F3JX1LkrRxgy6zmMlivTTiYTW6WWQ2cxctaG0TI+D87xdCX2+EQYV7yl8KQItZVuIUq5uq3HfFD818PlIejRXkqpTxEQAREQARHYGQKyeO4MZ5UiAiIgAiIgAh+FQBxePxVdEp5juA3nZ1JA1uOJuUl4tuKzVZ4553ViDmeORYSSxRMGThOcHHJL4UnXriu4Szj7z36U2iiOCIiACIiACNwhAtpO5Q6BVDYiIAIiIAIicCcILJXLcZgPNmHnvIZ9OQcYMHuUlsyywj/Z0JW4b/9wDYtnoPikdRNDbSEtUQUuNtRaQCE2Ma8Tc0GREHM8IThzzATF9NCQvzPWUNs78byUhwiIgAiIwEcjIOH50TgplgiIgAiIgAjsCIHNwkEthk1IyGuQk8c9RGUJi2ZRVBn3Vwm2xwrlJWSmDavN0jBaiMw8LYEL6ydXsuXQWxhAqT2TQoUs9Vgqt2EB7SDdHWmSChEBERABERABrFegQwREQAREQAREYFcRCB5L1Ob5OOZcwtaMlWnOpslNyFJaOPHHFWw54RP/QWByNVtYPRHGYbUNXIpOBMG1TwzFzTF91DmIWgnPXfXEVRkREAER2P8EJDz3/zNWC0VABERABPYQgY2qiG409lWA8CzzJnLBIFot0YZ0JtGJYbiQj65dZAgurpsGohMLEXFeZw0RCsOnpaHKhDzFNZYhgvAscGGjcvcQF1VVBERABERgbxOQ8Nzbz0+1FwEREAER2IcEqpjXLg8j38QGa9lmVZHZiZmb+IOMzOGBK2yuAqEJOZonGyYFarJl5iZEaRCl6KTI9NjXk2veYpVcTgGV8CQXHSIgAiIgAjtGQMJzx1CrIBEQAREQARG4NYEjPRcn41DDKjkMftJMsGiQ62MvzxK7eXJYLdUkRCdPD+umh3UzTeaES5sm/7jlCq2h8DGNiTgeG4NibSGb/hm554oOERABERABEdhBAhKeOwhbRYmACIiACIjALQm8BUl51HtIzLoqytDH/pxVhcWFSghNWC0DhGiDxYI8Tm6hUkGQcs6nGT4pNbmiEAQo/7ioLa9tTijiYMGhcuDKAcyh1bjZuGVVFEEEREAEREAE7hQB/uukQwREQAREQAREYJcQOF6W0dW5L0Koe73SDwb9rOpVEJmcoxmzSVNnk3qSTSZjzP3EMFxaQmndtGG2sG9SeMKgaTupoE2d6OSiQ6XLy0GvXBiURfXU00/tkharGiIgAiIgAgeBgIbaHISnrDaKgAiIwL0jkP/Drz2zhOVyTri6XqqH44WiyAcQVAOswlpN6lGB0Z9lkYeyxCBQbBVi/y5xPZ35KnvewNI3f3RxuIsIZzzS7cK7sO5+uzsfN4Uxh9nxYekZNl8TSL1kV9xWZ1R4luG2K0hDmCjxgf1PMEA2cj0gj0md2Ockd9EPFvPwq2Uev1wF/3iR+0c5Pha7o2DxIFg7uV8nrJ0YLovhtz3s74ltVtAgbrvCbLESLsIaO7GOEMUmqoKwBoXkro6ubDBm95/mRe+PxyGsj5tmxPrE3EfHrUBxYGSu2VBTCzA4qm1KY+1InzEWec2RvO2RRvYWnE6a23AqWGN5nYJTBjkrfYMj0b97g7C2P8+2ORywbM/BqoT6Yuml9CwxMrnMizHSjbBC8Ai8N4tBuZZV/fWw3Kz/vQsXxjdohrxEQAREQAQ+hMDd+7/8hxSqIBEQAREQgQNBID97NssX/yQ73IT4hI/hAfT0j0OLnICqOQ4L3CJ0Vg8Sqo95iwPIpZJzE6GqTP2YAgAm+lBLwaw3gwZFY6u6pnDGTwvmpBiMbTJsmoCZtCKIubQzHNsM6XSlWYotaVPS5M9PaDwTKEzBMEpA+rFM+6S/idA2e9zf4Ijc4QTpsD4QttbMsftJgPKLgRqpV5bFZwYuf9pP6kFd11g7CPIWbeZBRtyjE5KSd1mEGIVgyiCbkBmqgExtSxVwpPDkcFxWh1bRxofK15MyVP1fyarsQeR53YX8OjLH0F4roWWNJkWEsEBWEnWliqTNNaDiiMQqcRcXPi7u5IIiqNogbVGZwMdhm4cmBpxTitrZDT7MRU3TJT6taaCeZqWy0K0HopDtTY/tj3t7RD6f7XnwGTHTzt/0OkEhMmo/xuUqGFxHW69lLl6B0L4EgX95dBSTZbNMwnM7ZN2LgAiIwC0I4P+3OkRABERABETgkxP4+199GEM4Ty2V1995NBvXTy8U5fHDvWLQc+44/rE5jTVYj8JdRHd/EcJoAWIBQTRWhhIKoIJQaceLoi5bZcbWuy1VhXS1UMgIO1LUzgo5y4iKYqoxEPNG//zdyC/lipB5MbqlPrSS0WxJIZNi85MSMNVs5vfBK8aBJoPUwcDavKDdk9kVEJ2n+y47CWNk4ZsxVWYGZWmikxIOtlE7UztYcDpZJJWjh8WTZ4X5oSWEp4NJNYfFk4KUdYXVcz24ag3ycogfBIaQkvClPLMDdUJMRG3v4VDUggLT4o9q2W5ZcDpwj0vzpVcKb8PgUJ8ToinQ5I37LjEFpyWdJbjtK5Q4V98PT45msOwU3/Y4ZY3RaPiz5VDSvnRuhK/nEIw2wWgDvitoxvVYums+D6vrTRiOfLzaK/MLRTW4tFIf2jx7/vzkw0tWqAiIgAgcXAKyeB7cZ6+Wi4AIiMAdJXA0O7qQ+dH92HjyVyAifhf9+KdgFDuCrvxCEXyFf3Bcr3Do3fu8wTxFSpMKupN6xcPP1NtU3nWSpNMS6d60BRNMJUtSPjPRsjV+py1SQ5nOpEWbvi3DkmxRWSn6R/3siuzcNh1y3+bzwQxhGUSkAnqGLv7aKlUwuoEXJCQpQbJTUOKP8zdtridypjK06G0pdo0huRSmtB1GG4BMX6Tk2Fmujov0BcIxfPRQ1tSLME/GErnwqVBadhlalsZ51hgypkZjqQxPLiuCm7bedNOl5dAmthokVYd2pATWOAunF/Pu/qaJ7vIF6pkqaYZetonCHJ72HaQFOYXTkAtJHmvsWwPbcg3fIb7Kq+C1DG4/wg8GfxR7/eHCIZies0zC8y4/N2UvAiKwdwl0/1Ts3Rao5iIgAiIgAveEwNmvfOVIPx+fGIzqh1wIj2Au4oNQN2fqOPl0CJPP9Vx2X7/AzDgHG1EImKYIKYRJjJxAyJVZ+Q8Qtwdh/36r6GRzun+ekjaYv6dAmb9n7CRd6H4wPn1vFH8aNUXY8c9UUwgeiMHMhs1CgLJSED7kBF4Q5DXskNgGhcIT0czaSWaYCpvzJAtTq0kM0jLKW4zaxbRMDniFoZTpYO2k1ZOWRZ6UmTyNC4UqxRdOqxOznKOR/FJZrdS18GkcXjCr6bHlpvXtYtNN112seeHJynf+0+x24CLVqP2Ewytsd8pPXJMVkAMRtqMJsShqiNFx7eMGvsXvYdjz+TwvL/hQX5o0+VuxCj8dHz586dhoafR7r7yCabA6REAEREAESEAWT30PREAEREAEPhaBhWx4pPTFp9A5/1WImX8DAuKJIoZTvTxfdNgHBHY6jKSlwMS8P2xKSYsaxRAMSFgNCCc685CgKJthOKaKY3pxw3qZOJuGUCKkI12lT+ZtR3dxo/sPL6bN4O47Jm1oSzNLW1seLZRc0QdikIZHnmwCo3AlIgcV2spOw5aaR4FErjihmWxKLK5hqKP1LolWRCQSNp1nYsmScHZlMKA9mK/p087DapFuUpm4nou/LWSaahbFcjR/XnX+dt1+dI9smvhuX1iBLDwdbC/vAoW4VTCJTyp4cAdZ38OvAL2icEtowSk8oWcQcxVb3PwcqV7FiPE/qkJcX61rfrklPFuuckRABESg+3++SIiACIiACIjAhxL4T194oTpS172HwvBRyJnP9LLsqb5zT0DtPIW1aT6FqYoni8wfgljCIkEQUqZwIIJaa1rbnU/CiAqKB12zcm3/56i77wTB7d+nFB+SvgtKNblHn6wlJGTEkON2rqEpQwpys0BS/IA2zk4EsaKc40nxmdKmPNicFIfxIem5RC4kFE/HWaSIQIOzxU4RmZWJLKwsZGVw+Z8tWKb3qQxL0Kbprm/uznJi6tmR/Ds/c1mvuTqZFpwluHtXXeFtCWTN2rEqVI1U/LPaAhIC+JzMbkz+OG2YdMwn+D1gGWsJX0KM8/ip5QIGky/XeXZ54vOfNr5+azKqNs5evDhqi5IjAiIgAgeOgCyeB+6Rq8EiIAIi8PEIPJhl1aGl7FBYDZ93Mf776HZ/tgz+QVg5F52vsWsHZIspInTZOSkOKocdeUoZSCFzeT09TXTynr1/5EaJZEIAl213n1fpSN3/7u5W4bT6bU2x9c7ST8ua5brTVzOBRaE5V3rLrfObD7KGwcPI4SMx294+CqSUJdOm9HweuLY0EKR0EdaJTV7zmD2DdL/9s4uX8kx5MM7W+yR4t6ft7hm3k3Sd37x7qzrMx/3E18Y65cK2JaFPlzXsWgsX3ykOdWaLuRwU3gEwpD+/27Dx5+405suexJK3n8HQ8U34XUErX4e1/x9v5uW4ORzeQUQJT0DQIQIicDAJdP9OHMzWq9UiIAIiIAK3JPD7v/LQyTIWZ45kxZMLeXja1eELee1/GRbPM/08O4IOOLac5LoqFE9J3JjlKBmIUtcd/klopM66s6VVeZ2KZye/ky6fVHR0ed6yYbsiQtfuFlZbJw5LpsU4CR8yTVw7VZisoyltshSmf86nMsniz5h3IqkrjcUwrp3wnKXjdcqrrcqcs9Wfd106Rtp635U9l3zbZcqtywF33eW2eHf91opG4W0V+P1jVbZWB544yNr+YOl0vKbVEz7dfFlb1AmjcblfahOz9UkI746a5rujuv5rbLr6//UHi68V6+VQ+4AaTn2IgAgcMAKyeB6wB67mioAIiMDtEugX1Skf8i9hcuGvQx/+Zpn7M6WbLFYQnCXGHHI91jQsNFnPmH/EBENIJ4TMOuwUUclCRJed+HSfhCbitR1+hh2UI7WdIqcVlmg4iRmf9rpjMeVifGaQLA+7TawZv8ujS9sFd6nm72nx7MpjSgqqj3IwzXzUD9zfIhNrj1kVU8SubrdIdseDWS6/p+bONb27tHpaqfTpLMmptrYoUwuB4pPDyitXcY5ticWHjkKCLjS+OVGE5mG8JxtNL14uTuLVuKB9QO/4g1SGIiACu54A1xvQIQIiIAIiIAIfIPBf/fZnTv7m46ef7NWjr/T9+MVebL7QC/XjZZwcrmIN0emxUi3ncrbDaG1oLUUnO/I4TFSYfYjddfOkxcjmGbKT3pVIayfj0j1AR9Irqd3B2g9ExEQMUDtJClHqtMcHL9q4c+GIY9GmcRk2Y92JKz4jW0yoNbR2abqn1eZ4U6cTY9N0SYdNy95SfJsL/aYn4k/jTC9uWtxdC+iegdXGvn+sTLJiJm5d5eim6+5r2j0nVo5+2FrFXH7RuWVQwJ6sGIbrsAhRWfW43BY2a61Hh32zUf7aw4v+xROH/bkrm9p+hQB1iIAIHAgCsngeiMesRoqACIjA7RPAtM3T2Ezyl9AN/40q818vfX0KlpsKCwhh2prHdh/YqgOddBOMuDYLJ0w9HG7ITnrSIuys46TQQE89+TIcYpU9dwbZiQ922OkcoMPajvZ28wqnTefcwZaksWMAvIwPBA5lKT0s1hwzE4S4p1cSh3OBTIFbLlRk8zotH3jakX4Q4OXWFCnU/FnYDY5Uzixgej+XES+n/rOoN7y6N9+BVFn7TJDbuqHRc+2gp2FIEadxTLBDffL77X2DrVcQC/lgSxa32B/0Q9E7sz4Z/XZe15+KRX4EP+A0oRxxfPp6m4kcERABEdj3BGTx3PePWA0UAREQgdsj8Pe/+vCJv/PIicd6fvKVyk9e7If684PMP9rP/AIEaF5CdDqe6Hxz2w52xJPNE93ueatRO/+NPXeKDvbVk/hs65P0qaVJff1tYjWlYKr9eYIVBWS3uI8109AkWWnapm05ve2+88Q9Y01FWutv+3y2cbuoncs8zBoNDyyKa+VaprhnHBNP0yvG3na08bb5zt2aJEv3zHD78QG/9H2x1pJFe3a12Sk3tTu1nysF849+5pMcY00v8k7fVQan9jIKn0ZaoZlfdI4/hy/+o5tj2S1m6GOoIPqxta0b9Ap3zPm4+BvH6up3jmXNn1zLNiwbfYiACIjAPiYgi+c+frhqmgiIgAh8HAJVXZ2KpftCFsdfy5vw9TILpxZc7JXoXHNRIM7eTHM67QodccxkQ2+8HXCbOum4p8i03vecHrF7+HIOqFlG22G6jDrfjf849Z5Ps6XI+YBddt21u3OTmGktmagrCbItndtVP8VPIbSWdpGSFmLsdPDKgnHRldG5FLzdYZezbJK46gJbt8tnm3d7y7rwvPlhodMyeZFuuvrw9ta53Dz/jxNiNUChnNdqe6OyMjjokA+/06yULe6EChpreDEWediWQYyDiAF7r9IfY2shOLk9TvccsUsqh9y60MP2Q/f5PP8aoj8D30fxItw3zMOfIdl7zEaHCIiACOxnAhKe+/npqm0iIAIicBsE/vuvPrwwKgdL9XDzM1j65DcHVfb5gcuP92Ps5x5zOSE6bX6mWeporkwdc9tRgjfmb11y3qXeuXXO21tesxdvPXa4dm2fJjhSrAP22fEhDlN2qf2keLODUbsjCSHEbtNaNhY4yyHZT7sUdLdaVC1kLlPTXnP3DGdu9Gcxd/JgnpZl697h7D9+Va0ibW3Y+ESgzQ/+XXgbxTwYr/UPeFd4yU9fexOweVnkVYEjyxYQdl/uymeLHi/d9f/hC/2NtVBf+f3vr1xrC5EjAiIgAvuOgITnvnukapAIiIAIfDwCq5PFQxhmeKby8fk81L9VhfLhQ2W54DgTDfPWsGCKLZ6Sw8LJIZ2BFh2eFA3bRWdbBXjbYVqzUy2wcppg6u7Zqad6PYCH4WHTyeIjMDBRiOhM0l2nO+Q05dlGMJlPf5P7SRO1n4ixJbrVo8vT6sMYWw+rYhdxa9DHvptvB69335FqNW32tJIQ7901XTC2OPDke2F7e8KqTwE6qWtYQ2PWd4tZhRnSjB5DHDhXPlU6d3iS58sTF1YX8973ECThufu+BKqRCIjAHSIg4XmHQCobERABEdjjBPKljeXH3Fr4jbJfvuDK8lQVwyBOJlidszZtg8GImUen2qGTbXPYMLQQK3dCL0GIcmihLSrUTty0brh1sQ1L6rh397S4YbAhb1N3PemuuZh2uaMfqMxUXexgwW2xhuImxW4Ps3urK6+2Vnrr3VyG0wBecFjpVjtoJ6KSu73E9lHNZcfLaZbb/LvbD+ZygxRzXnOXXRZ33WV7rVx8cGAs/+xoKzMdSgt/xk3hiV1X36nLC/wa0LWbP8pQjpZFlUWYOTlzNDb40QX+EKd8BXr4Eed4keefL7D7SuOy8dnPf2rlyKHx2j/4ztvDu954FSACIiACO0xAwnOHgas4ERABEdiFBPKzZ7EGyv82ehKd4X+3X+XPLJTVYe99MRmNYMyJGTfs5Ay2Gr1qWGlsDhvMoDCEsredZwV61hSenNeZFhhiK6ddcETh9ezksF0eSawiDdK1NiPztcCbfHS53iTYvDsx8GFxtoSZaPgoOW9JdUdupmjmcgMOO+h211ZF+KZadiwZLUW2fCxV+rB0N2jSdIEnCKD5Y5bvvO/suqsHfazErclnEXHFoPn4KUWq55aI7U2X381j3CjVnfMzyUmAN6gApaTtP8vi2LAWdBd12k5emOWzla+WXZ71q4oTP7Pg8UMNht1yxVsTpRg5gEVvFwDqc0h5BPM9L7tBeHM0GrAUCU/y1iECIrCvCEh47qvHqcaIgAiIwO0T+G8/e+zR7H+Pnx64+Kulyx7HIkLHi6bBmMCYVVy2lv9BbLKjjSGCsHqif22dZ0hF7LeSOuBpzidLt0568mQK66h3liLesyNv8RjXLJ+ztPRpu+0W50YfXdYplxvF+Bh+FGGWcZfr9lK6+4+R94ck6cQic+fZlc4k89cf4MJAipxW9VjtcJ3Ee5eb+TKrOeKttc4yb0tsHYvIj1myqdfWuky924sPJvigz/Y0vJ/L1ep+ozg75zdXmy2Fdm3pnpVVu/NEzM4/sce8TnyX7OvEdybnDzL4TvN94YmXp+BQdYSRM56GCy5fxI869/uYf7GYNCsun/wFsr2ypRK6EQEREIF9QEDCcx88RDVBBERABD4JAXSGn8a0y3+vKN0vLZX5aXSPB6GeYBVOWDJLWmvQcbb5aghBRJu3hiGDHHLLpVKs482eNv7rROW0c45A/iWR0YlOuIzfHmZLxXDdLtZcn76L8gHXjEsf8P2EHrMqISPezNdk+/0nLGtbcpZkHE2MbAvEbaoaY3WVhJzBZUpnn7hPbutr913sri0mjlr2qTykmbu3LGaJZhVhtNnd3FVX5pxXe2n5f9C79WFuW3PsRPRNk9zFAGs3a8TmzB28JZ55b7veWnVE6GQn4kNg8ugEpofY5JD0AJeWfc7zLEr8vIOMETXHFOoCw22XgOOLRWyKEN3PkZzzPXWIgAiIwL4ioH0899XjVGNEQARE4KMTOPvFx4/93YcOP4Sxfr/WL7Lf6hf545WLR9GFtn8bOAzW0eKJnrYNn7X+NHvhvKBr/e10jU40h8+yU07xCZ1q11tqY374SEkRnv66mJa2/ZgJ2FRWjgzRt7eTGbDTTpdzTVlWOuh3s2Ma6SYRurSd28afqrtbpWe2bE9qzczt8vtgsZTh80e3j+X8Qk1p2PIst2kZEDDpj8ObaY3e5pqC6uK06a041KcrFm6qMWuRPPnZ2Z+Nd1tBC01RWh869EhlJMXGemz/SzFmIbxPTLr8LZebY5or78Mv25og/65mH81lrqwLq2B50CJpZ6optkLhN45mf/gz9/agwMT30H6AYXx623vQ5cPcmC+/rykN87XRA8in/QondKa6ue4tbKGxfu9rR/O1rx/vh3+2PNlMKfUpAiIgAnufgCyee/8ZqgUiIAIi8LEI9F1zX/D5c65yz/Vi/lQR/Ul0hgt2llM3Gp3jbg0g9pIhwlK3G/6mTmCxsZmf9E89a/af2TnHTobwYeeacXC0PXuuZps66LPOOYOtY28pus46Pbl4EVIjLTv3dFkNyzM0Vg6HLFJ8WjwGtsfsKnkw+YcelgC1MFGNmG0G5tCPFzfIo4ueBElKNB/NsLWtmy8/EUvx6W8CEwnpM/OdpejypNtZBlPZ4EWRSe7podj9NA8EkSifEw8rh4FMQsWOCuJz6k6vUxCztfA2iSVMeeNZAGpXtpViASxt/kD+XRn0TgUgLcVYyinFZsD8ffL96J8ot3sYHz0RYqbakgKTm4v5mPyu8Y7fXs8FtHBX8c0As8jvJK2X3LcTbeCenRCMdk9rJwkwPgWrrXCLe6LOkZ5NtrcG8Wj9ZPl8lSoOvnXhMNaNfmiziV8CoOuxiP8SQRpyCwg6REAE9gcBCc/98RzVChEQARG4bQL59Y0zPg9fjoPyadfDUL8slrTtsCNs3WF0kq1rzF40jmmXetrBt+51Ckl9clstlb3uJBiRU2s5Cgin9GFX3obWwkWnnBnQbsTdJmgu5ZKf8MKnObiyuXAuqxFIERywpYuFmjDAYkcUAcksSDdV2C4YzaqfPlLJbE57n6QF72eHBSMmj3SNXJAPr7t7C7SPLT5sGGO19UbYtAnwTlmkiy7GNBwe5sdGt4Gts6VUK44fLIPiBu7UjwzMb65ZbD8jMIhPlYh51zWHFbD8mKf9pbxxazViPKskXXrxw65nqeZStjlYFObQHVaH7sYyoQ/ysnq0LU4+zDeVRTfd3fx+Liqjpy8YnJQv0qf2WbUtfNsH8wfxDmNbf3BqMOsSv3TgLCI+AobFMqbHd3GaN+75owfLsJrStfK6Wqf7Lnd7VAzCyafcseddeiAxLwJGGsRssYzN4wsuex6Rf4wUOkRABERg3xCQ8Nw3j1INEQEREIHbIxDHowcg574SSv8UJp71Ui+a3WL2jvlJcZMsMpQsJl3afnVr04Ev4sGPFkkTrOh8Uxt6rODJ4bEOqxVF67A7qkr7o4LEHi3oxGPmWwiYLQr9mOU1vD1lpWlRduKRrigwF46lYIJcA8sT4pvMLGiVwoGVdy0F4lIrWLVRZVyxVtYiu0AmZpRktvTHf8mfmfCOH2wyC8PROunCgpJ/94nEaIwlTLGtaciAbjrotg2GXYxVQ3R8UnNYGGNbPrhPlrH0Oa+UmIQHK4tEqc7IyBED3K6d1Ek8rJn8QBqLjwgpGpDTG/8F+iAljXPJsg1Zisg8eZiYwmPjLWO23ttclsDTnnqqF2tDvy4fhDKHBNVyS/GZMwvhLwmWB+PRo4tpuVgIyrd6dKV1uTAFSuYtD+TE/NItr3jLNO2RArq7mTuNQg4FvkPIIm8azy9XWWF5Z4dJzBHzmJkl7Z58Qqwltw8qSc9yhj9htvl2Lm+tmSkSq2Q87YKR2jpaqxkIHC6Gqgjh4SrPNlDUCfjqEAEREIF9Q0DCc988SjVEBERABD4agbMvvlg+ho71yqVXj6HH/ACGEB5DSlh3aBNLtrG2r5x6ztMudXvbFdP1sNFp5oJD7FWzA29dc4pNDLjFSp0Iy7MG902Ik9rXm/B5H//4XIZYuoa46yhzCFE0QukN4iOjlDElDU8eEEtYAwn5sH7spLdxuK8o5UvJcpJegf6gsSr16+FMm4JkljH9WEu2lAe1BOO3WZof8/zQA+W1igrRkBsySe23jJm0q6XJK4YiCp02DDdJOrbyiwMz0QZiZIz2YLWslvTEBdWjBeGerBMsPjlrVM5wVI2RLB78GYYK5rDY4cMimrS3cMj2FNHuLGcbFtq1H4m5TasdnV+64yezAwVL22WA70B7aVwRg/VMR1u4VYLXswMtsGrSpyunLdbukUNXDUvNeKw7DyScprX7Luvk291Z3Bt8pMrhk+WxznhQIJUvYDTtcXxnT+E79yBqdQI/bWAadFbBheykLRRN50PFjx/cF5XtTJnx2Vql5twPq0ZKh+xw5NC/xREMvT2FodBH/uCpp/pnvnSh+cbL0+beoAnyEgEREIG9QUDCc288J9VSBERABO4YgSPjcbWx6BcXFw8dxYJAx52rF/O8MfFiHWb0kdlNto6w9ZdTp3lOG6TOPyJbXxlqycNuiT471AG2V+EWEuiaY74aTZnmYvBiHEc/3JjUV4Jvvj+oen+BxT1/iv0Nr2J87wpk73oW63rrP0qLtMrZgf5+5svNLMfuhvRqqjoFjJNw8gtNum8/+9miXdXTQa6I1+bFgLlLi9eVYzcf8WNrHiCB/0w0GZSUSQVx2QmotDFjstR2RUDFtOFjyPQs29wabNH6XWS6XTiWnKljb1rSwgJrAynWFdammW//tNG+E0htJFSc9Z4vpyvG6twpvC761G3LnN4v2FUnHHnTswpv35KS1e5KsCTTBzIfk/WZv+9tu29Tzpyk3Obup9nO/G5yxTpXVJ2oWoP1nFG9I/iGPVZP6udGvvl1iMxn+73yWOWKpcrhdw58canjqVRhhsd3K8AC2olutg8/iDCY5fGWR+emO3wyNMWlaxZ+PMEyD4t4X47Cb2l5YbL4znefwtO+cNOnMM1OFyIgAiKwywls/Td+l1dW1RMBERABEfjkBFxYO7K23jx8AlYV6J4+BBn3RLFuMbvCdmX94a5jPOses/ROwFkCfNhKneir095J5YPZahAyBYRRVk9iHDcxXsWcz0t1iG/h/Hnts59gE4nXcrd4GYuyrEFxbj729LujD1p15mUHS76d45OkvZ1y7mVcLXh6l+jn/83n71/E8lXrPmvWah9X8fX+YRGy+/A7wgO+iU9gAPgZSMRF/LDQcxgOzq1TYOc0szYFpWnS1mUd031b2+7dMpd+9iYhEuSviVf8bJPnA7w3D2b++lPLff8WIr3TppYjAiIgAnuWgITnnn10qrgIiIAIfDwCTTM5jv7t03X0D+ShKTPnbVWTNGATYpPDB+1vzjLWalATnRSbnSaFy4GHJff7RO8axp+sgcsTFqPJJIsrEx9/NPHNX0KEvoqsX8e8ufcn5WC0NDxcLz8MS865LHzjVRSoQwR2B4G48eq7w+y55y5tNu9eLXzzw1i5Iy5kp8e++Szej69jKOwLWa+4Py+KXgVVikm3NuQ2rR5M+ym+zjSf8j2Cwy93er9SELXm/DtkMRCR7x1/wEGOFeaTPobz+SrSzi/hCQY6REAE9jgBCc89/gBVfREQARG4XQITPzqZB/cZ9H0fKApspjKbVmlZJQVoXWXcpzsvjbQFAABAAElEQVR2oe2SFxxeaC4u6WKcKrecoLUz2JkP65ivw2LzMwR9H2L0B2MfzzeheaPcPHz57KVLMNWtIT52irgAR4cI7DICZzlq+vz5CarFc+3sc9nKSv/wSn9UDEtM/PRF8V7tw/P4aeZTGCJ7AmJxicKSds80eCC9IGlppfQOpSbO3p3uHZq6iMBUacB2DuEZHsSY3k/7PP+JeetDBERABPY4AQnPPf4AVX0REAERuG0CdXMSC/58Nu/lD/bLAn1bzNFEf3i+ezzLkxaYdJi7XXRCeXIFWywLBN2J+Z2wfMLSuTEJ2VtNzP6ld8X/HYvJTweLcW1xZWW0fGkFwTpEYG8R+Ob5rP7Wi2vXs+zBzfHK6i+w+uz5DT/5t2pX1q5fPYclcZc4x5MrMRUQoBSffJ9owZz+SjNtMvySLp36TF+yNjYyKpHDGVg+n4YxlYt/6RABERCBPU9AwnPPP0I1QAREQARujwA6s4voF9+PJVSP4sTkzHZooGWzRWZuyzh1pbf0pREdq3xiqRUIUOxEgflwmMLpLyLbf4FFWv7SNfWPn/jc8nuYvzlfyLZ8dSsCu5sAvuYRQ8KxgtUlrmK1+fufORyKSfhO1cN4gZgdwQ83JxEHUz6x9yeHAVCETpuUrji0lkE8bJitXc1imT8UKFfLxetUuIDhvTnnlWZp1SaLrw8REAER2LsE0P/QIQIiIAIicJAIQGkOsE/gMWxQcsg3TR6wHYRtB8KusvWD297xHBR2lGed5bkAXGLOZtbr9eFWWAS0WRtPJq8jz39c5P4vivrYskTnVl662/sE+mfWYLrv/euyV/0ZVq/9GRbN2oCdEyPMIThNdFJ8bm8nLaHptBdtqjnbC44mwH8UntX/z96bBtl13XdiZ7v3bb0AjW4sTYAASXABIIIEIYoCRdmQR5MZT1VS+UJVPqXKNVVRYtmqlGONx5/cqkommUwsu+RlSk5Sk4w/DVlJVSply7bGEWSJokQSXEAC3EASS2PtRu/d793lnJPf/9z3Go29G+jX/R74P8B9dzv33PP/nXuB87v/TWtplKzAc7oX5rsU0JcLI8AIMAJdjwATz64fQhaAEWAEGIGVIYDAKAZRMyvaI0eJcwjUickwmgjkktbN5dpWiyAp4RgqBhPCxYk1GeuSn6fPoQ6qI7PKZOaSC1ODl6/89smT5CO3OMW+tk3eYwS6E4ERaD//9aeT0zCrvZTm9kKW28t4/pGLljSdrTdo8QVZlpDQloYrHfyl8yyXSNeCDC6mWtYmwgvUanRZbXElRoARYAQ6EQEmnp04KtwnRoARYATaiADyEJI3JtJoIlk9JrREOCknISVEWTq7DRpOmvGCmBYmgmEnkE7ab9JPIpwih49nDjUntpNc+ER5lf7BEYGMkUw62ziU3PQ6IzCb5GkjyS6DfJ7Da0Baz0A8C/K53M7Re4c/4eXDu5RlIksS0ptGJROX46gUvfwiXtHlNsf1GAFGgBHoUASYeHbowHC3GAFGgBFoBwJEHaHt1EZ6ygIBg76rhLNgl02q2Jzl0lw4sFHij4uaTjoZdJ6hi0RCSeOJowswM7yACfi4RkShZkuhDv8wAvcjApE0ifPqPHLZnsYLMndVxuIFovfn+qWoQ0epFGeLN4r2ERkX76RWCimOEC/XCwNT22h0dHv83cNIjsuFEWAEGIEuRoCJZxcPHnedEWAEGIGVIIDJrRQjI/AdUwr+Y8ikgokt7PtookslTIGDarPQwBRHmndokk5KGREmycV8eTFYCmbLmCbLWZDTU1DdnE8cUnhyYQTucwQyVU5KPbXRuFL6TGk123x9wqtT+HNik1688PIVYNDb1doKFZt75GdN75YxRpRKMcgnXk5nFUJOx8mcKotTuzggZBMrXjECjEB3IsD/iHXnuHGvGQFGgBFYMQLfPXxY9x3/26hPuVg6KD4p7WCzFLkHi51WHsLW9DgQTTpFs2dMjQP5bJ4spsp0mI6LhlJ6TMt8ymtF0T+5MAL3NQKVDbVM5emEdtll5Xy9eEUKg9urgtN7g4IV+XHSXkE+C7Pc4lXC+xOq4Vqyf6c6VD+EyPXluJz3qDSld6qBhQsjwAgwAl2JABPPrhw27jQjwAgwAitHoC9JosaErfZ5ZPCUToVJrS+ynCzVwhDxDBPo625B82LS6BRLi3Ji8lzMmGlSnehIToPXzjUUJfbkwgjc3whEbj6XiZlBNtxJvDPJorREGrET3qPALOl9oZeHjheEs1mjIKL0cmErvEqODNeLenDHVoiaW6nlrjfvLy1QLS6MACPACHQrAotfu7tVAO43I8AIMAKMwPIQMM5FcT3rgdKljJkt/v2nWXCY8YZJcmsiHCbMzSPUMtVYXFD/6h/y7cS5Yj5Nl+cwuV1QkW7IGGnvuTAC9zkCZqzsUmlTPO2kicTHliVhhcKrhZ+wLt6uFhyBiy4hoFevorerKPRqkvITdUvIE1qTPkV2FS6MACPACHQvAkw8u3fsuOeMACPACKwIgbSSI9296QFRLCGUbVOtSVPeYqobCGfYDFtoG2eubi4STKrSWlAllObKwgy3IZRL5Jxm4llAw7/3MQJbSyWPnCfWK4kIzqSvbL0ZV9dBv9ncbX7nASLNNya8ffSehVrF+7YEL9RCkCERxU6W4yRmK7Ul2PAmI8AIdB8CTDy7b8y4x4wAI8AI3BUCPs1gXpshjafCXLaYCRf+mrR9fVl6rNBxUo1wFWbD4eySNc2jEQsFVoESmVWk60HY3Otb5H1G4H5D4AQEyjSSBxWssxAP/JNoZPMtuVHk8DWHDuOlWbIUh+lYUYLG01FT8JiW3mi3eGGrCq8ZAUaAEegqBJh4dtVwcWcZAUaAEbh7BHpwqUOwEi/ADzExLoz6bsYPW5Pmm62vI52L3SkmzNQwTcIXD/MGI/A5QAAphBYZI20QaQzrG2RvVltqSrBYEy8OGdZiv3UtRcaF7QBWXpkl97ihWT7ACDACjEAXIMDEswsGibvICDACjMBqIJBYJ8lJrPiHn2bGoJ6Y4V7LEpfu0fbV/UBUW/PmZoda02SaKuOPR2pQ72DHuxr95TYYgW5AIMJ7det+Ln0Viu1FWomXb+mbsqgnbb6TxbuFlnEC+TxlyhrPW8PMZxgBRqArEGDi2RXDxJ1kBBgBRmB1EFCk8QQ1DKQTTdJUuEU+C2IZjtz8ZmF63ZoeFxodaoAmz6ogntSW1zKmRrgwAvc9AgNJEgghJlNXeSIRx/CutMS/8Z1arBw+17Tq3bgmkoo/+JRzbYs31uQjjAAjwAh0PgJMPDt/jLiHjAAjwAisGgLWG0lRf5CwAeGFlhjdEnvE0iKfdK41XW4dKzpRcMowccYm/SfSnBxjrYRx2ussXLpqfeaGGIGOReBR9KwmRKrofWp+yMGh8O7cQD6vkwKV6LVbWhbbuObawGqlZvK5FCreZgQYgS5EgIlnFw4ad5kRYAQYgbtBIHIVaQ0myEUUoKupUGjCvJR0BvoJuknHaGbcnB23XDdpThwON9eYc4vmAlPbgnT2IuDK3fSRr2EEug2BDLGcqc+OHv7wLmEnHCn2lytPaIWi21IbuKj1AtEbuNSHdLntcT1GgBFgBDoNASaenTYi3B9GgBFgBNqFADQzrUSAYWKLCW7QfoJFUsr6xQlvmDy3pr5Lpr/oV4tw0n8eYRsXtdaI7YkGtTDs49muEVzVdonQjIwI9dKLL2par2rjn7PG8B7Ra3D1HQrbxTsUPt4s4lEcC7SSyCktSwqdXXoM+6GWFFrmrPFcghRvMgKMQDciwP/RdOOocZ8ZAUaAEbgLBFIEQbHBxxOTZCKXaKPQdLbWLfJZTI6vajvDdPjqXJlmw2Eh0tnSduIYzb5Ry4J4XrqL/vEla4cADZ8YEXLb+YN6dHQ03vb/HkSKHS53g0AVF12TYBMvR0E2r1uHl4buQO/TkqX5LhYU8+oZqlm8ZxRcyMtSiY5wYQQYAUagexG45t/K7hWDe84IMAKMACOwHARoAht0WyCJgXzS/BezWyKQYbIcGMnSlqhCUUj10tprMVcyqKXtYoHPJxIOturzuvMQ+OPnNm9Br7b8hfB95b8RvWV3WkdSa2V0/d+/8PBCouyVuo/Gk+nZhd89dmmhxYk6T5LO6VHqXPC/RBohPPz4E94A2sK7cUM36YW5OapUv3VNyKqy5FoYEyhLcb24MAKMACPQxQgw8eziweOuMwKMACOwUgScNtJbTGBpCtua5WJdkM6CfIZTOHazWW5BK4szrUi2dKzQdmLLNtvl/11WOjRrUh8j/Kj07le0UA/hIdgFlmSUy5TXatJJNwEH4Dczl79RqvSOvvzipYZ4OYzomvStW2+SIc1JSeN1Ibt1Kng96NUKZXGjdaB5Lrxkt6pSvF/Fb6iD14s+E3FhBBgBRqC7EeCpQXePH/eeEWAEGIFlI2CgmYHShHLSQ6HSDGJCE2NMaYk80tQ2rKlFmuY2J81X587F3JfqhAq0vnry+h2q1NVlBArcgV/fHU3US1EpV5EvZUo3fFqPtmV7h4ayb7z8MtHsbijyj57esNP5/CFj0+eh8n4BsZ92GCG3e4/sN3guhMxmfCanocGuVq2o5qLx2ujo9itejDYw6teM8nIEHjl82OwUp8yCqJlUzJtpMZ9vm30wuXD0qB0pXIuX00zH15mo57LiynifErxXOb1BTbSKd4UEaL1XxQk63npxWuubibnkenotvVCayefNgOJjjAAj0EUIMPHsosHirjICjAAjcK8IkI8nCAeaCeGBsL46wb2hbZwqzAavngkmtou7dG3r+hVzk8VWOnXj/MGDus81aiVh+zKR9atGHsmoMjVgp6dHR5M59LveqX1f0i85EohL/iWs/gtp3YMl6XZEUlUiKSukorbwyhUWeXCs7/VSlhD4eKcRPq0Ic+y7h0Umjoh8SXvL2tw2Oxs3NvX1LDSmayJ3tZLTc3nvmfFtBw8m/uhR4mL3zQOTlbwsZ16plsYzkE982AFSLdJZ+HzSu4KjQfJwNuw3jy7iSvvhWHMDKwrXJXMmnosY8QYjwAh0JwJMPLtz3LjXjAAjwAisGIGMfNEwh21OZDG5LQIDUUM0x11KBcLcuHW8eaLQdFLFZtVwEbbDXJp82kBiQkvdGadm5LAwu+u7q9Nuot96N6jEB4N6orSxJ1L9UG32Yd4fifnJaYRPmoycu/xv98eXbVq68FsfzF4pUOm83391oGewIsUgyOTT6N2XIyn6Iumrisgm5ejA4GmKaexyTSNopI6cMgPQgT6eKfvwhvrmsy+9eHn8G8s0uf3jL9S26Czdof0Hg/FsPFCSsgcmvDUn7Jycya/k+fGpP3wimv6ftBmrJvVL3z4pks5DbWU9MjC1JWJI7xO9I8HfOTRRkE/apHM3luZbRtfgNPlL0xGq2aoN7OidkkjVctWU98aG+AgjwAgwAl2BABPPrhgm7iQjwAgwAveOQAVNpBphSnLMZL0LE91ikovf5hy4NeElTU1rFhzqNM9TL8ImXYKNoMkhB08oUCluUTFl7hYLVJLmatk2OxzPlBe2Sasel0n2ZciyT5l0g85Fb0lL8DWvcm8Tm+ezCBB8CsFe3ldR40dooWOJZ1mrh6xyz1W93BcJuSESLo5Ic+bwkQAL8RkEhILxK5FPSCJVBH9FlUq1s+79sypWGNl9k0IcX9agGmsfRxv/mbPukcglW9B2GY9J5LxHUGW/gJucl1qektb+Mi9Blyq6n3hCBiEsQMNDEfCEwK03odgKNfDTOkrrVgFjpU0MSetoqIWXiwzjyQgatJaGB21zYQQYAUaguxFg4tnd48e9ZwQYAUZg2QiQSaDMigksgshgRlsQD8x6r2mjNQEOM+HFU4tHQ91wuHnIQ1XjMTOmabcDmRHQoXVbIa7wlyXbkzaSPQDmkNfiOaz3KOdq8IcsR5j4a1AAA8ZmhWtAd7zVKrnBi+ji//Z8bXzBqslv/3JiptPkjpV/wEv1JZjO7oy9LyO0FGQAz8THAofxD6o2oktYVPiAAN2aCPq1PuvVNoxr//zY/B05z0tff7i/kdqBfPrKfm/zLwOrh7R3A+BO4LngtrgZvnbkAPEyvBW3OwAJPn/5jw7aT6YbC1dGjou007BbTn/6klw6fJNoaTyLKM+FIXsgmqTKRCFt8rVvUKt1epOIdGJND+F1tehbjgUrdRpaz+tPtprgNSPACDACXYIAE88uGSjuJiPACDACq4EAPPnIurKYJ9MklzQtYUZME+BbFJr9Lj3d3KXDdClNqmmbpsiBc+ZEPiM60BWF5vtHDh/Wcu7oRpPZLyGKy9dNrLaBi/XnqTUiy1UJ4kSwU4ak2pEWz/thEG2VaX1uzkX1XiHehLAdRzyrUg1hbPYisNQWEMEwPJpoJC00fjgGWQQdMyF8jRfQ6uIDglfQuEGBiS8UyxhKkM5hpOo5WI7jZ2B6utOJfMDZPJYwQ8V9yEwUQYy8inQ0VDZRTyZUYyp3jUxE1f5ow2tCTHUl8aQHXENGhTegCWl4J/CgBHwXXxtgTRYC4TWhi64pRS06R2a64WWj+sUWWsYffBuAxvjml1/TFu8wAowAI9C5CDDx7Nyx4Z4xAowAI7CqCDR9PNFmc1ZbTJFvNyO+9f2bU+DW5LiYJnfnvPgv94uqvXJ0hxTZQaPkk/CC3Q3dbRlaqBhsidgAeBrIWRE8hkg74jPJHuiLN6fWP+6dvZJ7cRpgfXxrwNb2zI8RVfat5GRk3OyA8+4BKBh7QDLDABUECFIEdlSMIOnjoNSFlKRfC9VSGGPPOq0aJNidSlpPh6AZ3l9Rfncs9UYELCrnRGoDfcLVANVQyhElK7DxruDTxO6y1ilIm10Qcn7k8epnwiyMd6PmMwchLNHHHAKRRF0CFhFJMkcnlJceX1Ll6iZVonJdRRzGU0gRc4nacmEEGAFGoHsRYOLZvWPHPWcEGAFGYMUIhHgyN0xtV9zMTS+gCfJNT3T4wURUNiqbHlZa/ZrW6nGlfBW5LKHAs0LDathAHehgSpzDqRMK4+AXCTZBPq1wmRTbEP7lESV9fyeJeUKMlWtG94qG64emsw8DEwdLTZBB+F+i+7QUTIl4JskHLSdcFYnfgGhLOaNUPAoj2SkxhthAdygur29AuKJHERJ3q9Ig5lDRUZaWFvWU8CMFvtiHXhzm2OChgxUdHwBZ1Ym1plQyvxC+/5dCTHeh5rMM4+Q6sfbi+8sdsLqb0/TeduXLdTfC8jWMACNw3yLAxPO+HVoWjBFgBBiBmyPQTr0JTZCDaWZLe3PzLqz7USLJf7l/S9VFja3auie9cYdAgp4BNxqSyoM4kQ8k7EOJiEEkcocEXwvMOhwhN0iPIMFe9SqvBqA9LK+7UEs6UBXzg0LbXYgltUVYW0KIIMT5Qc8huIdcYWMJk2lpJiFznjuL5CDyCujjadSb2LsXgYWOL2n8JpsW8qO5AZiD9mIbEXKJcoa7FNo+ulcIYoQ7BT9gWdXCVkHknyjDIVSDmfrIp//L8xs+mYs3XBo5cqpxk9t05CETQ0ecNPXEbeqhLmIPt6l1bpYRYAQYgbVBgInn2uDMd2EEGAFGYN0RoLQPDgkziHQt4Ryr2i8KK0S5Qle10VVujOR/+cUXlT37oyGdil8D5/mVslFPgRdtldLGoJxwSARBogWVYXyKHtBCstGmDJpPuHuCkUK/J5VBvXby+XDvFfxIbfOd6P1XMdA7EdgH8qDPWFqS0JoehJaOOkS2hQQIDtVIcjeDmLcXIhd95kx1/MWXg6LytrfXCtQWt7AuU2maoV2k/qSgU7gKtw83Iq0nPRlESoWl1KCUvsVsqmrzVGZkbc75QUQc+llN1P8eJ7uCeM6kTg6U4O3bVB6TpG0ocI9FULDiHm1onptkBBgBRmBtEGDiuTY4810YAUaAEegABGASiMCi7ewIGXC2s/17afulF4UeGxuq/Gnm+3pO/Whz5LK9IMpfBR96FhRyK3RuNTKvJapJFI2YJCnpyEQ1ECjs09y/iPFCPMtYELYZiHwFOx1FlGza2IbuPgPGMoyYq8Gdk9hLUcjVEttEBLEiekjrZpnC9hnv8/O9ycTEt16fqP9O68zt1kYvwFR3DNduxrofkXaaXzjoXkRycQ/cnwIZFc6QtMZxKatQxlZxWJeUqGBSkss8m/jT5zd8UIPm8zc6XPNJIM/jQwueo7Y+95SAF2mQuDACjAAj0NUIMPHs6uHjzjMCjAAjsDIEFDkporRllgwuATJB0T3llrbcYGWyXl978tPh0nwp31JN88d9nr2Azj4TSfewFm4rSFGZNJ3IN4nfgoiRFtDAyZPW5JeICK9gaURDg3IPx1UCjedZpfX70qmJ6++3XvvEIf/XRmMI47AHFpqDMeyFLTSMtNDgaMiDgLxCRYhgi6hI5LvqaIEi0mk9ZuLyu+A558b1LNnkLqskub0CY9P3SlL2SWO2QbtaCkyJHgg8C8R584x0x+Q/SpwX9w+KVETQpQ4L2YtePZwjGyauiK0zP1sQ83+P4bjUVNQuqx/rUYmCCyHMceDR7bh/eOSo4bgdrXObjAAjwAisHQJMPNcOa74TI8AIMAKdgQBxpzYWYg6zFFmmw4pDns6NVj0OLdshaKi+gvwU+5S2PTCrLZE/J/2hQh0nbWcgmYEV0RFQMVwU3DqdcZlTGXw8J5Gc8kMw0HdgcDtOl6x3+d6h7ZU/q/pqbWJ2CLrZbfhPHopEMDuwN8rVSRpHT86qZAZLyt1A+qjXiHkL7gRr2UuRid5BNNtz2ycoP87ySj23lyOl3kLLm0Fv96C9EtKzIEiwA7/HTbAAvlAKbTJi6ALWcHvypRWqFNM1Qj+USxUpsP902s/+0Rf6Tvzg4Mz5bx4VC8vrydrXgkMr0p2Aagfz4fbcH+MGhXXx0ag9d+BWGQFGgBFoPwJMPNuPMd+BEWAEGIHPBQJEz4jidKKw1K//kNsNmVRfBgn6Ne3sTu2yXij+DMLXLva8RYaIeJL20+ZFkBylI6EN/ZeJQLZe2zQR01nqRqV07xhhXpvLG9MdILc0Jb8Jytnt5XJMeTsrJs+1z/OgudVxLBJ0vJHmhdkrXDEVRKLIvchC6RVYOIIKXbAgnnGpNCr2XrljUKGWzLWsdCExbiG19e2Zd4cqkapprWvQomoPQkZ5QnEsEF+KoFsU0ixDC4rdItMKKknRG0u1K4X6NLN+o1HuSJJV/sr7er0TNZ8zmQW1Rmex4HFpy7NPzy4gokeTCyPACDACXY0AE8+uHj7uPCPACDACnYMATZChVJPKRpgjE5nrjPKDg8PVf6fs1pJwTxnnngL9eRxatx74OSLFSNHPYCPc6m5zhk8GtYXiFoTIEzszsEjV4ENyCuTqeOLdGzh//FvHR8+1Ll3PNUnyvxsz5J3bo7TYbHJE53UWijgifuRrSelHidtBFKocfrAi8ZyoO6XmYAh7sWTi02KDn1xOUKGWvN86PjaH7bnvP2E+gHbuDaSgyREa9xF0oApFMsU1ktAMFrcEiyKTW1IrUzeCRhS9ampmSzhRgpetjhRS1DiRZEKe/+MDZfO9Q41Lv/OqqLfu2RnrLehGgo8RSKfSnkLW0eQP267229NrbpURYAQYgZsgwMTzJqDwIUaAEWAE7kcEMrAk0jy1rRCpwQQZOUY6apJcEWIQKTx+Db36VfhzPg5NYC+xMNhHgvggCyep3Ki0eh3YEO3Dx9NEqEPZVbTIU28X8nSmkbvPIOJfa6f/oxF5R5BO6v530ePHNNxrlX7S1e2WJKlLnVt4TYLGQbtJLI+IdkyaRw1NLsxtySCa7GkzL6YauTgLQngxnp6fE5smU5wiJFZUbGROwn/0/4Yec7ZhbV8s/NZYqwoYp7QJ7gmyS/lCye42hGklzPFMBnUh9Q8aUFLvxUJVEDR4CHz56dy6HLbNG1VS/ZEQCx1GPCFKBDNYsOMVAbWCyoCMAgLT0LXtHivoDldlBBgBRuCuEWDiedfQ8YWMACPACHQfApjzt3XyisaLPJ5EdNa5kKZTl/yQS9OnpHPPg9w8q4TdigXWnOhckx+HVRMVYlphoYNBPUgMyYCbygW4Rk6kaX5yPs3e0s69+t+dzt9ZZxEXb//Si/vidC4py2R+Bzjek4gkhPydMKklrSa+BpAPqwUBFXCehHlxoeXEmmgejpL74Gju5OvQ5n52cXay8e2Xl+/fudgJbOTb+i+Zernu6+O9mbWboercCxvendDCVr2l/KhAlXg+kU2sCOtWCcyq+REA2mgDwmrwgWAHGDAscVWWaXv5D5+tmNlafWzkSOdEEab0QZRMhjhzS5bVXNOTSANEjywXRoARYAS6GQEmnt08etx3RoARYAQ6CwFwCmi2QC5A19a9RKqxyWf6a1BXvqBseoCC7SCoToXMasG1QH6atIcIJijQIgmifRBPTxpRqAQRBgepLeW5VMj3VWR+BEfJV32pMirE7LrL2OyAvDwx1RvZaKiSpQ+DFO8lra6GeltDs6khB5kNE7Ejj1XSOBL3I8UjgiPlyAmTgo1+AD/Wv4q1/LjncSTuOHl3os2nl5K+fPuUNfJto6I6CO/hTLh/gsjAw5ERNeWgOg7wEhku7kErGgEqgSiDfNIDZDAO8DntqSm9IzHiixbMP8vEQP9s9cfQfF4orvh8/JIfbg7y+fmQlqVkBBiB+xUBJp7368iyXIwAI8AI3A4BmsI2J/63q7bsc0vai3DRTL5+k+R/s39LrRQ1tsJEcz+sSpE2xT4HNdt25fO+QDDD9J2EB0NuqpHCHv3gHCkJSSUI4umQOhHGqmIS4hyHrvAVE5mf/4tT09B0doBKF92kQt39iwU/pEz6uMzznfDr3KrAmOFn2TRhRQ36W6xCfSJ9gXgKWbdCT4LgndKV/nd7HPl2ThMvvasCTSQgG83//X+y5cy0j6f1/HRZWrUpdnYfTGd3Ac4ehNOFs+ki1wwb6E7oV3FTUssXqlGIEON5imEl/lDspcFwEUk+92+e77E7p+emvnEc++tY5ges7KkjuFAbNZLAhlKwhqd2HUXlWzMCjAAjcM8IMPG8Zwi5AUaAEWAEugcB+kefJrL0dzVnsq3WaIJMpofriUit1NgC58V/Btb1ghTZXg3SqY2tkkdnMDvFGrlDQheJdyIkaSBhIRMjuk5hbgLxdME7cib17jRq/8Q6+SPrkkvrKdvN7v1diPCAy3fo1D+HCL074JUKB1YoDTEKZEdrEUWWNJ6UPzOMO9g22bvSKDklppD+5DN4gl6q5PDtfHDirnw7r+/Xp6T5TLZPKh+9Y1XaKHk9BvL+j5GyZjtMnUE+4TjbLM1uBS0sHQoKZxordJ50szQ+kVQ9VW125lrtbygxZpyOLtd634LW+UqrnfVaw3qZukxxbYkvt6XgS0CAqS2Nc6OMACPACKwRAov/8K/R/fg2jAAjwAgwAuuIQOEr1qKJq96RMAEnU9tVb3kZDX7vkKj42cogbEn3a6W+giBHyNdpB0A8a4rYQTA0LUhn0GqizRYSyDYJjSB1Gws0nVhg2aim4fN4MvfqKDSCb33z3SsfLKMba1rlpReFnh/bFZn6/HZ0/QD+U98KM1uSBnJAViyUFoYINx0jEaGfC0GFaA0ZryDFzMcIO3VxYuNEcre+ndcL3dJ8jhweOmuSeKaq8lh7uVGDuVufPwIS3IOuINBtAD1cHrTPNAShUN/RV/qSgWOojxyfFhFvxSMlr+YM8uEg5crc9w/0qIl0bnpknTSfQ+hQEoMjJ/TgcGEEGAFGgBG4HQJMPG+HDp9jBBgBRoARWDYCNPMGWWhxuWVft1oV9UxlCCFYfgUc64WyFntAODeBhMUKUV+UhOqP9GdYBW0ncbGiv9igLaJlRE1JL6oQJsbMeKVPwRb3x0ij8jOh8jOr1c/VbGd0dHtsTKNnKFIPaO/36Fz0k7wI5iMy0uq2IvaSrACGbGjxYYCCCsEmFjF+pRqDfvQ9VLtQuhxOr2b30NZYI0+HXR6LY7hrA5R+EqS+B+OCeMECAYcD+SzIJfwYw1DgYOg6DRkKaWpJHrI31coPKBMfQBBZk+NEYnStR/XC9Hl2vKi99r+k4S/0yc0Or3YX8GDCHbl4QFe7bW6PEWAEGIE1RICJ5xqCzbdiBBgBRuD+RoDmxqB4NElew/LSoe0Vmy8Mzrv8SQSgeV5J9yVQqu0gnlUKNUo0C/ozsJdCi0ablFiSzGxpO9AtMj8Fu3ReLkDDOYFAqp8iLcm7VkcIJFR+Wyxk03D1pCs6pqDr8k9VY6Oy5gHps+0wSd3q4T9JJC2oCyFcQeTwLaCwKQ7aT0IEZq8WxNRa6S87Ld/HmF0afBhIHF1d8QrN5/kcfrdn+yI5HfmkApy3xEomeFp2gubXMABkFRzsnamfLfJJQ0PjA76MOFAgndjFuua9q4EoOwNujeBISiqTf+/QppMbS71XfuPIqcbqSnDn1kD4QzaYgiLftXvsnW/ENRgBRoAR6HIEmHh2+QBy9xkBRoAR6CQEiN9QcKH+teyUdkNQgP1qJffPwy3zi1LYnVBtIk5OQcCCqgjaMgpiC41bIJ0xwoRSXxGACGlGQG4UqKowDev86cSK40baI1KaN63JLszn0dRM72OIJnR+LaW6471eflEo/Yl+EFT/uVTlOyORG2VzxBWyggILRZCRtLsgaiRgkxcBDeCQO5c2cr8AQM67RH6s+qMrL77cDo1nIcb8wKVEJ9unaiJ5J7Ky4bS/hBBDv44OPgANbRWZOmE8S58tEM0WMxMin0HTicup+woHDOTBJsYMcXK9HIi8OoAzvbk2g9j+xVw291OcXpdBomepnYXaJ9m5MAKMACPQzQgw8ezm0eO+MwKMACOwQgQwgQftaE9BwxLBaiTIW1BgtecuQpBfI5mY1lJXk/nsQGNh4QtG+19Rwj1rpHsQGs6NFlrOQDypE9SxJWsioEF7BjIDH06cl/Dn1AswyL0Alec7cEJ8FZP8n/7Xx6+cKGSYwGq02Oyg3xNjQu5Q/gFQkmdAtIe9yOEzCe1uc4iDzTO2Q/Ak9JsGHr6q+EV4HycQNMlf8lZe6JueuvQbb4nGt9ooW6H5HM2RW/VMPcqmpEljqDI3I9doAia8E73qAbOiVCuIe4SegmnRB4PQZ9rFWAW1KLY9Oo8qtViKGhSeFeldTy6synIx8a+/MijqUc/EyBppPueyXCo87/ClDY9YuyCE2G1tv1395nYZAUaAEViKABPPpWjwNiPACDACnwMEMLen+fzqF0yNwXxCmUcI2NW/QdHiiU+HS73KbfIueSwS8isgLweETR+Fie02aMtqRX7OoiNBc0bKPuwGrRTZmULll2fk5QiqCr7gvGpkuT8FInYMZPXvkP/ytbrSHRe99no8t80KWYK2F8FUn1BKbCKiFkg1yQRz2zTFPsmOhUg45fD0GoiRttepS87Kt0G8z5+uZWumTLvQez5FtNvpsmocg6Y5AS2+aL36J5EUO6JI1QwcauHHSZ8NgiaajKSpFCQU3cQuEVPKx6LxGCPgEPxF1UOp8Dl8ViVCQm3qc7Ok+TwXLlyDH3RXeqLM9GxxYQQYAUaAEbglAkw8bwkNn2AEGAFGgBFYKQLgBMFNb6XXraT+hiTvhU3pY9CtHoLP3z8C4dwLI8xe+HSWSJNJ5KTFpEjBRwy4WGgHFAYnERAG/BOGqFLnCLAzAU3new3rX8H5o795bPbDlfRnPep+f/fuko4v1+CVuhm88kEosntIcJKTfsjE1mEJO+EgjmGXxA4KaQ3Cp5HqxMM0ddMiXG0XpaX5/N6h7WesmpocaCitpN+khEqRBuYhMOJe9BJuk8Qv0dmgsS36Tqa4VFqpYYiMgpiWwPgo2q3IpYyJeiepvfSvDvSkF2bnZv7kpEjoXLsLdRO9bCK9yncLX0xWuU1ujhFgBBiBdUCA/zlbB9D5lowAI8AI3I8ItGfWfQ1ScmREqFjMb9Eu+1rk8q/DF/PhWLueUqxMZPBfGpFOEBQN0hVh24ALaFK+WiKcFLEW1FQZMC3oyoTOU6FgcqpPIwHJz+B7+ON6ZNbFR/AaKe+wA7GkK89syBvlHd7mm71L+yF0iayoSasJu+HANzU+LYegQrSLDQN1MMicT/IMf+xFRPA9JmN1XhxeO+LZEm379tF0MB6cAV97F+PxH5AB5u8yq0ZTKxcQMchaUiFCAA0NrTYxBNACVq0YQ+T0jLSIjYZ2HRpPaHZLkLkiXE/Fu50lbw9okR9G0KSDW8u1Da37tXNNUW0pTVG77kH0u1DXt+sO3C4jwAgwAmuDAGs81wZnvgsjwAgwAp8HBMiylSwhA99ZbYHhH1iJ/qqxKVc5NJzii/D522+Uq0HTGZM5KRVKlwJ2FcxLAxPAPmXwJC0nUq2gYzDmhFbMSQslp5hGBNtPkJrjLeSzfPuff9j5mk6SkYIK9Z3JNwmrH/U+3wLhKiGAEGkI8YeKBx7goYGIk+y0TXiAIJHgGXbHRVT+ZF5mV/5gRPgRnFvL8o2XyTD1lIXm9mxvTz7u3HSUi3ybyxEaSdpdSsseqRQi1sJDlb4noMMFrSY5iIdBUhykYaf0MThUKglVwqFHMinqSHDisrKc/f0DPW6uzZpPimpLmvZ2MU+SER8UpIvaR27Xcuz5XowAI/D5RYCJ5+d37FlyRoARYAS6CgGr7FaXi8PlyHw1VvYh+JPWQCENdHwizSEKES0inVjRQmQrg/aTAggR6SQ2ShpPp3SeOzWXK3cK536USf1T79MzuKQryhCCCtVlNCxMfkDlYiuC6xSkrMn4QdrIlpgCCBU44HMA+Xx6HIP8sEg1daAxV4sbU3313XUpJgi5dSlbD5zMxYl9C0lp4n1oof+vLMuvgJL+M/TvQaMUmU7DIxVjCRk0NJ0QRKTwzw0jiV5jZPGxAZ8WMMbQfJP/6gb87MNDofBVQcKjtQ+azzeFmG+Lz249t7JqIulsLj2MttsFImHAE7Z2ocvtMgKMwFohwP+OrRXSfB9GgBFgBDoEAfCRQEja0R1QG0y+V3f+/YODolrOKxudTfch4+MLCCrzLCwttyJZSEykw4KMgH8savVILuoBkRFawDQD6YRpKawidR20ZTJT8ox1+i0c+NnFzB8dSB6YF+JkOyBZ7Tbl2Ng+JXouEuHcBwGHEFYV4oOAQd3XImnBlxXMmzSFYTSIWhJBk2oWIWIvY28ivzi98JsnjyJNzPqVQvN53MLn89wGk08n040YggzD8ZNcVB+AuXQN6j6QT/Qcw0jjjFytWINZYp9kI82nAOfThINX1Ui4Kj4oqApO0cgj5lBj5EBVi8mFiZFTYlXzfA7g/qRkL557bLShQLwwhG1omptkBBgBRmBNEWDiuaZw880YAUaAEVg/BCIVTEyJgtD8vSsK+in/Iunf5oz7Knz3DsVSHtDaDcOSsmxhYgnLzDArjwyIB0kErZ4seAmOwx+QfARBW1IQUJjV1lPk6YQp5nE0+w9K5G86EZ8ZSDbO/5Q0b13AO0fQ8cnypIltNght3yMwwNwYBKYRpb9YiLEFc9SQCJPMjLEH6gLDVYp6e9E5+zaaOVeCZ2inPATk8zk/tmtWRfPHKTqtVP5i4t0/ck7uRKerkIocVCEXxpsIKArMaSEG/gbRQf1sHlKtwD5XxFL390m9N9WysiDcxjxzv9S1yj8IUT9TXL26v80urW6j3BojwAgwAvcZAkw877MBZXEYAUaAEeh2BEKezle3x5t6pqv/p0k3VFX6NPRbvwreBL9O/yCSoPSRvx+l3CDjRjLDLFgnJAcJKRYcg7JLwfsOHngWgYUa4C0XcyfebQj/c5+rH3/7+GwzT+eVrlB2QjT554eHqmJWDCAS7BYIOgxaWSmYduBgYeiJfBZkjDAg0kkgBWtjp6wcRfCl18HQzm58HAAeDZes+0/L5/MH/+nwmXQqmlbzE3D1zPrQ+wZo6A5I0AcxSvDSpSi4Qa7Amkk0EhNCU35PIqYISUTktIq0OFWcqqW4Fja7MeLnjv/RwcFsQ2/P5G+sYp5PCi50VStJnaHSWhd7N+63jt9h3WyGOHf4sHKH6nyaEWAEGIFORoCJZyePDveNEWAEGIHPIQInTgxVSj1zgw3jHit5/SVwpqcQvXYPSMWwcq5MJqWLkVtJi4fJOZlbWszOye5RQbtpME0nHWiGY5n39UyJUav0MRhw/q306vU8ch0fvfb6oaegQv60H86VfVxpvQOY1KDd1SF4ECoTASMsaE14kAUypR4hzSAIOvxaBVxb5Wnv9C+k0+dOvEwxhjqrXJg9n25bGJ5egBm09tm4U+pLII5fg53tE0bKbdB8VuFPCQFJrY2+YwkykxgkP36QCBT0U2LsM+Kj1ZqQ22OtnrHS5Bb5Tmdmp3+K2m3RfFI3rpJMdCh0MgzIkuNU52bl+uEI+9QICtFO1qsGKPiHEWAEuhYBJp5dO3TccUaAEWAE7g4BmgYv68rl1bqmKWio7uKqa5oQ/W6+V0fRbpCI58Ahvg4L4ScQubYfmj3ka0TmxiapIk0eBdIhE1IKbEpcpDDHhIQKmk7wNJAtmzo3lQtzwmn1Ki557bfenmhqOq+9b6fvTX6KLJcq34York8id+UwtL8hfyXgCGSTCCdRE4wBLI6JeGIJB8A6hUjh4zqHU+fTWvmjJysTC998H/ysw0qR5/M8uitO0fJnz9ZmrUeQIchmla9BLGzjiQhaRjK9Jdnptyi0HZ4LjL7GQwEBY4Q8HsCzpHJEP0Y0Y3Bud+F7h/rmts/MzH3juACvbUe52qerRHQ596HXZ+m11+8vpw2uwwgwAoxAZyLAxLMzx4V7xQgwAoxAWxBAdoplEENMfFu1WusbenPtCRg6FteA6FA6TXcP0/lKWW72efYr8Nt8HiaSu8Are2Eri0ClNvj30bQcEW3D/Jz8OaHSC1pO6gOMb8E9gycgTiiber8AvddZHD0CY8UjjSy7gBNdWTY2hBwvJ5sxgk/ArHQw2HcifwyNaKAqWAc/Ttqj4SDiiU3SDmfKzKZSk+xTvZW+9CdHJjqOdN5sUBAj6CxG869hRZsuOL81Er5W8qoCsfA8QAQSvEk8PRxYg9IboY/DcTyHpCdEBhlg5KuxVA/AK/hJaMAveDj8TvfU3m1XtNtCltA56gF1sjhEm1wYAUaAEficIsDE83M68Cw2I8AIMAK3R6A5Ub5ppZvMnonoFDNshIaJvNsE5nnyphff8iCi10ZT5cGynF/YrpU/AI3ek0bJfnDlkqVUIGBYxDGoZ9CEhrsVznU4ArJJHUBUGpxAECUvyfVu1kLDlzlx3Nns6H/1zgyIRncWwma80l+LknQb9LuPQqc5QLa0UP0VBpjNIQlEHAjRmpAAIj5HpB4r1VjD6/dR7dIVcSofwbeBcLrDf37rtVk44Iorf36g3A+l9pMQrYpnYjv8OGsY6vA4NEVvPgJEPgtCCmfQ8KwgljHMcX2M4FSbnNcPgZw+q71cEFaee/FFMf7Sy4Gft5q5K0TQkSXX0xNKC5XWGqeX1CjOLf1depK2W9ctrcPbjAAjwAh0NwLF/0vdLQP3nhFgBBgBRqBDECCr17vNz5Hp3r4oE497rfcYLbfBvLbX+8x4+OoRT2rpamlKTr58ZH4Z/hMDk/A5aAn4htGgJMbAwlbNQtP5GXRffw/i9R+t8V3n09ka0hGImVR7NuSpfLBSih+sxtGDkdJ9pNGkQuwLuGOBbhACZwnSigQslDAmsiYuZVqZj1Mh/w6pLT8WR7qDdAbhmj+58qP47PA3+LDwE6nMRal0hrH2mnKqQFjfJJsSQJD5NWFCpsaEEeX8NETQ4RuqXd4XC/9YRYs9SAs69PXGcOm7h4NidOntVrSN4EdLWeOSa9GJZZXm5dc0Q8du0eyy2uRKjAAjwAh0HgKs8ey8MeEeMQKMACPQtQiA/t11qQvVJ519FJzyUZhIbgKlqIQIOUQ6m5Nw0uS1iFZLy0kRZGiSTqRXKxjhKj2Xpu6z1Pq3QEB/Wpf6zbRehuZsVVM43rWcK77wMBSbc9EWZIXZA26yC2lxhqDgBUQgVhCdlL1UaEX7lOYyAvkCFjin66Djc4Dl5HySvWalHBuhC7us1Od6L6vS3C96lInR9QchbAUazUHwTaTVKcYf1BvPRuHjSZyctOT03IAYho8UpB2HNrSCWMfb8RztRrChhyfGs/NDpaGLQozN3S0k9Fnk2skUjcRySWerKjq8OCqtjatt4MjVnbvtKF/HCDACjMA6I3Dtv5Xr3Bm+PSPACDACjEB7EXC31M6szn0VlE8gSN6SgeRKS0PVrFK7YBa6A/qqSggSQ0SiYFlEs4JWMxwnFR/+hpyVOB/BsVQh5oxEKFRov0ax+UOQj1dyJT/RC3p8Q/94l7JOIQZG4dLa5x+F/F/LhH0IZsiwQsZIgplDtSsysH2kMcUCogVcTEQBl4iXIqpvZsfmksan8PX81JbMJVGaWcCwtJjNSkdo3epv6BlvJGbgiqjXP0it+DHCLKVa2UMgluUivQqeBdJ84qEghkbKw+IjBRFwFcgnAQaXWGWdK6VePDAno8O4QM3k6gguuWviCY6PJ/AadeWq4tQinTkJx4URYAQYgS5GgIlnFw8ed50RYAQYgZUgYMDGUso3QmqgNpYMKqBesKOV3iL3uoR0KRu9UhvAoECfMNPGlJ7MakmVR1os2iTCRdP8cAP8YBfkgkwsUQuMDIxjRsfqQ2g93/VmduLbJwWRrW4scmTfvigtT/aWxPwj0OU+CxC2IVhOiBElwXig1AsRbImHA6pAPJvUC1WVyK29ON9I3gYtOyXeFFMjgbp3HxTfPCrwVE1k/+6J8iWr3Wcusg8hYFQCCK4+ziDh4fmgg8VmeE7IBLmFCQ7DARi0VagNoO67hVfn8fHijXDBXfzUjfYGbLadhaShZ5zE48IIMAKMQDcjQP+WcWEEGAFGgBH4HCBAKj9t26eZwQSZjB6hjoNu5i6Ki1TmpJkFe5pDxgxYhVKLaAiMk3pNfAKBZYI/46L/HjEu/AXJFEniwFtFBOa5Mc38YyCuj8eNWt9ddKUjLhkZETIqz21KI/sIzGthYit34D/tPvJZhHYXvqwaPpzQcOITcvBrBBakFHOUtNNJDzChJNVndGReEVF8+g8KNDtCtrvtRFSr9MalysOxKe0wRkPbCZkhL+UsDYVEbpreQvMuaAkfLWB/nKV5ML/VOkKOlVKC5ZKJShfLJronbbjF8+5d06632Q1eMQKMACPACNyIAGs8b8SEjzACjAAjcN8igNgzotSapK+ylMQRpQRLhInn3RRpo4bU4jK4xDi0lglUeEQhAvskDhoWMC/SfBaBdWBGSTamRDzJ5hT6Ttwe/6/5Dbh2T+z1hBV65vu7BxZK/RP1Qmt2Nz1bp2uOQNFl6kPKikdhSLwjkm5QQ1iIG7Ag1S8C1pKmNxyjXxqDZjoZC+aOpCHqvIh7jvXUkgnZrpSVawDPS/v2xeeic1VowJG/VD2KjxI7sC5TpOPiD4FSdCQQT2wXmk4cw1MELSfMbLGGLbaOtI10NB3J6LQx5TP4aHFvGnHoYvHkUTe4MAKMACPACNwGASaetwGHTzECjAAjwAisHAFoJu9qCu7L8TR41AmTZ1tBFJ4CSR42xCaQnFLCOLJgnpjfU+vNOwStKKrAtDaYIlr8Im1jv/bR07FWpYZE7FOjqirZ/IEQly+tXJr1u2JgdLdu9E0Mg14+ieBAQ8SxgwEzZM8zmB7DuZP8G4mQEyZEuEBDsUADqMyClzG0x+JKkiUT+eggggxNNVFbP5nu9s6z8cxgRZT25HnyZePzJ5122xGpuBzIZvjOAUIOja8DBkVQISKDhAbWeHTg/StKiHgM/+Es8WLOZ/asVvlR+MO+M10pTd1tv+g6imqL+3QttvciO1/LCDACjMBKEGDiuRK0uC4jwAgwAozAbRG4lwl4tnlgtjKffypn5x/MMzEGKrEDwYYqIJ1wTwW7wty+IFik3MJ+YFw4jHMS/5uBZ4RgQ6hTA0F7BBqxKvqTwtwSgU/99MiuXdN7nz2VfeNlcnTt/JIPNZSpuy0Qcw/kgLYTogZaSWTKwZzWBVNSMicl0kkmtgEfaEKhgZuzKroIjK78t//5hRk5MgX61X3lpReFPjG2K7JTjQeAwZcg37Nw430Ewg6S5psegUA+iXzTgh9igIQD6ctpm3ZgoI2Ix8FjeL7h3Kh19iMj6id++/ULn1GVeykEu8zpVnRXLowAI8AIMAK3QoCJ562Q4eOMACPACDACK0UgzPvBcPz4Sq+k+rO9qY0npjKHgC9CfghN5wDI407orfrIeZMoBWmviHRqDRoComHBPiiaKSb/RLZARGCMGhgIKjrbFyu5H+aoLoW6s7ppYfazY4OXhRifvZvurfU1dj5TFW03QaxdkLafiJRCqFbScob4OTgYCgFO4hLtochLsL2Fje3EgrUfwxX0yndHimrd+HvxzO5aVSdDKhZ7EcTnECYt+6D87qHvEKTtJkpJAZbI55cKHYPvZ0E6Ka8MDpMpMlVJHfSczp7LhfoJcrz+TFp9V4/pzXBs95cMfFiAxFwYAUaAEehuBJh4dvf4ce8ZAUaAEbhvEBg5coRcUPM//uLg+Uzpd8Eeeo2ELhNswghoPp0w5NtJpEODedFMnEhnIJ+0A9JBmlGKghuC23pRBet4CLvEy0715m7a92n//V/fnW7tOZl3sOYT0WxF1CPma+j6IEw5h8Gdq4E+kUExmZCSepcKVkHPRrvAhhKtwK+TYLpcT8VxmJ6O/QGqjFDdLiov7RPxZHljJRFzD1Sc3y29fdoIt98o/6AiX14i3aTZxSp8eAg4gJDjuWg9A8HklrACHrikgRQq45n1H6bevjot1JsloSfvFZKeyPjEZR4fBEjpzIURYAQYAUbgNggw8bwNOHyKEWAEGAFGYO0RqCfZ5UpU+gcr7ZUFEKiKUgegxdqrvRtEaFL4cHqRUTAhEE1EvwWxIPJFZrhgnzhMbAyniJfA7Q/GutIPQR36NZCS/sy5Sh0Kz9mZwbFO1XzCvFSdfb+yxWrxUM2IbVq6mnLWWAu9Gjl5BtIJGWkT0tJSCAzxITAkzoHDKavcq2luzobzVKeLylh1YEua+y/Eaf0pI0E6lXocUX0HoN8MnxHIfxO6X8hNg4zPEvi0gNCyQUJHOAEVioCMtc+xoO4FBFv6Sabkq6lVJ2pljfEfS1YDEmjTBeX+QZeYeq4GoNwGI8AI3LcIMPG8b4eWBWMEGAFGoDsR+P13p0kTNfmHz1YmQSbrWpm8YlQvTGdL0uUV5LE0ljK2gFcYmNxSUJlgb4mLSOtUzP6JfMI8F9wUIWf6sfcUcjb2Qic2VfJuzi/kduSwqIsjwo006WqnoHXihNAbIokAS24v/pPeGitfhokoNHtwJIRwRK9I4UcclNZEsql4kDCQrBxLHdicm62Yd+fmxDydChW64Aea3rgMTafM3cMlJZ6Hee2XsTwD8rlRQ8+rYGdLWGA8m9LQAOMZoN3w8QGElDKbYF/i2cBWDu3vQirl6cTIVxo6+nmpVDr/z19ZPXNrCi7UBdByFxkBRoARWHcEmHiu+xBwBxgBRoARYARuhkB5oWdyvjzzLmXBWEidirybRTKMvQgSM6gM5vr0l8xLw7SfCAgWIiREQEDP6JfijYKWCGU9AsOKQanjr2pvy4kRfsBuXeg9XJ4VR07dUx7Hm/X9Xo7tHBIquZIPQ6AnQZ2GNOSB6yp4MyShbSz0n3fw8yTZwUSDByw0vnBrnE+Em0AKzymR6LmZ6DySfXRP6ZUDW8Cv92rtv1zT4ivQVu+WzlYxXOS9G8aWzIxpdImIE/VeHPcw0jhD1QIJ14TL9IJzJ6ECftt5fVJk6vLZ+viqaDoXUSWVCHAnzwAAQABJREFUJ5XwHBabq/kLeaRrcuvVbJfbYgQYAUZgrRFg4rnWiPP9GAFGgBFYdwQKk8RV7QYm+6s98f7W8bE5tDr3h1+opIlOEGjHiLKWA5HUPZHyEQwoYX0LWYiMgZZQcCEqRDiRVCP8hk7hNEwxiZb2IwHJU9CTlnUuz7vphck5PXN2ZN++cXH8eD7SAZpPcBf552MUH8cPQ7u3F96JRTRbIlPQ7JKZMQQLms7AvbEN7o1CssMT0vu5xLoLkHVy5M3zSKFCtTu/UPTai2/tNiKeeABfE57D4B6KpX8KPp0DIJ6QDsayYGCFqBhfbIRcrhBbUvQg1CiCSlEdPBlS5VgSjPe5hpBvIdDSW3EuT33rvaBNXz1AYLArKmm4++o1emNLJGEWbMlvPMdHGAFGgBHoFgSYeHbLSHE/GQFGgBG4ZwRggYlZ+T03c10DgfIQ6SONG9zrMrL/XMWSZ/WpSJSOZVqBi4ghsAoYUdoHjJd9ZORI93ewO0VsW2j8iui35PcZjsO7r+gfgsyQUa50EYjMttT6f1zN/SYr9U82liePmX1DE6IguqvY8xU3Jb95UJiDordcUojk6uVOuGz2k+8ifSogskXMi2QuDhQyksktPB9FjjEA2Zqw0pzEoYkV330dL7h4ZqAm+meGqlIQ2X6uJP0TyIJThXYaHxUgTZCZfkC6ISttEcUkbPA3jHEBEH7B2JFo5koqNDSd4k1EPP4HPJfH5/AchQZW8WdMXBY1UV7FFrkpRoARYATuXwSYeN6/Y8uSMQKMACNwDQI0PW5ZBV5z4l53SJcI0klkLxCijKw7o3ttdfH63/tQIP1JMvvH+3uNNW4bqEU18qoEQ8oSvP7w/5gPVphER4iiBb1YcH7EEYozA8ZGfaPsluigAVUZBJd5DqlaBmHDWLcuqZuy+xj+hYgDK9ZN8zkC/jSoe/ts7oZDJFvltsGs1hSBk0g6VMAPEemw0yRcQJ+0vaTls1hfstq8j0iupIsrmBrV79Dyg4MHI1M+Xc4bftgr9yiemv3Q7u2PhHtAO0ua6jCeQYtN8pLwWGhFhDuMdwAEyGCcodeGglPNgK5+UvfqtXlhfiEj+YvffePKuXZBQO9UqTtSw7YLAm6XEWAEGIFlIcDEc1kwcSVGgBFgBBiB9UYg9upyruxPZC7mcqkzmNemiCYKk1TfB4YCYumadBdkBUFoAkfBcSIrZKpINMxTbkcwtBjOnkqrrcjn+KvSZn2N3P+4LDa+1dhn1k3zuXOXiOcX3DNIifJVK2Fmqyx4GDF66je6jf5DXhHBuVNjB7GTAhMjf0aYm6ZSR/VIypPQ9v1Mu2x0vcdrOffP1YWteUPtKSFVSuz809By7oFKuh9aaWnDVwMrmilbA4te1Pqicfj6UrghMFB4gAKN3DuY18pPceDnuVLvAJyPjNCnTElML6cvnVqHvqFg6GXcqR3kfjECjAAjsEwEmHguEyiuxggwAowAI7C+CPxmM9rtXzzVO58q3QsOZrQOEXeg8UTEW2ENRRAizReRTdIUEi8hLWEoxNyIucBZMtIC2TnEJtQ5CD/RDZFSM0hbMrvR5id/cFAkF44KO0IKtTUq5OM4eqKvCtvSJ2Ew+0/BN7cL53RgzJAlFPRGGaQJwT4dIrkKv1boBZWed1pfASf9ZLZUeVuISxR5p2PL93eLku3ZUIl9+gi+AzyPychzcNj9Ijx1B2BeCxUuwgFZxOfFhwP6aEC66kA6SSLITeMbCBltSI3asoE0MpO5lyesN3837cpv5om49J1jlyiqb1cXEpdk5cIIMAKMQLcjwMSz20eQ+88IMAKMwDIRQF4JzNKjMG9f5iXLq0YECH8cnOnWouROjZWN/wnUW+MgI+cQ9fUpkMg9mJxvVqQJBCOjrqBbQVNIBI00hURgaAYfosGSnSZC3movY0QM3Qot21d7vOzJY3dk0m8UYg01nyPgUOc+3tVr4sbWik4fgOZ2uxR5L2EZlJroKmn9SAb4PwoLS2YodIOvI0gb/Fu1yK04Oy/su2BsZ0XpVE5pYuj6Ti2qNrgT2s1njXXPwHH3oJZ+J/Ju1iQeIiguQSetMND3Bl9dyE3fDGghnmkwkOTXaTOMM/5aMFXkL/0M4Yf+AXj8Atrw96suvSKiybZYlq8Hpk3R1+PWfE9GgBFgBFYNASaeqwYlN8QIMAKMQKcjUMZEPSf6sqodJdIZVFKB6qH5NpeW5vNPDgxezLJ8pqpkUlWqL/K+Bn/HErphkEWlICsgKEQ8KSBN0JLRGqTT00H8IjVHBOq2CbkgD0LbthGEZjYS2awoN8SaaT4PC5VP1DfGkd8eaTVspN9swaCIaFEviUEayEP/YXuQTsoiEhS3EIiq5fDtTL0/O5OkvwQjPTtyBOk8O7QA0yjvHSrJqfxRkOivY1yeQQTbRzAINZBPyONFjii2xKwRxDh8KAgY4BAFUCo+GtCYYgdfFzBeWe7EnNXyZGJKP1roKb+RJ/LK77w6ShF9uTACjAAjwAh0EAJMPDtoMLgrjAAjwAh0OQJE5+CbFyxB2y6KSuWMKfv3wB8dlF+IWEvmsvEesJXNnsIoSWjNoB0j5SYtgcU1VxZ0DqlHsCDkEC6F6W0JPoNbEuGfd9ZWkC/0ZxN+g6o8bq6ID8cR3Kh9ZafYZeb1/A4YzD7tbb5FShiNwoGTyHMo6DtljQkaPwKYjlO/sTilEjKzlc5/Ko046jJ1AXGFmxd23ipXA1uzunyiB3k6Tea+gIBX20pwuQXpxx/IDL9Oh3GhB4nccUEvw7AR+aadECsKtFpBfy3jGPxUjcPO+D2Y2L4OYE7Xs2S6XhrvXAA6b0i4R4wAI8AIrBkCTDzXDGq+ESPACDAC9z8CxBlgIbkmMT5beT5/cHBwIUEsIdIRRlpvAANFChJrkDpFaxBPIjWkAyTzTCIwRHEsWBxCwAaSE0xupYwR5XYTPAufQf1+REutxzKb91XhoaVrtNPnc2Fs3qhyvh1kaz+Q2wyVJhS3JBC4FroetJvUd7Au0viF6MGBeBrQNF1PkUIFqtvTenN8XIuJRLzXec8Z+bDCflmPjY7tQJCcQxDwSzBvfhSTkH56XqC7FDmkaaWOIcLZItotzS8pOWkoYTEO11adxzpGQCUzCpPb1xOr3vSpOvd7b1xq60eCWyJLjJgLI8AIMAKMwG0RYOJ5W3j4JCPACDACjMByESBeQMq4tdJ4tvpVyfRMPfLHc5dFs4nYFBmv47i0HZGGNlibgrCRnSZqg7RQH4nRIb4Q1qQ3I80hNsFKfW51LEVVGzWcC/0VJ00t8faVy41+JXbrK+LkxEzrnqu5NuUcMZL8EHryiPR2I/k3Io0KuCfoWehboQEkbAvuhf5DBgtnVoT2HU+8/AhK20tI3Zls7elMM9vxC/191l7c0mP0fiPUIePFY0iXUibcc/ooAEHJlJY00XBZxdDQ+EB4khmCk8aXNKA4aVVk4K6sL8xb/yHG9o1UylcyoT6MIz0XLljjH6S+KTrapvvSI0BN53gM2nQLbpYRYAQYgTVBgInnmsDMN2EEGAFG4POBQJgkkwprDY0d/8sicukn/+NjZegB1ZZqRVUHynEEklJyuY0QegYpP0HVWjN4EBnKUSIpIC5YTdAo5hmRTxVJVUaQmy2oUs3h84msHo2SzOejHkmaz/pqaz5JE3jlXFaKc7kZ99yFPvRSRCRiGOTHGAgo1hRUqGAdpBsECUO/LUIj5Ugxg8SV74OuXfr2D0XSaU/Zjw8L89HscOxlY5uVfo+BOXGsxAH4c25WCslPELnWglUSpwSRDh8EFNS6pO0tCkmLglOFUhF5OnU0Aw/Qj6cz/7OF1P1SlNxbv3tsYryouA6/FMIIg9eO0oIBWt/WZjtuw20yAowAI7AmCDDxXBOY+SaMACPACNzfCJD5KubGpJwikiQH10HcJC1PlEz6KrRn0wt5fjlWfr+SereKKNptDq4Dj8gmj3FBwwk+01RWQckWNGtEelBFOZdVEF11WyzNC4Nl3ZtY3zuT9ksk/bgifrk6mk8inSfObdm0Ict3VnSyGT6eiGTrYkoDQ2QY9AvRbJFRBdo/5LUMaj/oZXEOJsJwAnUwNwV5PuVy9XPUPrsOkN/xlh/lw8NZWTxecupp5Op8xmfZHuuyHgqLZCjXKtEpYp0ogVvhgAwH6Xkif8+gqEZtuA4blWEEP4Yv6M9hYvwOgHg/M+psKe5HypT1sbANHYftcGfqmUPv+IcRYAQYgY5BgIlnxwwFd4QRYAQYgbVCoDnTX83btQgC8aV1KiOnpqZw67f+h4PVi/VGPo+UK/W+kjZI2FmCWq0HbLIEngmuCVIDHkf+hIHegegQIyWCRxaeIH4qt7aM05u1lr3QJg5BW7cQxW4GalD1vUMimymJ7F6jx544IXS5mg0JbR8G+9oMLlkjmhXyjwbaCZ9O6HANNLNEw4ihBc0gNq1QSCFiGtg8U1elo5FqTK8T7De9bYhe2xiCxtk9DExfMALBhLx/Trmsz2cNUjgLiYSkFGE4bINMI7UNDtIJkH+AT6ST5MUKXq8ygcfuJDS9J2at+OFUnr6T99XHMAYNIWjY168gSBU6j/sXKtn16wjfmRFgBBiBDkeAiWeHDxB3jxFgBBiB1UOgQfFbMY9vTyHGCdIUXBPnkQ+kPXe5c6tZY2E2ikrHkVVlHlaQZ8Fengab+QoYzm7EH1IaTDJCCNigWSNWgwqk+PRwTs2RmwN1RUwL7HZhCFqyuR8CEfoKfAwHtEjfqTfKxysN9bEQC+fv3Jtb19hWHjYLcm6XtPaLXudbiWYhIFLol0HyFCMR5gjsy6JPRIjJNJg0ocSZU+em0yy9BOp2eUNZTs1fGoCoE7e+2RqfSdPeR5zKn6km2TMlLQ5q73ZpmZdhICwVCCcJAi0yZAXh10HXCa0u1jhO/p00DME1F6pRZ6DtlOLT3PtXkHP1VYzSySjum8pFvWPTxqwx3Hw7RoARYAS6AgEmnl0xTNxJRoARYATuHQH4LoKw5KSSbAv5RKNkJAlKt75l5LhAkJnk4+8dSkbP+PJHw0JerAq5FWlThrVzFSjZFAIPgdghHQlMWD04MnlVBuNOMB7yrSwjsSS0nTKzNkpsvgn5Tb6IXJq7oGkcRM2aEtkcTGUvvfgyZZO8OzwnRT3q8fmDuP5p9GAzrElpbLDI0LcI8YFzm4EMo48AlYgn3Qy+pxhHOzXv/Bk4RY799tEZ2Jmun4vj0tEegU/nTqSHaUxO70av/ymo89PGut1G5MAdIZtAMg2IZwqSmSJaTsv2OZg6E+kElKQEpTGALTH8WAGBkAtgnp8giNDfLjjxlhLp5d97Zfxzkaez9aLi2aRHgwsjwAgwAl2NwHrPD7oaPO48I8AIMALdhoBGrJ079pkm/lTpJjUXp7+tOs3GqOpNqjfPrs+KzGGjenUy043TqRdvgsj0xFI9AWPOLUR8yHC16eJJmlpiOyBGZPkJAgTNI7E80oKCCEnwUAQrkv3Qku7B9aCr5uzHn/af/85+PSOK4EYrEnIEt9kocjQrQGQdcnjKPtLAkgaQ2LtDwB0Lokagkp8nbVB+S4pmSx2UXo97qT+GV+0VITqHgw3ND2+bs/VHa0Y+B9K5NxZ+K5aINJkhnw3W5K5KcsZ4FOmZwVDgJ8BPqyLVDWGB+FBYjVvlPkTgobch/5k8rUw1ehtrGLoKHVpGoe5frUYCFbLRUdorynVVWg/fYo2CXi7WuuY8PQMUxYgLI8AIMALdiwATz+4dO+45I8AIMAIrQ6BeEcLc2TqRJr6Lc95b3GFxcrykbpM/3OKKtT9c+GBOzPzZs7WzC0K/HQnXC862ET0ZwFxfg8gESkdcjvpOMhXEk+QHCSBGVLAGuCPirxbw9xS7cagEpnrc5Omnm0v2zAiY3x+gZrMZtHL7guvly/v2mTl1oaJdvglEchiKQPI/RR/QCjaCjyN0fQpaWeQXhYEqEVG6CZ0ne1w1hks+AjfuFPva8Mj8mbPDCCH8ZVjLfrEkxWOR8L3AHViC5hOZJ+JJLA2zD4OFZEJg26Y/JyEIGk7iG2WRWRXqeXkh8+7NhvfvIJLS6L88OtlRvqw3H2kIFR4cCHJDBYxw82Cxur4G9mmMFwudp32AxoURYAQYgS5HgIlnlw8gd58RYAQYgbtDoDnhbc2Cm43QFJfMHalcM/1dukPnmpeHitf9ELXtpP9cFpL5WVUuvecQErXufH+kkIfEmAciKZHnE9wGmsVg4gm5A9mErORTSaw08DzImkPgInYMRcb1G1SqX6j5PFa5/P96Xnjw6J/0xgvihyeXlc7kyGGh0/rU5siqRxCzdlBaBD2CWnNRK0j40v2hDi3GAr8gZAQ5uDLFsklAX85Z744hCC/yd65/QTAh8+e9Q6W+qexBqdyz8Ol8BIaysYP5cEbIgXR6wrPZ1fD84HAwqyUpyewZzN4hTyfiN1loOC/CTfjTXIrX4Zb7U2iEP+jLZ9YlT+ft0B3CyQVoIjGOkCHEHMYY4TmCoPSRgMZsUWZskQlxQUpxHCfDbvN9ax2/3f34HCPACDAC3YxAJ80NuhlH7jsjwAgwAt2DQKF4IpqFPreWYoLcIpTFlLl7RLpdT79zTCDdRvLRf3+gnCBK7OayNj0qLsWgPXD9bGiKDwuiROwnwBG0nSBJtAsuFAiCAzAIbhOOgDz0IwLrs7h+EyLfjNnUnrH1/DL6sCzieQo+kFIkW6BCfTR2IJ6wOgUphk6LtFpETIpfuOQWnQhH8AMDW6Qjza3XdbCbc6Jsj1sx0xF2tqY8WI7mow2xSneBfz0N7viAlLmBnjb8oei1hWQFnuDUqEJyEqSgqFD75hJ5SaVOc0lBoeRnC879PBXuVdT7xe8enekMJ9bWWNywLlh0QTrxZhH5DHWujieRzoJ40omCnF5tpqh9dZ+3GAFGgBG4/xBg4nn/jSlLxAgwAozATRFA3gnYczbnwzetceeDgXrdZI5Mx6llTL87thhVmVJZ8guYcs7VrR/PpN2PFCu7EN92M1SOwcq2yB0Jkkk8AjKRXC3ZgvYT+wp2rrHWJSfMYOL1M76RzCIC0asQfFl5PWpiHgbPZhf8HJ9Bc1uh6gR05G+K6LW4KS2U6SWHTWrh90l9IMdOsDelJqFzPQeeDCI2WSc/1k4APEr0zsxmz4FvHYic7fXSamg5pUeuTvBlELGmLyfWxKchd0E68RtIt1R5hgWBhD6GfG9A/GO49Lg18pTRfeubp3PZAEMwFPoNz0zYa/6EAyR1ITuti9q01SzFaewQQNgh0AJS4TfstarymhFgBBiBbkSAiWc3jhr3mRFgBBiBu0QgmMGSbu+GWe/yG6Q59M2uJ30dWNlNZtTLb7udNZv+gW/+z88OnZ9J0wXklmyUQY1KUlYQOQg5NJu8HFN82LMW+kfIQyaiVAJhguzghURTcZkZcLl8EoGKMiWzU6hynOrdriASrp67qCtILPoQdJwHQD43w3QXJqdN8gmTTRXydjpoWAsfTyLADsQTtr/gm8hlqfQp7I7/zqudE1XIWwRIkvJr6OiTiBxcE8qBNzZJJ7pOfp3kMkucCqKGx6TgVkSwiHLLNFdqFn6cH+Ta/HVq4mMI6Dv6+6+OQqM7cztIO+wchKMHBX8Xyw0sdPHMdRvNiwiY0ACtuTACjAAjcP8gwMTz/hlLloQRYAQYgdsiAN9GUqQtFprWtpal8+TFCivd6JJ5skzUrIjMeyCL8yCPZ5HGZL/P3ZdhDLpbS6MN8s4gnC2m/rQUhf6zDOKBPQVfTHgiWti8Ohf1QgG6ERVLd4ILfpDRR+e2Dff6dLfM08diRLN1Pu8FJUMTRDKJlHmRZdB84ljId4mDDkSEPhik0INm3p9FDs83wIYv3Ol+a3kegYMqMAPeBPqMAEw+ZEkJsYRIo0kRhCAb8XfiVGHBIUdMlFJ2agoipD8GCK+BWL+We/kRSOeVWjpKYt+XpfVc3ZfCsVCMACPACNwCASaetwCGDzMCjAAjcD8iAK1UmPMSxyH5FjWXOPB5Kd8p0p988NKh7afHa+pDMzt3VthkCGaeO7TRpVh5E1KXgPyR5jMgRYQJANFuCLsK4olUK9DlyaqUUR9cNO9IPOfj7Ugfmm5PrX/Kyny3s/kwTFLRPJnUBk0qTHxxT5j5wgm0MLlF9CDQOJHhWOI8+JgbnXXyzUglHUU8EYUXVtxyA4hnDSCRAhfPFoQA6STX2MJKuJCRZAWvJ3Ni78D+IegsiOcHCHX714nU7+Y+Ov87QdN5fz6R4cW7P0VjqRgBRoARuC0CTDxvCw+fZAQYAUbg/kMAbCmQqEXSef+JuCyJJtMteaV0ZQIhVM9kXr0L89VNmZcPI/XHZlINtyLcElEIhJNoJrUM5qQ0/vtUBllO9DwUd9PwxbxjYCGzYSEqp+UdCEz0BSWSIej5KNgrGr+6UPvgmoF00n3AzQL5zeB2mjjRwN5FG4mTUSY7JY0Kegx+KVUCTfAk8orOSR0hJykINeUhJVnwoBHZDIQTaxIXoZwQtNYjUJL8FAT+TWhMX7WRO2lUbWLCnOkIv9Ug2B1+xnCebLSDgrxpkn2HS+58OjBTANUsFJIo6ODD8dZRXjMCjAAj0H0IMPHsvjHjHjMCjAAjcNcItGwXV5t0Bje25sQYSi5K09jx5ZtHjxLBmfqzfUNn4LJ5DDRvYwJTUev8JmJSZONaEKarM/5inzR48MX0EbJ+iFnYwU445yh2021L1VXNvHbbkbNzH8xoNyFckAA/KyIy4RZEbumjAJE1ug+tQdDI4NfDxDZpeDmLzUu///rcp1Stkwqo+AJ8OscBzIzSagv1jcyGSYzC7hYbEIqQhDaZKGlmlZ+HRvnjNMt/lDj7diOZ++w7xyYRSKi7is2g20U2FfJjJXPpVSst39Bmm8gle/VBXLWbcEOMACPACKwdAt0wN1g7NPhOjAAjwAh8XhAgLVQgBjSXxdKa5N6j/Kul9LnHbqz08jkl3TEyeq07UdVSx6WovNmIqF86oupgFDTnD6pi0FMEw0lSm6VZMp3r6H1voqNeGaRTmb7tfaeSaSSo1BXcqy+2eSmCWrUILNRsnm5BWlUQDXJ/DAv5eCokfJHiDIjdCRw+d9ubrNNJPE3nkbfyFfhzxol1w8bo2MBZNkeCFOtgIAxhiETDOBmRaxW8WP2HkOV1XPcGEq6815Dxpb4oTdep++tyW3rlFl87gIGRD0T9Zp2ht7Wg7Tc7y8cYAUaAEegOBJh4dsc4cS8ZAUaAEVhFBGiW27TxbGqlbjnjXeFdiaJFK7xmvat/6/jYHPpw/A+/MDAjjNhSUnqTiRT+uqrIUyWg0iKb2EASwAzhg5kvpNnC3EI6psr+fV3re1NZQ1aXty3w7ZRZ1ijhP95aJrMoxxggQYqABvTqghaIfJJPZw4wQeZ87gPxPJ06+RqI/fnb3mSdTta9Ip/TX5TyfAtI5hcrxlQjE8XSKuVAmzMczPGlA5uJ02oO4p3wWv8/iVLH9capC9/5YXZHU+V1Eu2OtzVQXdPbRDzyjpWbFahiawmHcHHQZ9LBoO5uVizqBY76uWLlV8XnLUaAEbiPEGDieR8NJovCCDACjMDtEUBmCjArzG2Lv7QKs13MelexkP3qHSPtrOL9VqupqCamk7p8FU6Wk/D53ANodnuhh6GlGwT3g0gI86PUPFAbR/ihE1q697ww78Inc9TV5om83raUq8rGSc8kqOQFGOka7dJeyuGJdgplKq5G2/DpRKhXbMDf1EM1OJ8JOYngPe/h5M+cys/e9ibrdLIEXOqJu4i+vw4b23Iq5B5803jEwd/TKV0G5WxkuQV27hNo7t5DsKF3oGH+WDTE1ES9o9O/3hbRmlaeCGFMUZRWUpbxylEVaDrxiwXRq7Re4T1W0h+uywgwAozAGiDAxHMNQOZbMAKMACPQCQgQ7dSSJq9NbSeRzjBdpp9lzISXIQS13K3l27+coISRv/z+c7vfn1bJCePcXqXk09BxPupl3gfctJJqXGr1ieiJ/9aIntfyerzw37x6clnaOlkZcGXlJ423o6W634D2t2qZSwom1KQXgWjAlHeReCZOziONykX068S/fG/2552K7TePnl9A3xb+7SNbjtrYXjJCfdlY0dBRtM2UTZ+1biaTyRhS0LwiI/03VZWeGxgeX/jGy91LOltjoSU8cClsb3iXWkdvvQ6a81ufDmfoeWiRTrymUHxT6/EdruLTjAAjwAh0NgJMPDt7fLh3jAAjwAisHgIVNEUui+Sr2OKeq9f6/dPSgEj0jDiHYDGpNP4CpvyvwZYyhl0ssYsF7E8ifNInlU2qflqctOLk8kT3UZ6Air0P7Gs6kyWVma0m9yXlRCnHDSjOkI5hqBwZ8of0eQ6FpzSnoPE8qoTpSBPb6yWfq4l5k4kLBvk4QbAugpH1gjjFUN6SYnBeGXG2kYrxLQ9vSV58ebybv1Msik4ZbxCFCuJCx3uLQifCybv4voNLAKP0Jktv2f4tbsuHGQFGgBHoKASYeHbUcHBnGAFGgBFoMwL0r/5S/VxrKnsXE+I293Tdmv/2D4MGk4jeqpK97WI0/UQ/+MHAgpgr19Uu7c2TOvcbQDxjCiSUKidjGXkdlUFCncudz3IpTyXOvA4n047K23mrwWnmSKXItNTfN25VTxxdVWhveZu1OEGMOqLQw/RBZ/VLYLMSjrKr3zS3yAgwAozA2iLAxHNt8ea7MQKMACOwbghESKhIKR+ulhbbbK2vnuGt1UfgxZeF+z8OqzqiB415Y15BkCKMht2fCrMn1bqSKV9CAKHcpXmWOTWWKn3eCvhMOvF2motLq98jbnE1ENDQRlKezZW01arcWt/uDSxUqXh3m0rTldyH6zICjAAj0EkIMPHspNHgvjACjAAj0GYEkJoyROC8epvbTXmv1lrJFrR3q9/oSjrQoXUBihdHTjVGDh8e31s79fM0yUeRaaTupetxxm+0SvY1vEsaCYLwaP2h0KUTCHf7+r94/cLbHSrS575bfZH2c8p6aK2JQ7Z45LJwWawcHgyyp725pzW03XRqsfqyGudKjAAjwAh0IAJMPDtwULhLjAAjwAi0C4EcPp40z0UwFNzCYZs44rLjoty8W2iCWqEfNCu7P1zMzcVctaNHjjhxeN9c9P+3dy5Nklznec5rVffccCEwAAeAQUrgDaTpi4JWhB20FQr/BS611cYhLRReeKEIToRXDi/sCG/9Czgrhxa+bAhKlBhBCxZBChSDpCCAwADEbQaDmemuW2b6fb+TWV3dUz3T3QOAqJ7nNKoyz/2cJ7Mw583v5DnZjau7bfFdbcbxqgxmW3mRjzttaimMWk8oe7/Ni3cF87WPrF4K+sgJeD7xmZke5nh54kEb3q9EDAWqX6bMqKVfyNbPs1loIxq/YoyDAAQgsMEEEJ4bfPFoOgQgAIHjENjRsrZVbcOKRac+WirTfzGavd8hrcvqLZ38w3L3q3LZiv+Fl739ij9X9fmuPmvctTVhBH3aCDTax1PTCPQsJ4lPP4SJM5+c0PnnWPg3pSc5xaJtW22EmtXeZAcHAQhAYHMJMD7Y3GtHyyEAAQgci0B9ruga2dKarutKm9baJlu0Cw1uNUIuLEbv33UyzLSyp95/SZQAgc0gEO94etKAZOHqjW/xeRIX2fR4qImXgHXUs6FiVGrtolpR99wu9iRVkgcCEIDAJ0IA4fmJYKYSCEAAAr95At7Hs6r9vljbyYiS5fosmkVWSnTaumILKA4CEDg6gQujQlu8aisVyU4/uvmofkGebdvqwVDb6TFOWWaj8bgtuvLoDSMlBCAAgU8hAYTnp/Ci0CQIQAACHweBuii6bi6DpDak9MuYRVFmdTGKwbJ3qD+x0yBZRlRl7yxiNeOwyHfOYvU8MU8ybhSByUTbqRQWiOttnPHL0s/jrr+w/jfU6tdZSmgWMQNB83e1lG3u36vcbN8+SBuFiMZCAAIQCAIIT24ECEAAAg8IgXqqqbalJwT6/U4PbmUB1Zf3WNFbZGmu4AlYWHTGx2+k5YVmBVb5uWx+gpLIAoHNI7DIJ5pcXiab5zp1OYjO/rj+kYzmIcQshC6rqirEp2es++VRF+lpt+UhwnbziNFiCEDgQSWA8HxQrzz9hgAEHjgCO5le6Gzy3TNdN9MYONkodRLLZnqu4DBAPgGZeE9UptSma6p501Zp8dwTFEQWCGwYga1sS6vPSiDGrAEdV39Hq+d9v8IuKjVpQRk/vwiXXVOr2A6LfdnymR7maMqtJyno2dBMqxjhIAABCGwyAYTnJl892g4BCEDgWASaxWRaTNqsmce4Vnk1vI0S4nv/SPjIJXvAnayeWdE2Td20WbkYlS4NB4EHgkAp6Zm2J0qCcv2k2xUU/sGtik+fx/R3hStumH8Qv0vPuM31NCefh3elFE4hAAEIbBQBhOdGXS4aCwEIQODkBG6N2nme1beqeTUtq0bLZXpxoUbj3zRLMEr2APi4w1ulD1tNno0kQh9WOefractKKCe/VOTcEALN7bk2USnHbb7Y0rJdpcXkOufg4XPw5zVYQDVNPaymWk9ISrNRhsLvTGseQTGpsuJ2Uxeav35zXfGEQQACENgIAgjPjbhMNBICEIDA/RM4d7WZ7zw8uj0qi4kGwXp9TDNvF5oa6LGtBrkeGQ+DYg+Sj+IOiNSx3h99pCi782Wht0lxEDjlBNppU1RnurEW59qWXFw7php+Sz4OInP4nQ14tC6ufocSnvprtNK0Zg5kZSXhWVatXsSebNejW8W4mw3pOUIAAhDYRAK8MLCJV402QwACEDgBgZeff74588EH09liPpstGr3n2S3KquqKUuPleD9tGCKvL3xYFGUQm8uj8noVTg2az2nK7TPZvHuy2R2P1pdCKAROD4HmTLW1mM2enS7mX5Ch8sLyyU3fxcN+USFClWaI128xFheKBYYUWGhlWwtRCVQtl9ve1vyE65Mb7fT0kKMnEIDAg0gA4fkgXnX6DAEIPJAErly50lx++WWJztlsLvGpmbYy19QxyJXN8+CYeR+jw0TnkCgWVsnz8xolP6tB8pNN3iA8BzgcTy2BYjbd1qJcz7ZN90WtDv3QqqAcROVhnfeDm/j0CSw6/fFDoLLShAELz1y77bbZ7Q9v71xfTObauAUHAQhAYHMJIDw399rRcghAAAInIqB9Atu8rBYSi00Tg11P/Ns/+W8QmveqIAbXGnnHoFnbGVZ1fXa0VZ+rtoszl7/61dHl2LvlXqUQD4HNJLBdV+NRPb6k+/5Z7Yt77rBeDLMDDotfDY/ZAxKdbdN2s/m8aebz3dnN9lYzfZc9ilZBcQ4BCGwcAYTnxl0yGgwBCEDg/giU1aittLqQTCt6layVoWa/6Bzm/91LfA7WHa9o630G9dZoVVfV2Xo0PtfkozPvZO+MXv7WUNr9tZncEPhUEqi2xrrnP6vf0z/S72mt8FyKzgM/s4P98awBfyw8S7143Up5zqfTxWwy233xleu3/uiXGe94HoSGHwIQ2CgCa1+E36ge0FgIQAACEDgWgenOzAPYG1qO81EtKrTtSbbeqH6QiMP42MJyOI8KwrMXks70HSPrrl+EMxtrVc6npln5uw8p6uLfPPp3V7JrHx6rgSSGwKecwOVLl85Mzt1+cncyef7cqHxCmwdta1Zs5S03068m/TrcDT/AiZ+IROXeD2rl1+WfUP/n9HoYlC30i9QzoXlblBPln3/H23mu5HY6HAQgAIFNI4Dw3LQrRnshAAEI3CeBW7enUw1ib4zHxU4xqh7WpL5SslPDWm0Y6PHwilt6Yxy9N5hOSSRYNaIeQv1qmkRsobBnFl37r5q8mOyUZ1/PEJ4rRDk9FQTO3TxTFPkXJA+/pkcuT2hh6HHR6Y1M/Rq0rYq6OPwqUm+X4jOe7ix/VSmtBaldf/T090bTCLTe9Cwv890iK7QN0oECUw6+IQABCGwUAYTnRl0uGgsBCEDg/gmUeX1NIvPnZVZfyNvyibxs6yJvNNhdaF/PeUz30/6BYYPRPiuytWjRk4X2+9TAOK1eq0H1iuCMFTk1LlYqfTd5VeSPnBvlz4+adtF2N7f+41ce+mlVbb2Sj86+Pzn/yu3LL8igg4PABhL4L//04YfbafFl/Sye1+fretLyj8dt+0Qlk2XZ6Tci0Znrt2ENOUjPpEP1y/CJfzr+8x6dWtArVyFakEv2Tae2bE36U2dtk2c35237vn6ALCq0gfcKTYYABO4kgPC8kwkhEIAABE41gaLYuiYLzc+qPH9K1pSvaufAEJULbVq/0L6ehUbTHhB7OwcLTb8D2mipWgVHWBhmwkgjsamRsgfOTchOYVNkmecPnynyC2XXfWYn655rsu4HKuR/dc3Ozy5Mn9Y03zcQnqf6Dju9nat2u0fmRfHNMm9/f1xkX9Jv6FLdtZXeyJRs9Mei078d/0CSkLTtUtPPFaN5BfrPe+bKWqpPpd9KKUGqRzb62Pk78mrerp72fDhvu/f0E9uNSL4gAAEIbDgBhOeGX0CaDwEIQOC4BOqsvpHX2WvSke/J0tJoKwjpwoUGvFm25e03w1qjQbMFpRcNkvP2DrbmePXaGDRrcK2ZhfIrXvmqqpL4zDKtwelyCplQneyhqlY+vbJWZt2ZfNb8QzOdX/1vX774djeu3snH9QfdfHpr98xDk4v1dP7au2fbz25tdS9mL2aXzmfd849n3RVXrq+v7hmQHPIbdd8+0JbQ4PtbZMMVbjMJ5N/6VlZ889Zz1bW3Fttb89mFor392KgoHx/n+UVd+t8qmsU3NK32C9oB97Eq76Q/JTZDcMZPR2f6s9Bc+R35N6XVpGUWdaCEqe4Q/fC8cm38zuKG0Q/Gk3XjHc8umy267PW2KP5Wova9zURJqyEAAQjsJ4Dw3M8DHwQgAIFTT2Dr/Hkv9vOrerYr4SlpqUHyoptn9VaRbW9vxYB4PluEyLQ1s9Bg2MJSo2QZYWys1DRBDaJtyfH7aNpGIqvrWvGtRsva417HWnMPR1mxvV0V46bJH+0W3de0YMq7GpP/Ssacn0m0/iRbtK90ZX11e3Hrg928vP3449n8w2tvdJfqSxqHj9pf36q6r/5q3H32d7ZiXP7F8+e77x16dV7YF/Nvst/Lfn7zpkb59+feOv9i1D2U0ovhZbk/vZJ1l4dIHb+dROkyXif78q8k/VhOVdmy7sMq+KTbdFg7Po3hl83vp18tr9W3t8d1+2jRtM/ofv+aHrp8TTH/RDMFPl9kzbmya7dq/wr025DKtKE/fic+ia2FbMHUebr4sm7q3A9hwsIpsalJ6Fkz129MD32G1WxzWT+d3g9vpm07b4ryVT3xeanrynezjPW5Po33C22CAASOR+Ce/0AdrzhSQwACEIDAp53Af/7618+eGY/Pj2598Aeyu/xRkc+fLIuJtGWXh76MKbe2X/pdNP8zoWPfKR89iPbHUwdttZFHlhwNxzXYXkiYOrW2g1CwLDw6SmR2etmzWzTt7VnTXJdS/XW1NbqqKYXvaZPCD1Tkjib3zspM+rf1C3JSrjYE2Takarzfi4yqMYaXsSiN5fv2uJVhao1Jin2gDn5/7l4u8qpSO00ojpmQEZaC+vC9+tyWmAoZ9ipFy+N2RR5xcHsX7VyJ1N5CQlxlO6w3Goc/BLqEujbK6LRFY9Thb4sVe8db42yr3srm83k2beaeiJnaofJqif1W4QspeQda/LuXfh936K27o6si6quudVNSGhXnPjiHoPaXVbXo+qnRMk73OJ1daSWWZLr2dGuVqo6oP8qjBwuaJlroYUO0czrVJXV71OeViuMWUTEuc+lSd/Y02TJC+fu4ZY5WDSxzMU8RRaNe6D/7XU3XeL6qCxhq2OOQ2tkXPrSpT+ZiHTPUZ7+ThI1ez1lUcKnbdSz/WX0eUcwlCc+ndGGf1q2plaA1tdbdVSnqoxqignW0id/OFks/lCls4VSC2K5Id3Op6+5ptp5JIJxqtqyibqjC4nemY6sXRCf6UWmK7Vu61//7tB5f6cbl23/ygzeuReF8QQACENhgAlg8N/ji0XQIQAACJyHw73/8450r3/rW5OpLP7wuLXX7zKidjUeVXlub5guJCAmnGBzbkllVdRKUElYeSNfVKGSXhYhH/drDUPFNNrclVKPo2mLTg2lZcixjCo3OLXC0LWHe5e3ZvJtv50X5pPY9/JqEp4pRQRrlqyzPTZQGUCE6ujAV45G59ZC+7dRbhfR9jqOmPMagv/9a4thLtgy640TiIZKlYq1o3Q6VtJI5Khn8ShLxbmNyvRB1RpcmJSEqUs5JP6vjEiBRqEWYuTirQi2lPD8zSnJ4CBH5Xb4VsKtUOkUl0Z9ap4KjAdbjrk+xSflEYY5ybc7hqqK+PkblhaiM4hSpcrwGjoWODg5w1SozpI9zR1AUpAinVohrS2lTO1LbnFJXKfIMdao4XS/n9LfLi/yqwvmHi+YYVyy/g9UUJY9yIr2yWMDJKVACLm6LFO27z8n7xDrEaeqjS4pMcXAh/UlKHk1yfOqNpaB7ZhCWjoUY+nVmaelOd3NWVJVUtnVq05bqpl6BthhXq/WbUFoXFLWLpZKJoJurEP9+LNr1yCVmBmSNjk7pdKpV89HjAY2Fp6rR78jXz/q/mAvTbSV9s7z41itPnmMxLnPFQQACm08A4bn515AeQAACEDgWAQ17u+zKleY/PffMOxrpvzzSyFmD5c9rot/IA/9Sg+rcY+0YSHtQ7o+rkGDSYDvEhUbIliGhmDRgrjoN0eW1JdQWoFZi1AKqtexQWvtUTjEaaUyvwXieLUYeaVdK4ywuU8NvC5DQAyEpkhxJssRjecf7v3DOEQl6/8kOLs0tHkp1maFEUh0pxu1zhFoYZlHFqQfyD8LJmXxeZFoTWB0oOr8Ta+FhK7AtoJZPrsTGXGetJb4qoQiGyuPpzv5UYqNZyjpq+rNfl1Vj/F5g5YcAui4LSZVYHTW1OymlaKua4KPKjla5RRGQWt2fOkoRjrQ8Siksb32uadchmiymQjUqrQcJakpeKUzrHrsvuqZtXkk5u62F8litRZm+lkqfrkovIVVGoEutUzpV5kaEWx6TbFUdqZ3L8D6VyakOf+nM7bVztVHUnt+MdfMu490WpUn+vgQVEHeXE0Y57qvPLG11ohmvuoDK5/eXc1kv9ZWyyu9723J0kNNDyT4qU1+ihaQ8/k/XNHS2a3Lh+lMpCjN/i9TwhL9Rs/Sxgfy63u98S226ce13s/kfX46kTomDAAQgsNEEEJ4bffloPAQgAIGTE7iVte9q8PvSdtacl9jQCrfZyNMHPaWzHo3DSjOXlcYSIiyXOmqHlBjX29hk85KtPJ7waWFk0an/YmDdyspjAWO/Z88uJFC0z0o2Hms6psbRi8U8RKt9aTgeokOp5U26QCces3t4vs6l8CRyFO+6l8kct+dzfXfzpzKUPrIorY/RBp8nMZSMayETHKmPXToqubSm+55ntVi435WEp6y6EhKSa+YUwjIJ8laqQlZfm87SdFkJOE/P9Pt+tqSZd8h2KZlIE6JTaZVOc5H1sRXNdbttSqM2JkyprdGu6Es0fx8J6T43V2E6RJrU+xBCaqPlkA7LvlWtRa8kmeq1iHZ/bKT2fRLi0+ntkVOqqDrVMDCKKH31/gPB1oh9M6LfQ+rl8UD6CD8YFn7zV2xqyjL7/pO1GVMSATRTXUdNN/fQKNdUZ28xJCIL2z7VA/XbJfh+FnWlSBVGqc7fV5bCnd7FKHwQn7p+MpXKnyylwzX0swg/oPFHMn6h2+PavOuu6n66efly0qZ90RwgAAEIbDQBhOdGXz4aDwEIQODkBLSi5pt5nf9AI+HPzLX4j4bEo7rLa4mkfDrTlFsV7bGzB912MbCP0L3RfRp6y9qjhClUg3eLQE3R9VB8oYG3p0h6Kqotdw7zwLuzoNWIO95v8yA+lJNKcCExgo+0wxjetbsJcnvD++HMUSsJlWZIGxnu6R/ypmoH317eobQUM9TqUH9SLjc/hIv6HgJcMRagdrZaxnuK8vq9TC9IEzEGazEjT7KWqYYoqJWlUWlkdXadYT+TMF3IBOo67I8tb2yatYgJjm5Nb2mLWtOXr5nFXX/xdGLRGQEOjETRC3051O/lWuDGDGiV68Wj/F5ppHTfJIKTWdB161oqIk0VjaL27pXkvfd3FNwns+n0PpzbfzKnnH3Vtv3PG+34o4DCm3PqsUq6jJoJoAcFQU7cfeKHCb5esedthCnQ18fnBq9zp3H+uM917RUZ18yCNq6XLo4fyChCDx5yLTGdTZT8p4r8vrYwevNk/SEXBCAAgU8nAYTnp/O60CoIQAACHzuB+tm3rmY/v/RudaH5/Lzp/q2md56XsqiaxSKfWhhqQFzWyfrjxoTg0IjY/3kwHSpDysOWz1wDbAXEwNzmsKLWTFpFLGz5dBZbzaSubDHrZDXt+ndCYx6n4j3wtrMs8n/JLU/kXT13bO8fgj3YD+d22A0RR/enHCm9JUdyB/0uWnGDGu9TLQWG+mmrZeCQiohmKb15WYiOtEhQqdVNLSK12JJe+7O0twXRduMk5kwhxKsEoIHacqZrovSaaKswl19KlNoyJ00Y1tJkbTYDtze1uW/asqm+fo6LpkeSoY8ph1tiS22thwZeJMqCs1E7Pb26lPXW9dliZzEWoipuApWh9ti/v9ah9nsfnS+aFl/3Tr82xYnrV+2q11V7FrCv0Xwu4amArfGWrNa6Vl5USTfxcP97mq2FuedCG2Y1srXfVutk5ffDBaf1bAELd/P2/e/3Pf3b0E8iLKl+IOB0pX5n3tOzm+v3seh2lfgnWdl9dzE6o9Vsr6/tLoEQgAAENpEAwnMTrxpthgAEIPARELj8ghcteXPxXy88+iuNhH9Yl8W8Kasva/rslgfgYd2S4PCgfJgWGCpI0mMQMRqBK85WHIf1UwmVwQLS4is+Tq9zW0WVWlrTwkmDdYe5H87vQzrVtypcuuF8OA4RK/6V0/15nXZf5Efjd0OXJaW2hyhRVZZfSYQqkTj4L/6zwFCffS60wS+EiD12Vn1m7jz6BA3Bi1h9JcGphZ2c1nVItM7bWQilsLBF+N2+UjujAVFqKmkvR7pG3uZjaouf26i/UmJTk4ZTMoWtyku30+1zW9yw6Otegcc6czm9afZY+ZaJVf+Achl21JPIGB2OHCGu4xqkMlO/1HOv/iPn62bLsPscvwtdJ5PwLGY/PDAUF+l8kc43udLGdGpfU19nv99rgaqyFvoNaZXjZtLkt2Zt97YeP/y6Pn/hnbPb1W5UyBcEIACBU0IA4XlKLiTdgAAEIHBSAh8usjekG/98XNZbTV19rm0KCU8NsDU4LkJ4eiStKZeeIquPBZUFkgfQfvfPxp9Wiwt5Cmms9ikBauHqMiJOg27byTQul76SmNGfRK6EpxN4IO5FVVSFy3S6lY4kEbYS4BH8Ppf8q3n2RZ/Ac7CGdUVYSC/rVAaLEbfVlkJbucLJH3+ydlmUC6Vcby3T0VM3Q6E4WCw8dTUJzDTV1duX2LlcWxv9cZgtn4MF1BY5i0NfixBBKUd87/tSG41bRe1v+JDIcboOLtsWPpdbq8Euu5AV1PXFvpO+Xsrj6+w+x1RcpXcbLaJO7Ny+uLZLqscuKrXs2Nn2MpiB/vxurjmZl6+JH5T4PE11llV4JCZeYEhpdPdLUfbpAq6vr/vi3vi9XCWygVg3zKzRVjh+R1pWz9gKR1w7xU9nTTYR9GmbX5+1xZuSoe//3eOv3vzOlaz9473WcQYBCEBg4wkgPDf+EtIBCEAAAvdHYNJM35PC+PEkLx/ViPtxLev5XFfWlyQER4UtmZ7rGYsKWTbasuMRuo4K1hg6phF6YK1X1GIgHiu0egEdDcRH3tvRg3j9Wbx6qO6jhanLUZbeKVG44RjZPGLvT/roT+Dg7tnttST5D/1W+uiPmVhgWmzov2i6xYg+IQwlYhStqF6g9fksbrz9TLBQmOsNy6fEX7KeipcFpxrmcpzOVk6LQ29x43NbkvutRw5t5v4I1+JPchZcIXDdXDUv9mFVlF869Cq6XljH9To8FlLqe+GHBun9VLVJ8StF9iUf8WBYdntNSv4jfvuauQ9q8RFzrCbzPa72Rwkpf7y/qkL9YCXe4dSCTtKP4TwlttVKtxakFqAhunWNfXTuTgLTzMIyqnvBfw53HRb3Ma1aIt3XVsJd60V113WzvKn4F/Vo5/8q0S+vXNHPKVXHNwQgAIFTQwDheWouJR2BAAQgcDICo2dvv5+9+rkbN6rZmZttcWasNU5G1egzo7Yd+T22XKJT5i5t86FtQKQ0YxgtQWJxFJYfv7emqjVolvjRO4ESUQsNzkuJzi29L6iRu+IsNvWRxTTXJ96RU3pbScOtjLJXTlOcC++dB/fr3J61b13sCcJW6rx3bgkRiQiLHr8LGZZMNTOKiPZ6FV/1WcwkE2XxkrILUaN8CkvhSaAMYtxi0gLP78gqSVgbtdJpiKAkaLwIkC1zyqdPCMO7NNRtSeSGjrmBKcTfLsN1+np4VWO3TxdMAkoWUIlOX2uLTvdNG1umeDXMpflxhP9CuA3F36Uta6OiKerHCfNHtsic+rS2jrsEuu1+HBC5xdv3p6+Ze6eNNYO7p0rrDte9rTtdFdoCbeE/8Iv3mBURglKWYy2PKzWrksXOrr/CKssPC2xFnut5juY15/mbYv8jvfr7Z/Om+N6l3Rs7kYEvCEAAAqeMwPAA75R1i+5AAAIQgMBRCbzwata+8MEHi9+9dF6D5nJHw39Ntc0f1ZBZWzXmYx11SCIxpoJqHG1/P55O4kMeGUd74ZAEqQfYFitOkCxIGnxL7Cw/Hoo7Xh8LB5XYj/yP2vKPL93Qt9UaknzoQ1aaGu12cCRIInyZT0LEIiWEsQuNNArQ0WIuOq7EYWHsp6pa3CQejvZZZAoBk0SnxYzi9BXpXEecLWs9/CSqtASy2/uOEJUzNNExDnPbXYtqjPYmEaXaJErj4YESpAcQTu1ckaHv11H8y2bo5DfjdCtHy2ORrDhPffG9OVg0I0FKFddhycHMbOGO21xc5A/Ls0DGO9KOkzPHsByrTJdrrxaXurlouzekc7/f5sULZZv9+E9/8uEb//OaJ+/iIAABCJw+Alg8T981pUcQgAAETkTgevbZty40b7yvtVfPamT8VC7j3aiqz2VdWZVSlaWsX4UsmkmEeDDtRVFkEdLY2uLLH9kzw+pXydqZe79JxdsYGAZBpfOAXSnUPnvSwdN0PRK3dekwdy+L5mBVOiz/ccOjOW7f4CJg8KSm9wbDCEz1p/c3Lcqin72QdAL7bU00L68S6/cI/Z5kvOsXAicJu/Tu5jwJnt5a5ncnnXYoxwRFNSzI+7io/Hu5dJ1SqiF1dM2CSX8xXVbR0X61y9OG1TJdnyTGQmz6miuTLn+8B1xpVVafD1bsdC1ViAteXtv1/rh3BraRvr8VlPwTc65XH/fJD0V8X1o0VrLuOmrRW+hN3cLf73ia+2ymxZ1k9RUmcfO2K+aSrNK2bA8PBmwBjTvb03KjvLB0a1JA/r5+Ub/QwlzfPVMX/3t66/rkE+szFUEAAhD4DRDA4vkbgE6VEIAABD6NBF586632r96+Pf+Xjz9SaGLoZFyUHoqfK7RykKaAatMI6YwQNxo4e5DtYbn9FkX6WNTEqN1CSgP38CokxJHSO9b5kyiTT/+5FIsoi889Iefh/p4LX1/0UMUdx73kH8+Z619xbtPwieAD8e5jpHC/nLKP76kFModFnAuIdOYRE5blF0/HH/hEjj6fyxry3cFDadaFuc3JOcGKs0B0eeFcbvLFdenbn9qSehAplSasfZE29TO++2uZSlTIPr/75LC92vpK9w6KO4lL0nhtt9ehWDOsn10AABVSSURBVIb5JMlrWyMTd4d1Ep6t2uotgLw1UBv6W23X0XvTWpD67k17qro/qcdu+yDcQ7T7XtDHvwCZMrVlbnZdn1f1XvBfyf+CHiz8v3/3o+uvY+k8yVUnDwQgsEkEsHhu0tWirRCAAAQ+AQK7k/qVs9vdryeLbGfWtA9ZFmrgfFbzbr2cp0SnFrqxVU8DcFu7PGiPJD7TqcWQB+YedHsFTwfJHBbWpEgdQlXbSEiMeosJD969h2JKuDd4P05Xba26i5Q5TlGHprVYWuf6LqcoeYJBiJDUoiSy3ECLGltDLTDV7zADJ8ESljalcHwyMEaHnCPypcL77xSV0joo2uWK+4h9ie/0RIn6skVu6frAQTylq9aXF+VGArVGx/ArrzoWgqxPFuUt06rkKN6RfYJldXv+dU1eF7Zs56Envvf6cg9Nsy4iNSo9DNENLWfLbVwnXyWVudA+QI3uVffH6Urf26qqLSUbFeaFhoa6ozTdjJ3UqW/zNJU8XUVfb5Uz1+vPb066/CUtMvRn9Xz2F2cnN26vaxlhEIAABE4bASyep+2K0h8IQAAC90ngh9euNd9/58bkX198WAPlbFJnrVYI6i5qzD3SWLqUBTP3Kq4aVaeBdSglTS30YDzqdniMuvuWSGwp0kEWIRZdtiKFdU8j+DRod3kp3t8e2Ic3vu7hj7Qqx/nu8+O6D7q+CQeDl/6o85BEqc99X5RjaN8y83AyRCyPOgmGd8s0ZHZSZzy6S+mHPAaYrk+IawUnEZmEcrJQrrbH56rrYPuW/oPxg995Dn4ckMKGLsTxjnQpzZ35h/BUTl+aSzyGG3L53pQ49D0qHp0M/u67xfXwQMC3etycSpNWEU6r1yahnqrUqtDBxqsQy7KpsrRIVF7MZ237vvbpfEXL1f7lPOv+vCnyl/7k5Q9e/x8feD9dHAQgAIHTTwCL5+m/xvQQAhCAwIkIVLfyf8jONm/rXbRi0RVf0HB8W4PtutbcwLLQO5yWkH7HzX8au3trjRiMe9AewtTDeL+7qHG4B+wKs7VUq6pkWs/T826zqlY5zitrUOQZWqoBu7Iqog8Yjqvx/bmTDQP/EE729+mP6h+KPezoOu7qVF8IpsMS3aMA9X6v0dFxF7TSaXekr+AeRR3WgmX4/vxDvW5Bqs+i0/wO8y8LWm1fBK60d61/L+femet3192q/S3bS3P0s4MtOFpO9VT35vCOpoVitEkqMzUrPdQI8el725G+X3WeLPXpPk84ZOn0u6HKOJ8tspmm4/rebMtiutt1V3eb7m9kUP0/W9X8+9XORVk63ztaE0kFAQhA4BQQuP//y58CCHQBAhCAAAQOJ3D565f+uWYb/v4oa58f5d1vbRXdpa0ie6Jom+2yWVTWKX7Xz0Nyv/tpgZT7HU8P0C1A9bHFM82wDbmazbVQkUWCLW/xp6mJ6R8k+ZIWiQbFwP9u/r7Zwz9mLtPuXv4hjdNHHQ6QG/In3973UN5eyMrZSvtWQu84Xa3nYKTZueOH1Z/SJzYH89q/vn3rQyN/VOT41PjV+u/FPPJ/xF9uyTDdOIq+O4iPuHYXZwKpUvff73EaarpmivFNmYIU6PvZ7bUE9TXxtzJ4WWcdcz2U8TJNk0XTLNpstymr99ui+NVk3ry408z/Wpvq/PXln7338yiQLwhAAAIPEAEsng/QxaarEIAABE5EoM5+NpkurnZd/fws634nb/NvjPLiX2h/z8dl0PFWK7JdasDt0bgsmuFixC6LqIRompKo4bYsQdW4lgCVRUgrtcQKrnPtd6hRfp2PZACVWPWAPv76YtJ4XyGH+BVswRBVSwgMbkh/JP9K4pXTIevyeLc4t/tezoa0g26ZLXUgiZ2DiZb+lNpJ17n94aZ4FxdlWFApjc+V2XY7+/3q6ZDXUcY6+O9S4n1H+Tou3SdR4bIy9U/1pYWS+s7qvo3p5H3nex2a7jOZLO30zrO46EGKvF69udP9G7w8EyDPW80NmGnpoevTtn15t2lelO3ze3ov9EePTj+DpXOFPacQgMCDQ+AT/l/7gwOWnkIAAhA4bQQuf+mZS9My++3HyvzL54v8K8Vi/tttM/+cRuOfkai8oCVvxxKfteVLJwFqIRpi1JLGfo3eY3sO79mhOA/WGwtPidAqkyC1eA2JsyeaBimyLiTxHVLIp9PBN/zjdk+/Eg5pXN7qeSo/fUd5jhwKdvBH5I86zcNF9u05rJplO1z/ijsYnvKvlrKS+MBpqtdXLRntoj1KM+Q+6B+yD/GDfzOPQ+90dIf08T3rv1hkKKyaDvPCzb4/xagXnt5axTe1p9VqxnnbdPlcn8miy282XfF+UY1e64ry1d22+eXtWffzMl/89E//9trrm8mJVkMAAhC4fwJYPO+fISVAAAIQeCAIfPbcxXf//tZrNxfj7b/XhoN/Oeu6f9Z2+TeLPP9KnZXPVkX5yLjWHiztolzI1uPJtnXlvQvTe6DNYp5NtfdhIeE5rrXToUbzlfc21FHrt0h1DSLAms5DfLu9sFAFKXD/d4gFW1ydOqUfhOrd/E6ZRIarSfUNUyr36urLc3wkkd/Hj8i/1wa1WOVGbVF+38U+TFpo6ZzuDudmrYSvnN6R9GCAi/Z7nT2C5dFlOG4oazgO+VfbNITdz3Go/37KOH7e6H3cehaUnjCeVmLu70mbf+3Ex3upDos4Objx1FpzkwBttNTtbNHtTNvu2u58/vqkaX9Wj5q/2D7z8EvNPL+xs7Vzc3tyaTfLrqXy+IYABCDwABI4+O/IA4iALkMAAhCAwHEIXP49GShvXhoVu+3nterQ16oqf6YuiifKqniyqosn9Gbbo/PZ7OEq786O6uJMnWfjUivj5m1TdI0snBKimp7rtYWSlVOKQ9N3k5iLhsi/lDu99FmqqiQE9sc7k/8588fxfZ4j+JPQVPpQPRZf6/NHfU5zSPxJ6k/iOlnXhu669qHZQ29W/Y4+zDn9qtvnV8H7/H3CobeOPHi+WtbBc5d1v8JzaE/U29fvek4qQIfyDrb1SH499LDw9JTaMh6WyLLZaOXlsG7q6ofw9MONvNOKt3p3s5tNm8VtrVz7YVHV78mU/96s6d6ZN+07t+azd3cXi9d1h//t/Mwjr5179O3p5RdYufZI14FEEIDAqSZwX/+fPtVk6BwEIAABCBxGIL8s3XHh6afHk3PdmS6fjs4Vo/pGlj2zW2ZfzpvmC1m3eG5cZE9tF8VFfR7eLvLzozyvvR9L18y14udUWqfN6jJZPNPCLEN1lnmexmi/ZYnd8M/V4E8WTsenFUl1FlEhY/r0zvMx+KW4kmi8v/IH4bnsY99FtzhO+5N9fsWtc0mX9wWsSeCYuwnFwTLsrK7vXm6oaTjeK/0d8apkyGuh6Trj2cOQcIgc/Ec47j2MOELifUmUMxrgBbC0Z1CVVlr2O8hN3FS+Fy0+1c4il6Ezn2lrlA9v3L795u3Z9B+Kcf1SvTX+qV4LfbXLZm9Pmnxxq9uZTW5lOw+9kU2/rWx9F/fVigcCEIDAg0bgBP9rf9AQ0V8IQAACEDgKgT/84qXHunr+9FbbPTXq2qfOFPlj+jy8XZaPbeXlRb3b8XBVZBe6xeLcdDo5K/uidKfe7LRi8MB/xVl4arS+Ml4f/rlKCSNK6ZeCyQu8RP6hoP3pV2ROX8teCSng3ulTuqFGT7F0yMH6hrChvDv9yqlMB+OdLpUW/e5TROlKejfR6HwhPGPzzaEUH/eca7tbGWrR0JG9THc7O9CDtUlXu3ggwWpbBlXmBpjpwT473s55hrgICI8j4r90u0TE/q8h2f7Qpa8r+gq0Oa2K8vTveAnZC2PpmYYngedzLTy0q6m2N3S8XlTle7N28f61W7fevTmZvtkW9Svl2dFr9bR85z+8cl3PX3AQgAAEILCOAO94rqNCGAQgAAEIHJvApUtvfvD3157YrYrJa0U3Hk2LRT2ej0rtX3hxZzF/Vsrhc0XbfU62raezJn9KA/qzZWxzKMXkFVp67SOhoHNHhOsPyZPi0nn/HbIh3hNVjuEdzWFrjsGviChn8A/xQ51RZRQ4yJSh2vX+ZK1ULu+pEU7pfdYrqoi3mLOGGeL9HuuKX0mVbIhXnHqi9g0VZ4VMgG2fXsn8OqqTLJ28S597J9Gkb5e3UuYy9Z0nq1W74qNkcxdciSvel/9g8U6gJOlwMPJOvwv0esir/ROK/Xyiu2qmMKUSXPpqX+NhggKGMMWHL/zStKk1Xr13L386s96N+rT/SdPMzaLVYlkycBYzvce8o1TvSnD+oi6LX9Rd/ssyr37dNO2knDWT0blmMtl9cvqlb7w6z17pi+YAAQhAAAJ3EEj/F74jmAAIQAACEIDAR0Pg8nOPXph05cWuWzxZd+2TsihdlD3zMemHLf0jJHGiyYv9XNtWBqZkSPRqoVIK2kDUrtDKtz7rrMbsUnCIoHhTVAu8eJHRPjiVsZfM6SLfvvjBEwUe/0tN6utfn1cVDgpnfYJjhKogLwocbmi2w4YiHOf+JzekGPxrjuuSRNiykDWZeh3Xx/SXZm06N2yp9Nam2B9oUEP1ProVA7/BP+Swf4gbwg49KvEgVF2m86661XK8qnKnlzebaUyw7UqtgpWXxaJt84nuxQ+KqnijyaureVVenT395evZCy+0l+8scrV4ziEAAQhAYIWA/23AQQACEIAABD42At/Rei0/ePrp0UNbO9ozZT6aTcf1qGxqzWUsxstatU7uPdzCQnSNq2wB29paE5OCtADM2nyHZjhmRBW2yGNmus/k6/q0R2B6stIne1fjsAJ8ldzfvbrWp1zXvvUp+1AVuO4O+ETZqgFaCKubTPZaUm1v6xVmLX1VTxc7i3J29tHt6YX67dkfvpgtVkXrXftGJAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAKnkcD/B1274JV2xTKiAAAAAElFTkSuQmCC"})]})]})},openai:A=>{let{size:E="md",className:C=""}=A,{resolvedTheme:i}=(0,g.D)(),I=B(E);return"light"===i?(0,R.jsx)("svg",{fill:"#000000",width:I,height:I,viewBox:"0 0 24 24",role:"img",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{d:"M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z"})}):(0,R.jsx)("svg",{width:I,height:I,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M25.1416 11.6714C25.4329 10.8076 25.5338 9.89114 25.4376 8.98473C25.3413 8.07831 25.0501 7.20345 24.5839 6.42019C23.1641 3.98186 20.3116 2.72653 17.5256 3.31686C16.9085 2.63366 16.1538 2.08884 15.311 1.71825C14.4683 1.34765 13.5566 1.15968 12.6361 1.16669C9.78822 1.16086 7.26122 2.97036 6.38505 5.64436C5.48445 5.82464 4.63247 6.19436 3.88564 6.72899C3.13881 7.26362 2.51419 7.95094 2.05322 8.74536C1.35646 9.92867 1.05868 11.3047 1.20384 12.6702C1.34901 14.0357 1.92942 15.3183 2.85939 16.3287C2.56773 17.1925 2.46646 18.1092 2.56252 19.0158C2.65858 19.9224 2.9497 20.7975 3.41589 21.581C4.83572 24.0194 7.68822 25.2735 10.4742 24.6844C11.0911 25.3674 11.8456 25.9121 12.6882 26.2825C13.5307 26.6529 14.4422 26.8407 15.3626 26.8334C18.2127 26.8404 20.7409 25.0297 21.6171 22.3534C22.5183 22.1731 23.3708 21.8032 24.1181 21.2681C24.8654 20.7331 25.4902 20.0451 25.9512 19.25C26.6467 18.0668 26.9435 16.6914 26.7979 15.3267C26.6523 13.962 26.0721 12.6801 25.1427 11.6702L25.1416 11.6714ZM15.3637 25.1557C14.2257 25.1584 13.1223 24.7649 12.2429 24.0427C12.2826 24.0217 12.3514 23.9844 12.3969 23.9564L17.5769 21.0047C17.7062 20.9325 17.8137 20.8271 17.8884 20.6992C17.9631 20.5714 18.0022 20.4259 18.0016 20.2779V13.0725L20.1914 14.3197C20.2147 14.3314 20.2299 14.3535 20.2334 14.378V20.3455C20.2299 22.9985 18.0517 25.1499 15.3637 25.1557ZM4.89055 20.7434C4.31962 19.7722 4.11362 18.6293 4.30955 17.5199C4.34689 17.5432 4.41455 17.584 4.46239 17.6109L9.64239 20.5625C9.90489 20.7142 10.2304 20.7142 10.4941 20.5625L16.8174 16.9599V19.4542C16.8179 19.467 16.8153 19.4797 16.8098 19.4913C16.8043 19.5029 16.7961 19.513 16.7859 19.5207L11.5499 22.5027C9.21772 23.828 6.23922 23.0394 4.89172 20.741L4.89055 20.7434ZM3.52672 9.58536C4.09989 8.60769 4.99786 7.86207 6.06422 7.47836L6.06189 7.65453V13.5579C6.06117 13.7061 6.10019 13.8518 6.17487 13.9798C6.24956 14.1078 6.35718 14.2135 6.48655 14.2859L12.8099 17.8874L10.6212 19.1357C10.6104 19.1426 10.598 19.1468 10.5852 19.1478C10.5724 19.1488 10.5595 19.1467 10.5477 19.1415L5.31055 16.156C2.98305 14.826 2.18505 11.8884 3.52555 9.58769L3.52672 9.58536ZM21.5132 13.7154L15.1899 10.1127L17.3786 8.86669C17.3893 8.85956 17.4016 8.85519 17.4144 8.85397C17.4272 8.85275 17.4402 8.85471 17.4521 8.85969L22.6892 11.8429C25.0202 13.1729 25.8194 16.1152 24.4731 18.4147C23.8994 19.3917 23.0022 20.1375 21.9367 20.5229V14.4434C21.9375 14.2954 21.8986 14.15 21.8241 14.0222C21.7496 13.8944 21.6423 13.7888 21.5132 13.7165V13.7154ZM23.6914 10.4802C23.6404 10.4492 23.5891 10.4189 23.5374 10.3892L18.3574 7.43753C18.228 7.36311 18.0814 7.32394 17.9321 7.32394C17.7829 7.32394 17.6363 7.36311 17.5069 7.43753L11.1836 11.0402V8.54586C11.183 8.53305 11.1856 8.52032 11.1911 8.50874C11.1966 8.49716 11.2048 8.48708 11.2151 8.47936L16.4499 5.49853C18.7832 4.17203 21.7641 4.96186 23.1081 7.26369C23.6762 8.23553 23.8839 9.37419 23.6914 10.4802ZM9.99355 14.9252L7.80372 13.6792C7.79229 13.6736 7.78245 13.6652 7.77511 13.6548C7.76777 13.6444 7.76317 13.6323 7.76172 13.6197V7.65219C7.76289 4.99569 9.94689 2.84319 12.6396 2.84553C13.7782 2.84553 14.8796 3.23986 15.7557 3.95853C15.7161 3.97953 15.6484 4.01686 15.6029 4.04369L10.4229 6.99536C10.2934 7.06735 10.1856 7.17276 10.1107 7.3006C10.0358 7.42844 9.99654 7.57403 9.99705 7.72219L9.99355 14.924V14.9252ZM11.1836 12.3959L13.9999 10.7917L16.8162 12.3959V15.6042L13.9999 17.2084L11.1824 15.6042V12.3959H11.1836Z",fill:"white"})})},vertex:A=>{let{size:E="md",className:C=""}=A,g=B(E);return(0,R.jsxs)("svg",{width:g,height:g,viewBox:"0 0 28 28",fill:"none",xmlns:"http://www.w3.org/2000/svg",className:C,children:[(0,R.jsxs)("g",{clipPath:"url(#clip0_2482_3231)",children:[(0,R.jsx)("path",{d:"M13.997 23.5859C13.4114 23.5859 12.8498 23.8186 12.4357 24.2326C12.0217 24.6467 11.7891 25.2083 11.7891 25.7939C11.7891 26.3794 12.0217 26.941 12.4357 27.3551C12.8498 27.7692 13.4114 28.0018 13.997 28.0018C14.5826 28.0018 15.1441 27.7692 15.5582 27.3551C15.9723 26.941 16.2049 26.3794 16.2049 25.7939C16.2049 25.2083 15.9723 24.6467 15.5582 24.2326C15.1441 23.8186 14.5826 23.5859 13.997 23.5859ZM13.997 26.8596C13.7824 26.8596 13.5727 26.7958 13.3946 26.6762C13.2164 26.5567 13.0778 26.3869 12.9964 26.1884C12.915 25.9899 12.8945 25.7717 12.9375 25.5615C12.9805 25.3513 13.085 25.1586 13.2378 25.008C13.3905 24.8574 13.5847 24.7556 13.7954 24.7156C14.0062 24.6756 14.2241 24.6992 14.4215 24.7833C14.6188 24.8675 14.7866 25.0085 14.9036 25.1883C15.0206 25.3682 15.0815 25.5788 15.0785 25.7933C15.0785 25.9346 15.0504 26.0745 14.9959 26.2049C14.9413 26.3352 14.8614 26.4535 14.7608 26.5527C14.6602 26.6519 14.5408 26.7301 14.4097 26.7828C14.2786 26.8355 14.1383 26.8616 13.997 26.8596Z",fill:"#4285F4"}),(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M25.2994 16.5009C25.5759 16.5453 25.8268 16.6876 26.0053 16.9023C26.1645 17.1361 26.2312 17.4208 26.1924 17.701C26.1536 17.9813 26.0121 18.2372 25.7952 18.4189L16.1819 25.5146C16.1332 25.1296 15.9839 24.7642 15.7489 24.4554C15.514 24.1465 15.2018 23.905 14.8438 23.7553L24.5037 16.6619C24.7408 16.5139 25.0235 16.4567 25.2994 16.5009Z",fill:"#669DF6"}),(0,R.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8069 25.482L2.22044 18.405C1.99694 18.2322 1.84767 17.9808 1.80303 17.7018C1.75838 17.4229 1.8217 17.1374 1.9801 16.9035C2.15708 16.6859 2.40802 16.5411 2.68498 16.4968C2.96195 16.4524 3.24555 16.5117 3.4816 16.6632L13.1416 23.7565C12.7888 23.904 12.4803 24.1405 12.2464 24.443C12.0124 24.7454 11.861 25.1035 11.8069 25.482Z",fill:"#AECBFA"}),(0,R.jsx)("path",{d:"M4.98383 5.2215C4.68646 5.21757 4.40238 5.09769 4.19209 4.88741C3.9818 4.67712 3.86193 4.39303 3.858 4.09566V1.27233C3.83948 1.11248 3.85498 0.950517 3.90348 0.79708C3.95199 0.643643 4.0324 0.502201 4.13944 0.382042C4.24648 0.261884 4.37773 0.165726 4.52456 0.0998824C4.67139 0.0340392 4.8305 0 4.99142 0C5.15234 0 5.31144 0.0340392 5.45827 0.0998824C5.60511 0.165726 5.73635 0.261884 5.84339 0.382042C5.95043 0.502201 6.03085 0.643643 6.07935 0.79708C6.12786 0.950517 6.14336 1.11248 6.12483 1.27233V4.09566C6.12085 4.39564 5.99888 4.68198 5.78533 4.89269C5.57178 5.1034 5.28384 5.22152 4.98383 5.2215ZM4.9535 15.207C5.25611 15.207 5.54633 15.0868 5.76031 14.8728C5.97429 14.6588 6.0945 14.3686 6.0945 14.066C6.0945 13.7634 5.97429 13.4732 5.76031 13.2592C5.54633 13.0452 5.25611 12.925 4.9535 12.925C4.65089 12.925 4.36067 13.0452 4.14669 13.2592C3.93271 13.4732 3.8125 13.7634 3.8125 14.066C3.8125 14.3686 3.93271 14.6588 4.14669 14.8728C4.36067 15.0868 4.65089 15.207 4.9535 15.207ZM4.9535 11.889C5.10334 11.889 5.25171 11.8595 5.39014 11.8021C5.52857 11.7448 5.65436 11.6608 5.76031 11.5548C5.86626 11.4489 5.95031 11.3231 6.00765 11.1846C6.06499 11.0462 6.0945 10.8978 6.0945 10.748C6.0945 10.5982 6.06499 10.4498 6.00765 10.3114C5.95031 10.1729 5.86626 10.0471 5.76031 9.94119C5.65436 9.83524 5.52857 9.75119 5.39014 9.69385C5.25171 9.63651 5.10334 9.607 4.9535 9.607C4.65089 9.607 4.36067 9.72721 4.14669 9.94119C3.93271 10.1552 3.8125 10.4454 3.8125 10.748C3.8125 11.0506 3.93271 11.3408 4.14669 11.5548C4.36067 11.7688 4.65089 11.889 4.9535 11.889ZM4.9535 8.55466C5.25611 8.55466 5.54633 8.43445 5.76031 8.22047C5.97429 8.00649 6.0945 7.71628 6.0945 7.41366C6.0945 7.11105 5.97429 6.82083 5.76031 6.60685C5.54633 6.39288 5.25611 6.27266 4.9535 6.27266C4.65089 6.27266 4.36067 6.39288 4.14669 6.60685C3.93271 6.82083 3.8125 7.11105 3.8125 7.41366C3.8125 7.71628 3.93271 8.00649 4.14669 8.22047C4.36067 8.43445 4.65089 8.55466 4.9535 8.55466Z",fill:"#AECBFA"}),(0,R.jsx)("path",{d:"M23.0008 8.52503C22.7007 8.52104 22.4141 8.3989 22.2034 8.1851C21.9927 7.9713 21.8747 7.68306 21.875 7.38286V4.55953C21.875 4.26094 21.9936 3.97458 22.2048 3.76344C22.4159 3.55231 22.7022 3.43369 23.0008 3.43369C23.2994 3.43369 23.5858 3.55231 23.7969 3.76344C24.0081 3.97458 24.1267 4.26094 24.1267 4.55953V7.38286C24.129 7.53212 24.1016 7.68034 24.046 7.8189C23.9905 7.95745 23.9079 8.08356 23.8031 8.18987C23.6983 8.29618 23.5734 8.38057 23.4357 8.43811C23.2979 8.49565 23.1501 8.5252 23.0008 8.52503ZM23.03 15.2217C23.1798 15.2217 23.3282 15.1922 23.4666 15.1348C23.6051 15.0775 23.7309 14.9935 23.8368 14.8875C23.9428 14.7815 24.0268 14.6558 24.0841 14.5173C24.1415 14.3789 24.171 14.2305 24.171 14.0807C24.171 13.9309 24.1415 13.7825 24.0841 13.644C24.0268 13.5056 23.9428 13.3798 23.8368 13.2739C23.7309 13.1679 23.6051 13.0839 23.4666 13.0265C23.3282 12.9692 23.1798 12.9397 23.03 12.9397C22.7274 12.9397 22.4372 13.0599 22.2232 13.2739C22.0092 13.4879 21.889 13.7781 21.889 14.0807C21.889 14.3833 22.0092 14.6735 22.2232 14.8875C22.4372 15.1015 22.7274 15.2217 23.03 15.2217ZM23.03 11.843C23.3326 11.843 23.6228 11.7228 23.8368 11.5088C24.0508 11.2949 24.171 11.0046 24.171 10.702C24.171 10.3994 24.0508 10.1092 23.8368 9.89522C23.6228 9.68124 23.3326 9.56102 23.03 9.56102C22.7274 9.56102 22.4372 9.68124 22.2232 9.89522C22.0092 10.1092 21.889 10.3994 21.889 10.702C21.889 11.0046 22.0092 11.2949 22.2232 11.5088C22.4372 11.7228 22.7274 11.843 23.03 11.843ZM23.03 2.41286C23.1798 2.41286 23.3282 2.38335 23.4666 2.32601C23.6051 2.26867 23.7309 2.18462 23.8368 2.07867C23.9428 1.97272 24.0268 1.84693 24.0841 1.7085C24.1415 1.57007 24.171 1.4217 24.171 1.27186C24.171 1.12202 24.1415 0.97365 24.0841 0.835218C24.0268 0.696785 23.9428 0.571002 23.8368 0.465051C23.7309 0.359099 23.6051 0.275053 23.4666 0.217713C23.3282 0.160372 23.1798 0.130859 23.03 0.130859C22.7274 0.130859 22.4372 0.251072 22.2232 0.465051C22.0092 0.67903 21.889 0.969247 21.889 1.27186C21.889 1.57447 22.0092 1.86469 22.2232 2.07867C22.4372 2.29265 22.7274 2.41286 23.03 2.41286Z",fill:"#4285F4"}),(0,R.jsx)("path",{d:"M13.9926 18.5705C13.6952 18.5666 13.4111 18.4467 13.2008 18.2364C12.9905 18.0261 12.8707 17.742 12.8667 17.4447V14.5758C12.8989 14.2978 13.0322 14.0413 13.2412 13.8552C13.4502 13.669 13.7203 13.5662 14.0001 13.5662C14.28 13.5662 14.5501 13.669 14.7591 13.8552C14.9681 14.0413 15.1013 14.2978 15.1336 14.5758V17.4143C15.1359 17.5655 15.1081 17.7157 15.0517 17.856C14.9954 17.9963 14.9117 18.124 14.8055 18.2317C14.6993 18.3393 14.5727 18.4247 14.4331 18.4829C14.2935 18.541 14.1438 18.5708 13.9926 18.5705ZM13.9926 21.8897C14.2952 21.8897 14.5854 21.7694 14.7994 21.5555C15.0133 21.3415 15.1336 21.0513 15.1336 20.7487C15.1336 20.446 15.0133 20.1558 14.7994 19.9419C14.5854 19.7279 14.2952 19.6077 13.9926 19.6077C13.69 19.6077 13.3997 19.7279 13.1858 19.9419C12.9718 20.1558 12.8516 20.446 12.8516 20.7487C12.8516 21.0513 12.9718 21.3415 13.1858 21.5555C13.3997 21.7694 13.69 21.8897 13.9926 21.8897ZM13.9926 12.414C14.2952 12.414 14.5854 12.2938 14.7994 12.0798C15.0133 11.8658 15.1336 11.5756 15.1336 11.273C15.1336 10.9704 15.0133 10.6802 14.7994 10.4662C14.5854 10.2522 14.2952 10.132 13.9926 10.132C13.69 10.132 13.3997 10.2522 13.1858 10.4662C12.9718 10.6802 12.8516 10.9704 12.8516 11.273C12.8516 11.5756 12.9718 11.8658 13.1858 12.0798C13.3997 12.2938 13.69 12.414 13.9926 12.414ZM13.9926 9.08083C14.2952 9.08083 14.5854 8.96062 14.7994 8.74664C15.0133 8.53266 15.1336 8.24244 15.1336 7.93983C15.1336 7.63722 15.0133 7.347 14.7994 7.13302C14.5854 6.91904 14.2952 6.79883 13.9926 6.79883C13.69 6.79883 13.3997 6.91904 13.1858 7.13302C12.9718 7.347 12.8516 7.63722 12.8516 7.93983C12.8516 8.24244 12.9718 8.53266 13.1858 8.74664C13.3997 8.96062 13.69 9.08083 13.9926 9.08083Z",fill:"#669DF6"}),(0,R.jsx)("path",{d:"M18.5011 11.8726C18.2037 11.8686 17.9196 11.7488 17.7093 11.5385C17.499 11.3282 17.3792 11.0441 17.3752 10.7467V7.92339C17.3464 7.68214 17.3955 7.43801 17.5152 7.2266C17.6349 7.0152 17.8191 6.84757 18.0407 6.74819C18.2624 6.6488 18.5101 6.62285 18.7476 6.67413C18.9851 6.7254 19.1999 6.85122 19.3609 7.03322C19.4678 7.15343 19.5481 7.29486 19.5966 7.44827C19.645 7.60167 19.6605 7.76358 19.6421 7.92339V10.7467C19.6381 11.0467 19.5161 11.333 19.3026 11.5437C19.089 11.7545 18.8011 11.8726 18.5011 11.8726ZM18.5162 5.73122C18.6661 5.73122 18.8144 5.70171 18.9529 5.64437C19.0913 5.58703 19.2171 5.50298 19.323 5.39703C19.429 5.29108 19.513 5.16529 19.5704 5.02686C19.6277 4.88843 19.6572 4.74006 19.6572 4.59022C19.6572 4.44038 19.6277 4.29201 19.5704 4.15358C19.513 4.01514 19.429 3.88936 19.323 3.78341C19.2171 3.67746 19.0913 3.59341 18.9529 3.53607C18.8144 3.47873 18.6661 3.44922 18.5162 3.44922C18.2136 3.44922 17.9234 3.56943 17.7094 3.78341C17.4954 3.99739 17.3752 4.28761 17.3752 4.59022C17.3752 4.89283 17.4954 5.18305 17.7094 5.39703C17.9234 5.61101 18.2136 5.73122 18.5162 5.73122ZM18.5162 18.4946C18.8188 18.4946 19.1091 18.3743 19.323 18.1604C19.537 17.9464 19.6572 17.6562 19.6572 17.3536C19.6572 17.0509 19.537 16.7607 19.323 16.5467C19.1091 16.3328 18.8188 16.2126 18.5162 16.2126C18.2136 16.2126 17.9234 16.3328 17.7094 16.5467C17.4954 16.7607 17.3752 17.0509 17.3752 17.3536C17.3752 17.6562 17.4954 17.9464 17.7094 18.1604C17.9234 18.3743 18.2136 18.4946 18.5162 18.4946ZM18.5162 15.1614C18.8188 15.1614 19.1091 15.0412 19.323 14.8272C19.537 14.6132 19.6572 14.323 19.6572 14.0204C19.6572 13.7178 19.537 13.4276 19.323 13.2136C19.1091 12.9996 18.8188 12.8794 18.5162 12.8794C18.2136 12.8794 17.9234 12.9996 17.7094 13.2136C17.4954 13.4276 17.3752 13.7178 17.3752 14.0204C17.3752 14.323 17.4954 14.6132 17.7094 14.8272C17.9234 15.0412 18.2136 15.1614 18.5162 15.1614Z",fill:"#4285F4"}),(0,R.jsx)("path",{d:"M9.47752 18.4957C9.78013 18.4957 10.0704 18.3755 10.2843 18.1615C10.4983 17.9475 10.6185 17.6573 10.6185 17.3547C10.6185 17.0521 10.4983 16.7619 10.2843 16.5479C10.0704 16.3339 9.78013 16.2137 9.47752 16.2137C9.17491 16.2137 8.88469 16.3339 8.67071 16.5479C8.45673 16.7619 8.33652 17.0521 8.33652 17.3547C8.33652 17.6573 8.45673 17.9475 8.67071 18.1615C8.88469 18.3755 9.17491 18.4957 9.47752 18.4957ZM9.47752 9.08072C9.78013 9.08072 10.0704 8.96051 10.2843 8.74653C10.4983 8.53255 10.6185 8.24233 10.6185 7.93972C10.6185 7.63711 10.4983 7.34689 10.2843 7.13291C10.0704 6.91893 9.78013 6.79872 9.47752 6.79872C9.17491 6.79872 8.88469 6.91893 8.67071 7.13291C8.45673 7.34689 8.33652 7.63711 8.33652 7.93972C8.33652 8.24233 8.45673 8.53255 8.67071 8.74653C8.88469 8.96051 9.17491 9.08072 9.47752 9.08072ZM9.47752 5.73239C9.78029 5.73239 10.0707 5.61211 10.2847 5.39802C10.4988 5.18393 10.6191 4.89357 10.6191 4.5908C10.6191 4.28804 10.4988 3.99767 10.2847 3.78358C10.0707 3.56949 9.78029 3.44922 9.47752 3.44922C9.17475 3.44922 8.88439 3.56949 8.6703 3.78358C8.45621 3.99767 8.33594 4.28804 8.33594 4.5908C8.33594 4.89357 8.45621 5.18393 8.6703 5.39802C8.88439 5.61211 9.17475 5.73239 9.47752 5.73239ZM9.49269 15.1626C9.1976 15.1628 8.91391 15.0487 8.70116 14.8442C8.48841 14.6397 8.36315 14.3607 8.35169 14.0659V11.2134C8.35169 10.9148 8.4703 10.6284 8.68144 10.4173C8.89257 10.2062 9.17893 10.0876 9.47752 10.0876C9.77611 10.0876 10.0625 10.2062 10.2736 10.4173C10.4847 10.6284 10.6034 10.9148 10.6034 11.2134V14.0659C10.5956 14.3567 10.4756 14.6332 10.2686 14.8376C10.0616 15.042 9.78357 15.1584 9.49269 15.1626Z",fill:"#AECBFA"})]}),(0,R.jsx)("defs",{children:(0,R.jsx)("clipPath",{id:"clip0_2482_3231",children:(0,R.jsx)("rect",{width:"28",height:"28",fill:"white"})})})]})}},w=function(A){let E=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},C=I[A];return C?(0,R.jsx)(C,{...E}):null}},4964:(A,E,C)=>{C.d(E,{Xi:()=>w,av:()=>s,j7:()=>I,tU:()=>B});var R=C(5155);C(2115);var g=C(704),i=C(3999);function B(A){let{className:E,...C}=A;return(0,R.jsx)(g.bL,{"data-slot":"tabs",className:(0,i.cn)("flex flex-col gap-2",E),...C})}function I(A){let{className:E,...C}=A;return(0,R.jsx)(g.B8,{"data-slot":"tabs-list",className:(0,i.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",E),...C})}function w(A){let{className:E,...C}=A;return(0,R.jsx)(g.l9,{"data-slot":"tabs-trigger",className:(0,i.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",E),...C})}function s(A){let{className:E,...C}=A;return(0,R.jsx)(g.UC,{"data-slot":"tabs-content",className:(0,i.cn)("flex-1 outline-none",E),...C})}},7783:(A,E,C)=>{C.d(E,{Ez:()=>I,f:()=>g,mG:()=>i,oU:()=>B,tJ:()=>w,wf:()=>s,xq:()=>R});let R=["openai","anthropic","azure","bedrock","cohere","vertex","mistral","ollama","groq","sgl"],g=["success","error","cancelled"],i=["chat.completion","text.completion","embedding","chat.completion.chunk"],B={openai:"OpenAI",anthropic:"Anthropic",azure:"Azure OpenAI",bedrock:"AWS Bedrock",cohere:"Cohere",vertex:"Vertex AI",mistral:"Mistral AI",ollama:"Ollama",groq:"Groq",sgl:"SGLang"},I={success:"bg-green-100 text-green-800",error:"bg-red-100 text-red-800",cancelled:"bg-gray-100 text-gray-800"},w={"chat.completion":"Chat","text.completion":"Text",embedding:"Embedding","chat.completion.chunk":"Stream"},s={"chat.completion":"bg-blue-100 text-blue-800","text.completion":"bg-green-100 text-green-800",embedding:"bg-red-100 text-red-800","chat.completion.chunk":"bg-yellow-100 text-yellow-800"}},9026:(A,E,C)=>{C.d(E,{Fc:()=>I,TN:()=>w});var R=C(5155);C(2115);var g=C(2085),i=C(3999);let B=(0,g.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function I(A){let{className:E,variant:C,...g}=A;return(0,R.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,i.cn)(B({variant:C}),E),...g})}function w(A){let{className:E,...C}=A;return(0,R.jsx)("div",{"data-slot":"alert-description",className:(0,i.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",E),...C})}}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/915-36ceadf34271615d.js b/transports/bifrost-http/ui/_next/static/chunks/915-36ceadf34271615d.js new file mode 100644 index 0000000000..42103ec5e4 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/915-36ceadf34271615d.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[915],{1886:(e,t,a)=>{a.d(t,{K:()=>i});var r=a(9362),n=a(3464),s=a(2379);class o{getErrorMessage(e){if((0,r.F0)(e)&&e.response){let t=e.response.data;if(t.error&&t.error.message)return t.error.message}return e instanceof Error&&e.message||"An unexpected error occurred."}async getLogs(e,t){try{let a={limit:t.limit,offset:t.offset,sort_by:t.sort_by,order:t.order};return e.providers&&e.providers.length>0&&(a.providers=e.providers.join(",")),e.models&&e.models.length>0&&(a.models=e.models.join(",")),e.status&&e.status.length>0&&(a.status=e.status.join(",")),e.objects&&e.objects.length>0&&(a.objects=e.objects.join(",")),e.start_time&&(a.start_time=e.start_time),e.end_time&&(a.end_time=e.end_time),e.min_latency&&(a.min_latency=e.min_latency),e.max_latency&&(a.max_latency=e.max_latency),e.min_tokens&&(a.min_tokens=e.min_tokens),e.max_tokens&&(a.max_tokens=e.max_tokens),e.content_search&&(a.content_search=e.content_search),[(await this.client.get("/logs",{params:a})).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getDroppedRequests(){try{return[(await this.client.get("/logs/dropped")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getProviders(){try{return[(await this.client.get("/providers")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getProvider(e){try{return[(await this.client.get("/providers/".concat(e))).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async createProvider(e){try{return[(await this.client.post("/providers",e)).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateProvider(e,t){try{return[(await this.client.put("/providers/".concat(e),t)).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async deleteProvider(e){try{return[(await this.client.delete("/providers/".concat(e))).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getMCPClients(){try{return[(await this.client.get("/mcp/clients")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async createMCPClient(e){try{return await this.client.post("/mcp/client",e),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateMCPClient(e,t){try{return await this.client.put("/mcp/client/".concat(e),t),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async deleteMCPClient(e){try{return await this.client.delete("/mcp/client/".concat(e)),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async reconnectMCPClient(e){try{return await this.client.post("/mcp/client/".concat(e,"/reconnect")),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getCoreConfig(){try{return[(await this.client.get("/config")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateCoreConfig(e){try{return await this.client.put("/config",e),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}constructor(){let e=(0,s.hY)();this.client=n.A.create({baseURL:e,headers:{"Content-Type":"application/json"}})}}let i=new o},2379:(e,t,a)=>{function r(){{let e="https:"===window.location.protocol?"https:":"http:",t="https:"===window.location.protocol?"wss:":"ws:";return{port:window.location.port||("https:"===window.location.protocol?"443":"80"),isDevelopment:!1,baseUrl:"".concat(e,"//").concat(window.location.host),wsUrl:"".concat(t,"//").concat(window.location.host),host:window.location.host}}}function n(){let e=r();return e.isDevelopment?"".concat(e.baseUrl,"/api"):"/api"}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r(),a=e.startsWith("/")?e:"/".concat(e);return"".concat(t.wsUrl).concat(a)}function o(){return r().baseUrl}a.d(t,{$0:()=>s,XO:()=>o,hY:()=>n}),a(9509)},2384:(e,t,a)=>{a.d(t,{A:()=>s});var r=a(5155),n=a(1154);let s=function(){return(0,r.jsx)("div",{className:"h-base flex items-center justify-center pb-24",children:(0,r.jsx)(n.A,{className:"h-4 w-4 animate-spin"})})}},3999:(e,t,a)=>{a.d(t,{cn:()=>s});var r=a(2596),n=a(9688);function s(){for(var e=arguments.length,t=Array(e),a=0;a{a.d(t,{bq:()=>u,eb:()=>p,gC:()=>g,l6:()=>d,yv:()=>c});var r=a(5155);a(2115);var n=a(4582),s=a(6474),o=a(5196),i=a(7863),l=a(3999);function d(e){let{...t}=e;return(0,r.jsx)(n.bL,{"data-slot":"select",...t})}function c(e){let{...t}=e;return(0,r.jsx)(n.WT,{"data-slot":"select-value",...t})}function u(e){let{className:t,size:a="default",children:o,...i}=e;return(0,r.jsxs)(n.l9,{"data-slot":"select-trigger","data-size":a,className:(0,l.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...i,children:[o,(0,r.jsx)(n.In,{asChild:!0,children:(0,r.jsx)(s.A,{className:"size-4 opacity-50"})})]})}function g(e){let{className:t,children:a,position:s="popper",...o}=e;return(0,r.jsx)(n.ZL,{children:(0,r.jsxs)(n.UC,{"data-slot":"select-content",className:(0,l.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===s&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:s,...o,children:[(0,r.jsx)(f,{}),(0,r.jsx)(n.LM,{className:(0,l.cn)("p-1","popper"===s&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:a}),(0,r.jsx)(h,{})]})})}function p(e){let{className:t,children:a,...s}=e;return(0,r.jsxs)(n.q7,{"data-slot":"select-item",className:(0,l.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...s,children:[(0,r.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,r.jsx)(n.VF,{children:(0,r.jsx)(o.A,{className:"size-4"})})}),(0,r.jsx)(n.p4,{children:a})]})}function f(e){let{className:t,...a}=e;return(0,r.jsx)(n.PP,{"data-slot":"select-scroll-up-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",t),...a,children:(0,r.jsx)(i.A,{className:"size-4"})})}function h(e){let{className:t,...a}=e;return(0,r.jsx)(n.wn,{"data-slot":"select-scroll-down-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",t),...a,children:(0,r.jsx)(s.A,{className:"size-4"})})}},7168:(e,t,a)=>{a.d(t,{$:()=>d,r:()=>l});var r=a(5155);a(2115);var n=a(9708),s=a(2085),o=a(3999),i=a(1154);let l=(0,s.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:a,size:n,asChild:s=!1,children:o,isLoading:l=!1,...d}=e;return(0,r.jsx)(c,{className:t,variant:a,size:n,asChild:s,...d,children:l?(0,r.jsx)(i.A,{className:"size-4 animate-spin"}):o})}function c(e){let{className:t,variant:a,size:s,asChild:i=!1,...d}=e,c=i?n.DX:"button";return(0,r.jsx)(c,{"data-slot":"button",className:(0,o.cn)(l({variant:a,size:s,className:t}),"cursor-pointer"),...d})}},8145:(e,t,a)=>{a.d(t,{E:()=>l});var r=a(5155);a(2115);var n=a(9708),s=a(2085),o=a(3999);let i=(0,s.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:a,asChild:s=!1,...l}=e,d=s?n.DX:"span";return(0,r.jsx)(d,{"data-slot":"badge",className:(0,o.cn)(i({variant:a}),t),...l})}},8482:(e,t,a)=>{a.d(t,{BT:()=>l,Wu:()=>d,ZB:()=>i,Zp:()=>s,aR:()=>o});var r=a(5155);a(2115);var n=a(3999);function s(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card",className:(0,n.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...a})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,n.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...a})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,n.cn)("leading-none font-semibold",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,n.cn)("text-muted-foreground text-sm",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,n.cn)("px-6",t),...a})}},8524:(e,t,a)=>{a.d(t,{A0:()=>o,BF:()=>i,Hj:()=>l,XI:()=>s,nA:()=>c,nd:()=>d});var r=a(5155);a(2115);var n=a(3999);function s(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,r.jsx)("table",{"data-slot":"table",className:(0,n.cn)("w-full caption-bottom text-sm",t),...a})})}function o(e){let{className:t,...a}=e;return(0,r.jsx)("thead",{"data-slot":"table-header",className:(0,n.cn)("[&_tr]:border-b",t),...a})}function i(e){let{className:t,...a}=e;return(0,r.jsx)("tbody",{"data-slot":"table-body",className:(0,n.cn)("[&_tr:last-child]:border-0",t),...a})}function l(e){let{className:t,...a}=e;return(0,r.jsx)("tr",{"data-slot":"table-row",className:(0,n.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...a})}function d(e){let{className:t,...a}=e;return(0,r.jsx)("th",{"data-slot":"table-head",className:(0,n.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...a})}function c(e){let{className:t,...a}=e;return(0,r.jsx)("td",{"data-slot":"table-cell",className:(0,n.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...a})}},9840:(e,t,a)=>{a.d(t,{Cf:()=>c,Es:()=>g,L3:()=>p,c7:()=>u,lG:()=>i,rr:()=>f});var r=a(5155),n=a(5452),s=a(4416);a(2115);var o=a(3999);function i(e){let{...t}=e;return(0,r.jsx)(n.bL,{"data-slot":"dialog",...t})}function l(e){let{...t}=e;return(0,r.jsx)(n.ZL,{"data-slot":"dialog-portal",...t})}function d(e){let{className:t,...a}=e;return(0,r.jsx)(n.hJ,{"data-slot":"dialog-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...a})}function c(e){let{className:t,children:a,showCloseButton:i=!0,...c}=e;return(0,r.jsxs)(l,{"data-slot":"dialog-portal",children:[(0,r.jsx)(d,{}),(0,r.jsxs)(n.UC,{"data-slot":"dialog-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...c,children:[a,i&&(0,r.jsxs)(n.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,r.jsx)(s.A,{}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"dialog-header",className:(0,o.cn)("flex flex-col gap-2 text-center sm:text-left sticky top-0 bg-background pb-2",t),...a})}function g(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"dialog-footer",className:(0,o.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...a})}function p(e){let{className:t,...a}=e;return(0,r.jsx)(n.hE,{"data-slot":"dialog-title",className:(0,o.cn)("text-lg leading-none font-semibold",t),...a})}function f(e){let{className:t,...a}=e;return(0,r.jsx)(n.VY,{"data-slot":"dialog-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...a})}},9852:(e,t,a)=>{a.d(t,{p:()=>o});var r=a(5155),n=a(2115),s=a(3999);let o=n.forwardRef((e,t)=>{let{className:a,type:n,...o}=e;return(0,r.jsx)("input",{type:n,ref:t,"data-slot":"input",className:(0,s.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...o})});o.displayName="Input"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/925-c10f273e99bd2248.js b/transports/bifrost-http/ui/_next/static/chunks/925-c10f273e99bd2248.js new file mode 100644 index 0000000000..6bdbd72b2e --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/925-c10f273e99bd2248.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[925],{1284:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1539:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},2525:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},3717:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("square-pen",[["path",{d:"M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7",key:"1m0v6g"}],["path",{d:"M18.375 2.625a1 1 0 0 1 3 3l-9.013 9.014a2 2 0 0 1-.853.505l-2.873.84a.5.5 0 0 1-.62-.62l.84-2.873a2 2 0 0 1 .506-.852z",key:"ohrbg2"}]])},4229:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("save",[["path",{d:"M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z",key:"1c8476"}],["path",{d:"M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7",key:"1ydtos"}],["path",{d:"M7 3v4a1 1 0 0 0 1 1h7",key:"t51u73"}]])},4616:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},4869:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])},7649:(t,e,r)=>{"use strict";r.d(e,{UC:()=>L,VY:()=>U,ZD:()=>P,ZL:()=>R,bL:()=>E,hE:()=>I,hJ:()=>F,l9:()=>S,rc:()=>C});var n=r(2115),a=r(6081),o=r(6101),i=r(5452),c=r(5185),s=r(9708),u=r(5155),l="AlertDialog",[f,h]=(0,a.A)(l,[i.Hs]),p=(0,i.Hs)(),d=t=>{let{__scopeAlertDialog:e,...r}=t,n=p(e);return(0,u.jsx)(i.bL,{...n,...r,modal:!0})};d.displayName=l;var y=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,a=p(r);return(0,u.jsx)(i.l9,{...a,...n,ref:e})});y.displayName="AlertDialogTrigger";var v=t=>{let{__scopeAlertDialog:e,...r}=t,n=p(e);return(0,u.jsx)(i.ZL,{...n,...r})};v.displayName="AlertDialogPortal";var _=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,a=p(r);return(0,u.jsx)(i.hJ,{...a,...n,ref:e})});_.displayName="AlertDialogOverlay";var b="AlertDialogContent",[g,j]=f(b),A=(0,s.Dc)("AlertDialogContent"),m=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,children:a,...s}=t,l=p(r),f=n.useRef(null),h=(0,o.s)(e,f),d=n.useRef(null);return(0,u.jsx)(i.G$,{contentName:b,titleName:k,docsSlug:"alert-dialog",children:(0,u.jsx)(g,{scope:r,cancelRef:d,children:(0,u.jsxs)(i.UC,{role:"alertdialog",...l,...s,ref:h,onOpenAutoFocus:(0,c.m)(s.onOpenAutoFocus,t=>{var e;t.preventDefault(),null==(e=d.current)||e.focus({preventScroll:!0})}),onPointerDownOutside:t=>t.preventDefault(),onInteractOutside:t=>t.preventDefault(),children:[(0,u.jsx)(A,{children:a}),(0,u.jsx)(N,{contentRef:f})]})})})});m.displayName=b;var k="AlertDialogTitle",w=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,a=p(r);return(0,u.jsx)(i.hE,{...a,...n,ref:e})});w.displayName=k;var x="AlertDialogDescription",z=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,a=p(r);return(0,u.jsx)(i.VY,{...a,...n,ref:e})});z.displayName=x;var O=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,a=p(r);return(0,u.jsx)(i.bm,{...a,...n,ref:e})});O.displayName="AlertDialogAction";var M="AlertDialogCancel",D=n.forwardRef((t,e)=>{let{__scopeAlertDialog:r,...n}=t,{cancelRef:a}=j(M,r),c=p(r),s=(0,o.s)(e,a);return(0,u.jsx)(i.bm,{...c,...n,ref:s})});D.displayName=M;var N=t=>{let{contentRef:e}=t,r="`".concat(b,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(b,"` by passing a `").concat(x,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(b,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return n.useEffect(()=>{var t;document.getElementById(null==(t=e.current)?void 0:t.getAttribute("aria-describedby"))||console.warn(r)},[r,e]),null},E=d,S=y,R=v,F=_,L=m,C=O,P=D,I=w,U=z},8103:(t,e,r)=>{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("pickaxe",[["path",{d:"M14.531 12.469 6.619 20.38a1 1 0 1 1-3-3l7.912-7.912",key:"we99rg"}],["path",{d:"M15.686 4.314A12.5 12.5 0 0 0 5.461 2.958 1 1 0 0 0 5.58 4.71a22 22 0 0 1 6.318 3.393",key:"1w6hck"}],["path",{d:"M17.7 3.7a1 1 0 0 0-1.4 0l-4.6 4.6a1 1 0 0 0 0 1.4l2.6 2.6a1 1 0 0 0 1.4 0l4.6-4.6a1 1 0 0 0 0-1.4z",key:"15hgfx"}],["path",{d:"M19.686 8.314a12.501 12.501 0 0 1 1.356 10.225 1 1 0 0 1-1.751-.119 22 22 0 0 0-3.393-6.319",key:"452b4h"}]])},9231:(t,e,r)=>{t=r.nmd(t);var n,a,o="__lodash_hash_undefined__",i="[object Arguments]",c="[object Array]",s="[object Boolean]",u="[object Date]",l="[object Error]",f="[object Function]",h="[object Map]",p="[object Number]",d="[object Object]",y="[object Promise]",v="[object RegExp]",_="[object Set]",b="[object String]",g="[object WeakMap]",j="[object ArrayBuffer]",A="[object DataView]",m=/^\[object .+?Constructor\]$/,k=/^(?:0|[1-9]\d*)$/,w={};w["[object Float32Array]"]=w["[object Float64Array]"]=w["[object Int8Array]"]=w["[object Int16Array]"]=w["[object Int32Array]"]=w["[object Uint8Array]"]=w["[object Uint8ClampedArray]"]=w["[object Uint16Array]"]=w["[object Uint32Array]"]=!0,w[i]=w[c]=w[j]=w[s]=w[A]=w[u]=w[l]=w[f]=w[h]=w[p]=w[d]=w[v]=w[_]=w[b]=w[g]=!1;var x="object"==typeof r.g&&r.g&&r.g.Object===Object&&r.g,z="object"==typeof self&&self&&self.Object===Object&&self,O=x||z||Function("return this")(),M=e&&!e.nodeType&&e,D=M&&t&&!t.nodeType&&t,N=D&&D.exports===M,E=N&&x.process,S=function(){try{return E&&E.binding&&E.binding("util")}catch(t){}}(),R=S&&S.isTypedArray;function F(t){var e=-1,r=Array(t.size);return t.forEach(function(t,n){r[++e]=[n,t]}),r}function L(t){var e=-1,r=Array(t.size);return t.forEach(function(t){r[++e]=t}),r}var C=Array.prototype,P=Function.prototype,I=Object.prototype,U=O["__core-js_shared__"],V=P.toString,$=I.hasOwnProperty,T=function(){var t=/[^.]+$/.exec(U&&U.keys&&U.keys.IE_PROTO||"");return t?"Symbol(src)_1."+t:""}(),B=I.toString,H=RegExp("^"+V.call($).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),q=N?O.Buffer:void 0,Y=O.Symbol,Z=O.Uint8Array,G=I.propertyIsEnumerable,J=C.splice,W=Y?Y.toStringTag:void 0,K=Object.getOwnPropertySymbols,Q=q?q.isBuffer:void 0,X=(n=Object.keys,a=Object,function(t){return n(a(t))}),tt=tw(O,"DataView"),te=tw(O,"Map"),tr=tw(O,"Promise"),tn=tw(O,"Set"),ta=tw(O,"WeakMap"),to=tw(Object,"create"),ti=tO(tt),tc=tO(te),ts=tO(tr),tu=tO(tn),tl=tO(ta),tf=Y?Y.prototype:void 0,th=tf?tf.valueOf:void 0;function tp(t){var e=-1,r=null==t?0:t.length;for(this.clear();++ec))return!1;var u=o.get(t);if(u&&o.get(e))return u==e;var l=-1,f=!0,h=2&r?new tv:void 0;for(o.set(t,e),o.set(e,t);++l-1},td.prototype.set=function(t,e){var r=this.__data__,n=tb(r,t);return n<0?(++this.size,r.push([t,e])):r[n][1]=e,this},ty.prototype.clear=function(){this.size=0,this.__data__={hash:new tp,map:new(te||td),string:new tp}},ty.prototype.delete=function(t){var e=tk(this,t).delete(t);return this.size-=!!e,e},ty.prototype.get=function(t){return tk(this,t).get(t)},ty.prototype.has=function(t){return tk(this,t).has(t)},ty.prototype.set=function(t,e){var r=tk(this,t),n=r.size;return r.set(t,e),this.size+=+(r.size!=n),this},tv.prototype.add=tv.prototype.push=function(t){return this.__data__.set(t,o),this},tv.prototype.has=function(t){return this.__data__.has(t)},t_.prototype.clear=function(){this.__data__=new td,this.size=0},t_.prototype.delete=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r},t_.prototype.get=function(t){return this.__data__.get(t)},t_.prototype.has=function(t){return this.__data__.has(t)},t_.prototype.set=function(t,e){var r=this.__data__;if(r instanceof td){var n=r.__data__;if(!te||n.length<199)return n.push([t,e]),this.size=++r.size,this;r=this.__data__=new ty(n)}return r.set(t,e),this.size=r.size,this};var tx=K?function(t){return null==t?[]:function(t,e){for(var r=-1,n=null==t?0:t.length,a=0,o=[];++r-1&&t%1==0&&t<=0x1fffffffffffff}function tF(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function tL(t){return null!=t&&"object"==typeof t}var tC=R?function(t){return R(t)}:function(t){return tL(t)&&tR(t.length)&&!!w[tg(t)]};function tP(t){return null!=t&&tR(t.length)&&!tS(t)?function(t,e){var r,n,a=tN(t),o=!a&&tD(t),i=!a&&!o&&tE(t),c=!a&&!o&&!i&&tC(t),s=a||o||i||c,u=s?function(t,e){for(var r=-1,n=Array(t);++r-1&&r%1==0&&r{"use strict";r.d(e,{A:()=>n});let n=(0,r(9946).A)("key",[["path",{d:"m15.5 7.5 2.3 2.3a1 1 0 0 0 1.4 0l2.1-2.1a1 1 0 0 0 0-1.4L19 4",key:"g0fldk"}],["path",{d:"m21 2-9.6 9.6",key:"1j0ho8"}],["circle",{cx:"7.5",cy:"15.5",r:"5.5",key:"yqb3hr"}]])}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/944-f01f5d77bd313da6.js b/transports/bifrost-http/ui/_next/static/chunks/944-f01f5d77bd313da6.js new file mode 100644 index 0000000000..cbd306519d --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/944-f01f5d77bd313da6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[944],{1285:(e,t,n)=>{n.d(t,{B:()=>a});var r,o=n(2115),u=n(2712),i=(r||(r=n.t(o,2)))[" useId ".trim().toString()]||(()=>void 0),l=0;function a(e){let[t,n]=o.useState(i());return(0,u.N)(()=>{e||n(e=>e??String(l++))},[e]),e||(t?`radix-${t}`:"")}},4315:(e,t,n)=>{n.d(t,{jH:()=>u});var r=n(2115);n(5155);var o=r.createContext(void 0);function u(e){let t=r.useContext(o);return e||t||"ltr"}},7328:(e,t,n)=>{function r(e,t,n){if(!t.has(e))throw TypeError("attempted to "+n+" private field on non-instance");return t.get(e)}function o(e,t){var n=r(e,t,"get");return n.get?n.get.call(e):n.value}function u(e,t,n){var o=r(e,t,"set");if(o.set)o.set.call(e,n);else{if(!o.writable)throw TypeError("attempted to set read only private field");o.value=n}return n}n.d(t,{N:()=>f});var i,l=n(2115),a=n(6081),c=n(6101),s=n(9708),d=n(5155);function f(e){let t=e+"CollectionProvider",[n,r]=(0,a.A)(t),[o,u]=n(t,{collectionRef:{current:null},itemMap:new Map}),i=e=>{let{scope:t,children:n}=e,r=l.useRef(null),u=l.useRef(new Map).current;return(0,d.jsx)(o,{scope:t,itemMap:u,collectionRef:r,children:n})};i.displayName=t;let f=e+"CollectionSlot",m=(0,s.TL)(f),p=l.forwardRef((e,t)=>{let{scope:n,children:r}=e,o=u(f,n),i=(0,c.s)(t,o.collectionRef);return(0,d.jsx)(m,{ref:i,children:r})});p.displayName=f;let v=e+"CollectionItemSlot",N="data-radix-collection-item",M=(0,s.TL)(v),y=l.forwardRef((e,t)=>{let{scope:n,children:r,...o}=e,i=l.useRef(null),a=(0,c.s)(t,i),s=u(v,n);return l.useEffect(()=>(s.itemMap.set(i,{ref:i,...o}),()=>void s.itemMap.delete(i))),(0,d.jsx)(M,{...{[N]:""},ref:a,children:r})});return y.displayName=v,[{Provider:i,Slot:p,ItemSlot:y},function(t){let n=u(e+"CollectionConsumer",t);return l.useCallback(()=>{let e=n.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(N,"]")));return Array.from(n.itemMap.values()).sort((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current))},[n.collectionRef,n.itemMap])},r]}var m=new WeakMap;function p(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);let n=function(e,t){let n=e.length,r=v(t),o=r>=0?r:n+r;return o<0||o>=n?-1:o}(e,t);return -1===n?void 0:e[n]}function v(e){return e!=e||0===e?0:Math.trunc(e)}i=new WeakMap},8905:(e,t,n)=>{n.d(t,{C:()=>i});var r=n(2115),o=n(6101),u=n(2712),i=e=>{let{present:t,children:n}=e,i=function(e){var t,n;let[o,i]=r.useState(),a=r.useRef(null),c=r.useRef(e),s=r.useRef("none"),[d,f]=(t=e?"mounted":"unmounted",n={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},r.useReducer((e,t)=>{let r=n[e][t];return null!=r?r:e},t));return r.useEffect(()=>{let e=l(a.current);s.current="mounted"===d?e:"none"},[d]),(0,u.N)(()=>{let t=a.current,n=c.current;if(n!==e){let r=s.current,o=l(t);e?f("MOUNT"):"none"===o||(null==t?void 0:t.display)==="none"?f("UNMOUNT"):n&&r!==o?f("ANIMATION_OUT"):f("UNMOUNT"),c.current=e}},[e,f]),(0,u.N)(()=>{if(o){var e;let t,n=null!=(e=o.ownerDocument.defaultView)?e:window,r=e=>{let r=l(a.current).includes(e.animationName);if(e.target===o&&r&&(f("ANIMATION_END"),!c.current)){let e=o.style.animationFillMode;o.style.animationFillMode="forwards",t=n.setTimeout(()=>{"forwards"===o.style.animationFillMode&&(o.style.animationFillMode=e)})}},u=e=>{e.target===o&&(s.current=l(a.current))};return o.addEventListener("animationstart",u),o.addEventListener("animationcancel",r),o.addEventListener("animationend",r),()=>{n.clearTimeout(t),o.removeEventListener("animationstart",u),o.removeEventListener("animationcancel",r),o.removeEventListener("animationend",r)}}f("ANIMATION_END")},[o,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:r.useCallback(e=>{a.current=e?getComputedStyle(e):null,i(e)},[])}}(t),a="function"==typeof n?n({present:i.isPresent}):r.Children.only(n),c=(0,o.s)(i.ref,function(e){var t,n;let r=null==(t=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:t.get,o=r&&"isReactWarning"in r&&r.isReactWarning;return o?e.ref:(o=(r=null==(n=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:n.get)&&"isReactWarning"in r&&r.isReactWarning)?e.props.ref:e.props.ref||e.ref}(a));return"function"==typeof n||i.isPresent?r.cloneElement(a,{ref:c}):null};function l(e){return(null==e?void 0:e.animationName)||"none"}i.displayName="Presence"},9033:(e,t,n)=>{n.d(t,{c:()=>o});var r=n(2115);function o(e){let t=r.useRef(e);return r.useEffect(()=>{t.current=e}),r.useMemo(()=>(...e)=>t.current?.(...e),[])}}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/983-ee41b772651f7909.js b/transports/bifrost-http/ui/_next/static/chunks/983-ee41b772651f7909.js deleted file mode 100644 index d32b18160a..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/983-ee41b772651f7909.js +++ /dev/null @@ -1,124 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[983],{2098:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]])},3509:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]])},3786:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]])},5040:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("book-open",[["path",{d:"M12 7v14",key:"1akyts"}],["path",{d:"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z",key:"ruj8y"}]])},5688:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_5cfdac",variable:"__variable_5cfdac"}},5695:(e,t,r)=>{"use strict";var n=r(8999);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useSearchParams")&&r.d(t,{useSearchParams:function(){return n.useSearchParams}})},6233:(e,t,r)=>{"use strict";r.d(t,{U:()=>o});var n=r(2115),a=r(5709);let s=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,44H160a43.86,43.86,0,0,0-32,13.85A43.86,43.86,0,0,0,96,44H24A12,12,0,0,0,12,56V200a12,12,0,0,0,12,12H96a20,20,0,0,1,20,20,12,12,0,0,0,24,0,20,20,0,0,1,20-20h72a12,12,0,0,0,12-12V56A12,12,0,0,0,232,44ZM96,188H36V68H96a20,20,0,0,1,20,20V192.81A43.79,43.79,0,0,0,96,188Zm124,0H160a43.71,43.71,0,0,0-20,4.83V88a20,20,0,0,1,20-20h60ZM164,96h32a12,12,0,0,1,0,24H164a12,12,0,0,1,0-24Zm44,52a12,12,0,0,1-12,12H164a12,12,0,0,1,0-24h32A12,12,0,0,1,208,148Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,56V200H160a32,32,0,0,0-32,32V88a32,32,0,0,1,32-32Z",opacity:"0.2"}),n.createElement("path",{d:"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,48H168a32,32,0,0,0-32,32v87.73a8.17,8.17,0,0,1-7.47,8.25,8,8,0,0,1-8.53-8V80A32,32,0,0,0,88,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,23.94,7.9,7.9,0,0,0,5.12,7.55A8,8,0,0,0,136,232a24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM208,168H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,168Zm0-32H168.27a8.17,8.17,0,0,1-8.25-7.47,8,8,0,0,1,8-8.53h39.73a8.17,8.17,0,0,1,8.25,7.47A8,8,0,0,1,208,136Zm0-32H168.27A8.17,8.17,0,0,1,160,96.53,8,8,0,0,1,168,88h39.73A8.17,8.17,0,0,1,216,95.47,8,8,0,0,1,208,104Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,50H160a38,38,0,0,0-32,17.55A38,38,0,0,0,96,50H24a6,6,0,0,0-6,6V200a6,6,0,0,0,6,6H96a26,26,0,0,1,26,26,6,6,0,0,0,12,0,26,26,0,0,1,26-26h72a6,6,0,0,0,6-6V56A6,6,0,0,0,232,50ZM96,194H30V62H96a26,26,0,0,1,26,26V204.31A37.86,37.86,0,0,0,96,194Zm130,0H160a37.87,37.87,0,0,0-26,10.32V88a26,26,0,0,1,26-26h66ZM160,90h40a6,6,0,0,1,0,12H160a6,6,0,0,1,0-12Zm46,38a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,128Zm0,32a6,6,0,0,1-6,6H160a6,6,0,0,1,0-12h40A6,6,0,0,1,206,160Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,48H160a40,40,0,0,0-32,16A40,40,0,0,0,96,48H24a8,8,0,0,0-8,8V200a8,8,0,0,0,8,8H96a24,24,0,0,1,24,24,8,8,0,0,0,16,0,24,24,0,0,1,24-24h72a8,8,0,0,0,8-8V56A8,8,0,0,0,232,48ZM96,192H32V64H96a24,24,0,0,1,24,24V200A39.81,39.81,0,0,0,96,192Zm128,0H160a39.81,39.81,0,0,0-24,8V88a24,24,0,0,1,24-24h64ZM160,88h40a8,8,0,0,1,0,16H160a8,8,0,0,1,0-16Zm48,40a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,128Zm0,32a8,8,0,0,1-8,8H160a8,8,0,0,1,0-16h40A8,8,0,0,1,208,160Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M232,52H160a36,36,0,0,0-32,19.54A36,36,0,0,0,96,52H24a4,4,0,0,0-4,4V200a4,4,0,0,0,4,4H96a28,28,0,0,1,28,28,4,4,0,0,0,8,0,28,28,0,0,1,28-28h72a4,4,0,0,0,4-4V56A4,4,0,0,0,232,52ZM96,196H28V60H96a28,28,0,0,1,28,28V209.4A35.94,35.94,0,0,0,96,196Zm132,0H160a35.94,35.94,0,0,0-28,13.41V88a28,28,0,0,1,28-28h68ZM160,92h40a4,4,0,0,1,0,8H160a4,4,0,0,1,0-8Zm44,36a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,128Zm0,32a4,4,0,0,1-4,4H160a4,4,0,0,1,0-8h40A4,4,0,0,1,204,160Z"}))]]),o=n.forwardRef((e,t)=>n.createElement(a.A,{ref:t,...e,weights:s}));o.displayName="BookOpenTextIcon"},7109:(e,t,r)=>{"use strict";r.d(t,{V:()=>R});var n=r(5695),a=r(2115);function s(e,t,r){return Math.max(t,Math.min(e,r))}function o(e,t){return"rtl"===t?(1-e)*100:(-1+e)*100}function i(e,t,r){if("string"==typeof t)void 0!==r&&(e.style[t]=r);else for(let r in t)if(t.hasOwnProperty(r)){let n=t[r];void 0!==n&&(e.style[r]=n)}}function l(e,t){e.classList.add(t)}function u(e,t){e.classList.remove(t)}function c(e){e&&e.parentNode&&e.parentNode.removeChild(e)}var d={minimum:.08,maximum:1,template:`
-
-
`,easing:"linear",positionUsing:"",speed:200,trickle:!0,trickleSpeed:200,showSpinner:!0,indeterminate:!1,indeterminateSelector:".indeterminate",barSelector:".bar",spinnerSelector:".spinner",parent:"body",direction:"ltr"},p=class{static settings=d;static status=null;static pending=[];static isPaused=!1;static reset(){return this.status=null,this.isPaused=!1,this.pending=[],this.settings=d,this}static configure(e){return Object.assign(this.settings,e),this}static isStarted(){return"number"==typeof this.status}static set(e){if(this.isPaused)return this;let t=this.isStarted();e=s(e,this.settings.minimum,this.settings.maximum),this.status=e===this.settings.maximum?null:e;let r=this.render(!t),n=this.settings.speed,a=this.settings.easing;return r.forEach(e=>e.offsetWidth),this.queue(t=>{r.forEach(t=>{this.settings.indeterminate||i(t.querySelector(this.settings.barSelector),this.barPositionCSS({n:e,speed:n,ease:a}))}),e===this.settings.maximum?(r.forEach(e=>{i(e,{transition:"none",opacity:"1"}),e.offsetWidth}),setTimeout(()=>{r.forEach(e=>{i(e,{transition:`all ${n}ms ${a}`,opacity:"0"})}),setTimeout(()=>{r.forEach(e=>{this.remove(e),null===this.settings.template&&i(e,{transition:"none",opacity:"1"})}),t()},n)},n)):setTimeout(t,n)}),this}static start(){this.status||this.set(0);let e=()=>{this.isPaused||setTimeout(()=>{this.status&&(this.trickle(),e())},this.settings.trickleSpeed)};return this.settings.trickle&&e(),this}static done(e){return e||this.status?this.inc(.3+.5*Math.random()).set(1):this}static inc(e){if(this.isPaused||this.settings.indeterminate)return this;let t=this.status;return t?t>1?this:("number"!=typeof e&&(e=t>=0&&t<.2?.1:t>=.2&&t<.5?.04:t>=.5&&t<.8?.02:.005*(t>=.8&&t<.99)),t=s(t+e,0,.994),this.set(t)):this.start()}static dec(e){if(this.isPaused||this.settings.indeterminate)return this;let t=this.status;return"number"!=typeof t?this:("number"!=typeof e&&(e=t>.8?.1:t>.5?.05:t>.2?.02:.01),t=s(t-e,0,.994),this.set(t))}static trickle(){return this.isPaused||this.settings.indeterminate?this:this.inc()}static promise(e){if(!e||"resolved"===e.state())return this;let t=0,r=0;return this.start(),t++,r++,e.always(()=>{0==--r?(t=0,this.done()):this.set((t-r)/t)}),this}static render(e=!1){let t="string"==typeof this.settings.parent?document.querySelector(this.settings.parent):this.settings.parent,r=t?Array.from(t.querySelectorAll(".bprogress")):[];if(null!==this.settings.template&&0===r.length){l(document.documentElement,"bprogress-busy");let e=document.createElement("div");l(e,"bprogress"),e.innerHTML=this.settings.template,t!==document.body&&l(t,"bprogress-custom-parent"),t.appendChild(e),r.push(e)}return r.forEach(r=>{if(null===this.settings.template&&(r.style.display=""),l(document.documentElement,"bprogress-busy"),t!==document.body&&l(t,"bprogress-custom-parent"),this.settings.indeterminate){let e=r.querySelector(this.settings.barSelector);e&&(e.style.display="none");let t=r.querySelector(this.settings.indeterminateSelector);t&&(t.style.display="")}else{let t=r.querySelector(this.settings.barSelector),n=e?o(0,this.settings.direction):o(this.status||0,this.settings.direction);i(t,this.barPositionCSS({n:this.status||0,speed:this.settings.speed,ease:this.settings.easing,perc:n}));let a=r.querySelector(this.settings.indeterminateSelector);a&&(a.style.display="none")}if(null===this.settings.template){let e=r.querySelector(this.settings.spinnerSelector);e&&(e.style.display=this.settings.showSpinner?"block":"none")}else if(!this.settings.showSpinner){let e=r.querySelector(this.settings.spinnerSelector);e&&c(e)}}),r}static remove(e){e?null===this.settings.template?e.style.display="none":c(e):(u(document.documentElement,"bprogress-busy"),("string"==typeof this.settings.parent?document.querySelectorAll(this.settings.parent):[this.settings.parent]).forEach(e=>{u(e,"bprogress-custom-parent")}),document.querySelectorAll(".bprogress").forEach(e=>{null===this.settings.template?e.style.display="none":c(e)}))}static pause(){return!this.isStarted()||this.settings.indeterminate||(this.isPaused=!0),this}static resume(){if(!this.isStarted()||this.settings.indeterminate)return this;if(this.isPaused=!1,this.settings.trickle){let e=()=>{this.isPaused||setTimeout(()=>{this.status&&(this.trickle(),e())},this.settings.trickleSpeed)};e()}return this}static isRendered(){return document.querySelectorAll(".bprogress").length>0}static getPositioningCSS(){let e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return`${t}Perspective`in e?"translate3d":`${t}Transform`in e?"translate":"margin"}static queue(e){this.pending.push(e),1===this.pending.length&&this.next()}static next(){let e=this.pending.shift();e&&e(this.next.bind(this))}static initPositionUsing(){""===this.settings.positionUsing&&(this.settings.positionUsing=this.getPositioningCSS())}static barPositionCSS({n:e,speed:t,ease:r,perc:n}){this.initPositionUsing();let a={},s=n??o(e,this.settings.direction);return"translate3d"===this.settings.positionUsing?a={transform:`translate3d(${s}%,0,0)`}:"translate"===this.settings.positionUsing?a={transform:`translate(${s}%,0)`}:"width"===this.settings.positionUsing?a={width:`${"rtl"===this.settings.direction?100-s:s+100}%`,..."rtl"===this.settings.direction?{right:"0",left:"auto"}:{}}:"margin"===this.settings.positionUsing&&(a="rtl"===this.settings.direction?{"margin-left":`${-s}%`}:{"margin-right":`${-s}%`}),a.transition=`all ${t}ms ${r}`,a}},h=({color:e="#29d",height:t="2px",spinnerPosition:r="top-right"})=>` -:root { - --bprogress-color: ${e}; - --bprogress-height: ${t}; - --bprogress-spinner-size: 18px; - --bprogress-spinner-animation-duration: 400ms; - --bprogress-spinner-border-size: 2px; - --bprogress-box-shadow: 0 0 10px ${e}, 0 0 5px ${e}; - --bprogress-z-index: 99999; - --bprogress-spinner-top: ${"top-right"===r||"top-left"===r?"15px":"auto"}; - --bprogress-spinner-bottom: ${"bottom-right"===r||"bottom-left"===r?"15px":"auto"}; - --bprogress-spinner-right: ${"top-right"===r||"bottom-right"===r?"15px":"auto"}; - --bprogress-spinner-left: ${"top-left"===r||"bottom-left"===r?"15px":"auto"}; -} - -.bprogress { - width: 0; - height: 0; - pointer-events: none; - z-index: var(--bprogress-z-index); -} - -.bprogress .bar { - background: var(--bprogress-color); - position: fixed; - z-index: var(--bprogress-z-index); - top: 0; - left: 0; - width: 100%; - height: var(--bprogress-height); -} - -/* Fancy blur effect */ -.bprogress .peg { - display: block; - position: absolute; - right: 0; - width: 100px; - height: 100%; - box-shadow: var(--bprogress-box-shadow); - opacity: 1.0; - transform: rotate(3deg) translate(0px, -4px); -} - -/* Remove these to get rid of the spinner */ -.bprogress .spinner { - display: block; - position: fixed; - z-index: var(--bprogress-z-index); - top: var(--bprogress-spinner-top); - bottom: var(--bprogress-spinner-bottom); - right: var(--bprogress-spinner-right); - left: var(--bprogress-spinner-left); -} - -.bprogress .spinner-icon { - width: var(--bprogress-spinner-size); - height: var(--bprogress-spinner-size); - box-sizing: border-box; - border: solid var(--bprogress-spinner-border-size) transparent; - border-top-color: var(--bprogress-color); - border-left-color: var(--bprogress-color); - border-radius: 50%; - -webkit-animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; - animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; -} - -.bprogress-custom-parent { - overflow: hidden; - position: relative; -} - -.bprogress-custom-parent .bprogress .spinner, -.bprogress-custom-parent .bprogress .bar { - position: absolute; -} - -.bprogress .indeterminate { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: var(--bprogress-height); - overflow: hidden; -} - -.bprogress .indeterminate .inc, -.bprogress .indeterminate .dec { - position: absolute; - top: 0; - height: 100%; - background-color: var(--bprogress-color); -} - -.bprogress .indeterminate .inc { - animation: bprogress-indeterminate-increase 2s infinite; -} - -.bprogress .indeterminate .dec { - animation: bprogress-indeterminate-decrease 2s 0.5s infinite; -} - -@-webkit-keyframes bprogress-spinner { - 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } - 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } -} - -@keyframes bprogress-spinner { - 0% { transform: rotate(0deg); } - 100% { transform: rotate(360deg); } -} - -@keyframes bprogress-indeterminate-increase { - from { left: -5%; width: 5%; } - to { left: 130%; width: 100%; } -} - -@keyframes bprogress-indeterminate-decrease { - from { left: -80%; width: 80%; } - to { left: 110%; width: 10%; } -} -`;function m(e,t){if("string"==typeof t&&"data-disable-progress"===t){let r=t.substring(5).replace(/-([a-z])/g,(e,t)=>t.toUpperCase());return e.dataset[r]}let r=e[t];if(r instanceof SVGAnimatedString){let e=r.baseVal;if("href"===t){var n=location.origin;if(!e.startsWith("/")||!n)return e;let{pathname:t,query:r,hash:a}=function(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}(e);return`${n}${t}${r}${a}`}return e}return r}function f(e){for(var t=1;t=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var v=(0,a.createContext)(void 0),b=function(){var e=(0,a.useContext)(v);if(!e)throw Error("useProgress must be used within a ProgressProvider");return e},y=function(e){var t=e.children,r=e.color,n=void 0===r?"#0A2FFF":r,s=e.height,o=void 0===s?"2px":s,i=e.options,l=e.spinnerPosition,u=void 0===l?"top-right":l,c=e.style,d=e.disableStyle,m=e.nonce,g=e.shallowRouting,b=e.disableSameURL,y=e.startPosition,w=e.delay,x=e.stopDelay,A=(0,a.useRef)(null),k=(0,a.useRef)(!1),M=(0,a.useCallback)(function(){return k.current=!0},[]),S=(0,a.useCallback)(function(){return k.current=!1},[]),P=(0,a.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];r&&M(),A.current=setTimeout(function(){e>0&&p.set(e),p.start()},t)},[M]),E=(0,a.useCallback)(function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;setTimeout(function(){A.current&&clearTimeout(A.current),A.current=setTimeout(function(){p.isStarted()&&(p.done(),k.current&&S())},e)},t)},[S]),C=(0,a.useCallback)(function(e){return p.inc(e)},[]),j=(0,a.useCallback)(function(e){return p.dec(e)},[]),R=(0,a.useCallback)(function(e){return p.set(e)},[]),O=(0,a.useCallback)(function(){return p.pause()},[]),L=(0,a.useCallback)(function(){return p.resume()},[]),D=(0,a.useCallback)(function(){return p.settings},[]),_=(0,a.useCallback)(function(e){var t=D(),r="function"==typeof e?e(t):e,n=f({},t,r);p.configure(n)},[D]),N=(0,a.useMemo)(function(){return a.createElement("style",{nonce:m},c||h({color:n,height:o,spinnerPosition:u}))},[n,o,m,u,c]);return p.configure(i||{}),a.createElement(v.Provider,{value:{start:P,stop:E,inc:C,dec:j,set:R,pause:O,resume:L,setOptions:_,getOptions:D,isAutoStopDisabled:k,disableAutoStop:M,enableAutoStop:S,shallowRouting:void 0!==g&&g,disableSameURL:void 0===b||b,startPosition:void 0===y?0:y,delay:void 0===w?0:w,stopDelay:void 0===x?0:x}},void 0!==d&&d?null:N,t)};function w(){for(var e=arguments.length,t=Array(e),r=0;r=0||(a[r]=e[r]);return a}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(a[r]=e[r])}return a}var E=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:["memo","shouldCompareComplexProps"];return(0,a.memo)(e,function(e,r){return!1!==r.memo&&(!r.shouldCompareComplexProps||function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=Object.keys(e).filter(function(e){return!r.includes(e)}),a=Object.keys(t).filter(function(e){return!r.includes(e)});if(n.length!==a.length)return!1;var s=!0,o=!1,i=void 0;try{for(var l,u=n[Symbol.iterator]();!(s=(l=u.next()).done);s=!0){var c=l.value;if(e[c]!==t[c])return!1}}catch(e){o=!0,i=e}finally{try{s||null==u.return||u.return()}finally{if(o)throw i}}return!0}(e,r,t))})}(function(e){return!function(e){var t=e.shallowRouting,r=void 0!==t&&t,n=e.disableSameURL,s=void 0===n||n,o=e.startPosition,i=void 0===o?0:o,l=e.delay,u=void 0===l?0:l,c=e.stopDelay,d=void 0===c?0:c,p=e.targetPreprocessor,h=e.disableAnchorClick,f=void 0!==h&&h,g=e.startOnLoad,v=void 0!==g&&g,y=e.forcedStopDelay,w=void 0===y?0:y,x=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],A=(0,a.useRef)([]),k=(0,a.useRef)(null),M=b(),S=M.start,P=M.stop,E=M.isAutoStopDisabled;(0,a.useEffect)(function(){v&&S(i,u)},[]),(0,a.useEffect)(function(){return k.current&&clearTimeout(k.current),k.current=setTimeout(function(){E.current||P()},d),function(){k.current&&clearTimeout(k.current)}},x),(0,a.useEffect)(function(){if(!f){var e=function(e){if(e.defaultPrevented)return;var t,n,a,o,l=e.currentTarget;if(l.hasAttribute("download"))return;var c=e.target,d=(null==c?void 0:c.getAttribute("data-prevent-progress"))==="true"||(null==l?void 0:l.getAttribute("data-prevent-progress"))==="true";if(!d)for(var h,f=c;f&&"a"!==f.tagName.toLowerCase();){if((null==(h=f.parentElement)?void 0:h.getAttribute("data-prevent-progress"))==="true"){d=!0;break}f=f.parentElement}if(!d&&"_blank"!==m(l,"target")&&!e.metaKey&&!e.ctrlKey&&!e.shiftKey&&!e.altKey){var g=m(l,"href"),v=p?p(new URL(g)):new URL(g),b=new URL(location.href);if(!(r&&(t=v,n=b,t.protocol+"//"+t.host+t.pathname==n.protocol+"//"+n.host+n.pathname))||!s){a=v,o=b,a.protocol+"//"+a.host+a.pathname+a.search==o.protocol+"//"+o.host+o.pathname+o.search&&s||S(i,u)}}},t=new MutationObserver(function(){var t=Array.from(document.querySelectorAll("a")).filter(function(e){var t=m(e,"href"),r="true"===e.getAttribute("data-disable-progress"),n=t&&!t.startsWith("tel:")&&!t.startsWith("mailto:")&&!t.startsWith("blob:")&&!t.startsWith("javascript:");return!r&&n&&"_blank"!==m(e,"target")});t.forEach(function(t){t.addEventListener("click",e,!0)}),A.current=t});t.observe(document,{childList:!0,subtree:!0});var n=window.history.pushState;return window.history.pushState=new Proxy(window.history.pushState,{apply:function(e,t,r){return E.current||P(d,w),e.apply(t,r)}}),function(){t.disconnect(),A.current.forEach(function(t){t.removeEventListener("click",e,!0)}),A.current=[],window.history.pushState=n}}},[f,p,r,s,u,d,i,S,P,w,E])}(e,[(0,n.usePathname)(),(0,n.useSearchParams)()]),null});E.displayName="AppProgress";var C=function(e){var t=e.children,r=e.ProgressComponent,n=e.color,s=e.height,o=e.options,i=e.spinnerPosition,l=e.style,u=e.disableStyle,c=e.nonce,d=e.stopDelay,p=e.delay,h=e.startPosition,m=e.disableSameURL,f=e.shallowRouting,g=P(e,["children","ProgressComponent","color","height","options","spinnerPosition","style","disableStyle","nonce","stopDelay","delay","startPosition","disableSameURL","shallowRouting"]);return a.createElement(y,{color:n,height:s,options:o,spinnerPosition:i,style:l,disableStyle:u,nonce:c,stopDelay:d,delay:p,startPosition:h,disableSameURL:m,shallowRouting:f},a.createElement(r,S({stopDelay:d,delay:p,startPosition:h,disableSameURL:m,shallowRouting:f},g)),t)},j=function(e){return a.createElement(a.Suspense,null,a.createElement(E,f({},e)))},R=function(e){var t=e.children,r=P(e,["children"]);return a.createElement(C,S({ProgressComponent:j},r),t)}},7340:(e,t,r)=>{"use strict";r.d(t,{A:()=>n});let n=(0,r(9946).A)("house",[["path",{d:"M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8",key:"5wwlr5"}],["path",{d:"M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z",key:"1d0kgt"}]])},8698:(e,t,r)=>{"use strict";r.d(t,{UC:()=>ez,q7:()=>eG,ZL:()=>e$,bL:()=>eq,l9:()=>eK});var n=r(2115),a=r(5185),s=r(6101),o=r(6081),i=r(5845),l=r(3655),u=r(7328),c=r(4315),d=r(9178),p=r(2293),h=r(7900),m=r(1285),f=r(5152),g=r(4378),v=r(8905),b=r(9196),y=r(9708),w=r(9033),x=r(8168),A=r(3795),k=r(5155),M=["Enter"," "],S=["ArrowUp","PageDown","End"],P=["ArrowDown","PageUp","Home",...S],E={ltr:[...M,"ArrowRight"],rtl:[...M,"ArrowLeft"]},C={ltr:["ArrowLeft"],rtl:["ArrowRight"]},j="Menu",[R,O,L]=(0,u.N)(j),[D,_]=(0,o.A)(j,[L,f.Bk,b.RG]),N=(0,f.Bk)(),Z=(0,b.RG)(),[H,T]=D(j),[F,V]=D(j),I=e=>{let{__scopeMenu:t,open:r=!1,children:a,dir:s,onOpenChange:o,modal:i=!0}=e,l=N(t),[u,d]=n.useState(null),p=n.useRef(!1),h=(0,w.c)(o),m=(0,c.jH)(s);return n.useEffect(()=>{let e=()=>{p.current=!0,document.addEventListener("pointerdown",t,{capture:!0,once:!0}),document.addEventListener("pointermove",t,{capture:!0,once:!0})},t=()=>p.current=!1;return document.addEventListener("keydown",e,{capture:!0}),()=>{document.removeEventListener("keydown",e,{capture:!0}),document.removeEventListener("pointerdown",t,{capture:!0}),document.removeEventListener("pointermove",t,{capture:!0})}},[]),(0,k.jsx)(f.bL,{...l,children:(0,k.jsx)(H,{scope:t,open:r,onOpenChange:h,content:u,onContentChange:d,children:(0,k.jsx)(F,{scope:t,onClose:n.useCallback(()=>h(!1),[h]),isUsingKeyboardRef:p,dir:m,modal:i,children:a})})})};I.displayName=j;var U=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,a=N(r);return(0,k.jsx)(f.Mz,{...a,...n,ref:t})});U.displayName="MenuAnchor";var q="MenuPortal",[K,$]=D(q,{forceMount:void 0}),z=e=>{let{__scopeMenu:t,forceMount:r,children:n,container:a}=e,s=T(q,t);return(0,k.jsx)(K,{scope:t,forceMount:r,children:(0,k.jsx)(v.C,{present:r||s.open,children:(0,k.jsx)(g.Z,{asChild:!0,container:a,children:n})})})};z.displayName=q;var G="MenuContent",[B,W]=D(G),X=n.forwardRef((e,t)=>{let r=$(G,e.__scopeMenu),{forceMount:n=r.forceMount,...a}=e,s=T(G,e.__scopeMenu),o=V(G,e.__scopeMenu);return(0,k.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,k.jsx)(v.C,{present:n||s.open,children:(0,k.jsx)(R.Slot,{scope:e.__scopeMenu,children:o.modal?(0,k.jsx)(Q,{...a,ref:t}):(0,k.jsx)(Y,{...a,ref:t})})})})}),Q=n.forwardRef((e,t)=>{let r=T(G,e.__scopeMenu),o=n.useRef(null),i=(0,s.s)(t,o);return n.useEffect(()=>{let e=o.current;if(e)return(0,x.Eq)(e)},[]),(0,k.jsx)(ee,{...e,ref:i,trapFocus:r.open,disableOutsidePointerEvents:r.open,disableOutsideScroll:!0,onFocusOutside:(0,a.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1}),onDismiss:()=>r.onOpenChange(!1)})}),Y=n.forwardRef((e,t)=>{let r=T(G,e.__scopeMenu);return(0,k.jsx)(ee,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,disableOutsideScroll:!1,onDismiss:()=>r.onOpenChange(!1)})}),J=(0,y.TL)("MenuContent.ScrollLock"),ee=n.forwardRef((e,t)=>{let{__scopeMenu:r,loop:o=!1,trapFocus:i,onOpenAutoFocus:l,onCloseAutoFocus:u,disableOutsidePointerEvents:c,onEntryFocus:m,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:y,onInteractOutside:w,onDismiss:x,disableOutsideScroll:M,...E}=e,C=T(G,r),j=V(G,r),R=N(r),L=Z(r),D=O(r),[_,H]=n.useState(null),F=n.useRef(null),I=(0,s.s)(t,F,C.onContentChange),U=n.useRef(0),q=n.useRef(""),K=n.useRef(0),$=n.useRef(null),z=n.useRef("right"),W=n.useRef(0),X=M?A.A:n.Fragment,Q=e=>{var t,r;let n=q.current+e,a=D().filter(e=>!e.disabled),s=document.activeElement,o=null==(t=a.find(e=>e.ref.current===s))?void 0:t.textValue,i=function(e,t,r){var n;let a=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,s=r?e.indexOf(r):-1,o=(n=Math.max(s,0),e.map((t,r)=>e[(n+r)%e.length]));1===a.length&&(o=o.filter(e=>e!==r));let i=o.find(e=>e.toLowerCase().startsWith(a.toLowerCase()));return i!==r?i:void 0}(a.map(e=>e.textValue),n,o),l=null==(r=a.find(e=>e.textValue===i))?void 0:r.ref.current;!function e(t){q.current=t,window.clearTimeout(U.current),""!==t&&(U.current=window.setTimeout(()=>e(""),1e3))}(n),l&&setTimeout(()=>l.focus())};n.useEffect(()=>()=>window.clearTimeout(U.current),[]),(0,p.Oh)();let Y=n.useCallback(e=>{var t,r;return z.current===(null==(t=$.current)?void 0:t.side)&&function(e,t){return!!t&&function(e,t){let{x:r,y:n}=e,a=!1;for(let e=0,s=t.length-1;en!=d>n&&r<(c-l)*(n-u)/(d-u)+l&&(a=!a)}return a}({x:e.clientX,y:e.clientY},t)}(e,null==(r=$.current)?void 0:r.area)},[]);return(0,k.jsx)(B,{scope:r,searchRef:q,onItemEnter:n.useCallback(e=>{Y(e)&&e.preventDefault()},[Y]),onItemLeave:n.useCallback(e=>{var t;Y(e)||(null==(t=F.current)||t.focus(),H(null))},[Y]),onTriggerLeave:n.useCallback(e=>{Y(e)&&e.preventDefault()},[Y]),pointerGraceTimerRef:K,onPointerGraceIntentChange:n.useCallback(e=>{$.current=e},[]),children:(0,k.jsx)(X,{...M?{as:J,allowPinchZoom:!0}:void 0,children:(0,k.jsx)(h.n,{asChild:!0,trapped:i,onMountAutoFocus:(0,a.m)(l,e=>{var t;e.preventDefault(),null==(t=F.current)||t.focus({preventScroll:!0})}),onUnmountAutoFocus:u,children:(0,k.jsx)(d.qW,{asChild:!0,disableOutsidePointerEvents:c,onEscapeKeyDown:g,onPointerDownOutside:v,onFocusOutside:y,onInteractOutside:w,onDismiss:x,children:(0,k.jsx)(b.bL,{asChild:!0,...L,dir:j.dir,orientation:"vertical",loop:o,currentTabStopId:_,onCurrentTabStopIdChange:H,onEntryFocus:(0,a.m)(m,e=>{j.isUsingKeyboardRef.current||e.preventDefault()}),preventScrollOnEntryFocus:!0,children:(0,k.jsx)(f.UC,{role:"menu","aria-orientation":"vertical","data-state":eP(C.open),"data-radix-menu-content":"",dir:j.dir,...R,...E,ref:I,style:{outline:"none",...E.style},onKeyDown:(0,a.m)(E.onKeyDown,e=>{let t=e.target.closest("[data-radix-menu-content]")===e.currentTarget,r=e.ctrlKey||e.altKey||e.metaKey,n=1===e.key.length;t&&("Tab"===e.key&&e.preventDefault(),!r&&n&&Q(e.key));let a=F.current;if(e.target!==a||!P.includes(e.key))return;e.preventDefault();let s=D().filter(e=>!e.disabled).map(e=>e.ref.current);S.includes(e.key)&&s.reverse(),function(e){let t=document.activeElement;for(let r of e)if(r===t||(r.focus(),document.activeElement!==t))return}(s)}),onBlur:(0,a.m)(e.onBlur,e=>{e.currentTarget.contains(e.target)||(window.clearTimeout(U.current),q.current="")}),onPointerMove:(0,a.m)(e.onPointerMove,ej(e=>{let t=e.target,r=W.current!==e.clientX;e.currentTarget.contains(t)&&r&&(z.current=e.clientX>W.current?"right":"left",W.current=e.clientX)}))})})})})})})});X.displayName=G;var et=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{role:"group",...n,ref:t})});et.displayName="MenuGroup";var er=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{...n,ref:t})});er.displayName="MenuLabel";var en="MenuItem",ea="menu.itemSelect",es=n.forwardRef((e,t)=>{let{disabled:r=!1,onSelect:o,...i}=e,u=n.useRef(null),c=V(en,e.__scopeMenu),d=W(en,e.__scopeMenu),p=(0,s.s)(t,u),h=n.useRef(!1);return(0,k.jsx)(eo,{...i,ref:p,disabled:r,onClick:(0,a.m)(e.onClick,()=>{let e=u.current;if(!r&&e){let t=new CustomEvent(ea,{bubbles:!0,cancelable:!0});e.addEventListener(ea,e=>null==o?void 0:o(e),{once:!0}),(0,l.hO)(e,t),t.defaultPrevented?h.current=!1:c.onClose()}}),onPointerDown:t=>{var r;null==(r=e.onPointerDown)||r.call(e,t),h.current=!0},onPointerUp:(0,a.m)(e.onPointerUp,e=>{var t;h.current||null==(t=e.currentTarget)||t.click()}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{let t=""!==d.searchRef.current;r||t&&" "===e.key||M.includes(e.key)&&(e.currentTarget.click(),e.preventDefault())})})});es.displayName=en;var eo=n.forwardRef((e,t)=>{let{__scopeMenu:r,disabled:o=!1,textValue:i,...u}=e,c=W(en,r),d=Z(r),p=n.useRef(null),h=(0,s.s)(t,p),[m,f]=n.useState(!1),[g,v]=n.useState("");return n.useEffect(()=>{let e=p.current;if(e){var t;v((null!=(t=e.textContent)?t:"").trim())}},[u.children]),(0,k.jsx)(R.ItemSlot,{scope:r,disabled:o,textValue:null!=i?i:g,children:(0,k.jsx)(b.q7,{asChild:!0,...d,focusable:!o,children:(0,k.jsx)(l.sG.div,{role:"menuitem","data-highlighted":m?"":void 0,"aria-disabled":o||void 0,"data-disabled":o?"":void 0,...u,ref:h,onPointerMove:(0,a.m)(e.onPointerMove,ej(e=>{o?c.onItemLeave(e):(c.onItemEnter(e),e.defaultPrevented||e.currentTarget.focus({preventScroll:!0}))})),onPointerLeave:(0,a.m)(e.onPointerLeave,ej(e=>c.onItemLeave(e))),onFocus:(0,a.m)(e.onFocus,()=>f(!0)),onBlur:(0,a.m)(e.onBlur,()=>f(!1))})})})}),ei=n.forwardRef((e,t)=>{let{checked:r=!1,onCheckedChange:n,...s}=e;return(0,k.jsx)(ef,{scope:e.__scopeMenu,checked:r,children:(0,k.jsx)(es,{role:"menuitemcheckbox","aria-checked":eE(r)?"mixed":r,...s,ref:t,"data-state":eC(r),onSelect:(0,a.m)(s.onSelect,()=>null==n?void 0:n(!!eE(r)||!r),{checkForDefaultPrevented:!1})})})});ei.displayName="MenuCheckboxItem";var el="MenuRadioGroup",[eu,ec]=D(el,{value:void 0,onValueChange:()=>{}}),ed=n.forwardRef((e,t)=>{let{value:r,onValueChange:n,...a}=e,s=(0,w.c)(n);return(0,k.jsx)(eu,{scope:e.__scopeMenu,value:r,onValueChange:s,children:(0,k.jsx)(et,{...a,ref:t})})});ed.displayName=el;var ep="MenuRadioItem",eh=n.forwardRef((e,t)=>{let{value:r,...n}=e,s=ec(ep,e.__scopeMenu),o=r===s.value;return(0,k.jsx)(ef,{scope:e.__scopeMenu,checked:o,children:(0,k.jsx)(es,{role:"menuitemradio","aria-checked":o,...n,ref:t,"data-state":eC(o),onSelect:(0,a.m)(n.onSelect,()=>{var e;return null==(e=s.onValueChange)?void 0:e.call(s,r)},{checkForDefaultPrevented:!1})})})});eh.displayName=ep;var em="MenuItemIndicator",[ef,eg]=D(em,{checked:!1}),ev=n.forwardRef((e,t)=>{let{__scopeMenu:r,forceMount:n,...a}=e,s=eg(em,r);return(0,k.jsx)(v.C,{present:n||eE(s.checked)||!0===s.checked,children:(0,k.jsx)(l.sG.span,{...a,ref:t,"data-state":eC(s.checked)})})});ev.displayName=em;var eb=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e;return(0,k.jsx)(l.sG.div,{role:"separator","aria-orientation":"horizontal",...n,ref:t})});eb.displayName="MenuSeparator";var ey=n.forwardRef((e,t)=>{let{__scopeMenu:r,...n}=e,a=N(r);return(0,k.jsx)(f.i3,{...a,...n,ref:t})});ey.displayName="MenuArrow";var[ew,ex]=D("MenuSub"),eA="MenuSubTrigger",ek=n.forwardRef((e,t)=>{let r=T(eA,e.__scopeMenu),o=V(eA,e.__scopeMenu),i=ex(eA,e.__scopeMenu),l=W(eA,e.__scopeMenu),u=n.useRef(null),{pointerGraceTimerRef:c,onPointerGraceIntentChange:d}=l,p={__scopeMenu:e.__scopeMenu},h=n.useCallback(()=>{u.current&&window.clearTimeout(u.current),u.current=null},[]);return n.useEffect(()=>h,[h]),n.useEffect(()=>{let e=c.current;return()=>{window.clearTimeout(e),d(null)}},[c,d]),(0,k.jsx)(U,{asChild:!0,...p,children:(0,k.jsx)(eo,{id:i.triggerId,"aria-haspopup":"menu","aria-expanded":r.open,"aria-controls":i.contentId,"data-state":eP(r.open),...e,ref:(0,s.t)(t,i.onTriggerChange),onClick:t=>{var n;null==(n=e.onClick)||n.call(e,t),e.disabled||t.defaultPrevented||(t.currentTarget.focus(),r.open||r.onOpenChange(!0))},onPointerMove:(0,a.m)(e.onPointerMove,ej(t=>{l.onItemEnter(t),!t.defaultPrevented&&(e.disabled||r.open||u.current||(l.onPointerGraceIntentChange(null),u.current=window.setTimeout(()=>{r.onOpenChange(!0),h()},100)))})),onPointerLeave:(0,a.m)(e.onPointerLeave,ej(e=>{var t,n;h();let a=null==(t=r.content)?void 0:t.getBoundingClientRect();if(a){let t=null==(n=r.content)?void 0:n.dataset.side,s="right"===t,o=a[s?"left":"right"],i=a[s?"right":"left"];l.onPointerGraceIntentChange({area:[{x:e.clientX+(s?-5:5),y:e.clientY},{x:o,y:a.top},{x:i,y:a.top},{x:i,y:a.bottom},{x:o,y:a.bottom}],side:t}),window.clearTimeout(c.current),c.current=window.setTimeout(()=>l.onPointerGraceIntentChange(null),300)}else{if(l.onTriggerLeave(e),e.defaultPrevented)return;l.onPointerGraceIntentChange(null)}})),onKeyDown:(0,a.m)(e.onKeyDown,t=>{let n=""!==l.searchRef.current;if(!e.disabled&&(!n||" "!==t.key)&&E[o.dir].includes(t.key)){var a;r.onOpenChange(!0),null==(a=r.content)||a.focus(),t.preventDefault()}})})})});ek.displayName=eA;var eM="MenuSubContent",eS=n.forwardRef((e,t)=>{let r=$(G,e.__scopeMenu),{forceMount:o=r.forceMount,...i}=e,l=T(G,e.__scopeMenu),u=V(G,e.__scopeMenu),c=ex(eM,e.__scopeMenu),d=n.useRef(null),p=(0,s.s)(t,d);return(0,k.jsx)(R.Provider,{scope:e.__scopeMenu,children:(0,k.jsx)(v.C,{present:o||l.open,children:(0,k.jsx)(R.Slot,{scope:e.__scopeMenu,children:(0,k.jsx)(ee,{id:c.contentId,"aria-labelledby":c.triggerId,...i,ref:p,align:"start",side:"rtl"===u.dir?"left":"right",disableOutsidePointerEvents:!1,disableOutsideScroll:!1,trapFocus:!1,onOpenAutoFocus:e=>{var t;u.isUsingKeyboardRef.current&&(null==(t=d.current)||t.focus()),e.preventDefault()},onCloseAutoFocus:e=>e.preventDefault(),onFocusOutside:(0,a.m)(e.onFocusOutside,e=>{e.target!==c.trigger&&l.onOpenChange(!1)}),onEscapeKeyDown:(0,a.m)(e.onEscapeKeyDown,e=>{u.onClose(),e.preventDefault()}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{let t=e.currentTarget.contains(e.target),r=C[u.dir].includes(e.key);if(t&&r){var n;l.onOpenChange(!1),null==(n=c.trigger)||n.focus(),e.preventDefault()}})})})})})});function eP(e){return e?"open":"closed"}function eE(e){return"indeterminate"===e}function eC(e){return eE(e)?"indeterminate":e?"checked":"unchecked"}function ej(e){return t=>"mouse"===t.pointerType?e(t):void 0}eS.displayName=eM;var eR="DropdownMenu",[eO,eL]=(0,o.A)(eR,[_]),eD=_(),[e_,eN]=eO(eR),eZ=e=>{let{__scopeDropdownMenu:t,children:r,dir:a,open:s,defaultOpen:o,onOpenChange:l,modal:u=!0}=e,c=eD(t),d=n.useRef(null),[p,h]=(0,i.i)({prop:s,defaultProp:null!=o&&o,onChange:l,caller:eR});return(0,k.jsx)(e_,{scope:t,triggerId:(0,m.B)(),triggerRef:d,contentId:(0,m.B)(),open:p,onOpenChange:h,onOpenToggle:n.useCallback(()=>h(e=>!e),[h]),modal:u,children:(0,k.jsx)(I,{...c,open:p,onOpenChange:h,dir:a,modal:u,children:r})})};eZ.displayName=eR;var eH="DropdownMenuTrigger",eT=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,disabled:n=!1,...o}=e,i=eN(eH,r),u=eD(r);return(0,k.jsx)(U,{asChild:!0,...u,children:(0,k.jsx)(l.sG.button,{type:"button",id:i.triggerId,"aria-haspopup":"menu","aria-expanded":i.open,"aria-controls":i.open?i.contentId:void 0,"data-state":i.open?"open":"closed","data-disabled":n?"":void 0,disabled:n,...o,ref:(0,s.t)(t,i.triggerRef),onPointerDown:(0,a.m)(e.onPointerDown,e=>{!n&&0===e.button&&!1===e.ctrlKey&&(i.onOpenToggle(),i.open||e.preventDefault())}),onKeyDown:(0,a.m)(e.onKeyDown,e=>{!n&&(["Enter"," "].includes(e.key)&&i.onOpenToggle(),"ArrowDown"===e.key&&i.onOpenChange(!0),["Enter"," ","ArrowDown"].includes(e.key)&&e.preventDefault())})})})});eT.displayName=eH;var eF=e=>{let{__scopeDropdownMenu:t,...r}=e,n=eD(t);return(0,k.jsx)(z,{...n,...r})};eF.displayName="DropdownMenuPortal";var eV="DropdownMenuContent",eI=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...s}=e,o=eN(eV,r),i=eD(r),l=n.useRef(!1);return(0,k.jsx)(X,{id:o.contentId,"aria-labelledby":o.triggerId,...i,...s,ref:t,onCloseAutoFocus:(0,a.m)(e.onCloseAutoFocus,e=>{var t;l.current||null==(t=o.triggerRef.current)||t.focus(),l.current=!1,e.preventDefault()}),onInteractOutside:(0,a.m)(e.onInteractOutside,e=>{let t=e.detail.originalEvent,r=0===t.button&&!0===t.ctrlKey,n=2===t.button||r;(!o.modal||n)&&(l.current=!0)}),style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})});eI.displayName=eV,n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(et,{...a,...n,ref:t})}).displayName="DropdownMenuGroup",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(er,{...a,...n,ref:t})}).displayName="DropdownMenuLabel";var eU=n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(es,{...a,...n,ref:t})});eU.displayName="DropdownMenuItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ei,{...a,...n,ref:t})}).displayName="DropdownMenuCheckboxItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ed,{...a,...n,ref:t})}).displayName="DropdownMenuRadioGroup",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(eh,{...a,...n,ref:t})}).displayName="DropdownMenuRadioItem",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ev,{...a,...n,ref:t})}).displayName="DropdownMenuItemIndicator",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(eb,{...a,...n,ref:t})}).displayName="DropdownMenuSeparator",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ey,{...a,...n,ref:t})}).displayName="DropdownMenuArrow",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(ek,{...a,...n,ref:t})}).displayName="DropdownMenuSubTrigger",n.forwardRef((e,t)=>{let{__scopeDropdownMenu:r,...n}=e,a=eD(r);return(0,k.jsx)(eS,{...a,...n,ref:t,style:{...e.style,"--radix-dropdown-menu-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-dropdown-menu-content-available-width":"var(--radix-popper-available-width)","--radix-dropdown-menu-content-available-height":"var(--radix-popper-available-height)","--radix-dropdown-menu-trigger-width":"var(--radix-popper-anchor-width)","--radix-dropdown-menu-trigger-height":"var(--radix-popper-anchor-height)"}})}).displayName="DropdownMenuSubContent";var eq=eZ,eK=eT,e$=eF,ez=eI,eG=eU},9432:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_9a8899",variable:"__variable_9a8899"}},9804:(e,t,r)=>{"use strict";r.d(t,{t:()=>o});var n=r(2115),a=r(5709);let s=new Map([["bold",n.createElement(n.Fragment,null,n.createElement("path",{d:"M108,136a16,16,0,1,1-16-16A16,16,0,0,1,108,136Zm56-16a16,16,0,1,0,16,16A16,16,0,0,0,164,120Zm76.07,76.56-67,29.71A20.15,20.15,0,0,1,146,214.9l-8.54-23.13c-3.13.14-6.27.24-9.45.24s-6.32-.1-9.45-.24L110,214.9a20.19,20.19,0,0,1-27.08,11.37l-67-29.71A19.93,19.93,0,0,1,4.62,173.41L34.15,57A20,20,0,0,1,50.37,42.19l36.06-5.93A20.26,20.26,0,0,1,109.22,51.1l4.41,17.41c4.74-.33,9.52-.51,14.37-.51s9.63.18,14.37.51l4.41-17.41a20.25,20.25,0,0,1,22.79-14.84l36.06,5.93A20,20,0,0,1,221.85,57l29.53,116.38A19.93,19.93,0,0,1,240.07,196.56ZM227.28,176,199.23,65.46l-30.07-4.94-2.84,11.17c2.9.58,5.78,1.2,8.61,1.92a12,12,0,1,1-5.86,23.27A168.43,168.43,0,0,0,128,92a168.43,168.43,0,0,0-41.07,4.88,12,12,0,0,1-5.86-23.27c2.83-.72,5.71-1.34,8.61-1.92L86.85,60.52,56.77,65.46,28.72,176l60.22,26.7,5-13.57c-4.37-.76-8.67-1.65-12.88-2.71a12,12,0,0,1,5.86-23.28A168.43,168.43,0,0,0,128,168a168.43,168.43,0,0,0,41.07-4.88,12,12,0,0,1,5.86,23.28c-4.21,1.06-8.51,1.95-12.88,2.71l5,13.57Z"}))],["duotone",n.createElement(n.Fragment,null,n.createElement("path",{d:"M235.21,185.59l-67,29.7a8.15,8.15,0,0,1-11-4.56L147,183.06a190.5,190.5,0,0,1-19,.94,190.5,190.5,0,0,1-19-.94L98.75,210.73a8.15,8.15,0,0,1-11,4.56l-67-29.7a8,8,0,0,1-4.55-9.24L45.77,60A8.08,8.08,0,0,1,52.31,54l36.06-5.92a8.1,8.1,0,0,1,9.21,6l5,19.63a192.32,192.32,0,0,1,50.88,0l5-19.63a8.1,8.1,0,0,1,9.21-6L203.69,54A8.08,8.08,0,0,1,210.23,60l29.53,116.37A8,8,0,0,1,235.21,185.59Z",opacity:"0.2"}),n.createElement("path",{d:"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.94,15.94,0,0,1-9.06-18.51L38,58A16.08,16.08,0,0,1,51,46.13l36.06-5.92a16.21,16.21,0,0,1,18.26,11.88l3.26,12.83Q118.11,64,128,64t19.4.92l3.26-12.83a16.22,16.22,0,0,1,18.26-11.88L205,46.13A16.08,16.08,0,0,1,218,58l29.53,116.38A15.94,15.94,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56a.21.21,0,0,0-.12,0h0L53.61,61.92a.24.24,0,0,0-.09,0L24,178.33,91,208a.21.21,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z"}))],["fill",n.createElement(n.Fragment,null,n.createElement("path",{d:"M247.51,174.39,218,58a16.08,16.08,0,0,0-13-11.88l-36.06-5.92a16.22,16.22,0,0,0-18.26,11.88l-.21.85a4,4,0,0,0,3.27,4.93,155.62,155.62,0,0,1,24.41,5.62,8.2,8.2,0,0,1,5.62,9.7,8,8,0,0,1-10.19,5.64,155.4,155.4,0,0,0-90.8-.1,8.22,8.22,0,0,1-10.28-4.81,8,8,0,0,1,5.08-10.33,156.85,156.85,0,0,1,24.72-5.72,4,4,0,0,0,3.27-4.93l-.21-.85A16.21,16.21,0,0,0,87.08,40.21L51,46.13A16.08,16.08,0,0,0,38,58L8.49,174.39a15.94,15.94,0,0,0,9.06,18.51l67,29.71a16.17,16.17,0,0,0,21.71-9.1l3.49-9.45a4,4,0,0,0-3.27-5.35,158.13,158.13,0,0,1-28.63-6.2,8.2,8.2,0,0,1-5.61-9.67,8,8,0,0,1,10.2-5.66,155.59,155.59,0,0,0,91.12,0,8,8,0,0,1,10.19,5.65,8.19,8.19,0,0,1-5.61,9.68,157.84,157.84,0,0,1-28.62,6.2,4,4,0,0,0-3.27,5.35l3.49,9.45a16.18,16.18,0,0,0,21.71,9.1l67-29.71A15.94,15.94,0,0,0,247.51,174.39ZM92,152a12,12,0,1,1,12-12A12,12,0,0,1,92,152Zm72,0a12,12,0,1,1,12-12A12,12,0,0,1,164,152Z"}))],["light",n.createElement(n.Fragment,null,n.createElement("path",{d:"M102,140a10,10,0,1,1-10-10A10,10,0,0,1,102,140Zm62-10a10,10,0,1,0,10,10A10,10,0,0,0,164,130Zm73.64,61.08-67,29.71a14.43,14.43,0,0,1-5.77,1.21,14.13,14.13,0,0,1-13.25-9.18L143,189.43c-4.93.37-9.92.58-15,.58s-10.06-.21-15-.58l-8.63,23.39A14.13,14.13,0,0,1,91.13,222a14.43,14.43,0,0,1-5.77-1.21l-67-29.71a14,14,0,0,1-7.93-16.2L40,58.5A14.07,14.07,0,0,1,51.34,48.11L87.4,42.19a14.19,14.19,0,0,1,16,10.39l3.69,14.53a197.5,197.5,0,0,1,41.82,0l3.69-14.53a14.19,14.19,0,0,1,16-10.39l36.06,5.92A14.07,14.07,0,0,1,216,58.5l29.53,116.38A14,14,0,0,1,237.64,191.08Zm-3.7-13.25L204.41,61.45a2.08,2.08,0,0,0-1.7-1.5L166.65,54a2.13,2.13,0,0,0-2.42,1.5l-3.36,13.24a169.28,169.28,0,0,1,16.75,3.76A6,6,0,0,1,176,84.31a5.71,5.71,0,0,1-1.62-.23A174.26,174.26,0,0,0,128,78a174.26,174.26,0,0,0-46.38,6.08,6,6,0,1,1-3.24-11.55,169.28,169.28,0,0,1,16.75-3.76L91.77,55.53A2.12,2.12,0,0,0,89.35,54L53.29,60a2.08,2.08,0,0,0-1.7,1.5L22.06,177.83a2,2,0,0,0,1.16,2.28l67,29.7a2.19,2.19,0,0,0,1.76,0,2.07,2.07,0,0,0,1.14-1.17l7.58-20.55a171.46,171.46,0,0,1-22.33-4.64,6,6,0,1,1,3.24-11.55A174.26,174.26,0,0,0,128,178a174.26,174.26,0,0,0,46.38-6.08,6,6,0,1,1,3.24,11.55,171.46,171.46,0,0,1-22.33,4.64l7.58,20.55a2.07,2.07,0,0,0,1.14,1.17,2.19,2.19,0,0,0,1.76,0l67-29.7A2,2,0,0,0,233.94,177.83Z"}))],["regular",n.createElement(n.Fragment,null,n.createElement("path",{d:"M104,140a12,12,0,1,1-12-12A12,12,0,0,1,104,140Zm60-12a12,12,0,1,0,12,12A12,12,0,0,0,164,128Zm74.45,64.9-67,29.71a16.17,16.17,0,0,1-21.71-9.1l-8.11-22q-6.72.45-13.63.46t-13.63-.46l-8.11,22a16.18,16.18,0,0,1-21.71,9.1l-67-29.71a15.93,15.93,0,0,1-9.06-18.51L38,58A16.07,16.07,0,0,1,51,46.14l36.06-5.93a16.22,16.22,0,0,1,18.26,11.88l3.26,12.84Q118.11,64,128,64t19.4.93l3.26-12.84a16.21,16.21,0,0,1,18.26-11.88L205,46.14A16.07,16.07,0,0,1,218,58l29.53,116.38A15.93,15.93,0,0,1,238.45,192.9ZM232,178.28,202.47,62s0,0-.08,0L166.33,56a.17.17,0,0,0-.17,0l-2.83,11.14c5,.94,10,2.06,14.83,3.42A8,8,0,0,1,176,86.31a8.09,8.09,0,0,1-2.16-.3A172.25,172.25,0,0,0,128,80a172.25,172.25,0,0,0-45.84,6,8,8,0,1,1-4.32-15.4c4.82-1.36,9.78-2.48,14.82-3.42L89.83,56s0,0-.12,0h0L53.61,61.93a.17.17,0,0,0-.09,0L24,178.33,91,208a.23.23,0,0,0,.22,0L98,189.72a173.2,173.2,0,0,1-20.14-4.32A8,8,0,0,1,82.16,170,171.85,171.85,0,0,0,128,176a171.85,171.85,0,0,0,45.84-6,8,8,0,0,1,4.32,15.41A173.2,173.2,0,0,1,158,189.72L164.75,208a.22.22,0,0,0,.21,0Z"}))],["thin",n.createElement(n.Fragment,null,n.createElement("path",{d:"M100,140a8,8,0,1,1-8-8A8,8,0,0,1,100,140Zm64-8a8,8,0,1,0,8,8A8,8,0,0,0,164,132Zm72.83,57.25-67,29.71a12.36,12.36,0,0,1-5,1,12.13,12.13,0,0,1-11.38-7.88l-9.15-24.81c-5.36.45-10.81.69-16.34.69s-11-.24-16.34-.69l-9.15,24.81A12.13,12.13,0,0,1,91.13,220a12.36,12.36,0,0,1-5-1l-67-29.71a12,12,0,0,1-6.8-13.88L41.9,59a12.06,12.06,0,0,1,9.77-8.91l36.06-5.92a12.18,12.18,0,0,1,13.73,8.91l4.12,16.22a195.47,195.47,0,0,1,44.84,0l4.12-16.22a12.18,12.18,0,0,1,13.73-8.91l36.06,5.92A12.06,12.06,0,0,1,214.1,59l29.53,116.38A12,12,0,0,1,236.83,189.25Zm-1-11.91L206.35,61A4.07,4.07,0,0,0,203,58L167,52.05a4.15,4.15,0,0,0-4.69,3L158.4,70.38a166.74,166.74,0,0,1,18.68,4.08,4,4,0,1,1-2.16,7.7A176.21,176.21,0,0,0,128,76a176.21,176.21,0,0,0-46.92,6.16,4,4,0,1,1-2.16-7.7A166.74,166.74,0,0,1,97.6,70.38L93.71,55a4.15,4.15,0,0,0-4.69-3L53,58a4.07,4.07,0,0,0-3.31,3L20.12,177.34a4,4,0,0,0,2.29,4.59l67,29.71a4.16,4.16,0,0,0,3.35,0A4,4,0,0,0,95,209.35l8.45-22.88a171.49,171.49,0,0,1-24.53-4.92,4,4,0,0,1,2.16-7.71A176.21,176.21,0,0,0,128,180a176.21,176.21,0,0,0,46.92-6.16,4,4,0,0,1,2.16,7.71,171.49,171.49,0,0,1-24.53,4.92L161,209.35a4,4,0,0,0,2.23,2.32,4.16,4.16,0,0,0,3.35,0l67-29.71A4,4,0,0,0,235.88,177.34Z"}))]]),o=n.forwardRef((e,t)=>n.createElement(a.A,{ref:t,...e,weights:s}));o.displayName="DiscordLogoIcon"}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/364.d75b74f24ea30de9.js b/transports/bifrost-http/ui/_next/static/chunks/983.c3e846ecee47b8cf.js similarity index 99% rename from transports/bifrost-http/ui/_next/static/chunks/364.d75b74f24ea30de9.js rename to transports/bifrost-http/ui/_next/static/chunks/983.c3e846ecee47b8cf.js index 8057aa3946..56aa43f0d3 100644 --- a/transports/bifrost-http/ui/_next/static/chunks/364.d75b74f24ea30de9.js +++ b/transports/bifrost-http/ui/_next/static/chunks/983.c3e846ecee47b8cf.js @@ -1 +1 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[364],{1364:(e,t,r)=>{function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function o(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?e.apply(this,o):function(){for(var e=arguments.length,n=Array(e),i=0;iF,Editor:()=>Y,default:()=>$,loader:()=>I,useMonaco:()=>U});var f=a(function(e,t){throw Error(e[t]||e.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),d={changes:function(e,t){return l(t)||f("changeType"),Object.keys(t).some(function(t){return!Object.prototype.hasOwnProperty.call(e,t)})&&f("changeField"),t},selector:function(e){s(e)||f("selectorType")},handler:function(e){s(e)||l(e)||f("handlerType"),l(e)&&Object.values(e).some(function(e){return!s(e)})&&f("handlersType")},initial:function(e){e||f("initialIsRequired"),l(e)||f("initialType"),Object.keys(e).length||f("initialContent")}};function g(e,t){return s(t)?t(e.current):t}function p(e,t){return e.current=u(u({},e.current),t),t}function h(e,t,r){return s(t)?t(e.current):Object.keys(r).forEach(function(r){var n;return null==(n=t[r])?void 0:n.call(t,e.current[r])}),r}var y={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},m=(function(e){return function t(){for(var r=this,n=arguments.length,o=Array(n),i=0;i=e.length?e.apply(this,o):function(){for(var e=arguments.length,n=Array(e),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};d.initial(e),d.handler(t);var r={current:e},n=a(h)(r,t),o=a(p)(r),i=a(d.changes)(e),c=a(g)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return d.selector(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(t,["monaco"]);E(function(e){return{config:function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),o(o({},t),r)}(e.config,n),monaco:r}})},init:function(){var e=M(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(E({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),w(C);if(window.monaco&&window.monaco.editor)return S(window.monaco),e.resolve(window.monaco),w(C);v(P,R)(k)}return w(C)},__getMonacoInstance:function(){return M(function(e){return e.monaco})}};var T=r(2115),x={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},A={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},D=function({children:e}){return T.createElement("div",{style:A.container},e)},V=(0,T.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:o,className:i,wrapperProps:c}){return T.createElement("section",{style:{...x.wrapper,width:e,height:t},...c},!r&&T.createElement(D,null,n),T.createElement("div",{ref:o,style:{...x.fullWidth,...!r&&x.hide},className:i}))}),L=function(e){(0,T.useEffect)(e,[])},_=function(e,t,r=!0){let n=(0,T.useRef)(!0);(0,T.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function N(){}function q(e,t,r,n){var o,i,c,u,a,l;return o=e,i=n,o.editor.getModel(z(o,i))||(c=e,u=t,a=r,l=n,c.editor.createModel(u,a,l?z(c,l):void 0))}function z(e,t){return e.Uri.parse(t)}var F=(0,T.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:o,originalModelPath:i,modifiedModelPath:c,keepCurrentOriginalModel:u=!1,keepCurrentModifiedModel:a=!1,theme:l="light",loading:s="Loading...",options:f={},height:d="100%",width:g="100%",className:p,wrapperProps:h={},beforeMount:y=N,onMount:m=N}){let[b,v]=(0,T.useState)(!1),[O,w]=(0,T.useState)(!0),j=(0,T.useRef)(null),M=(0,T.useRef)(null),E=(0,T.useRef)(null),P=(0,T.useRef)(m),R=(0,T.useRef)(y),k=(0,T.useRef)(!1);L(()=>{let e=I.init();return e.then(e=>(M.current=e)&&w(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return j.current?(t=j.current?.getModel(),void(u||t?.original?.dispose(),a||t?.modified?.dispose(),j.current?.dispose())):e.cancel()}}),_(()=>{if(j.current&&M.current){let t=j.current.getOriginalEditor(),o=q(M.current,e||"",n||r||"text",i||"");o!==t.getModel()&&t.setModel(o)}},[i],b),_(()=>{if(j.current&&M.current){let e=j.current.getModifiedEditor(),n=q(M.current,t||"",o||r||"text",c||"");n!==e.getModel()&&e.setModel(n)}},[c],b),_(()=>{let e=j.current.getModifiedEditor();e.getOption(M.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],b),_(()=>{j.current?.getModel()?.original.setValue(e||"")},[e],b),_(()=>{let{original:e,modified:t}=j.current.getModel();M.current.editor.setModelLanguage(e,n||r||"text"),M.current.editor.setModelLanguage(t,o||r||"text")},[r,n,o],b),_(()=>{M.current?.editor.setTheme(l)},[l],b),_(()=>{j.current?.updateOptions(f)},[f],b);let S=(0,T.useCallback)(()=>{if(!M.current)return;R.current(M.current);let u=q(M.current,e||"",n||r||"text",i||""),a=q(M.current,t||"",o||r||"text",c||"");j.current?.setModel({original:u,modified:a})},[r,t,o,e,n,i,c]),C=(0,T.useCallback)(()=>{!k.current&&E.current&&(j.current=M.current.editor.createDiffEditor(E.current,{automaticLayout:!0,...f}),S(),M.current?.editor.setTheme(l),v(!0),k.current=!0)},[f,l,S]);return(0,T.useEffect)(()=>{b&&P.current(j.current,M.current)},[b]),(0,T.useEffect)(()=>{O||b||C()},[O,b,C]),T.createElement(V,{width:g,height:d,isEditorReady:b,loading:s,_ref:E,className:p,wrapperProps:h})}),U=function(){let[e,t]=(0,T.useState)(I.__getMonacoInstance());return L(()=>{let r;return e||(r=I.init()).then(e=>{t(e)}),()=>r?.cancel()}),e},B=function(e){let t=(0,T.useRef)();return(0,T.useEffect)(()=>{t.current=e},[e]),t.current},W=new Map,Y=(0,T.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:o,path:i,theme:c="light",line:u,loading:a="Loading...",options:l={},overrideServices:s={},saveViewState:f=!0,keepCurrentModel:d=!1,width:g="100%",height:p="100%",className:h,wrapperProps:y={},beforeMount:m=N,onMount:b=N,onChange:v,onValidate:O=N}){let[w,j]=(0,T.useState)(!1),[M,E]=(0,T.useState)(!0),P=(0,T.useRef)(null),R=(0,T.useRef)(null),k=(0,T.useRef)(null),S=(0,T.useRef)(b),C=(0,T.useRef)(m),x=(0,T.useRef)(),A=(0,T.useRef)(n),D=B(i),z=(0,T.useRef)(!1),F=(0,T.useRef)(!1);L(()=>{let e=I.init();return e.then(e=>(P.current=e)&&E(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>R.current?void(x.current?.dispose(),d?f&&W.set(i,R.current.saveViewState()):R.current.getModel()?.dispose(),R.current.dispose()):e.cancel()}),_(()=>{let c=q(P.current,e||n||"",t||o||"",i||r||"");c!==R.current?.getModel()&&(f&&W.set(D,R.current?.saveViewState()),R.current?.setModel(c),f&&R.current?.restoreViewState(W.get(i)))},[i],w),_(()=>{R.current?.updateOptions(l)},[l],w),_(()=>{R.current&&void 0!==n&&(R.current.getOption(P.current.editor.EditorOption.readOnly)?R.current.setValue(n):n!==R.current.getValue()&&(F.current=!0,R.current.executeEdits("",[{range:R.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),R.current.pushUndoStop(),F.current=!1))},[n],w),_(()=>{let e=R.current?.getModel();e&&o&&P.current?.editor.setModelLanguage(e,o)},[o],w),_(()=>{void 0!==u&&R.current?.revealLine(u)},[u],w),_(()=>{P.current?.editor.setTheme(c)},[c],w);let U=(0,T.useCallback)(()=>{if(!(!k.current||!P.current)&&!z.current){C.current(P.current);let a=i||r,d=q(P.current,n||e||"",t||o||"",a||"");R.current=P.current?.editor.create(k.current,{model:d,automaticLayout:!0,...l},s),f&&R.current.restoreViewState(W.get(a)),P.current.editor.setTheme(c),void 0!==u&&R.current.revealLine(u),j(!0),z.current=!0}},[e,t,r,n,o,i,l,s,f,c,u]);return(0,T.useEffect)(()=>{w&&S.current(R.current,P.current)},[w]),(0,T.useEffect)(()=>{M||w||U()},[M,w,U]),A.current=n,(0,T.useEffect)(()=>{w&&v&&(x.current?.dispose(),x.current=R.current?.onDidChangeModelContent(e=>{F.current||v(R.current.getValue(),e)}))},[w,v]),(0,T.useEffect)(()=>{if(w){let e=P.current.editor.onDidChangeMarkers(e=>{let t=R.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=P.current.editor.getModelMarkers({resource:t});O?.(e)}});return()=>{e?.dispose()}}return()=>{}},[w,O]),T.createElement(V,{width:g,height:p,isEditorReady:w,loading:a,_ref:k,className:h,wrapperProps:y})}),$=Y}}]); \ No newline at end of file +"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[983],{1364:(e,t,r)=>{function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),r.push.apply(r,n)}return r}function o(e){for(var t=1;te.length)&&(t=e.length);for(var r=0,n=Array(t);r=e.length?e.apply(this,o):function(){for(var e=arguments.length,n=Array(e),i=0;iF,Editor:()=>Y,default:()=>$,loader:()=>I,useMonaco:()=>U});var f=a(function(e,t){throw Error(e[t]||e.default)})({initialIsRequired:"initial state is required",initialType:"initial state should be an object",initialContent:"initial state shouldn't be an empty object",handlerType:"handler should be an object or a function",handlersType:"all handlers should be a functions",selectorType:"selector should be a function",changeType:"provided value of changes should be an object",changeField:'it seams you want to change a field in the state which is not specified in the "initial" state',default:"an unknown error accured in `state-local` package"}),d={changes:function(e,t){return l(t)||f("changeType"),Object.keys(t).some(function(t){return!Object.prototype.hasOwnProperty.call(e,t)})&&f("changeField"),t},selector:function(e){s(e)||f("selectorType")},handler:function(e){s(e)||l(e)||f("handlerType"),l(e)&&Object.values(e).some(function(e){return!s(e)})&&f("handlersType")},initial:function(e){e||f("initialIsRequired"),l(e)||f("initialType"),Object.keys(e).length||f("initialContent")}};function g(e,t){return s(t)?t(e.current):t}function p(e,t){return e.current=u(u({},e.current),t),t}function h(e,t,r){return s(t)?t(e.current):Object.keys(r).forEach(function(r){var n;return null==(n=t[r])?void 0:n.call(t,e.current[r])}),r}var y={configIsRequired:"the configuration object is required",configType:"the configuration object should be an object",default:"an unknown error accured in `@monaco-editor/loader` package",deprecation:"Deprecation warning!\n You are using deprecated way of configuration.\n\n Instead of using\n monaco.config({ urls: { monacoBase: '...' } })\n use\n monaco.config({ paths: { vs: '...' } })\n\n For more please check the link https://github.com/suren-atoyan/monaco-loader#config\n "},m=(function(e){return function t(){for(var r=this,n=arguments.length,o=Array(n),i=0;i=e.length?e.apply(this,o):function(){for(var e=arguments.length,n=Array(e),i=0;i1&&void 0!==arguments[1]?arguments[1]:{};d.initial(e),d.handler(t);var r={current:e},n=a(h)(r,t),o=a(p)(r),i=a(d.changes)(e),c=a(g)(r);return[function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(e){return e};return d.selector(e),e(r.current)},function(e){(function(){for(var e=arguments.length,t=Array(e),r=0;r=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}(t,["monaco"]);E(function(e){return{config:function e(t,r){return Object.keys(r).forEach(function(n){r[n]instanceof Object&&t[n]&&Object.assign(r[n],e(t[n],r[n]))}),o(o({},t),r)}(e.config,n),monaco:r}})},init:function(){var e=M(function(e){return{monaco:e.monaco,isInitialized:e.isInitialized,resolve:e.resolve}});if(!e.isInitialized){if(E({isInitialized:!0}),e.monaco)return e.resolve(e.monaco),w(C);if(window.monaco&&window.monaco.editor)return S(window.monaco),e.resolve(window.monaco),w(C);v(P,R)(k)}return w(C)},__getMonacoInstance:function(){return M(function(e){return e.monaco})}};var T=r(2115),x={wrapper:{display:"flex",position:"relative",textAlign:"initial"},fullWidth:{width:"100%"},hide:{display:"none"}},A={container:{display:"flex",height:"100%",width:"100%",justifyContent:"center",alignItems:"center"}},D=function({children:e}){return T.createElement("div",{style:A.container},e)},V=(0,T.memo)(function({width:e,height:t,isEditorReady:r,loading:n,_ref:o,className:i,wrapperProps:c}){return T.createElement("section",{style:{...x.wrapper,width:e,height:t},...c},!r&&T.createElement(D,null,n),T.createElement("div",{ref:o,style:{...x.fullWidth,...!r&&x.hide},className:i}))}),L=function(e){(0,T.useEffect)(e,[])},_=function(e,t,r=!0){let n=(0,T.useRef)(!0);(0,T.useEffect)(n.current||!r?()=>{n.current=!1}:e,t)};function N(){}function q(e,t,r,n){var o,i,c,u,a,l;return o=e,i=n,o.editor.getModel(z(o,i))||(c=e,u=t,a=r,l=n,c.editor.createModel(u,a,l?z(c,l):void 0))}function z(e,t){return e.Uri.parse(t)}var F=(0,T.memo)(function({original:e,modified:t,language:r,originalLanguage:n,modifiedLanguage:o,originalModelPath:i,modifiedModelPath:c,keepCurrentOriginalModel:u=!1,keepCurrentModifiedModel:a=!1,theme:l="light",loading:s="Loading...",options:f={},height:d="100%",width:g="100%",className:p,wrapperProps:h={},beforeMount:y=N,onMount:m=N}){let[b,v]=(0,T.useState)(!1),[O,w]=(0,T.useState)(!0),j=(0,T.useRef)(null),M=(0,T.useRef)(null),E=(0,T.useRef)(null),P=(0,T.useRef)(m),R=(0,T.useRef)(y),k=(0,T.useRef)(!1);L(()=>{let e=I.init();return e.then(e=>(M.current=e)&&w(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>{let t;return j.current?(t=j.current?.getModel(),void(u||t?.original?.dispose(),a||t?.modified?.dispose(),j.current?.dispose())):e.cancel()}}),_(()=>{if(j.current&&M.current){let t=j.current.getOriginalEditor(),o=q(M.current,e||"",n||r||"text",i||"");o!==t.getModel()&&t.setModel(o)}},[i],b),_(()=>{if(j.current&&M.current){let e=j.current.getModifiedEditor(),n=q(M.current,t||"",o||r||"text",c||"");n!==e.getModel()&&e.setModel(n)}},[c],b),_(()=>{let e=j.current.getModifiedEditor();e.getOption(M.current.editor.EditorOption.readOnly)?e.setValue(t||""):t!==e.getValue()&&(e.executeEdits("",[{range:e.getModel().getFullModelRange(),text:t||"",forceMoveMarkers:!0}]),e.pushUndoStop())},[t],b),_(()=>{j.current?.getModel()?.original.setValue(e||"")},[e],b),_(()=>{let{original:e,modified:t}=j.current.getModel();M.current.editor.setModelLanguage(e,n||r||"text"),M.current.editor.setModelLanguage(t,o||r||"text")},[r,n,o],b),_(()=>{M.current?.editor.setTheme(l)},[l],b),_(()=>{j.current?.updateOptions(f)},[f],b);let S=(0,T.useCallback)(()=>{if(!M.current)return;R.current(M.current);let u=q(M.current,e||"",n||r||"text",i||""),a=q(M.current,t||"",o||r||"text",c||"");j.current?.setModel({original:u,modified:a})},[r,t,o,e,n,i,c]),C=(0,T.useCallback)(()=>{!k.current&&E.current&&(j.current=M.current.editor.createDiffEditor(E.current,{automaticLayout:!0,...f}),S(),M.current?.editor.setTheme(l),v(!0),k.current=!0)},[f,l,S]);return(0,T.useEffect)(()=>{b&&P.current(j.current,M.current)},[b]),(0,T.useEffect)(()=>{O||b||C()},[O,b,C]),T.createElement(V,{width:g,height:d,isEditorReady:b,loading:s,_ref:E,className:p,wrapperProps:h})}),U=function(){let[e,t]=(0,T.useState)(I.__getMonacoInstance());return L(()=>{let r;return e||(r=I.init()).then(e=>{t(e)}),()=>r?.cancel()}),e},B=function(e){let t=(0,T.useRef)();return(0,T.useEffect)(()=>{t.current=e},[e]),t.current},W=new Map,Y=(0,T.memo)(function({defaultValue:e,defaultLanguage:t,defaultPath:r,value:n,language:o,path:i,theme:c="light",line:u,loading:a="Loading...",options:l={},overrideServices:s={},saveViewState:f=!0,keepCurrentModel:d=!1,width:g="100%",height:p="100%",className:h,wrapperProps:y={},beforeMount:m=N,onMount:b=N,onChange:v,onValidate:O=N}){let[w,j]=(0,T.useState)(!1),[M,E]=(0,T.useState)(!0),P=(0,T.useRef)(null),R=(0,T.useRef)(null),k=(0,T.useRef)(null),S=(0,T.useRef)(b),C=(0,T.useRef)(m),x=(0,T.useRef)(),A=(0,T.useRef)(n),D=B(i),z=(0,T.useRef)(!1),F=(0,T.useRef)(!1);L(()=>{let e=I.init();return e.then(e=>(P.current=e)&&E(!1)).catch(e=>e?.type!=="cancelation"&&console.error("Monaco initialization: error:",e)),()=>R.current?void(x.current?.dispose(),d?f&&W.set(i,R.current.saveViewState()):R.current.getModel()?.dispose(),R.current.dispose()):e.cancel()}),_(()=>{let c=q(P.current,e||n||"",t||o||"",i||r||"");c!==R.current?.getModel()&&(f&&W.set(D,R.current?.saveViewState()),R.current?.setModel(c),f&&R.current?.restoreViewState(W.get(i)))},[i],w),_(()=>{R.current?.updateOptions(l)},[l],w),_(()=>{R.current&&void 0!==n&&(R.current.getOption(P.current.editor.EditorOption.readOnly)?R.current.setValue(n):n!==R.current.getValue()&&(F.current=!0,R.current.executeEdits("",[{range:R.current.getModel().getFullModelRange(),text:n,forceMoveMarkers:!0}]),R.current.pushUndoStop(),F.current=!1))},[n],w),_(()=>{let e=R.current?.getModel();e&&o&&P.current?.editor.setModelLanguage(e,o)},[o],w),_(()=>{void 0!==u&&R.current?.revealLine(u)},[u],w),_(()=>{P.current?.editor.setTheme(c)},[c],w);let U=(0,T.useCallback)(()=>{if(!(!k.current||!P.current)&&!z.current){C.current(P.current);let a=i||r,d=q(P.current,n||e||"",t||o||"",a||"");R.current=P.current?.editor.create(k.current,{model:d,automaticLayout:!0,...l},s),f&&R.current.restoreViewState(W.get(a)),P.current.editor.setTheme(c),void 0!==u&&R.current.revealLine(u),j(!0),z.current=!0}},[e,t,r,n,o,i,l,s,f,c,u]);return(0,T.useEffect)(()=>{w&&S.current(R.current,P.current)},[w]),(0,T.useEffect)(()=>{M||w||U()},[M,w,U]),A.current=n,(0,T.useEffect)(()=>{w&&v&&(x.current?.dispose(),x.current=R.current?.onDidChangeModelContent(e=>{F.current||v(R.current.getValue(),e)}))},[w,v]),(0,T.useEffect)(()=>{if(w){let e=P.current.editor.onDidChangeMarkers(e=>{let t=R.current.getModel()?.uri;if(t&&e.find(e=>e.path===t.path)){let e=P.current.editor.getModelMarkers({resource:t});O?.(e)}});return()=>{e?.dispose()}}return()=>{}},[w,O]),T.createElement(V,{width:g,height:p,isEditorReady:w,loading:a,_ref:k,className:h,wrapperProps:y})}),$=Y}}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/config/page-10636692240e10da.js b/transports/bifrost-http/ui/_next/static/chunks/app/config/page-10636692240e10da.js new file mode 100644 index 0000000000..50fa0fcb79 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/config/page-10636692240e10da.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[653],{1243:(e,t,r)=>{"use strict";r.d(t,{A:()=>s});let s=(0,r(9946).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},1886:(e,t,r)=>{"use strict";r.d(t,{K:()=>l});var s=r(9362),a=r(3464),n=r(2379);class i{getErrorMessage(e){if((0,s.F0)(e)&&e.response){let t=e.response.data;if(t.error&&t.error.message)return t.error.message}return e instanceof Error&&e.message||"An unexpected error occurred."}async getLogs(e,t){try{let r={limit:t.limit,offset:t.offset,sort_by:t.sort_by,order:t.order};return e.providers&&e.providers.length>0&&(r.providers=e.providers.join(",")),e.models&&e.models.length>0&&(r.models=e.models.join(",")),e.status&&e.status.length>0&&(r.status=e.status.join(",")),e.objects&&e.objects.length>0&&(r.objects=e.objects.join(",")),e.start_time&&(r.start_time=e.start_time),e.end_time&&(r.end_time=e.end_time),e.min_latency&&(r.min_latency=e.min_latency),e.max_latency&&(r.max_latency=e.max_latency),e.min_tokens&&(r.min_tokens=e.min_tokens),e.max_tokens&&(r.max_tokens=e.max_tokens),e.content_search&&(r.content_search=e.content_search),[(await this.client.get("/logs",{params:r})).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getDroppedRequests(){try{return[(await this.client.get("/logs/dropped")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getProviders(){try{return[(await this.client.get("/providers")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getProvider(e){try{return[(await this.client.get("/providers/".concat(e))).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async createProvider(e){try{return[(await this.client.post("/providers",e)).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateProvider(e,t){try{return[(await this.client.put("/providers/".concat(e),t)).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async deleteProvider(e){try{return[(await this.client.delete("/providers/".concat(e))).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getMCPClients(){try{return[(await this.client.get("/mcp/clients")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async createMCPClient(e){try{return await this.client.post("/mcp/client",e),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateMCPClient(e,t){try{return await this.client.put("/mcp/client/".concat(e),t),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async deleteMCPClient(e){try{return await this.client.delete("/mcp/client/".concat(e)),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async reconnectMCPClient(e){try{return await this.client.post("/mcp/client/".concat(e,"/reconnect")),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}async getCoreConfig(){try{return[(await this.client.get("/config")).data,null]}catch(e){return[null,this.getErrorMessage(e)]}}async updateCoreConfig(e){try{return await this.client.put("/config",e),[null,null]}catch(e){return[null,this.getErrorMessage(e)]}}constructor(){let e=(0,n.hY)();this.client=a.A.create({baseURL:e,headers:{"Content-Type":"application/json"}})}}let l=new i},2379:(e,t,r)=>{"use strict";function s(){{let e="https:"===window.location.protocol?"https:":"http:",t="https:"===window.location.protocol?"wss:":"ws:";return{port:window.location.port||("https:"===window.location.protocol?"443":"80"),isDevelopment:!1,baseUrl:"".concat(e,"//").concat(window.location.host),wsUrl:"".concat(t,"//").concat(window.location.host),host:window.location.host}}}function a(){let e=s();return e.isDevelopment?"".concat(e.baseUrl,"/api"):"/api"}function n(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=s(),r=e.startsWith("/")?e:"/".concat(e);return"".concat(t.wsUrl).concat(r)}function i(){return s().baseUrl}r.d(t,{$0:()=>n,XO:()=>i,hY:()=>a}),r(9509)},3557:(e,t,r)=>{"use strict";r.d(t,{Ob:()=>a,w8:()=>s});let s=e=>e.split(",").map(e=>e.trim()).filter(e=>e.length>0),a=(e,t)=>(null==e?void 0:e.length)===(null==t?void 0:t.length)&&(null==e?void 0:e.every((e,r)=>e===t[r]))},3999:(e,t,r)=>{"use strict";r.d(t,{cn:()=>n});var s=r(2596),a=r(9688);function n(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";r.r(t),r.d(t,{default:()=>B});var s=r(5155),a=r(2115),n=r(8482),i=r(5185),l=r(6101),o=r(6081),c=r(5845),d=r(5503),u=r(1275),p=r(3655),h="Switch",[g,m]=(0,o.A)(h),[f,x]=g(h),b=a.forwardRef((e,t)=>{let{__scopeSwitch:r,name:n,checked:o,defaultChecked:d,required:u,disabled:g,value:m="on",onCheckedChange:x,form:b,...v}=e,[y,_]=a.useState(null),N=(0,l.s)(t,e=>_(e)),k=a.useRef(!1),C=!y||b||!!y.closest("form"),[E,M]=(0,c.i)({prop:o,defaultProp:null!=d&&d,onChange:x,caller:h});return(0,s.jsxs)(f,{scope:r,checked:E,disabled:g,children:[(0,s.jsx)(p.sG.button,{type:"button",role:"switch","aria-checked":E,"aria-required":u,"data-state":j(E),"data-disabled":g?"":void 0,disabled:g,value:m,...v,ref:N,onClick:(0,i.m)(e.onClick,e=>{M(e=>!e),C&&(k.current=e.isPropagationStopped(),k.current||e.stopPropagation())})}),C&&(0,s.jsx)(w,{control:y,bubbles:!k.current,name:n,value:m,checked:E,required:u,disabled:g,form:b,style:{transform:"translateX(-100%)"}})]})});b.displayName=h;var v="SwitchThumb",y=a.forwardRef((e,t)=>{let{__scopeSwitch:r,...a}=e,n=x(v,r);return(0,s.jsx)(p.sG.span,{"data-state":j(n.checked),"data-disabled":n.disabled?"":void 0,...a,ref:t})});y.displayName=v;var w=a.forwardRef((e,t)=>{let{__scopeSwitch:r,control:n,checked:i,bubbles:o=!0,...c}=e,p=a.useRef(null),h=(0,l.s)(p,t),g=(0,d.Z)(i),m=(0,u.X)(n);return a.useEffect(()=>{let e=p.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set;if(g!==i&&t){let r=new Event("click",{bubbles:o});t.call(e,i),e.dispatchEvent(r)}},[g,i,o]),(0,s.jsx)("input",{type:"checkbox","aria-hidden":!0,defaultChecked:i,...c,tabIndex:-1,ref:h,style:{...c.style,...m,position:"absolute",pointerEvents:"none",opacity:0,margin:0}})});function j(e){return e?"checked":"unchecked"}w.displayName="SwitchBubbleInput";var _=r(3999);let N=a.forwardRef((e,t)=>{let{className:r,...a}=e;return(0,s.jsx)(b,{className:(0,_.cn)("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",r),...a,ref:t,children:(0,s.jsx)(y,{className:(0,_.cn)("bg-background pointer-events-none block h-5 w-5 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})})});N.displayName=b.displayName;var k=r(1154),C=r(1243),E=r(1886),M=r(6671),P="horizontal",T=["horizontal","vertical"],z=a.forwardRef((e,t)=>{var r;let{decorative:a,orientation:n=P,...i}=e,l=(r=n,T.includes(r))?n:P;return(0,s.jsx)(p.sG.div,{"data-orientation":l,...a?{role:"none"}:{"aria-orientation":"vertical"===l?l:void 0,role:"separator"},...i,ref:t})});z.displayName="Separator";var q=r(9026),R=r(9852),S=r(9474),A=r(3557);function I(){let[e,t]=(0,a.useState)({drop_excess_requests:!1,initial_pool_size:300,enable_logging:!0}),[r,i]=(0,a.useState)(0),[l,o]=(0,a.useState)(!0),[c,d]=(0,a.useState)({initial_pool_size:"300",prometheus_labels:""});(0,a.useEffect)(()=>{(async()=>{let[e,t]=await E.K.getDroppedRequests();t?M.o.error(t):e&&i(e.dropped_requests)})()},[]);let u=(0,a.useRef)(void 0),p=(0,a.useRef)(void 0);(0,a.useEffect)(()=>{(async()=>{let[e,r]=await E.K.getCoreConfig();if(r)M.o.error(r);else if(e){var s;t(e),d({initial_pool_size:(null==(s=e.initial_pool_size)?void 0:s.toString())||"300",prometheus_labels:e.prometheus_labels||""})}o(!1)})()},[]);let h=(0,a.useCallback)(async(r,s)=>{let a={...e,[r]:s};t(a);let[,n]=await E.K.updateCoreConfig(a);n?M.o.error(n):M.o.success("Core setting updated successfully.")},[e]),g=async(e,t)=>{await h(e,t)},m=(0,a.useCallback)(e=>{d(t=>({...t,initial_pool_size:e})),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{let t=Number.parseInt(e);!isNaN(t)&&t>0&&h("initial_pool_size",t)},1e3)},[h]),f=(0,a.useCallback)(e=>{d(t=>({...t,prometheus_labels:e})),p.current&&clearTimeout(p.current),p.current=setTimeout(()=>{h("prometheus_labels",(0,A.w8)(e))},1e3)},[h]);return((0,a.useEffect)(()=>()=>{u.current&&clearTimeout(u.current),p.current&&clearTimeout(p.current)},[]),l)?(0,s.jsx)("div",{className:"flex h-64 items-center justify-center",children:(0,s.jsx)(k.A,{className:"h-4 w-4 animate-spin"})}):(0,s.jsxs)("div",{children:[(0,s.jsxs)(n.aR,{className:"mb-4 px-0",children:[(0,s.jsx)(n.ZB,{className:"flex items-center gap-2",children:"Core System Settings"}),(0,s.jsx)(n.BT,{children:"Configure core Bifrost settings like request handling, pool sizes, and system behavior."})]}),(0,s.jsxs)("div",{className:"space-y-6",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)("label",{htmlFor:"drop-excess-requests",className:"text-sm font-medium",children:"Drop Excess Requests"}),(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:"If enabled, Bifrost will drop requests that exceed pool capacity."})]}),(0,s.jsx)(N,{id:"drop-excess-requests",checked:e.drop_excess_requests,onCheckedChange:e=>g("drop_excess_requests",e)})]}),(0,s.jsx)(z,{}),(0,s.jsxs)(q.Fc,{children:[(0,s.jsx)(C.A,{className:"h-4 w-4"}),(0,s.jsx)(q.TN,{children:"The settings below require a Bifrost service restart to take effect. Current connections will continue with existing settings until restart."})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)("label",{htmlFor:"initial-pool-size",className:"text-sm font-medium",children:"Initial Pool Size"}),(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:"The initial connection pool size."})]}),(0,s.jsx)(R.p,{id:"initial-pool-size",type:"number",className:"w-24",value:c.initial_pool_size,onChange:e=>m(e.target.value),min:"1"})]}),(0,s.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)("label",{htmlFor:"enable-logging",className:"text-sm font-medium",children:"Enable Logs"}),(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:"Enable logging of requests and responses to a SQLite database. This can add 40-60mb of overhead to the system memory."})]}),(0,s.jsx)(N,{id:"enable-logging",checked:e.enable_logging,onCheckedChange:e=>g("enable_logging",e)})]}),(0,s.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,s.jsxs)("div",{className:"space-y-0.5",children:[(0,s.jsx)("label",{htmlFor:"prometheus-labels",className:"text-sm font-medium",children:"Prometheus Labels"}),(0,s.jsx)("p",{className:"text-muted-foreground text-sm",children:"Comma-separated list of custom labels to add to the Prometheus metrics."})]}),(0,s.jsx)(S.T,{id:"prometheus-labels",className:"h-24",placeholder:"teamId, projectId, environment",value:c.prometheus_labels,onChange:e=>f(e.target.value)})]})]})]})}function B(){return(0,s.jsxs)("div",{className:"bg-background space-y-6",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("h1",{className:"text-3xl font-bold",children:"Configuration"}),(0,s.jsx)("p",{className:"text-muted-foreground mt-2",children:"Configure AI providers, API keys, and system settings for your Bifrost instance."})]}),(0,s.jsx)(I,{})]})}},8482:(e,t,r)=>{"use strict";r.d(t,{BT:()=>o,Wu:()=>c,ZB:()=>l,Zp:()=>n,aR:()=>i});var s=r(5155);r(2115);var a=r(3999);function n(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...r})}function i(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...r})}function l(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",t),...r})}function o(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",t),...r})}function c(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",t),...r})}},8835:(e,t,r)=>{Promise.resolve().then(r.bind(r,4527))},9026:(e,t,r)=>{"use strict";r.d(t,{Fc:()=>l,TN:()=>o});var s=r(5155);r(2115);var a=r(2085),n=r(3999);let i=(0,a.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:r,...a}=e;return(0,s.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,n.cn)(i({variant:r}),t),...a})}function o(e){let{className:t,...r}=e;return(0,s.jsx)("div",{"data-slot":"alert-description",className:(0,n.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...r})}},9474:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});var s=r(5155);r(2115);var a=r(3999);function n(e){let{className:t,...r}=e;return(0,s.jsx)("textarea",{"data-slot":"textarea",className:(0,a.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),...r})}},9852:(e,t,r)=>{"use strict";r.d(t,{p:()=>i});var s=r(5155),a=r(2115),n=r(3999);let i=a.forwardRef((e,t)=>{let{className:r,type:a,...i}=e;return(0,s.jsx)("input",{type:a,ref:t,"data-slot":"input",className:(0,n.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",r),...i})});i.displayName="Input"}},e=>{var t=t=>e(e.s=t);e.O(0,[106,189,412,441,684,358],()=>t(8835)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/config/page-48faa8da2b43fe44.js b/transports/bifrost-http/ui/_next/static/chunks/app/config/page-48faa8da2b43fe44.js deleted file mode 100644 index 5fa3d86027..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/app/config/page-48faa8da2b43fe44.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[653],{12:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>ey});var n=t(5155),a=t(2115),r=t(4964),i=t(8145),l=t(4213),c=t(1539),o=t(381),d=t(6671);function u(){return{toast:e=>{let{title:s,description:t,variant:n}=e,a=t?"".concat(s,": ").concat(t):s;"destructive"===n?d.o.error(a):d.o.success(a)}}}var m=t(1886),x=t(8482),h=t(4884),p=t(3999);let g=a.forwardRef((e,s)=>{let{className:t,...a}=e;return(0,n.jsx)(h.bL,{className:(0,p.cn)("peer focus-visible:ring-ring focus-visible:ring-offset-background data-[state=checked]:bg-primary data-[state=unchecked]:bg-input inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",t),...a,ref:s,children:(0,n.jsx)(h.zi,{className:(0,p.cn)("bg-background pointer-events-none block h-5 w-5 rounded-full shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0")})})});g.displayName=h.bL.displayName;var f=t(1154),j=t(1243),v=t(7489),y=t(9026),b=t(9852);function N(e){let{className:s,...t}=e;return(0,n.jsx)("textarea",{"data-slot":"textarea",className:(0,p.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...t})}let _=e=>e.split(",").map(e=>e.trim()).filter(e=>e.length>0),C=(e,s)=>(null==e?void 0:e.length)===(null==s?void 0:s.length)&&(null==e?void 0:e.every((e,t)=>e===s[t]));function w(){let[e,s]=(0,a.useState)({drop_excess_requests:!1,initial_pool_size:300,enable_logging:!0}),[t,r]=(0,a.useState)(0),[i,l]=(0,a.useState)(!0),[c,o]=(0,a.useState)({initial_pool_size:"300",prometheus_labels:""});(0,a.useEffect)(()=>{(async()=>{let[e,s]=await m.K.getDroppedRequests();s?d.o.error(s):e&&r(e.dropped_requests)})()},[]);let u=(0,a.useRef)(void 0),h=(0,a.useRef)(void 0);(0,a.useEffect)(()=>{(async()=>{let[e,t]=await m.K.getCoreConfig();if(t)d.o.error(t);else if(e){var n;s(e),o({initial_pool_size:(null==(n=e.initial_pool_size)?void 0:n.toString())||"300",prometheus_labels:e.prometheus_labels||""})}l(!1)})()},[]);let p=(0,a.useCallback)(async(t,n)=>{let a={...e,[t]:n};s(a);let[,r]=await m.K.updateCoreConfig(a);r?d.o.error(r):d.o.success("Core setting updated successfully.")},[e]),C=async(e,s)=>{await p(e,s)},w=(0,a.useCallback)(e=>{o(s=>({...s,initial_pool_size:e})),u.current&&clearTimeout(u.current),u.current=setTimeout(()=>{let s=Number.parseInt(e);!isNaN(s)&&s>0&&p("initial_pool_size",s)},1e3)},[p]),k=(0,a.useCallback)(e=>{o(s=>({...s,prometheus_labels:e})),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{p("prometheus_labels",_(e))},1e3)},[p]);return((0,a.useEffect)(()=>()=>{u.current&&clearTimeout(u.current),h.current&&clearTimeout(h.current)},[]),i)?(0,n.jsx)("div",{className:"flex h-64 items-center justify-center",children:(0,n.jsx)(f.A,{className:"h-4 w-4 animate-spin"})}):(0,n.jsxs)("div",{children:[(0,n.jsxs)(x.aR,{className:"mb-4 px-0",children:[(0,n.jsx)(x.ZB,{className:"flex items-center gap-2",children:"Core System Settings"}),(0,n.jsx)(x.BT,{children:"Configure core Bifrost settings like request handling, pool sizes, and system behavior."})]}),(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,n.jsxs)("div",{className:"space-y-0.5",children:[(0,n.jsx)("label",{htmlFor:"drop-excess-requests",className:"text-sm font-medium",children:"Drop Excess Requests"}),(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:"If enabled, Bifrost will drop requests that exceed pool capacity."})]}),(0,n.jsx)(g,{id:"drop-excess-requests",checked:e.drop_excess_requests,onCheckedChange:e=>C("drop_excess_requests",e)})]}),(0,n.jsx)(v.w,{}),(0,n.jsxs)(y.Fc,{children:[(0,n.jsx)(j.A,{className:"h-4 w-4"}),(0,n.jsx)(y.TN,{children:"The settings below require a Bifrost service restart to take effect. Current connections will continue with existing settings until restart."})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,n.jsxs)("div",{className:"space-y-0.5",children:[(0,n.jsx)("label",{htmlFor:"initial-pool-size",className:"text-sm font-medium",children:"Initial Pool Size"}),(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:"The initial connection pool size."})]}),(0,n.jsx)(b.p,{id:"initial-pool-size",type:"number",className:"w-24",value:c.initial_pool_size,onChange:e=>w(e.target.value),min:"1"})]}),(0,n.jsxs)("div",{className:"flex items-center justify-between space-x-2 rounded-lg border p-4",children:[(0,n.jsxs)("div",{className:"space-y-0.5",children:[(0,n.jsx)("label",{htmlFor:"enable-logging",className:"text-sm font-medium",children:"Enable Logs"}),(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:"Enable logging of requests and responses to a SQLite database. This can add 40-60mb of overhead to the system memory."})]}),(0,n.jsx)(g,{id:"enable-logging",checked:e.enable_logging,onCheckedChange:e=>C("enable_logging",e)})]}),(0,n.jsxs)("div",{className:"space-y-2 rounded-lg border p-4",children:[(0,n.jsxs)("div",{className:"space-y-0.5",children:[(0,n.jsx)("label",{htmlFor:"prometheus-labels",className:"text-sm font-medium",children:"Prometheus Labels"}),(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:"Comma-separated list of custom labels to add to the Prometheus metrics."})]}),(0,n.jsx)(N,{id:"prometheus-labels",className:"h-24",placeholder:"teamId, projectId, environment",value:c.prometheus_labels,onChange:e=>k(e.target.value)})]})]})]})}var k=t(7168),A=t(8524),S=t(4616),P=t(9803),z=t(3717),E=t(2525),q=t(7783),I=t(7649);function V(e){let{...s}=e;return(0,n.jsx)(I.bL,{"data-slot":"alert-dialog",...s})}function R(e){let{...s}=e;return(0,n.jsx)(I.l9,{"data-slot":"alert-dialog-trigger",...s})}function T(e){let{...s}=e;return(0,n.jsx)(I.ZL,{"data-slot":"alert-dialog-portal",...s})}function M(e){let{className:s,...t}=e;return(0,n.jsx)(I.hJ,{"data-slot":"alert-dialog-overlay",className:(0,p.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function B(e){let{className:s,...t}=e;return(0,n.jsxs)(T,{children:[(0,n.jsx)(M,{}),(0,n.jsx)(I.UC,{"data-slot":"alert-dialog-content",className:(0,p.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...t})]})}function L(e){let{className:s,...t}=e;return(0,n.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,p.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function O(e){let{className:s,...t}=e;return(0,n.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,p.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function D(e){let{className:s,...t}=e;return(0,n.jsx)(I.hE,{"data-slot":"alert-dialog-title",className:(0,p.cn)("text-lg font-semibold",s),...t})}function $(e){let{className:s,...t}=e;return(0,n.jsx)(I.VY,{"data-slot":"alert-dialog-description",className:(0,p.cn)("text-muted-foreground text-sm",s),...t})}function U(e){let{className:s,...t}=e;return(0,n.jsx)(I.rc,{className:(0,p.cn)((0,k.r)({variant:"destructive"}),s),...t})}function K(e){let{className:s,...t}=e;return(0,n.jsx)(I.ZD,{className:(0,p.cn)((0,k.r)({variant:"outline"}),s),...t})}var Z=t(5784),F=t(9840),H=t(7777),J=t(4416);let Y=a.forwardRef((e,s)=>{let{className:t,value:r,onValueChange:l,...c}=e,[o,d]=a.useState(""),u=e=>{l(r.filter(s=>s!==e))};return(0,n.jsxs)("div",{className:(0,p.cn)("border-input flex flex-wrap items-center gap-2 rounded-md border p-2",t),children:[r.map(e=>(0,n.jsxs)(i.E,{variant:"secondary",className:"flex items-center gap-1",children:[e,(0,n.jsx)("button",{type:"button",className:"ring-offset-background focus:ring-ring cursor-pointer rounded-full outline-none focus:ring-2 focus:ring-offset-2",onClick:()=>u(e),children:(0,n.jsx)(J.A,{className:"h-3 w-3"})})]},e)),(0,n.jsx)(b.p,{ref:s,type:"text",value:o,onChange:e=>{d(e.target.value)},onKeyDown:e=>{if("Enter"===e.key||","===e.key){e.preventDefault();let s=o.trim();s&&!r.includes(s)&&l([...r,s]),d("")}else"Backspace"===e.key&&""===o&&r.length>0&&l(r.slice(0,-1))},className:"flex-1 border-0 shadow-none focus-visible:ring-0",...c})]})});Y.displayName="TagInput";var G=t(1284),W=t(4869),X=t(4229),Q=t(9231),ee=t.n(Q),es=t(8103);let et={azure:{title:"Azure OpenAI Meta Config",fields:[{name:"endpoint",label:"Endpoint",type:"text",placeholder:"https://your-resource.openai.azure.com or env.AZURE_ENDPOINT"},{name:"api_version",label:"API Version (Optional)",type:"text",placeholder:"YYYY-MM-DD or env.AZURE_VERSION"},{name:"deployments",label:"Deployments (JSON format)",type:"textarea",placeholder:'{ "gpt-4": "my-deployment" }',isJson:!0}]},bedrock:{title:"AWS Bedrock Meta Config",fields:[{name:"region",label:"Region",type:"text",placeholder:"us-east-1 or env.AWS_REGION"}]},vertex:{title:"Google Vertex AI Meta Config",fields:[{name:"project_id",label:"Project ID",type:"text",placeholder:"gcp-project-id or env.GCP_PROJECT"},{name:"region",label:"Region",type:"text",placeholder:"us-central1 or env.GCP_REGION"},{name:"auth_credentials",label:"Auth Credentials (JSON key)",type:"textarea",placeholder:"JSON key or env.GCP_CREDS"}]}},en=e=>{let{provider:s,metaConfig:t,onMetaConfigChange:a}=e,r=et[s];if(!r)return null;let i=e=>{let s=t[e.name];return"textarea"===e.type?(0,n.jsx)(N,{placeholder:e.placeholder,value:e.isJson?"string"==typeof s?s:JSON.stringify(s,null,2):s||"",onChange:s=>{a(e.name,s.target.value)},onBlur:s=>{if(e.isJson)try{let t=JSON.parse(s.target.value);a(e.name,t)}catch(e){}},rows:4,className:"max-w-full font-mono text-sm wrap-anywhere"}):(0,n.jsx)(b.p,{placeholder:e.placeholder,value:s||"",onChange:s=>a(e.name,s.target.value)})};return(0,n.jsxs)("div",{className:"",children:[(0,n.jsx)(x.aR,{className:"mb-2 px-0",children:(0,n.jsxs)(x.ZB,{className:"flex items-center gap-2 text-base",children:[(0,n.jsx)(es.A,{className:"h-4 w-4"}),r.title,(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(G.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,n.jsx)(H.ZI,{className:"max-w-fit",children:(0,n.jsxs)("p",{children:["Use ",(0,n.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]})}),(0,n.jsx)(x.Wu,{className:"space-y-4 px-0",children:r.fields.map(e=>(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"block text-sm font-medium",children:e.label}),i(e)]},e.name))})]})};class ea{isValid(){return!this.rules.some(e=>!e.isValid)}getErrors(){return this.rules.filter(e=>!e.isValid).map(e=>e.message)}getFirstError(){let e=this.rules.find(e=>!e.isValid);return null==e?void 0:e.message}static required(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"This field is required";return{isValid:null!=e&&""!==e&&0!==e,message:s}}static minValue(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(s);return{isValid:!isNaN(e)&&e>=s,message:t}}static maxValue(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(s);return{isValid:!isNaN(e)&&e<=s,message:t}}static pattern(e,s,t){return{isValid:s.test(e||""),message:t}}static email(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid email";return this.pattern(e,/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,s)}static url(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid URL";return this.pattern(e,/^https?:\/\/.+/,s)}static minLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(s," characters");return{isValid:(e||"").length>=s,message:t}}static maxLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(s," characters");return{isValid:(e||"").length<=s,message:t}}static arrayMinLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at least ".concat(s," items");return{isValid:(null==e?void 0:e.length)>=s,message:t}}static arrayMaxLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at most ".concat(s," items");return{isValid:(null==e?void 0:e.length)<=s,message:t}}static arrayUnique(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must have unique items";return{isValid:(null==e?void 0:e.length)===new Set(e).size,message:s}}static arraysEqual(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be equal";return{isValid:(null==e?void 0:e.length)===(null==s?void 0:s.length)&&(null==e?void 0:e.every((e,t)=>e===s[t])),message:t}}static custom(e,s){return{isValid:e,message:s}}static all(e){return e.find(e=>!e.isValid)||{isValid:!0,message:""}}constructor(e){this.rules=e.filter(e=>void 0!==e)}}var er=t(4432);let ei={base_url:"",default_request_timeout_in_seconds:30,max_retries:0,retry_backoff_initial:1e3,retry_backoff_max:1e4},el={concurrency:10,buffer_size:100},ec={connected:"bg-green-100 text-green-800",error:"bg-red-100 text-red-800",disconnected:"bg-gray-100 text-gray-800"},eo=(e,s)=>{let t=!e,n=(null==e?void 0:e.name)||s||"",a=!["vertex","ollama"].includes(n);return{selectedProvider:n,keys:t&&a?[{value:"",models:[],weight:1}]:!t&&a&&(null==e?void 0:e.keys)?e.keys:[],networkConfig:(null==e?void 0:e.network_config)||ei,performanceConfig:(null==e?void 0:e.concurrency_and_buffer_size)||el,metaConfig:(null==e?void 0:e.meta_config)||{endpoint:"",deployments:{},api_version:""},proxyConfig:(null==e?void 0:e.proxy_config)||{type:"none",url:"",username:"",password:""}}};function ed(e){var s,t;let{provider:i,onSave:l,onCancel:o,existingProviders:u}=e,x=i?void 0:q.xq.find(e=>!u.includes(e))||"",[h]=(0,a.useState)(eo(i,x)),[g,f]=(0,a.useState)({...h,isDirty:!1}),[v,N]=(0,a.useState)(!1),{selectedProvider:_,keys:C,networkConfig:w,performanceConfig:A,metaConfig:z,proxyConfig:E,isDirty:I}=g,V="ollama"===_,R=!["vertex","ollama"].includes(_);R&&C.every(e=>""!==e.value.trim()),R&&C.length;let T=A.concurrency>0&&A.buffer_size>0&&A.concurrency{let e=!0,s="";if("azure"===_){let t=!!z.endpoint&&""!==z.endpoint.trim(),n=!!(z.deployments&&"object"==typeof z.deployments&&Object.keys(z.deployments).length>0);(e=t&&n)||(s="Endpoint and at least one Deployment are required for Azure")}else if("bedrock"===_)(e=!!z.region&&""!==z.region.trim())||(s="Region is required for AWS Bedrock");else if("vertex"===_){let t=!!z.project_id&&""!==z.project_id.trim(),n=!!z.auth_credentials&&""!==z.auth_credentials.trim(),a=!!z.region&&""!==z.region.trim();(e=t&&n&&a)||(s="Project ID, Auth Credentials, and Region are required for Vertex AI")}return{valid:e,message:s}})();(0,a.useEffect)(()=>{let e={selectedProvider:_,keys:R?C:[],networkConfig:w,performanceConfig:A,metaConfig:z,proxyConfig:E};f(s=>({...s,isDirty:!ee()(h,e)}))},[_,C,w,A,z,E,h,R]);let O=(e,s)=>{f(t=>({...t,[e]:s}))},D=(e,s)=>{O("proxyConfig",{...E,[e]:s})},$=i?q.xq:q.xq.filter(e=>!u.includes(e)),U=async e=>{if(!K.isValid())return void d.o.error(K.getFirstError());e.preventDefault(),N(!0);let s=null;if(i){let e={keys:R?C.filter(e=>""!==e.value.trim()):[],network_config:w,concurrency_and_buffer_size:A,meta_config:z,proxy_config:E};[,s]=await m.K.updateProvider(i.name,e)}else{let e={provider:_,keys:R?C.filter(e=>""!==e.value.trim()):[],network_config:w,concurrency_and_buffer_size:A,meta_config:z,proxy_config:E};[,s]=await m.K.createProvider(e)}N(!1),s?d.o.error(s):(d.o.success("Provider ".concat(i?"updated":"added"," successfully")),l())},K=new ea([ea.required(_,"Please select a provider"),ea.custom(I,"No changes to save"),...V?[ea.required(w.base_url,"Base URL is required for Ollama provider"),ea.pattern(w.base_url||"",/^https?:\/\/.+/,"Base URL must start with http:// or https://")]:[],...R?[ea.minValue(C.length,1,"At least one API key is required"),ea.custom(C.every(e=>""!==e.value.trim()),"API key value cannot be empty")]:[],ea.minValue(w.default_request_timeout_in_seconds,1,"Timeout must be greater than 0 seconds"),ea.minValue(w.max_retries,0,"Max retries cannot be negative"),ea.minValue(A.concurrency,1,"Concurrency must be greater than 0"),ea.minValue(A.buffer_size,1,"Buffer size must be greater than 0"),ea.custom(A.concurrency{O("keys",C.filter((s,t)=>t!==e))},es=(e,s,t)=>{let n=[...C],a={...n[e]};"models"===s&&Array.isArray(t)?a.models=t:"value"===s&&"string"==typeof t?a.value=t:"weight"===s&&"string"==typeof t&&(a.weight=parseFloat(t)||1),n[e]=a,O("keys",n)},et=(0,a.useMemo)(()=>{let e=[];return R&&e.push({id:"api-keys",label:"API Keys"}),("azure"===_||"bedrock"===_||"vertex"===_)&&e.push({id:"meta-config",label:"Meta Config"}),e.push({id:"network",label:"Network"}),e.push({id:"performance",label:"Performance"}),e},[R,_]),[ei,el]=(0,a.useState)((null==(s=et[0])?void 0:s.id)||"api-keys");return(0,a.useEffect)(()=>{if(!et.map(e=>e.id).includes(ei)){var e;el((null==(e=et[0])?void 0:e.id)||"api-keys")}},[et]),(0,n.jsx)(F.lG,{open:!0,onOpenChange:o,children:(0,n.jsxs)(F.Cf,{className:"custom-scrollbar max-h-[90vh] overflow-y-auto sm:max-w-3xl",children:[(0,n.jsxs)(F.c7,{children:[(0,n.jsx)(F.L3,{children:i?(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,er.FO)(i.name,{size:20}),(0,n.jsx)("span",{className:"font-semibold",children:q.oU[i.name]})]}):(0,n.jsx)("div",{className:"flex items-center gap-2",children:"Add Provider"})}),(0,n.jsx)(F.rr,{children:"Configure AI provider settings, API keys, and network options."})]}),(0,n.jsxs)("form",{onSubmit:U,className:"space-y-6",children:[!i&&(0===$.length?(0,n.jsx)("div",{className:"text-muted-foreground py-8 text-center font-medium",children:"All providers have been configured."}):(0,n.jsx)(H.Bc,{children:(0,n.jsx)("div",{className:"grid grid-cols-4 gap-4",children:q.xq.map(e=>(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{className:(0,p.cn)("flex w-full items-center gap-2 rounded-lg border px-4 py-3 text-sm",_===e?"border-primary/20 opacity-100 hover:opacity-100":$.includes(e)?"cursor-pointer border-transparent opacity-100 hover:shadow-sm dark:shadow-gray-700":"cursor-not-allowed border-transparent opacity-30"),onClick:s=>{s.preventDefault(),$.includes(e)&&O("selectedProvider",e)},asChild:!0,children:(0,n.jsxs)("span",{children:[(0,er.FO)(e,{size:"sm"}),(0,n.jsx)("div",{className:"text-sm",children:q.oU[e]})]})}),!$.includes(e)&&(0,n.jsx)(H.ZI,{children:"Provider is already configured"})]},e))})})),(0,n.jsxs)(r.tU,{defaultValue:null==(t=et[0])?void 0:t.id,value:ei,onValueChange:el,className:"space-y-6",children:[(0,n.jsx)(r.j7,{className:"grid h-10 w-full grid-cols-".concat(et.length," mb-4"),children:et.map(e=>(0,n.jsx)(r.Xi,{value:e.id,className:"flex items-center gap-2",children:e.label},e.id))}),R&&(0,n.jsxs)(r.av,{value:"api-keys",className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(P.A,{className:"h-4 w-4"}),(0,n.jsx)("h3",{className:"text-base font-medium",children:"API Keys"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(G.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,n.jsx)(H.ZI,{className:"max-w-fit",children:(0,n.jsxs)("p",{children:["Use ",(0,n.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]}),(0,n.jsxs)(k.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{O("keys",[...C,{value:"",models:[],weight:1}])},children:[(0,n.jsx)(S.A,{className:"h-4 w-4"}),"Add Key"]})]}),(0,n.jsx)("div",{className:"space-y-4",children:C.map((e,s)=>(0,n.jsxs)("div",{className:"space-y-4 rounded-md border p-4",children:[(0,n.jsxs)("div",{className:"flex gap-4",children:[(0,n.jsxs)("div",{className:"flex-1",children:[(0,n.jsx)("div",{className:"text-sm font-medium",children:"API Key"}),(0,n.jsx)(b.p,{placeholder:"API Key or env.MY_KEY",value:e.value,onChange:e=>es(s,"value",e.target.value),type:"text",className:"flex-1 ".concat(R&&""===e.value.trim()?"border-destructive":"")})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Weight"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(G.A,{className:"text-muted-foreground h-3 w-3"})})}),(0,n.jsx)(H.ZI,{children:(0,n.jsx)("p",{children:"Determines traffic distribution between keys. Higher weights receive more requests."})})]})})]}),(0,n.jsx)(b.p,{placeholder:"1.0",value:e.weight,onChange:e=>es(s,"weight",e.target.value),type:"number",step:"0.1",min:"0",max:"1.0",className:"w-20"})]})]}),(0,n.jsxs)("div",{children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Models (Optional)"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(G.A,{className:"text-muted-foreground h-3 w-3"})})}),(0,n.jsx)(H.ZI,{children:(0,n.jsx)("p",{children:"Comma-separated list of models this key applies to. Leave blank for all models."})})]})})]}),(0,n.jsx)(Y,{placeholder:"e.g. gpt-4, gpt-3.5-turbo",value:e.models||[],onValueChange:e=>es(s,"models",e)})]}),C.length>1&&(0,n.jsxs)(k.$,{type:"button",variant:"destructive",size:"sm",onClick:()=>Q(s),className:"mt-2",children:[(0,n.jsx)(J.A,{className:"h-4 w-4"}),"Remove Key"]})]},s))})]}),"anthropic"!==_&&"openai"!==_&&"cohere"!==_&&(0,n.jsx)(r.av,{value:"meta-config",children:(0,n.jsx)(en,{provider:_,metaConfig:z,onMetaConfigChange:(e,s)=>{O("metaConfig",{...z,[e]:s})}})}),(0,n.jsxs)(r.av,{value:"network",className:"space-y-6",children:[(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(W.A,{className:"h-4 w-4"}),(0,n.jsx)("h3",{className:"text-base font-medium",children:"Network Configuration"})]}),(0,n.jsxs)("div",{className:"grid grid-cols-1 gap-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsxs)("label",{className:"text-sm font-medium",children:["Base URL ",V?"(Required)":"(Optional)"]}),(0,n.jsx)(b.p,{placeholder:"https://api.example.com",value:w.base_url||"",onChange:e=>O("networkConfig",{...w,base_url:e.target.value}),className:V&&!w.base_url?"border-destructive":""})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Timeout (seconds)"}),(0,n.jsx)(b.p,{type:"number",placeholder:"30",value:w.default_request_timeout_in_seconds,onChange:e=>O("networkConfig",{...w,default_request_timeout_in_seconds:parseInt(e.target.value)||30})})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Max Retries"}),(0,n.jsx)(b.p,{type:"number",placeholder:"0",value:w.max_retries,onChange:e=>O("networkConfig",{...w,max_retries:parseInt(e.target.value)||0})})]})]})]})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(W.A,{className:"h-4 w-4"}),(0,n.jsx)("h3",{className:"text-base font-medium",children:"Proxy Settings"})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Proxy Type"}),(0,n.jsxs)(Z.l6,{value:E.type,onValueChange:e=>D("type",e),children:[(0,n.jsx)(Z.bq,{className:"w-48",children:(0,n.jsx)(Z.yv,{placeholder:"Select type"})}),(0,n.jsxs)(Z.gC,{children:[(0,n.jsx)(Z.eb,{value:"none",children:"None"}),(0,n.jsx)(Z.eb,{value:"http",children:"HTTP"}),(0,n.jsx)(Z.eb,{value:"socks5",children:"SOCKS5"}),(0,n.jsx)(Z.eb,{value:"environment",children:"Environment"})]})]})]}),"none"!==E.type&&"environment"!==E.type&&(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Proxy URL"}),(0,n.jsx)(b.p,{placeholder:"http://proxy.example.com",value:E.url||"",onChange:e=>D("url",e.target.value)})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Username"}),(0,n.jsx)(b.p,{value:E.username||"",onChange:e=>D("username",e.target.value),placeholder:"Proxy username"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Password"}),(0,n.jsx)(b.p,{type:"password",value:E.password||"",onChange:e=>D("password",e.target.value),placeholder:"Proxy password"})]})]})]})]})]})]}),(0,n.jsxs)(r.av,{value:"performance",className:"space-y-4",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(c.A,{className:"h-4 w-4"}),(0,n.jsx)("h3",{className:"text-base font-medium",children:"Performance Settings"})]}),M&&(0,n.jsxs)(y.Fc,{children:[(0,n.jsx)(j.A,{className:"h-4 w-4"}),(0,n.jsxs)(y.TN,{children:[(0,n.jsx)("strong",{children:"Heads up:"})," Changing concurrency or buffer size may temporarily affect request latency for this provider while the new settings are being applied."]})]}),(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Concurrency"}),(0,n.jsx)(b.p,{type:"number",value:A.concurrency,onChange:e=>O("performanceConfig",{...A,concurrency:parseInt(e.target.value)||0}),className:T?"":"border-destructive"})]}),(0,n.jsxs)("div",{children:[(0,n.jsx)("label",{className:"text-sm font-medium",children:"Buffer Size"}),(0,n.jsx)(b.p,{type:"number",value:A.buffer_size,onChange:e=>O("performanceConfig",{...A,buffer_size:parseInt(e.target.value)||0}),className:T?"":"border-destructive"})]})]})]})]}),$.length>0&&(0,n.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,n.jsx)(k.$,{type:"button",variant:"outline",onClick:o,children:"Cancel"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsxs)(k.$,{type:"submit",disabled:!K.isValid()||v,isLoading:v,children:[(0,n.jsx)(X.A,{className:"h-4 w-4"}),v?"Saving...":"Save Provider"]})})}),(!K.isValid()||v)&&(0,n.jsx)(H.ZI,{children:(0,n.jsx)("p",{children:v?"Saving...":K.getFirstError()||"Please fix validation errors"})})]})})]})]})]})})}function eu(e){let{providers:s,onRefresh:t}=e,[r,l]=(0,a.useState)(!1),[c,o]=(0,a.useState)(null),[u,h]=(0,a.useState)(null),p=async e=>{h(e);let[,s]=await m.K.deleteProvider(e);h(null),s?d.o.error(s):(d.o.success("Provider deleted successfully"),t())},g=e=>{o(e),l(!0)};return(0,n.jsxs)(n.Fragment,{children:[r&&(0,n.jsx)(ed,{provider:c,onSave:()=>{l(!1),o(null),t()},onCancel:()=>l(!1),existingProviders:s.map(e=>e.name)}),(0,n.jsxs)(x.aR,{className:"mb-4 px-0",children:[(0,n.jsxs)(x.ZB,{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex items-center gap-2",children:"AI Providers"}),(0,n.jsxs)(k.$,{onClick:()=>{o(null),l(!0)},children:[(0,n.jsx)(S.A,{className:"h-4 w-4"}),"Add Provider"]})]}),(0,n.jsx)(x.BT,{children:"Manage AI model providers, their API keys, and configuration settings."})]}),(0,n.jsx)("div",{className:"rounded-md border",children:(0,n.jsxs)(A.XI,{children:[(0,n.jsx)(A.A0,{children:(0,n.jsxs)(A.Hj,{children:[(0,n.jsx)(A.nd,{children:"Provider"}),(0,n.jsx)(A.nd,{children:"Concurrency"}),(0,n.jsx)(A.nd,{children:"Buffer Size"}),(0,n.jsx)(A.nd,{children:"Max Retries"}),(0,n.jsx)(A.nd,{children:"API Keys"}),(0,n.jsx)(A.nd,{className:"text-right",children:"Actions"})]})}),(0,n.jsxs)(A.BF,{children:[0===s.length&&(0,n.jsx)(A.Hj,{children:(0,n.jsx)(A.nA,{colSpan:6,className:"py-6 text-center",children:"No providers found."})}),s.map(e=>{var s,t,a,r;return(0,n.jsxs)(A.Hj,{children:[(0,n.jsx)(A.nA,{children:(0,n.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,er.FO)(e.name,{size:16}),(0,n.jsx)("p",{className:"font-medium",children:q.oU[e.name]||e.name})]})}),(0,n.jsx)(A.nA,{children:(0,n.jsx)("div",{className:"flex items-center space-x-2",children:(0,n.jsx)(i.E,{variant:"outline",children:(null==(s=e.concurrency_and_buffer_size)?void 0:s.concurrency)||1})})}),(0,n.jsx)(A.nA,{children:(0,n.jsx)("div",{className:"flex items-center space-x-2",children:(0,n.jsx)(i.E,{variant:"outline",children:(null==(t=e.concurrency_and_buffer_size)?void 0:t.buffer_size)||10})})}),(0,n.jsx)(A.nA,{children:(0,n.jsx)("div",{className:"flex items-center space-x-2",children:(0,n.jsx)(i.E,{variant:"outline",children:(null==(a=e.network_config)?void 0:a.max_retries)||0})})}),(0,n.jsx)(A.nA,{children:(0,n.jsx)("div",{className:"flex items-center space-x-2",children:"vertex"!==e.name&&"ollama"!==e.name?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(P.A,{className:"text-muted-foreground h-4 w-4"}),(0,n.jsxs)("span",{className:"text-sm",children:[(null==(r=e.keys)?void 0:r.length)||0," keys"]})]}):(0,n.jsx)("span",{className:"text-sm",children:"N/A"})})}),(0,n.jsx)(A.nA,{className:"text-right",children:(0,n.jsxs)("div",{className:"flex items-center justify-end space-x-2",children:[(0,n.jsx)(k.$,{variant:"outline",size:"sm",onClick:()=>g(e),children:(0,n.jsx)(z.A,{className:"h-4 w-4"})}),(0,n.jsxs)(V,{children:[(0,n.jsx)(R,{asChild:!0,children:(0,n.jsx)(k.$,{variant:"outline",size:"sm",disabled:u===e.name,children:u===e.name?(0,n.jsx)(f.A,{className:"h-4 w-4 animate-spin"}):(0,n.jsx)(E.A,{className:"h-4 w-4"})})}),(0,n.jsxs)(B,{children:[(0,n.jsxs)(L,{children:[(0,n.jsx)(D,{children:"Delete Provider"}),(0,n.jsxs)($,{children:["Are you sure you want to delete provider ",e.name,"? This action cannot be undone."]})]}),(0,n.jsxs)(O,{children:[(0,n.jsx)(K,{children:"Cancel"}),(0,n.jsx)(U,{onClick:()=>p(e.name),children:"Delete"})]})]})]})]})})]},e.name)})]})]})})]})}var em=t(968);function ex(e){let{className:s,...t}=e;return(0,n.jsx)(em.b,{"data-slot":"label",className:(0,p.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",s),...t})}let eh={name:"",connection_type:"http",connection_string:"",stdio_config:{command:"",args:[],envs:[]},tools_to_skip:[],tools_to_execute:[]},ep=e=>{var s,t,r,i,l,c;let{client:o,open:d,onClose:x,onSaved:h}=e,[p,g]=(0,a.useState)(eh),[f,v]=(0,a.useState)(!1),[w,A]=(0,a.useState)(""),[S,P]=(0,a.useState)(""),[z,E]=(0,a.useState)(""),[q,I]=(0,a.useState)(""),{toast:V}=u();(0,a.useEffect)(()=>{if(o){var e,s,t,n,a;g({name:o.name,connection_type:o.config.connection_type,connection_string:o.config.connection_string||"",stdio_config:{command:(null==(e=o.config.stdio_config)?void 0:e.command)||"",args:(null==(s=o.config.stdio_config)?void 0:s.args)||[],envs:(null==(t=o.config.stdio_config)?void 0:t.envs)||[]},tools_to_skip:o.config.tools_to_skip||[],tools_to_execute:o.config.tools_to_execute||[]}),A(((null==(n=o.config.stdio_config)?void 0:n.args)||[]).join(", ")),P(((null==(a=o.config.stdio_config)?void 0:a.envs)||[]).join(", ")),E((o.config.tools_to_skip||[]).join(", ")),I((o.config.tools_to_execute||[]).join(", "))}else g(eh),A(""),P(""),E(""),I("")},[o]);let R=(e,s)=>{g(t=>({...t,[e]:s}))},T=(e,s)=>{g(t=>({...t,stdio_config:{...t.stdio_config,[e]:s}}))},M=new ea([ea.required(null==(s=p.name)?void 0:s.trim(),"Client name is required"),ea.pattern(p.name||"",/^[a-zA-Z0-9-_]+$/,"Client name can only contain letters, numbers, hyphens and underscores"),ea.minLength(p.name||"",3,"Client name must be at least 3 characters"),ea.maxLength(p.name||"",50,"Client name cannot exceed 50 characters"),...("http"===p.connection_type||"sse"===p.connection_type)&&!o?[ea.required(null==(t=p.connection_string)?void 0:t.trim(),"Connection URL is required"),ea.pattern(p.connection_string||"",/^(http:\/\/|https:\/\/|env\.[A-Z_]+$)/,"Connection URL must start with http://, https://, or be an environment variable (env.VAR_NAME)")]:[],..."stdio"===p.connection_type&&!o?[ea.required(null==(i=p.stdio_config)||null==(r=i.command)?void 0:r.trim(),"Command is required for STDIO connections"),...!o?[ea.pattern((null==(l=p.stdio_config)?void 0:l.command)||"",/^[^<>|&;]+$/,"Command cannot contain special shell characters")]:[]]:[],...q.trim()?[ea.pattern(q,/^[a-zA-Z0-9_,-\s]+$/,"Tools to execute can only contain letters, numbers, underscores, and commas")]:[],...z.trim()?[ea.pattern(z,/^[a-zA-Z0-9_,-\s]+$/,"Tools to skip can only contain letters, numbers, underscores, and commas")]:[],...o?[ea.custom(!C(p.tools_to_execute||[],_(q))||!C(p.tools_to_skip||[],_(z)),"No changes to save")]:[],ea.custom(!((e,s)=>{let t=new Set(_(e)),n=new Set(_(s));return Array.from(t).some(e=>n.has(e))})(q,z),"Tools cannot appear in both execute and skip lists")]),B=async()=>{v(!0);let e=null,s={...p,stdio_config:"stdio"===p.connection_type?{...p.stdio_config,args:_(w),envs:_(S)}:void 0,tools_to_skip:_(z),tools_to_execute:_(q)};if(o){let t={tools_to_execute:s.tools_to_execute,tools_to_skip:s.tools_to_skip};[,e]=await m.K.updateMCPClient(o.name,t)}else[,e]=await m.K.createMCPClient(s);v(!1),e?V({title:"Error",description:e,variant:"destructive"}):(V({title:"Success",description:o?"Client updated":"Client created"}),h(),x())};return(0,n.jsx)(F.lG,{open:d,onOpenChange:x,children:(0,n.jsxs)(F.Cf,{className:"max-h-[90vh] max-w-2xl overflow-y-auto",children:[(0,n.jsx)(F.c7,{children:(0,n.jsx)(F.L3,{children:o?"Edit MCP Client Tools":"New MCP Client"})}),(0,n.jsxs)(y.Fc,{children:[(0,n.jsx)(j.A,{className:"h-4 w-4"}),(0,n.jsxs)(y.TN,{children:[(0,n.jsx)("strong",{children:"Performance Notice:"})," This operation may temporarily increase latency for incoming requests while being processed."]})]}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Name"}),(0,n.jsx)(b.p,{value:p.name,onChange:e=>R("name",e.target.value),placeholder:"Client name",disabled:!!o})]}),!o&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"w-full space-y-2",children:[(0,n.jsx)(ex,{children:"Connection Type"}),(0,n.jsxs)(Z.l6,{value:p.connection_type,onValueChange:e=>R("connection_type",e),children:[(0,n.jsx)(Z.bq,{className:"w-full",children:(0,n.jsx)(Z.yv,{placeholder:"Select connection type"})}),(0,n.jsxs)(Z.gC,{children:[(0,n.jsx)(Z.eb,{value:"http",children:"HTTP (Streamable)"}),(0,n.jsx)(Z.eb,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,n.jsx)(Z.eb,{value:"stdio",children:"STDIO"})]})]})]}),("http"===p.connection_type||"sse"===p.connection_type)&&(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsxs)("div",{className:"flex w-fit items-center gap-1",children:[(0,n.jsx)(ex,{children:"Connection URL"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(G.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,n.jsx)(H.ZI,{className:"max-w-fit",children:(0,n.jsxs)("p",{children:["Use ",(0,n.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]}),(0,n.jsx)(b.p,{value:p.connection_string||"",onChange:e=>R("connection_string",e.target.value),placeholder:"http://your-mcp-server:3000 or env.MCP_SERVER_URL"})]}),"stdio"===p.connection_type&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Command"}),(0,n.jsx)(b.p,{value:(null==(c=p.stdio_config)?void 0:c.command)||"",onChange:e=>T("command",e.target.value),placeholder:"node, python, /path/to/executable"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Arguments (comma-separated)"}),(0,n.jsx)(b.p,{value:w,onChange:e=>A(e.target.value),placeholder:"--port, 3000, --config, config.json"})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Environment Variables (comma-separated)"}),(0,n.jsx)(b.p,{value:S,onChange:e=>P(e.target.value),placeholder:"API_KEY, DATABASE_URL"})]})]})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Tools to Execute (comma-separated, leave empty for all)"}),(0,n.jsx)(N,{value:q,onChange:e=>I(e.target.value),placeholder:"tool1, tool2, tool3",rows:2})]}),(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ex,{children:"Tools to Skip (comma-separated)"}),(0,n.jsx)(N,{value:z,onChange:e=>E(e.target.value),placeholder:"skipTool1, skipTool2",rows:2})]})]}),(0,n.jsxs)(F.Es,{children:[(0,n.jsx)(k.$,{variant:"outline",onClick:x,disabled:f,children:"Cancel"}),(0,n.jsx)(H.Bc,{children:(0,n.jsxs)(H.m_,{children:[(0,n.jsx)(H.k$,{asChild:!0,children:(0,n.jsx)("span",{children:(0,n.jsx)(k.$,{onClick:B,disabled:!M.isValid()||f,isLoading:f,children:o?"Save":"Create"})})}),!M.isValid()&&(0,n.jsx)(H.ZI,{children:M.getFirstError()||"Please fix validation errors"})]})})]})]})})};var eg=t(4109),ef=t(9917);function ej(){let[e,s]=(0,a.useState)([]),[t,r]=(0,a.useState)(null),[l,c]=(0,a.useState)(!1),{toast:o}=u(),d=async()=>{let[e,t]=await m.K.getMCPClients();t?o({title:"Error",description:t,variant:"destructive"}):s(e||[])};(0,a.useEffect)(()=>{d()},[]);let h=e=>{r(e),c(!0)},p=async e=>{let[,s]=await m.K.reconnectMCPClient(e.name);s?o({title:"Error",description:s,variant:"destructive"}):(o({title:"Reconnected",description:"Client reconnected."}),d())},g=async e=>{let[,s]=await m.K.deleteMCPClient(e.name);s?o({title:"Error",description:s,variant:"destructive"}):(o({title:"Deleted",description:"Client removed."}),d())},f=e=>{if("stdio"===e.config.connection_type){var s,t;return(null==(s=e.config.stdio_config)?void 0:s.command)+" "+(null==(t=e.config.stdio_config)?void 0:t.args.join(" "))||"STDIO"}return e.config.connection_string||"".concat(e.config.connection_type.toUpperCase())},j=e=>{switch(e){case"http":return"HTTP";case"sse":return"SSE";case"stdio":return"STDIO";default:return e.toUpperCase()}};return(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsxs)(x.aR,{className:"mb-4 px-0",children:[(0,n.jsxs)(x.ZB,{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex items-center gap-2",children:"Registered Clients"}),(0,n.jsxs)(k.$,{onClick:()=>{r(null),c(!0)},children:[(0,n.jsx)(S.A,{className:"h-4 w-4"})," New Client"]})]}),(0,n.jsx)(x.BT,{children:"Manage clients that can connect to the MCP Tools endpoint."})]}),(0,n.jsx)("div",{className:"rounded-md border",children:(0,n.jsxs)(A.XI,{children:[(0,n.jsx)(A.A0,{children:(0,n.jsxs)(A.Hj,{children:[(0,n.jsx)(A.nd,{children:"Name"}),(0,n.jsx)(A.nd,{children:"Connection Type"}),(0,n.jsx)(A.nd,{children:"Connection Info"}),(0,n.jsx)(A.nd,{children:"State"}),(0,n.jsx)(A.nd,{className:"text-right",children:"Actions"})]})}),(0,n.jsxs)(A.BF,{children:[0===e.length&&(0,n.jsx)(A.Hj,{children:(0,n.jsx)(A.nA,{colSpan:5,className:"py-6 text-center",children:"No clients found."})}),e.map(e=>(0,n.jsxs)(A.Hj,{children:[(0,n.jsx)(A.nA,{className:"font-medium",children:e.name}),(0,n.jsx)(A.nA,{children:j(e.config.connection_type)}),(0,n.jsx)(A.nA,{className:"max-w-72 overflow-hidden text-ellipsis whitespace-nowrap",children:f(e)}),(0,n.jsx)(A.nA,{children:(0,n.jsx)(i.E,{className:ec[e.state],children:e.state})}),(0,n.jsxs)(A.nA,{className:"space-x-2 text-right",children:["disconnected"===e.state?(0,n.jsx)(k.$,{variant:"ghost",size:"icon",onClick:()=>p(e),children:(0,n.jsx)(eg.A,{className:"h-4 w-4"})}):"connected"===e.state&&(0,n.jsx)(k.$,{variant:"ghost",size:"icon",onClick:()=>h(e),children:(0,n.jsx)(ef.A,{className:"h-4 w-4"})}),(0,n.jsxs)(V,{children:[(0,n.jsx)(R,{asChild:!0,children:(0,n.jsx)(k.$,{variant:"ghost",size:"icon",disabled:"error"===e.state,children:(0,n.jsx)(E.A,{className:"h-4 w-4"})})}),(0,n.jsxs)(B,{children:[(0,n.jsxs)(L,{children:[(0,n.jsx)(D,{children:"Remove MCP Client"}),(0,n.jsxs)($,{children:["Are you sure you want to remove MCP client ",e.name,"? You will need to reconnect the client to continue using it."]})]}),(0,n.jsxs)(O,{children:[(0,n.jsx)(K,{children:"Cancel"}),(0,n.jsx)(U,{onClick:()=>g(e),children:"Delete"})]})]})]})]})]},e.name))]})]})}),l&&(0,n.jsx)(ep,{open:l,client:t,onClose:()=>c(!1),onSaved:()=>{c(!1),d()}})]})}var ev=t(2384);function ey(){let[e,s]=(0,a.useState)("providers"),[t,d]=(0,a.useState)(!0),[x,h]=(0,a.useState)(!0),[p,g]=(0,a.useState)([]),[f,j]=(0,a.useState)([]),{toast:v}=u();(0,a.useEffect)(()=>{y(),b()},[]);let y=async()=>{let[e,s]=await m.K.getProviders();if(d(!1),s)return void v({title:"Error",description:s,variant:"destructive"});g((null==e?void 0:e.providers)||[])},b=async()=>{let[e,s]=await m.K.getMCPClients();if(h(!1),s)return void v({title:"Error",description:s,variant:"destructive"});j(e||[])};return(0,n.jsx)("div",{className:"bg-background",children:t||x?(0,n.jsx)(ev.A,{}):(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"text-3xl font-bold",children:"Configuration"}),(0,n.jsx)("p",{className:"text-muted-foreground mt-2",children:"Configure AI providers, API keys, and system settings for your Bifrost instance."})]}),(0,n.jsxs)(r.tU,{value:e,onValueChange:s,className:"space-y-6",children:[(0,n.jsxs)(r.j7,{className:"grid h-12 w-full grid-cols-3",children:[(0,n.jsxs)(r.Xi,{value:"providers",className:"flex items-center gap-2",children:[(0,n.jsx)(l.A,{className:"h-4 w-4"}),"Providers",(0,n.jsx)(i.E,{variant:"default",className:"ml-1",children:p.length})]}),(0,n.jsxs)(r.Xi,{value:"mcp",className:"flex items-center gap-2",children:[(0,n.jsx)(c.A,{className:"h-4 w-4"}),"MCP Clients",f.length>0&&(0,n.jsx)(i.E,{variant:"default",className:"ml-1",children:f.length})]}),(0,n.jsxs)(r.Xi,{value:"core",className:"flex items-center gap-2",children:[(0,n.jsx)(o.A,{className:"h-4 w-4"}),"Core Settings"]})]}),(0,n.jsx)(r.av,{value:"providers",className:"space-y-4",children:(0,n.jsx)(eu,{providers:p,onRefresh:y})}),(0,n.jsx)(r.av,{value:"mcp",className:"space-y-4",children:(0,n.jsx)(ej,{})}),(0,n.jsx)(r.av,{value:"core",className:"space-y-4",children:(0,n.jsx)(w,{})})]})]})})}},7777:(e,s,t)=>{"use strict";t.d(s,{Bc:()=>i,ZI:()=>o,k$:()=>c,m_:()=>l});var n=t(5155);t(2115);var a=t(9613),r=t(3999);function i(e){let{delayDuration:s=0,...t}=e;return(0,n.jsx)(a.Kq,{"data-slot":"tooltip-provider",delayDuration:s,...t})}function l(e){let{...s}=e;return(0,n.jsx)(i,{children:(0,n.jsx)(a.bL,{"data-slot":"tooltip",...s})})}function c(e){let{...s}=e;return(0,n.jsx)(a.l9,{"data-slot":"tooltip-trigger",...s})}function o(e){let{className:s,sideOffset:t=0,children:i,...l}=e;return(0,n.jsx)(a.ZL,{children:(0,n.jsxs)(a.UC,{"data-slot":"tooltip-content",sideOffset:t,className:(0,r.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",s),...l,children:[i,(0,n.jsx)(a.i3,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},8835:(e,s,t)=>{Promise.resolve().then(t.bind(t,12))}},e=>{var s=s=>e(e.s=s);e.O(0,[146,617,452,273,447,0,441,684,358],()=>s(8835)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/layout-3652827c7680b065.js b/transports/bifrost-http/ui/_next/static/chunks/app/layout-3652827c7680b065.js new file mode 100644 index 0000000000..4c2cc72049 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/layout-3652827c7680b065.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{193:(e,t,a)=>{"use strict";a.d(t,{Bx:()=>f,Yv:()=>g,CG:()=>b,Cn:()=>m,rQ:()=>v,jj:()=>x,Gh:()=>p,wZ:()=>w,Uj:()=>N,FX:()=>j,SidebarProvider:()=>h});var r=a(5155),i=a(2115),s=a(9708),n=a(2085),o=a(3999);a(7168),a(9852),a(6037);var d=a(1085),l=a(7777);let c=i.createContext(null);function u(){let e=i.useContext(c);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}function h(e){let{defaultOpen:t=!0,open:a,onOpenChange:s,className:n,style:d,children:u,...h}=e,f=function(){let[e,t]=i.useState(void 0);return i.useEffect(()=>{let e=window.matchMedia("(max-width: ".concat(767,"px)")),a=()=>{t(window.innerWidth<768)};return e.addEventListener("change",a),t(window.innerWidth<768),()=>e.removeEventListener("change",a)},[]),!!e}(),[p,b]=i.useState(!1),[g,m]=i.useState(t),x=null!=a?a:g,v=i.useCallback(e=>{let t="function"==typeof e?e(x):e;s?s(t):m(t),document.cookie="".concat("sidebar_state","=").concat(t,"; path=/; max-age=").concat(604800)},[s,x]),w=i.useCallback(()=>f?b(e=>!e):v(e=>!e),[f,v,b]);i.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),w())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[w]);let j=x?"expanded":"collapsed",y=i.useMemo(()=>({state:j,open:x,setOpen:v,isMobile:f,openMobile:p,setOpenMobile:b,toggleSidebar:w}),[j,x,v,f,p,b,w]);return(0,r.jsx)(c.Provider,{value:y,children:(0,r.jsx)(l.Bc,{delayDuration:0,children:(0,r.jsx)("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...d},className:(0,o.cn)("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",n),...h,children:u})})})}function f(e){let{side:t="left",variant:a="sidebar",collapsible:i="offcanvas",className:s,children:n,...l}=e,{isMobile:c,state:h,openMobile:f,setOpenMobile:p}=u();return"none"===i?(0,r.jsx)("div",{"data-slot":"sidebar",className:(0,o.cn)("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",s),...l,children:n}):c?(0,r.jsx)(d.cj,{open:f,onOpenChange:p,...l,children:(0,r.jsxs)(d.h,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:t,children:[(0,r.jsxs)(d.Fm,{className:"sr-only",children:[(0,r.jsx)(d.qp,{children:"Sidebar"}),(0,r.jsx)(d.Qs,{children:"Displays the mobile sidebar."})]}),(0,r.jsx)("div",{className:"flex h-full w-full flex-col",children:n})]})}):(0,r.jsxs)("div",{className:"group peer text-sidebar-foreground hidden md:block","data-state":h,"data-collapsible":"collapsed"===h?i:"","data-variant":a,"data-side":t,"data-slot":"sidebar",children:[(0,r.jsx)("div",{"data-slot":"sidebar-gap",className:(0,o.cn)("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===a||"inset"===a?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),(0,r.jsx)("div",{"data-slot":"sidebar-container",className:(0,o.cn)("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex","left"===t?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===a||"inset"===a?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",s),...l,children:(0,r.jsx)("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",children:n})})]})}function p(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...a})}function b(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...a})}function g(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:(0,o.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),...a})}function m(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:(0,o.cn)("relative flex w-full min-w-0 flex-col p-2",t),...a})}function x(e){let{className:t,asChild:a=!1,...i}=e,n=a?s.DX:"div";return(0,r.jsx)(n,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:(0,o.cn)("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",t),...i})}function v(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:(0,o.cn)("w-full text-sm",t),...a})}function w(e){let{className:t,...a}=e;return(0,r.jsx)("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:(0,o.cn)("flex w-full min-w-0 flex-col gap-1",t),...a})}function j(e){let{className:t,...a}=e;return(0,r.jsx)("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:(0,o.cn)("group/menu-item relative",t),...a})}let y=(0,n.F)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function N(e){let{asChild:t=!1,isActive:a=!1,variant:i="default",size:n="default",tooltip:d,className:c,...h}=e,f=t?s.DX:"button",{isMobile:p,state:b}=u(),g=(0,r.jsx)(f,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":n,"data-active":a,className:(0,o.cn)(y({variant:i,size:n}),c),...h});return d?("string"==typeof d&&(d={children:d}),(0,r.jsxs)(l.m_,{children:[(0,r.jsx)(l.k$,{asChild:!0,children:g}),(0,r.jsx)(l.ZI,{side:"right",align:"center",hidden:"collapsed"!==b||p,...d})]})):g}},975:(e,t,a)=>{"use strict";a.d(t,{default:()=>A});var r=a(5155),i=a(3840),s=a(8293),n=a(7330),o=a(7520),d=a(446),l=a(3786),c=a(8145),u=a(193),h=a(6705),f=a(3999),p=a(6357),b=a(9804),g=a(1450),m=a(1362),x=a(6766),v=a(6874),w=a.n(v),j=a(5695),y=a(2115),N=a(2098),k=a(3509),C=a(7168),z=a(8698);function _(e){let{...t}=e;return(0,r.jsx)(z.bL,{"data-slot":"dropdown-menu",...t})}function P(e){let{...t}=e;return(0,r.jsx)(z.l9,{"data-slot":"dropdown-menu-trigger",...t})}function S(e){let{className:t,sideOffset:a=4,...i}=e;return(0,r.jsx)(z.ZL,{children:(0,r.jsx)(z.UC,{"data-slot":"dropdown-menu-content",sideOffset:a,className:(0,f.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...i})})}function E(e){let{className:t,inset:a,variant:i="default",...s}=e;return(0,r.jsx)(z.q7,{"data-slot":"dropdown-menu-item","data-inset":a,"data-variant":i,className:(0,f.cn)("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}function D(){let{setTheme:e}=(0,m.D)();return(0,r.jsxs)(_,{children:[(0,r.jsx)(P,{asChild:!0,children:(0,r.jsxs)(C.$,{variant:"ghost",size:"icon",className:"h-9 w-9",children:[(0,r.jsx)(N.A,{className:"h-[1.2rem] w-[1.2rem] rotate-0 scale-100 transition-all dark:-rotate-90 dark:scale-0"}),(0,r.jsx)(k.A,{className:"absolute h-[1.2rem] w-[1.2rem] rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100"}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,r.jsxs)(S,{align:"end",children:[(0,r.jsx)(E,{onClick:()=>e("light"),children:"Light"}),(0,r.jsx)(E,{onClick:()=>e("dark"),children:"Dark"}),(0,r.jsx)(E,{onClick:()=>e("system"),children:"System"})]})]})}let L=[{title:"Logs",url:"/",icon:i.A,description:"Request logs & monitoring"},{title:"Providers",url:"/providers",icon:s.A,description:"Configure models"},{title:"MCP clients",url:"/mcp-clients",icon:e=>{let{className:t}=e;return(0,r.jsxs)("svg",{className:t,fill:"currentColor",fillRule:"evenodd",height:"1em",style:{flex:"none",lineHeight:1},viewBox:"0 0 24 24",width:"1em",xmlns:"http://www.w3.org/2000/svg","aria-label":"MCP clients icon",children:[(0,r.jsx)("title",{children:"MCP clients icon"}),(0,r.jsx)("path",{d:"M15.688 2.343a2.588 2.588 0 00-3.61 0l-9.626 9.44a.863.863 0 01-1.203 0 .823.823 0 010-1.18l9.626-9.44a4.313 4.313 0 016.016 0 4.116 4.116 0 011.204 3.54 4.3 4.3 0 013.609 1.18l.05.05a4.115 4.115 0 010 5.9l-8.706 8.537a.274.274 0 000 .393l1.788 1.754a.823.823 0 010 1.18.863.863 0 01-1.203 0l-1.788-1.753a1.92 1.92 0 010-2.754l8.706-8.538a2.47 2.47 0 000-3.54l-.05-.049a2.588 2.588 0 00-3.607-.003l-7.172 7.034-.002.002-.098.097a.863.863 0 01-1.204 0 .823.823 0 010-1.18l7.273-7.133a2.47 2.47 0 00-.003-3.537z"}),(0,r.jsx)("path",{d:"M14.485 4.703a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a4.115 4.115 0 000 5.9 4.314 4.314 0 006.016 0l7.12-6.982a.823.823 0 000-1.18.863.863 0 00-1.204 0l-7.119 6.982a2.588 2.588 0 01-3.61 0 2.47 2.47 0 010-3.54l7.12-6.982z"})]})},description:"MCP configuration"},{title:"Config",url:"/config",icon:n.A,description:"Bifrost settings"},{title:"Docs",url:"/docs",icon:p.a,description:"Documentation & guides"},{title:"Plugins",url:"/plugins",icon:o.A,description:"Extend Bifrost functionality",badge:"Beta"}],W=[{title:"Discord Server",url:"https://getmax.im/bifrost-discord",icon:b.t},{title:"GitHub Repository",url:"https://github.com/maximhq/bifrost",icon:g.y},{title:"Report a bug",url:"https://github.com/maximhq/bifrost/issues/new?title=[Bug Report]&labels=bug&type=bug&projects=maximhq/1",icon:d.A},{title:"Full Documentation",url:"https://github.com/maximhq/bifrost/tree/main/docs",icon:p.a}];function A(){let e=(0,j.usePathname)(),[t,a]=(0,y.useState)(!1),{resolvedTheme:i}=(0,m.D)();(0,y.useEffect)(()=>{a(!0)},[]);let s=t=>!!("/"===t&&"/"===e||"/"!==t&&e.startsWith(t)),{isConnected:n}=(0,h.h)();return(0,r.jsxs)(u.Bx,{className:"border-border border-r",children:[(0,r.jsx)(u.Gh,{className:"flex h-12 justify-between border-b px-0",children:(0,r.jsxs)("div",{className:"flex h-full items-center justify-between gap-2 px-1.5",children:[(0,r.jsx)(w(),{href:"/",className:"group flex items-center gap-2",children:(0,r.jsx)(x.default,{className:"h-10 w-auto",src:t&&"dark"===i?"/bifrost-logo-dark.png":"/bifrost-logo.png",alt:"Bifrost",width:100,height:100})}),(0,r.jsx)(D,{})]})}),(0,r.jsxs)(u.Yv,{children:[(0,r.jsx)(u.Cn,{children:(0,r.jsx)(u.rQ,{children:(0,r.jsx)(u.wZ,{className:"space-y-1",children:L.map(e=>{let t=s(e.url);return(0,r.jsx)(u.FX,{children:(0,r.jsx)(u.Uj,{asChild:!0,className:"relative h-16 rounded-lg border px-3 transition-all duration-200 ".concat(t?"bg-accent text-primary border-primary/10":"hover:bg-accent hover:text-accent-foreground border-transparent"," "),children:(0,r.jsxs)(w(),{href:e.url,className:"flex w-full items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(e.icon,{className:"h-4 w-4 ".concat(t?"text-primary":"text-muted-foreground")}),(0,r.jsx)("span",{className:"text-sm font-medium",children:e.title})]}),(0,r.jsx)("span",{className:"text-muted-foreground overflow-hidden text-xs text-ellipsis whitespace-nowrap",children:e.description})]}),"/"===e.url&&n&&(0,r.jsx)("div",{className:"h-2 w-2 animate-pulse rounded-full bg-green-800 dark:bg-green-200"}),e.badge&&(0,r.jsx)(c.E,{variant:"Live"===e.badge?"default":"outline",className:(0,f.cn)("h-5 px-2 py-0.5 text-xs","Live"===e.badge&&"animate-pulse duration-200"),children:e.badge})]})})},e.title)})})})}),(0,r.jsxs)(u.Cn,{children:[(0,r.jsx)(u.jj,{className:"text-muted-foreground px-3 py-2 text-xs font-semibold tracking-wider uppercase",children:"Resources"}),(0,r.jsx)(u.rQ,{children:(0,r.jsx)(u.wZ,{className:"space-y-1",children:W.map(e=>(0,r.jsx)(u.FX,{children:(0,r.jsx)(u.Uj,{asChild:!0,className:"hover:bg-accent hover:text-accent-foreground h-9 rounded-lg px-3 transition-all duration-200",children:(0,r.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"group flex w-full items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,r.jsx)(e.icon,{className:"text-muted-foreground h-4 w-4",size:16,weight:"bold"}),(0,r.jsx)("span",{className:"text-sm",children:e.title})]}),(0,r.jsx)(l.A,{className:"text-muted-foreground h-3 w-3 opacity-0 transition-opacity group-hover:opacity-100"})]})})},e.title))})})]})]}),(0,r.jsx)(u.CG,{className:"border-border border-t px-6 py-4",children:(0,r.jsxs)("div",{className:"text-muted-foreground mx-auto flex w-fit items-center space-x-1 text-xs",children:[(0,r.jsx)("span",{children:"Made with ♥️ by"}),(0,r.jsx)("a",{href:"https://getmaxim.ai",target:"_blank",rel:"noopener noreferrer",className:"text-primary",children:"Maxim AI"})]})})]})}},1085:(e,t,a)=>{"use strict";a.d(t,{Fm:()=>u,Qs:()=>f,cj:()=>o,h:()=>c,qp:()=>h});var r=a(5155);a(2115);var i=a(5452),s=a(4416),n=a(3999);function o(e){let{...t}=e;return(0,r.jsx)(i.bL,{"data-slot":"sheet",...t})}function d(e){let{...t}=e;return(0,r.jsx)(i.ZL,{"data-slot":"sheet-portal",...t})}function l(e){let{className:t,...a}=e;return(0,r.jsx)(i.hJ,{"data-slot":"sheet-overlay",className:(0,n.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...a})}function c(e){let{className:t,children:a,side:o="right",...c}=e;return(0,r.jsxs)(d,{children:[(0,r.jsx)(l,{}),(0,r.jsxs)(i.UC,{"data-slot":"sheet-content",className:(0,n.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===o&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===o&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===o&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===o&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",t),...c,children:[a,(0,r.jsxs)(i.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,r.jsx)(s.A,{className:"size-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sheet-header",className:(0,n.cn)("flex flex-col gap-1.5 p-4",t),...a})}function h(e){let{className:t,...a}=e;return(0,r.jsx)(i.hE,{"data-slot":"sheet-title",className:(0,n.cn)("text-foreground font-semibold",t),...a})}function f(e){let{className:t,...a}=e;return(0,r.jsx)(i.VY,{"data-slot":"sheet-description",className:(0,n.cn)("text-muted-foreground text-sm",t),...a})}},2379:(e,t,a)=>{"use strict";function r(){{let e="https:"===window.location.protocol?"https:":"http:",t="https:"===window.location.protocol?"wss:":"ws:";return{port:window.location.port||("https:"===window.location.protocol?"443":"80"),isDevelopment:!1,baseUrl:"".concat(e,"//").concat(window.location.host),wsUrl:"".concat(t,"//").concat(window.location.host),host:window.location.host}}}function i(){let e=r();return e.isDevelopment?"".concat(e.baseUrl,"/api"):"/api"}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r(),a=e.startsWith("/")?e:"/".concat(e);return"".concat(t.wsUrl).concat(a)}function n(){return r().baseUrl}a.d(t,{$0:()=>s,XO:()=>n,hY:()=>i}),a(9509)},3999:(e,t,a)=>{"use strict";a.d(t,{cn:()=>s});var r=a(2596),i=a(9688);function s(){for(var e=arguments.length,t=Array(e),a=0;a{"use strict";a.d(t,{W:()=>s});var r=a(5155);a(2115);var i=a(3999);function s(e){let{className:t}=e;return(0,r.jsx)("div",{className:(0,i.cn)("border-border h-[1px] w-full border-t border-dashed bg-transparent",{["".concat(t)]:void 0!==t})})}},6705:(e,t,a)=>{"use strict";a.d(t,{WebSocketProvider:()=>l,h:()=>c});var r=a(5155),i=a(2115),s=a(2379);let n=(0,i.createContext)(null),o=null,d=null;function l(e){let{children:t}=e,a=(0,i.useRef)(o),l=(0,i.useRef)(null),[c,u]=(0,i.useState)(!1);return(0,i.useEffect)(()=>{let e=()=>{var t;if((null==(t=a.current)?void 0:t.readyState)===WebSocket.OPEN)return;let r=new WebSocket((0,s.$0)("/ws/logs"));a.current=r,o=r,r.onopen=()=>{console.log("WebSocket connected"),u(!0),l.current&&(clearTimeout(l.current),l.current=null)},r.onmessage=e=>{try{let t=JSON.parse(e.data);"log"===t.type&&d&&d(t.payload,t.operation)}catch(e){console.error("Failed to parse WebSocket message:",e)}},r.onclose=()=>{console.log("WebSocket disconnected, attempting to reconnect..."),u(!1),l.current=setTimeout(e,5e3)},r.onerror=e=>{u(!1),r.close()}};return e(),()=>{l.current&&(clearTimeout(l.current),l.current=null)}},[]),(0,r.jsx)(n.Provider,{value:{isConnected:c,ws:a,setMessageHandler:e=>{d=e}},children:t})}function c(){let e=(0,i.useContext)(n);if(!e)throw Error("useWebSocket must be used within a WebSocketProvider");return e}},7168:(e,t,a)=>{"use strict";a.d(t,{$:()=>l,r:()=>d});var r=a(5155);a(2115);var i=a(9708),s=a(2085),n=a(3999),o=a(1154);let d=(0,s.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:t,variant:a,size:i,asChild:s=!1,children:n,isLoading:d=!1,...l}=e;return(0,r.jsx)(c,{className:t,variant:a,size:i,asChild:s,...l,children:d?(0,r.jsx)(o.A,{className:"size-4 animate-spin"}):n})}function c(e){let{className:t,variant:a,size:s,asChild:o=!1,...l}=e,c=o?i.DX:"button";return(0,r.jsx)(c,{"data-slot":"button",className:(0,n.cn)(d({variant:a,size:s,className:t}),"cursor-pointer"),...l})}},7777:(e,t,a)=>{"use strict";a.d(t,{Bc:()=>n,ZI:()=>l,k$:()=>d,m_:()=>o});var r=a(5155);a(2115);var i=a(9613),s=a(3999);function n(e){let{delayDuration:t=0,...a}=e;return(0,r.jsx)(i.Kq,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function o(e){let{...t}=e;return(0,r.jsx)(n,{children:(0,r.jsx)(i.bL,{"data-slot":"tooltip",...t})})}function d(e){let{...t}=e;return(0,r.jsx)(i.l9,{"data-slot":"tooltip-trigger",...t})}function l(e){let{className:t,sideOffset:a=0,children:n,...o}=e;return(0,r.jsx)(i.ZL,{children:(0,r.jsxs)(i.UC,{"data-slot":"tooltip-content",sideOffset:a,className:(0,s.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t),...o,children:[n,(0,r.jsx)(i.i3,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},7942:(e,t,a)=>{"use strict";a.d(t,{default:()=>s});var r=a(5155),i=a(7109);let s=e=>{let{children:t}=e;return(0,r.jsx)(i.V,{height:"4px",color:"#188410",options:{showSpinner:!1},shallowRouting:!0,children:t})}},8145:(e,t,a)=>{"use strict";a.d(t,{E:()=>d});var r=a(5155);a(2115);var i=a(9708),s=a(2085),n=a(3999);let o=(0,s.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function d(e){let{className:t,variant:a,asChild:s=!1,...d}=e,l=s?i.DX:"span";return(0,r.jsx)(l,{"data-slot":"badge",className:(0,n.cn)(o({variant:a}),t),...d})}},9223:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,9324,23)),Promise.resolve().then(a.bind(a,7942)),Promise.resolve().then(a.bind(a,975)),Promise.resolve().then(a.bind(a,9304)),Promise.resolve().then(a.bind(a,193)),Promise.resolve().then(a.bind(a,6705)),Promise.resolve().then(a.t.bind(a,5688,23)),Promise.resolve().then(a.t.bind(a,9432,23)),Promise.resolve().then(a.bind(a,6671))},9304:(e,t,a)=>{"use strict";a.d(t,{ThemeProvider:()=>s});var r=a(5155);a(2115);var i=a(1362);function s(e){let{children:t,...a}=e;return(0,r.jsx)(i.N,{...a,children:t})}},9324:()=>{},9852:(e,t,a)=>{"use strict";a.d(t,{p:()=>n});var r=a(5155),i=a(2115),s=a(3999);let n=i.forwardRef((e,t)=>{let{className:a,type:i,...n}=e;return(0,r.jsx)("input",{type:i,ref:t,"data-slot":"input",className:(0,s.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...n})});n.displayName="Input"}},e=>{var t=t=>e(e.s=t);e.O(0,[261,106,189,944,231,874,613,978,485,441,684,358],()=>t(9223)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/layout-c2b2a9913cc00c9e.js b/transports/bifrost-http/ui/_next/static/chunks/app/layout-c2b2a9913cc00c9e.js deleted file mode 100644 index f1600eb87a..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/app/layout-c2b2a9913cc00c9e.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{193:(e,t,a)=>{"use strict";a.d(t,{Bx:()=>p,Yv:()=>m,CG:()=>x,Cn:()=>v,rQ:()=>j,jj:()=>w,Gh:()=>b,wZ:()=>y,Uj:()=>z,FX:()=>N,SidebarProvider:()=>h,GX:()=>g});var r=a(5155),s=a(2115),i=a(9708),n=a(2085),o=a(3999);a(7168),a(9852);var d=a(6037),l=a(1085),c=a(7777);let u=s.createContext(null);function f(){let e=s.useContext(u);if(!e)throw Error("useSidebar must be used within a SidebarProvider.");return e}function h(e){let{defaultOpen:t=!0,open:a,onOpenChange:i,className:n,style:d,children:l,...f}=e,h=function(){let[e,t]=s.useState(void 0);return s.useEffect(()=>{let e=window.matchMedia("(max-width: ".concat(767,"px)")),a=()=>{t(window.innerWidth<768)};return e.addEventListener("change",a),t(window.innerWidth<768),()=>e.removeEventListener("change",a)},[]),!!e}(),[p,b]=s.useState(!1),[x,g]=s.useState(t),m=null!=a?a:x,v=s.useCallback(e=>{let t="function"==typeof e?e(m):e;i?i(t):g(t),document.cookie="".concat("sidebar_state","=").concat(t,"; path=/; max-age=").concat(604800)},[i,m]),w=s.useCallback(()=>h?b(e=>!e):v(e=>!e),[h,v,b]);s.useEffect(()=>{let e=e=>{"b"===e.key&&(e.metaKey||e.ctrlKey)&&(e.preventDefault(),w())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[w]);let j=m?"expanded":"collapsed",y=s.useMemo(()=>({state:j,open:m,setOpen:v,isMobile:h,openMobile:p,setOpenMobile:b,toggleSidebar:w}),[j,m,v,h,p,b,w]);return(0,r.jsx)(u.Provider,{value:y,children:(0,r.jsx)(c.Bc,{delayDuration:0,children:(0,r.jsx)("div",{"data-slot":"sidebar-wrapper",style:{"--sidebar-width":"16rem","--sidebar-width-icon":"3rem",...d},className:(0,o.cn)("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full",n),...f,children:l})})})}function p(e){let{side:t="left",variant:a="sidebar",collapsible:s="offcanvas",className:i,children:n,...d}=e,{isMobile:c,state:u,openMobile:h,setOpenMobile:p}=f();return"none"===s?(0,r.jsx)("div",{"data-slot":"sidebar",className:(0,o.cn)("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col",i),...d,children:n}):c?(0,r.jsx)(l.cj,{open:h,onOpenChange:p,...d,children:(0,r.jsxs)(l.h,{"data-sidebar":"sidebar","data-slot":"sidebar","data-mobile":"true",className:"bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden",style:{"--sidebar-width":"18rem"},side:t,children:[(0,r.jsxs)(l.Fm,{className:"sr-only",children:[(0,r.jsx)(l.qp,{children:"Sidebar"}),(0,r.jsx)(l.Qs,{children:"Displays the mobile sidebar."})]}),(0,r.jsx)("div",{className:"flex h-full w-full flex-col",children:n})]})}):(0,r.jsxs)("div",{className:"group peer text-sidebar-foreground hidden md:block","data-state":u,"data-collapsible":"collapsed"===u?s:"","data-variant":a,"data-side":t,"data-slot":"sidebar",children:[(0,r.jsx)("div",{"data-slot":"sidebar-gap",className:(0,o.cn)("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear","group-data-[collapsible=offcanvas]:w-0","group-data-[side=right]:rotate-180","floating"===a||"inset"===a?"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon)")}),(0,r.jsx)("div",{"data-slot":"sidebar-container",className:(0,o.cn)("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex","left"===t?"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]":"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]","floating"===a||"inset"===a?"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]":"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l",i),...d,children:(0,r.jsx)("div",{"data-sidebar":"sidebar","data-slot":"sidebar-inner",className:"bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",children:n})})]})}function b(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-header","data-sidebar":"header",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...a})}function x(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-footer","data-sidebar":"footer",className:(0,o.cn)("flex flex-col gap-2 p-2",t),...a})}function g(e){let{className:t,...a}=e;return(0,r.jsx)(d.w,{"data-slot":"sidebar-separator","data-sidebar":"separator",className:(0,o.cn)("bg-sidebar-border mx-2 w-auto",t),...a})}function m(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-content","data-sidebar":"content",className:(0,o.cn)("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden",t),...a})}function v(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-group","data-sidebar":"group",className:(0,o.cn)("relative flex w-full min-w-0 flex-col p-2",t),...a})}function w(e){let{className:t,asChild:a=!1,...s}=e,n=a?i.DX:"div";return(0,r.jsx)(n,{"data-slot":"sidebar-group-label","data-sidebar":"group-label",className:(0,o.cn)("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0","group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",t),...s})}function j(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sidebar-group-content","data-sidebar":"group-content",className:(0,o.cn)("w-full text-sm",t),...a})}function y(e){let{className:t,...a}=e;return(0,r.jsx)("ul",{"data-slot":"sidebar-menu","data-sidebar":"menu",className:(0,o.cn)("flex w-full min-w-0 flex-col gap-1",t),...a})}function N(e){let{className:t,...a}=e;return(0,r.jsx)("li",{"data-slot":"sidebar-menu-item","data-sidebar":"menu-item",className:(0,o.cn)("group/menu-item relative",t),...a})}let k=(0,n.F)("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",{variants:{variant:{default:"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",outline:"bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"},size:{default:"h-8 text-sm",sm:"h-7 text-xs",lg:"h-12 text-sm group-data-[collapsible=icon]:p-0!"}},defaultVariants:{variant:"default",size:"default"}});function z(e){let{asChild:t=!1,isActive:a=!1,variant:s="default",size:n="default",tooltip:d,className:l,...u}=e,h=t?i.DX:"button",{isMobile:p,state:b}=f(),x=(0,r.jsx)(h,{"data-slot":"sidebar-menu-button","data-sidebar":"menu-button","data-size":n,"data-active":a,className:(0,o.cn)(k({variant:s,size:n}),l),...u});return d?("string"==typeof d&&(d={children:d}),(0,r.jsxs)(c.m_,{children:[(0,r.jsx)(c.k$,{asChild:!0,children:x}),(0,r.jsx)(c.ZI,{side:"right",align:"center",hidden:"collapsed"!==b||p,...d})]})):x}},975:(e,t,a)=>{"use strict";a.d(t,{default:()=>W});var r=a(5155),s=a(7340),i=a(381),n=a(5040),o=a(7520),d=a(3786),l=a(193),c=a(8145),u=a(5695),f=a(6874),h=a.n(f),p=a(3999),b=a(1362),x=a(2115),g=a(6766),m=a(2098),v=a(3509),w=a(7168),j=a(8698);function y(e){let{...t}=e;return(0,r.jsx)(j.bL,{"data-slot":"dropdown-menu",...t})}function N(e){let{...t}=e;return(0,r.jsx)(j.l9,{"data-slot":"dropdown-menu-trigger",...t})}function k(e){let{className:t,sideOffset:a=4,...s}=e;return(0,r.jsx)(j.ZL,{children:(0,r.jsx)(j.UC,{"data-slot":"dropdown-menu-content",sideOffset:a,className:(0,p.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md",t),...s})})}function z(e){let{className:t,inset:a,variant:s="default",...i}=e;return(0,r.jsx)(j.q7,{"data-slot":"dropdown-menu-item","data-inset":a,"data-variant":s,className:(0,p.cn)("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:!text-destructive [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...i})}function C(){let{setTheme:e}=(0,b.D)();return(0,r.jsxs)(y,{children:[(0,r.jsx)(N,{asChild:!0,children:(0,r.jsxs)(w.$,{variant:"ghost",size:"icon",className:"h-9 w-9",children:[(0,r.jsx)(m.A,{className:"h-[1.2rem] w-[1.2rem] scale-100 rotate-0 transition-all dark:scale-0 dark:-rotate-90"}),(0,r.jsx)(v.A,{className:"absolute h-[1.2rem] w-[1.2rem] scale-0 rotate-90 transition-all dark:scale-100 dark:rotate-0"}),(0,r.jsx)("span",{className:"sr-only",children:"Toggle theme"})]})}),(0,r.jsxs)(k,{align:"end",children:[(0,r.jsx)(z,{onClick:()=>e("light"),children:"Light"}),(0,r.jsx)(z,{onClick:()=>e("dark"),children:"Dark"}),(0,r.jsx)(z,{onClick:()=>e("system"),children:"System"})]})]})}var _=a(6705),P=a(9804),S=a(1450),E=a(6233);let D=[{title:"Logs",url:"/",icon:s.A,description:"Request logs & monitoring"},{title:"Config",url:"/config",icon:i.A,description:"Providers & MCP configuration"},{title:"Docs",url:"/docs",icon:n.A,description:"Documentation & guides"},{title:"Plugins",url:"/plugins",icon:o.A,description:"Extend Bifrost functionality",badge:"Beta"}],L=[{title:"Discord Server",url:"https://getmax.im/bifrost-discord",icon:P.t},{title:"GitHub Repository",url:"https://github.com/maximhq/bifrost",icon:S.y},{title:"Full Documentation",url:"https://github.com/maximhq/bifrost/tree/main/docs",icon:E.U}];function W(){let e=(0,u.usePathname)(),[t,a]=(0,x.useState)(!1),{resolvedTheme:s}=(0,b.D)();(0,x.useEffect)(()=>{a(!0)},[]);let i=t=>!!("/"===t&&"/"===e||"/"!==t&&e.startsWith(t)),{isConnected:n}=(0,_.h)();return(0,r.jsxs)(l.Bx,{className:"border-border border-r",children:[(0,r.jsx)(l.Gh,{className:"flex h-12 justify-between border-b px-0",children:(0,r.jsxs)("div",{className:"flex h-full items-center justify-between gap-2 px-1.5",children:[(0,r.jsx)(h(),{href:"/",className:"group flex items-center gap-2",children:(0,r.jsx)(g.default,{className:"h-10 w-auto",src:t&&"dark"===s?"/bifrost-logo-dark.png":"/bifrost-logo.png",alt:"Bifrost",width:100,height:100})}),(0,r.jsx)(C,{})]})}),(0,r.jsxs)(l.Yv,{children:[(0,r.jsxs)(l.Cn,{children:[(0,r.jsx)(l.jj,{className:"text-muted-foreground px-3 py-2 text-xs font-semibold tracking-wider uppercase",children:"Navigation"}),(0,r.jsx)(l.rQ,{children:(0,r.jsx)(l.wZ,{className:"space-y-1",children:D.map(e=>{let t=i(e.url);return(0,r.jsx)(l.FX,{children:(0,r.jsx)(l.Uj,{asChild:!0,className:"relative h-16 rounded-lg border px-3 transition-all duration-200 ".concat(t?"bg-accent text-primary border-primary/20 shadow-sm":"hover:bg-accent hover:text-accent-foreground border-transparent"," "),children:(0,r.jsxs)(h(),{href:e.url,className:"flex w-full items-center justify-between",children:[(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",{className:"flex items-center gap-2",children:[(0,r.jsx)(e.icon,{className:"h-4 w-4 ".concat(t?"text-primary":"text-muted-foreground")}),(0,r.jsx)("span",{className:"text-sm font-medium",children:e.title})]}),(0,r.jsx)("span",{className:"text-muted-foreground overflow-hidden text-xs text-ellipsis whitespace-nowrap",children:e.description})]}),"/"===e.url&&n&&(0,r.jsx)("div",{className:"h-2 w-2 animate-pulse rounded-full bg-green-800 dark:bg-green-200"}),e.badge&&(0,r.jsx)(c.E,{variant:"Live"===e.badge?"default":"secondary",className:(0,p.cn)("h-5 px-2 py-0.5 text-xs","Live"===e.badge&&"animate-pulse duration-200"),children:e.badge})]})})},e.title)})})})]}),(0,r.jsx)(l.GX,{className:"my-4"}),(0,r.jsxs)(l.Cn,{children:[(0,r.jsx)(l.jj,{className:"text-muted-foreground px-3 py-2 text-xs font-semibold tracking-wider uppercase",children:"Resources"}),(0,r.jsx)(l.rQ,{children:(0,r.jsx)(l.wZ,{className:"space-y-1",children:L.map(e=>(0,r.jsx)(l.FX,{children:(0,r.jsx)(l.Uj,{asChild:!0,className:"hover:bg-accent hover:text-accent-foreground h-9 rounded-lg px-3 transition-all duration-200",children:(0,r.jsxs)("a",{href:e.url,target:"_blank",rel:"noopener noreferrer",className:"group flex w-full items-center justify-between",children:[(0,r.jsxs)("div",{className:"flex items-center space-x-3",children:[(0,r.jsx)(e.icon,{className:"text-muted-foreground h-4 w-4",size:16,weight:"bold"}),(0,r.jsx)("span",{className:"text-sm",children:e.title})]}),(0,r.jsx)(d.A,{className:"text-muted-foreground h-3 w-3 opacity-0 transition-opacity group-hover:opacity-100"})]})})},e.title))})})]})]}),(0,r.jsx)(l.CG,{className:"border-border border-t px-6 py-4",children:(0,r.jsxs)("div",{className:"text-muted-foreground mx-auto flex w-fit items-center space-x-1 text-xs",children:[(0,r.jsx)("span",{children:"Made with ♥️ by"}),(0,r.jsx)("a",{href:"https://getmaxim.ai",target:"_blank",rel:"noopener noreferrer",className:"text-primary",children:"Maxim AI"})]})})]})}},1085:(e,t,a)=>{"use strict";a.d(t,{Fm:()=>u,Qs:()=>h,cj:()=>o,h:()=>c,qp:()=>f});var r=a(5155);a(2115);var s=a(5452),i=a(4416),n=a(3999);function o(e){let{...t}=e;return(0,r.jsx)(s.bL,{"data-slot":"sheet",...t})}function d(e){let{...t}=e;return(0,r.jsx)(s.ZL,{"data-slot":"sheet-portal",...t})}function l(e){let{className:t,...a}=e;return(0,r.jsx)(s.hJ,{"data-slot":"sheet-overlay",className:(0,n.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...a})}function c(e){let{className:t,children:a,side:o="right",...c}=e;return(0,r.jsxs)(d,{children:[(0,r.jsx)(l,{}),(0,r.jsxs)(s.UC,{"data-slot":"sheet-content",className:(0,n.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===o&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===o&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===o&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===o&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",t),...c,children:[a,(0,r.jsxs)(s.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,r.jsx)(i.A,{className:"size-4"}),(0,r.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u(e){let{className:t,...a}=e;return(0,r.jsx)("div",{"data-slot":"sheet-header",className:(0,n.cn)("flex flex-col gap-1.5 p-4",t),...a})}function f(e){let{className:t,...a}=e;return(0,r.jsx)(s.hE,{"data-slot":"sheet-title",className:(0,n.cn)("text-foreground font-semibold",t),...a})}function h(e){let{className:t,...a}=e;return(0,r.jsx)(s.VY,{"data-slot":"sheet-description",className:(0,n.cn)("text-muted-foreground text-sm",t),...a})}},2379:(e,t,a)=>{"use strict";function r(){{let e="https:"===window.location.protocol?"https:":"http:",t="https:"===window.location.protocol?"wss:":"ws:";return{port:window.location.port||("https:"===window.location.protocol?"443":"80"),isDevelopment:!1,baseUrl:"".concat(e,"//").concat(window.location.host),wsUrl:"".concat(t,"//").concat(window.location.host),host:window.location.host}}}function s(){let e=r();return e.isDevelopment?"".concat(e.baseUrl,"/api"):"/api"}function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=r(),a=e.startsWith("/")?e:"/".concat(e);return"".concat(t.wsUrl).concat(a)}function n(){return r().baseUrl}a.d(t,{$0:()=>i,XO:()=>n,hY:()=>s}),a(9509)},3999:(e,t,a)=>{"use strict";a.d(t,{cn:()=>i});var r=a(2596),s=a(9688);function i(){for(var e=arguments.length,t=Array(e),a=0;a{"use strict";a.d(t,{W:()=>o,w:()=>n});var r=a(5155);a(2115);var s=a(7489),i=a(3999);function n(e){let{className:t,orientation:a="horizontal",decorative:n=!0,...o}=e;return(0,r.jsx)(s.b,{"data-slot":"separator",decorative:n,orientation:a,className:(0,i.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...o})}function o(e){let{className:t}=e;return(0,r.jsx)("div",{className:(0,i.cn)("border-border h-[1px] w-full border-t border-dashed bg-transparent",{["".concat(t)]:void 0!==t})})}},6705:(e,t,a)=>{"use strict";a.d(t,{WebSocketProvider:()=>l,h:()=>c});var r=a(5155),s=a(2115),i=a(2379);let n=(0,s.createContext)(null),o=null,d=null;function l(e){let{children:t,onMessage:a}=e,l=(0,s.useRef)(o),c=(0,s.useRef)(null),[u,f]=(0,s.useState)(!1);return(0,s.useEffect)(()=>{let e=()=>{var t;if((null==(t=l.current)?void 0:t.readyState)===WebSocket.OPEN)return;let r=new WebSocket((0,i.$0)("/ws/logs"));l.current=r,o=r,r.onopen=()=>{console.log("WebSocket connected"),f(!0),c.current&&(clearTimeout(c.current),c.current=null)},r.onmessage=e=>{try{let t=JSON.parse(e.data);"log"===t.type&&(d?d(t.payload):a&&a(t.payload))}catch(e){console.error("Failed to parse WebSocket message:",e)}},r.onclose=()=>{console.log("WebSocket disconnected, attempting to reconnect..."),f(!1),c.current=setTimeout(e,5e3)},r.onerror=e=>{f(!1),r.close()}};return e(),()=>{c.current&&(clearTimeout(c.current),c.current=null)}},[a]),(0,r.jsx)(n.Provider,{value:{isConnected:u,ws:l,setMessageHandler:e=>{d=e}},children:t})}function c(){let e=(0,s.useContext)(n);if(!e)throw Error("useWebSocket must be used within a WebSocketProvider");return e}},7168:(e,t,a)=>{"use strict";a.d(t,{$:()=>l,r:()=>d});var r=a(5155);a(2115);var s=a(9708),i=a(2085),n=a(3999),o=a(1154);let d=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:t,variant:a,size:s,asChild:i=!1,children:n,isLoading:d=!1,...l}=e;return(0,r.jsx)(c,{className:t,variant:a,size:s,asChild:i,...l,children:d?(0,r.jsx)(o.A,{className:"size-4 animate-spin"}):n})}function c(e){let{className:t,variant:a,size:i,asChild:o=!1,...l}=e,c=o?s.DX:"button";return(0,r.jsx)(c,{"data-slot":"button",className:(0,n.cn)(d({variant:a,size:i,className:t}),"cursor-pointer"),...l})}},7777:(e,t,a)=>{"use strict";a.d(t,{Bc:()=>n,ZI:()=>l,k$:()=>d,m_:()=>o});var r=a(5155);a(2115);var s=a(9613),i=a(3999);function n(e){let{delayDuration:t=0,...a}=e;return(0,r.jsx)(s.Kq,{"data-slot":"tooltip-provider",delayDuration:t,...a})}function o(e){let{...t}=e;return(0,r.jsx)(n,{children:(0,r.jsx)(s.bL,{"data-slot":"tooltip",...t})})}function d(e){let{...t}=e;return(0,r.jsx)(s.l9,{"data-slot":"tooltip-trigger",...t})}function l(e){let{className:t,sideOffset:a=0,children:n,...o}=e;return(0,r.jsx)(s.ZL,{children:(0,r.jsxs)(s.UC,{"data-slot":"tooltip-content",sideOffset:a,className:(0,i.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t),...o,children:[n,(0,r.jsx)(s.i3,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},7942:(e,t,a)=>{"use strict";a.d(t,{default:()=>i});var r=a(5155),s=a(7109);let i=e=>{let{children:t}=e;return(0,r.jsx)(s.V,{height:"4px",color:"#188410",options:{showSpinner:!1},shallowRouting:!0,children:t})}},8145:(e,t,a)=>{"use strict";a.d(t,{E:()=>d});var r=a(5155);a(2115);var s=a(9708),i=a(2085),n=a(3999);let o=(0,i.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function d(e){let{className:t,variant:a,asChild:i=!1,...d}=e,l=i?s.DX:"span";return(0,r.jsx)(l,{"data-slot":"badge",className:(0,n.cn)(o({variant:a}),t),...d})}},9223:(e,t,a)=>{Promise.resolve().then(a.t.bind(a,9324,23)),Promise.resolve().then(a.bind(a,7942)),Promise.resolve().then(a.bind(a,975)),Promise.resolve().then(a.bind(a,9304)),Promise.resolve().then(a.bind(a,193)),Promise.resolve().then(a.bind(a,6705)),Promise.resolve().then(a.t.bind(a,5688,23)),Promise.resolve().then(a.t.bind(a,9432,23)),Promise.resolve().then(a.bind(a,6671))},9304:(e,t,a)=>{"use strict";a.d(t,{ThemeProvider:()=>i});var r=a(5155);a(2115);var s=a(1362);function i(e){let{children:t,...a}=e;return(0,r.jsx)(s.N,{...a,children:t})}},9324:()=>{},9852:(e,t,a)=>{"use strict";a.d(t,{p:()=>n});var r=a(5155),s=a(2115),i=a(3999);let n=s.forwardRef((e,t)=>{let{className:a,type:s,...n}=e;return(0,r.jsx)("input",{type:s,ref:t,"data-slot":"input",className:(0,i.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...n})});n.displayName="Input"}},e=>{var t=t=>e(e.s=t);e.O(0,[261,146,617,874,978,273,983,441,684,358],()=>t(9223)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/mcp-clients/page-b2d03b2155b1dfee.js b/transports/bifrost-http/ui/_next/static/chunks/app/mcp-clients/page-b2d03b2155b1dfee.js new file mode 100644 index 0000000000..7531366c8d --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/mcp-clients/page-b2d03b2155b1dfee.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[364],{1284:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});let a=(0,n(9946).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},2067:(e,t,n)=>{"use strict";n.d(t,{Dr:()=>a});class a{isValid(){return!this.rules.some(e=>!e.isValid)}getErrors(){return this.rules.filter(e=>!e.isValid).map(e=>e.message)}getFirstError(){let e=this.rules.find(e=>!e.isValid);return null==e?void 0:e.message}static required(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"This field is required";return{isValid:null!=e&&""!==e&&0!==e,message:t}}static minValue(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(t);return{isValid:!isNaN(e)&&e>=t,message:n}}static maxValue(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(t);return{isValid:!isNaN(e)&&e<=t,message:n}}static pattern(e,t,n){return{isValid:t.test(e||""),message:n}}static email(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid email";return this.pattern(e,/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,t)}static url(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid URL";return this.pattern(e,/^https?:\/\/.+/,t)}static minLength(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(t," characters");return{isValid:(e||"").length>=t,message:n}}static maxLength(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(t," characters");return{isValid:(e||"").length<=t,message:n}}static arrayMinLength(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at least ".concat(t," items");return{isValid:(null==e?void 0:e.length)>=t,message:n}}static arrayMaxLength(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at most ".concat(t," items");return{isValid:(null==e?void 0:e.length)<=t,message:n}}static arrayUnique(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must have unique items";return{isValid:(null==e?void 0:e.length)===new Set(e).size,message:t}}static arraysEqual(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be equal";return{isValid:(null==e?void 0:e.length)===(null==t?void 0:t.length)&&(null==e?void 0:e.every((e,n)=>e===t[n])),message:n}}static custom(e,t){return{isValid:e,message:t}}static all(e){return e.find(e=>!e.isValid)||{isValid:!0,message:""}}constructor(e){this.rules=e.filter(e=>void 0!==e)}}},2525:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});let a=(0,n(9946).A)("trash-2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},3557:(e,t,n)=>{"use strict";n.d(t,{Ob:()=>s,w8:()=>a});let a=e=>e.split(",").map(e=>e.trim()).filter(e=>e.length>0),s=(e,t)=>(null==e?void 0:e.length)===(null==t?void 0:t.length)&&(null==e?void 0:e.every((e,n)=>e===t[n]))},3580:(e,t,n)=>{"use strict";n.d(t,{d:()=>s});var a=n(6671);function s(){return{toast:e=>{let{title:t,description:n,variant:s}=e,i=n?"".concat(t,": ").concat(n):t;"destructive"===s?a.o.error(i):a.o.success(i)}}}},4616:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});let a=(0,n(9946).A)("plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},6034:(e,t,n)=>{"use strict";n.d(t,{Dk:()=>i,mR:()=>a,qV:()=>s});let a={base_url:"",default_request_timeout_in_seconds:30,max_retries:0,retry_backoff_initial:1e3,retry_backoff_max:1e4},s={concurrency:10,buffer_size:100},i={connected:"bg-green-100 text-green-800",error:"bg-red-100 text-red-800",disconnected:"bg-gray-100 text-gray-800"}},6559:(e,t,n)=>{"use strict";n.d(t,{$v:()=>x,EO:()=>u,Lt:()=>l,Rx:()=>g,Zr:()=>v,ck:()=>h,r7:()=>p,tv:()=>o,wd:()=>m});var a=n(5155);n(2115);var s=n(7649),i=n(3999),r=n(7168);function l(e){let{...t}=e;return(0,a.jsx)(s.bL,{"data-slot":"alert-dialog",...t})}function o(e){let{...t}=e;return(0,a.jsx)(s.l9,{"data-slot":"alert-dialog-trigger",...t})}function c(e){let{...t}=e;return(0,a.jsx)(s.ZL,{"data-slot":"alert-dialog-portal",...t})}function d(e){let{className:t,...n}=e;return(0,a.jsx)(s.hJ,{"data-slot":"alert-dialog-overlay",className:(0,i.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...n})}function u(e){let{className:t,...n}=e;return(0,a.jsxs)(c,{children:[(0,a.jsx)(d,{}),(0,a.jsx)(s.UC,{"data-slot":"alert-dialog-content",className:(0,i.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",t),...n})]})}function m(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,i.cn)("flex flex-col gap-2 text-center sm:text-left",t),...n})}function h(e){let{className:t,...n}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,i.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...n})}function p(e){let{className:t,...n}=e;return(0,a.jsx)(s.hE,{"data-slot":"alert-dialog-title",className:(0,i.cn)("text-lg font-semibold",t),...n})}function x(e){let{className:t,...n}=e;return(0,a.jsx)(s.VY,{"data-slot":"alert-dialog-description",className:(0,i.cn)("text-muted-foreground text-sm",t),...n})}function g(e){let{className:t,...n}=e;return(0,a.jsx)(s.rc,{className:(0,i.cn)((0,r.r)({variant:"destructive"}),t),...n})}function v(e){let{className:t,...n}=e;return(0,a.jsx)(s.ZD,{className:(0,i.cn)((0,r.r)({variant:"outline"}),t),...n})}},7649:(e,t,n)=>{"use strict";n.d(t,{UC:()=>T,VY:()=>q,ZD:()=>z,ZL:()=>L,bL:()=>E,hE:()=>Z,hJ:()=>R,l9:()=>V,rc:()=>P});var a=n(2115),s=n(6081),i=n(6101),r=n(5452),l=n(5185),o=n(9708),c=n(5155),d="AlertDialog",[u,m]=(0,s.A)(d,[r.Hs]),h=(0,r.Hs)(),p=e=>{let{__scopeAlertDialog:t,...n}=e,a=h(t);return(0,c.jsx)(r.bL,{...a,...n,modal:!0})};p.displayName=d;var x=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,s=h(n);return(0,c.jsx)(r.l9,{...s,...a,ref:t})});x.displayName="AlertDialogTrigger";var g=e=>{let{__scopeAlertDialog:t,...n}=e,a=h(t);return(0,c.jsx)(r.ZL,{...a,...n})};g.displayName="AlertDialogPortal";var v=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,s=h(n);return(0,c.jsx)(r.hJ,{...s,...a,ref:t})});v.displayName="AlertDialogOverlay";var f="AlertDialogContent",[j,y]=u(f),_=(0,o.Dc)("AlertDialogContent"),b=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,children:s,...o}=e,d=h(n),u=a.useRef(null),m=(0,i.s)(t,u),p=a.useRef(null);return(0,c.jsx)(r.G$,{contentName:f,titleName:C,docsSlug:"alert-dialog",children:(0,c.jsx)(j,{scope:n,cancelRef:p,children:(0,c.jsxs)(r.UC,{role:"alertdialog",...d,...o,ref:m,onOpenAutoFocus:(0,l.m)(o.onOpenAutoFocus,e=>{var t;e.preventDefault(),null==(t=p.current)||t.focus({preventScroll:!0})}),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault(),children:[(0,c.jsx)(_,{children:s}),(0,c.jsx)(S,{contentRef:u})]})})})});b.displayName=f;var C="AlertDialogTitle",w=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,s=h(n);return(0,c.jsx)(r.hE,{...s,...a,ref:t})});w.displayName=C;var N="AlertDialogDescription",k=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,s=h(n);return(0,c.jsx)(r.VY,{...s,...a,ref:t})});k.displayName=N;var A=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,s=h(n);return(0,c.jsx)(r.bm,{...s,...a,ref:t})});A.displayName="AlertDialogAction";var D="AlertDialogCancel",M=a.forwardRef((e,t)=>{let{__scopeAlertDialog:n,...a}=e,{cancelRef:s}=y(D,n),l=h(n),o=(0,i.s)(t,s);return(0,c.jsx)(r.bm,{...l,...a,ref:o})});M.displayName=D;var S=e=>{let{contentRef:t}=e,n="`".concat(f,"` requires a description for the component to be accessible for screen reader users.\n\nYou can add a description to the `").concat(f,"` by passing a `").concat(N,"` component as a child, which also benefits sighted users by adding visible context to the dialog.\n\nAlternatively, you can use your own component as a description by assigning it an `id` and passing the same value to the `aria-describedby` prop in `").concat(f,"`. If the description is confusing or duplicative for sighted users, you can use the `@radix-ui/react-visually-hidden` primitive as a wrapper around your description component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/alert-dialog");return a.useEffect(()=>{var e;document.getElementById(null==(e=t.current)?void 0:e.getAttribute("aria-describedby"))||console.warn(n)},[n,t]),null},E=p,V=x,L=g,R=v,T=b,P=A,z=M,Z=w,q=k},7765:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>R});var a=n(5155),s=n(7168),i=n(9840),r=n(9852),l=n(2115),o=n(3655),c=l.forwardRef((e,t)=>(0,a.jsx)(o.sG.label,{...e,ref:t,onMouseDown:t=>{var n;t.target.closest("button, input, select, textarea")||(null==(n=e.onMouseDown)||n.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));c.displayName="Label";var d=n(3999);function u(e){let{className:t,...n}=e;return(0,a.jsx)(c,{"data-slot":"label",className:(0,d.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...n})}var m=n(5784),h=n(9474),p=n(7777),x=n(3580),g=n(1886),v=n(3557),f=n(2067),j=n(1284);let y={name:"",connection_type:"http",connection_string:"",stdio_config:{command:"",args:[],envs:[]},tools_to_skip:[],tools_to_execute:[]},_=e=>{var t,n,o,c,d,_;let{client:b,open:C,onClose:w,onSaved:N}=e,[k,A]=(0,l.useState)(y),[D,M]=(0,l.useState)(!1),[S,E]=(0,l.useState)(""),[V,L]=(0,l.useState)(""),[R,T]=(0,l.useState)(""),[P,z]=(0,l.useState)(""),{toast:Z}=(0,x.d)();(0,l.useEffect)(()=>{if(b){var e,t,n,a,s;A({name:b.name,connection_type:b.config.connection_type,connection_string:b.config.connection_string||"",stdio_config:{command:(null==(e=b.config.stdio_config)?void 0:e.command)||"",args:(null==(t=b.config.stdio_config)?void 0:t.args)||[],envs:(null==(n=b.config.stdio_config)?void 0:n.envs)||[]},tools_to_skip:b.config.tools_to_skip||[],tools_to_execute:b.config.tools_to_execute||[]}),E(((null==(a=b.config.stdio_config)?void 0:a.args)||[]).join(", ")),L(((null==(s=b.config.stdio_config)?void 0:s.envs)||[]).join(", ")),T((b.config.tools_to_skip||[]).join(", ")),z((b.config.tools_to_execute||[]).join(", "))}else A(y),E(""),L(""),T(""),z("")},[b]);let q=(e,t)=>{A(n=>({...n,[e]:t}))},O=(e,t)=>{A(n=>({...n,stdio_config:{command:"",args:[],envs:[],...n.stdio_config||{},[e]:t}}))},$=new f.Dr([f.Dr.required(null==(t=k.name)?void 0:t.trim(),"Client name is required"),f.Dr.pattern(k.name||"",/^[a-zA-Z0-9-_]+$/,"Client name can only contain letters, numbers, hyphens and underscores"),f.Dr.minLength(k.name||"",3,"Client name must be at least 3 characters"),f.Dr.maxLength(k.name||"",50,"Client name cannot exceed 50 characters"),...("http"===k.connection_type||"sse"===k.connection_type)&&!b?[f.Dr.required(null==(n=k.connection_string)?void 0:n.trim(),"Connection URL is required"),f.Dr.pattern(k.connection_string||"",/^(http:\/\/|https:\/\/|env\.[A-Z_]+$)/,"Connection URL must start with http://, https://, or be an environment variable (env.VAR_NAME)")]:[],..."stdio"===k.connection_type&&!b?[f.Dr.required(null==(c=k.stdio_config)||null==(o=c.command)?void 0:o.trim(),"Command is required for STDIO connections"),...!b?[f.Dr.pattern((null==(d=k.stdio_config)?void 0:d.command)||"",/^[^<>|&;]+$/,"Command cannot contain special shell characters")]:[]]:[],...P.trim()?[f.Dr.pattern(P,/^[a-zA-Z0-9_,\s-]+$/,"Tools to execute can only contain letters, numbers, underscores, and commas")]:[],...R.trim()?[f.Dr.pattern(R,/^[a-zA-Z0-9_,\s-]+$/,"Tools to skip can only contain letters, numbers, underscores, and commas")]:[],...b?[f.Dr.custom(!(0,v.Ob)(k.tools_to_execute||[],(0,v.w8)(P))||!(0,v.Ob)(k.tools_to_skip||[],(0,v.w8)(R)),"No changes to save")]:[],f.Dr.custom(!((e,t)=>{let n=new Set((0,v.w8)(e)),a=new Set((0,v.w8)(t));return Array.from(n).some(e=>a.has(e))})(P,R),"Tools cannot appear in both execute and skip lists")]),U=async()=>{var e;M(!0);let t=null,n={...k,stdio_config:"stdio"===k.connection_type?{command:(null==(e=k.stdio_config)?void 0:e.command)||"",args:(0,v.w8)(S),envs:(0,v.w8)(V)}:void 0,tools_to_skip:(0,v.w8)(R),tools_to_execute:(0,v.w8)(P)};if(b){let e={tools_to_execute:n.tools_to_execute,tools_to_skip:n.tools_to_skip};[,t]=await g.K.updateMCPClient(b.name,e)}else[,t]=await g.K.createMCPClient(n);M(!1),t?Z({title:"Error",description:t,variant:"destructive"}):(Z({title:"Success",description:b?"Client updated":"Client created"}),N(),w())};return(0,a.jsx)(i.lG,{open:C,onOpenChange:w,children:(0,a.jsxs)(i.Cf,{className:"max-h-[90vh] max-w-2xl overflow-y-auto",children:[(0,a.jsx)(i.c7,{children:(0,a.jsx)(i.L3,{children:b?"Edit MCP Client Tools":"New MCP Client"})}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Name"}),(0,a.jsx)(r.p,{value:k.name,onChange:e=>q("name",e.target.value),placeholder:"Client name",disabled:!!b})]}),!b&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"w-full space-y-2",children:[(0,a.jsx)(u,{children:"Connection Type"}),(0,a.jsxs)(m.l6,{value:k.connection_type,onValueChange:e=>q("connection_type",e),children:[(0,a.jsx)(m.bq,{className:"w-full",children:(0,a.jsx)(m.yv,{placeholder:"Select connection type"})}),(0,a.jsxs)(m.gC,{children:[(0,a.jsx)(m.eb,{value:"http",children:"HTTP (Streamable)"}),(0,a.jsx)(m.eb,{value:"sse",children:"Server-Sent Events (SSE)"}),(0,a.jsx)(m.eb,{value:"stdio",children:"STDIO"})]})]})]}),("http"===k.connection_type||"sse"===k.connection_type)&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex w-fit items-center gap-1",children:[(0,a.jsx)(u,{children:"Connection URL"}),(0,a.jsx)(p.Bc,{children:(0,a.jsxs)(p.m_,{children:[(0,a.jsx)(p.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(j.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,a.jsx)(p.ZI,{className:"max-w-fit",children:(0,a.jsxs)("p",{children:["Use ",(0,a.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]}),(0,a.jsx)(r.p,{value:k.connection_string||"",onChange:e=>q("connection_string",e.target.value),placeholder:"http://your-mcp-server:3000 or env.MCP_SERVER_URL"})]}),"stdio"===k.connection_type&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Command"}),(0,a.jsx)(r.p,{value:(null==(_=k.stdio_config)?void 0:_.command)||"",onChange:e=>O("command",e.target.value),placeholder:"node, python, /path/to/executable"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Arguments (comma-separated)"}),(0,a.jsx)(r.p,{value:S,onChange:e=>E(e.target.value),placeholder:"--port, 3000, --config, config.json"})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Environment Variables (comma-separated)"}),(0,a.jsx)(r.p,{value:V,onChange:e=>L(e.target.value),placeholder:"API_KEY, DATABASE_URL"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Tools to Execute (comma-separated, leave empty for all)"}),(0,a.jsx)(h.T,{value:P,onChange:e=>z(e.target.value),placeholder:"tool1, tool2, tool3",rows:2})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(u,{children:"Tools to Skip (comma-separated)"}),(0,a.jsx)(h.T,{value:R,onChange:e=>T(e.target.value),placeholder:"skipTool1, skipTool2",rows:2})]})]}),(0,a.jsxs)(i.Es,{children:[(0,a.jsx)(s.$,{variant:"outline",onClick:w,disabled:D,children:"Cancel"}),(0,a.jsx)(p.Bc,{children:(0,a.jsxs)(p.m_,{children:[(0,a.jsx)(p.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(s.$,{onClick:U,disabled:!$.isValid()||D,isLoading:D,children:b?"Save":"Create"})})}),!$.isValid()&&(0,a.jsx)(p.ZI,{children:$.getFirstError()||"Please fix validation errors"})]})})]})]})})};var b=n(8145),C=n(8482),w=n(8524),N=n(6034),k=n(4616),A=n(9946);let D=(0,A.A)("refresh-ccw",[["path",{d:"M21 12a9 9 0 0 0-9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"14sxne"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M3 12a9 9 0 0 0 9 9 9.75 9.75 0 0 0 6.74-2.74L21 16",key:"1hlbsb"}],["path",{d:"M16 16h5v5",key:"ccwih5"}]]),M=(0,A.A)("pencil",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}],["path",{d:"m15 5 4 4",key:"1mk7zo"}]]);var S=n(2525),E=n(6559);function V(e){let{mcpClients:t}=e,[n,i]=(0,l.useState)(null),[r,o]=(0,l.useState)(t),[c,d]=(0,l.useState)(!1),{toast:u}=(0,x.d)(),m=async()=>{let[e,t]=await g.K.getMCPClients();t?u({title:"Error",description:t,variant:"destructive"}):o(e||[])};(0,l.useEffect)(()=>{m()},[]);let h=e=>{i(e),d(!0)},p=async e=>{let[,t]=await g.K.reconnectMCPClient(e.name);t?u({title:"Error",description:t,variant:"destructive"}):(u({title:"Reconnected",description:"Client reconnected."}),m())},v=async e=>{let[,t]=await g.K.deleteMCPClient(e.name);t?u({title:"Error",description:t,variant:"destructive"}):(u({title:"Deleted",description:"Client removed."}),m())},f=e=>{if("stdio"===e.config.connection_type){var t,n;return"".concat(null==(t=e.config.stdio_config)?void 0:t.command," ").concat(null==(n=e.config.stdio_config)?void 0:n.args.join(" "))||"STDIO"}return e.config.connection_string||"".concat(e.config.connection_type.toUpperCase())},j=e=>{switch(e){case"http":return"HTTP";case"sse":return"SSE";case"stdio":return"STDIO";default:return e.toUpperCase()}};return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(C.aR,{className:"mb-4 px-0",children:[(0,a.jsxs)(C.ZB,{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{className:"flex items-center gap-2",children:"Registered MCP Clients"}),(0,a.jsxs)(s.$,{onClick:()=>{i(null),d(!0)},children:[(0,a.jsx)(k.A,{className:"h-4 w-4"})," New MCP Client"]})]}),(0,a.jsx)(C.BT,{children:"Manage clients that can connect to the MCP Tools endpoint."})]}),(0,a.jsx)("div",{className:"rounded-md border",children:(0,a.jsxs)(w.XI,{children:[(0,a.jsx)(w.A0,{children:(0,a.jsxs)(w.Hj,{children:[(0,a.jsx)(w.nd,{children:"Name"}),(0,a.jsx)(w.nd,{children:"Connection Type"}),(0,a.jsx)(w.nd,{children:"Connection Info"}),(0,a.jsx)(w.nd,{children:"State"}),(0,a.jsx)(w.nd,{className:"text-right",children:"Actions"})]})}),(0,a.jsxs)(w.BF,{children:[0===r.length&&(0,a.jsx)(w.Hj,{children:(0,a.jsx)(w.nA,{colSpan:5,className:"py-6 text-center",children:"No clients found."})}),r.map(e=>(0,a.jsxs)(w.Hj,{children:[(0,a.jsx)(w.nA,{className:"font-medium",children:e.name}),(0,a.jsx)(w.nA,{children:j(e.config.connection_type)}),(0,a.jsx)(w.nA,{className:"max-w-72 overflow-hidden text-ellipsis whitespace-nowrap",children:f(e)}),(0,a.jsx)(w.nA,{children:(0,a.jsx)(b.E,{className:N.Dk[e.state],children:e.state})}),(0,a.jsxs)(w.nA,{className:"space-x-2 text-right",children:["disconnected"===e.state?(0,a.jsx)(s.$,{variant:"ghost",size:"icon",onClick:()=>p(e),children:(0,a.jsx)(D,{className:"h-4 w-4"})}):"connected"===e.state&&(0,a.jsx)(s.$,{variant:"ghost",size:"icon",onClick:()=>h(e),children:(0,a.jsx)(M,{className:"h-4 w-4"})}),(0,a.jsxs)(E.Lt,{children:[(0,a.jsx)(E.tv,{asChild:!0,children:(0,a.jsx)(s.$,{variant:"ghost",size:"icon",disabled:"error"===e.state,children:(0,a.jsx)(S.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(E.EO,{children:[(0,a.jsxs)(E.wd,{children:[(0,a.jsx)(E.r7,{children:"Remove MCP Client"}),(0,a.jsxs)(E.$v,{children:["Are you sure you want to remove MCP client ",e.name,"? You will need to reconnect the client to continue using it."]})]}),(0,a.jsxs)(E.ck,{children:[(0,a.jsx)(E.Zr,{children:"Cancel"}),(0,a.jsx)(E.Rx,{onClick:()=>v(e),children:"Delete"})]})]})]})]})]},e.name))]})]})}),c&&(0,a.jsx)(_,{open:c,client:n,onClose:()=>d(!1),onSaved:()=>{d(!1),m()}})]})}var L=n(2384);function R(){let[e,t]=(0,l.useState)([]),[n,s]=(0,l.useState)(!0),{toast:i}=(0,x.d)();(0,l.useEffect)(()=>{r()},[]);let r=async()=>{let[e,n]=await g.K.getMCPClients();if(s(!1),n)return void i({title:"Error",description:n,variant:"destructive"});t(e||[])};return(0,a.jsx)("div",{children:n?(0,a.jsx)(L.A,{}):(0,a.jsx)(V,{mcpClients:e})})}},7777:(e,t,n)=>{"use strict";n.d(t,{Bc:()=>r,ZI:()=>c,k$:()=>o,m_:()=>l});var a=n(5155);n(2115);var s=n(9613),i=n(3999);function r(e){let{delayDuration:t=0,...n}=e;return(0,a.jsx)(s.Kq,{"data-slot":"tooltip-provider",delayDuration:t,...n})}function l(e){let{...t}=e;return(0,a.jsx)(r,{children:(0,a.jsx)(s.bL,{"data-slot":"tooltip",...t})})}function o(e){let{...t}=e;return(0,a.jsx)(s.l9,{"data-slot":"tooltip-trigger",...t})}function c(e){let{className:t,sideOffset:n=0,children:r,...l}=e;return(0,a.jsx)(s.ZL,{children:(0,a.jsxs)(s.UC,{"data-slot":"tooltip-content",sideOffset:n,className:(0,i.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",t),...l,children:[r,(0,a.jsx)(s.i3,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},8396:(e,t,n)=>{Promise.resolve().then(n.bind(n,7765))},9474:(e,t,n)=>{"use strict";n.d(t,{T:()=>i});var a=n(5155);n(2115);var s=n(3999);function i(e){let{className:t,...n}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,s.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",t),...n})}}},e=>{var t=t=>e(e.s=t);e.O(0,[106,189,944,231,412,62,613,915,441,684,358],()=>t(8396)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/page-11ab4958df35c5b1.js b/transports/bifrost-http/ui/_next/static/chunks/app/page-11ab4958df35c5b1.js new file mode 100644 index 0000000000..72664e45f4 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/page-11ab4958df35c5b1.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{1085:(e,t,s)=>{"use strict";s.d(t,{Fm:()=>u,Qs:()=>p,cj:()=>r,h:()=>d,qp:()=>m});var n=s(5155);s(2115);var a=s(5452),l=s(4416),o=s(3999);function r(e){let{...t}=e;return(0,n.jsx)(a.bL,{"data-slot":"sheet",...t})}function i(e){let{...t}=e;return(0,n.jsx)(a.ZL,{"data-slot":"sheet-portal",...t})}function c(e){let{className:t,...s}=e;return(0,n.jsx)(a.hJ,{"data-slot":"sheet-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s})}function d(e){let{className:t,children:s,side:r="right",...d}=e;return(0,n.jsxs)(i,{children:[(0,n.jsx)(c,{}),(0,n.jsxs)(a.UC,{"data-slot":"sheet-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===r&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===r&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===r&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===r&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",t),...d,children:[s,(0,n.jsxs)(a.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,n.jsx)(l.A,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u(e){let{className:t,...s}=e;return(0,n.jsx)("div",{"data-slot":"sheet-header",className:(0,o.cn)("flex flex-col gap-1.5 p-4",t),...s})}function m(e){let{className:t,...s}=e;return(0,n.jsx)(a.hE,{"data-slot":"sheet-title",className:(0,o.cn)("text-foreground font-semibold",t),...s})}function p(e){let{className:t,...s}=e;return(0,n.jsx)(a.VY,{"data-slot":"sheet-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...s})}},2815:(e,t,s)=>{Promise.resolve().then(s.bind(s,7406))},6037:(e,t,s)=>{"use strict";s.d(t,{W:()=>l});var n=s(5155);s(2115);var a=s(3999);function l(e){let{className:t}=e;return(0,n.jsx)("div",{className:(0,a.cn)("border-border h-[1px] w-full border-t border-dashed bg-transparent",{["".concat(t)]:void 0!==t})})}},6705:(e,t,s)=>{"use strict";s.d(t,{WebSocketProvider:()=>c,h:()=>d});var n=s(5155),a=s(2115),l=s(2379);let o=(0,a.createContext)(null),r=null,i=null;function c(e){let{children:t}=e,s=(0,a.useRef)(r),c=(0,a.useRef)(null),[d,u]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=()=>{var t;if((null==(t=s.current)?void 0:t.readyState)===WebSocket.OPEN)return;let n=new WebSocket((0,l.$0)("/ws/logs"));s.current=n,r=n,n.onopen=()=>{console.log("WebSocket connected"),u(!0),c.current&&(clearTimeout(c.current),c.current=null)},n.onmessage=e=>{try{let t=JSON.parse(e.data);"log"===t.type&&i&&i(t.payload,t.operation)}catch(e){console.error("Failed to parse WebSocket message:",e)}},n.onclose=()=>{console.log("WebSocket disconnected, attempting to reconnect..."),u(!1),c.current=setTimeout(e,5e3)},n.onerror=e=>{u(!1),n.close()}};return e(),()=>{c.current&&(clearTimeout(c.current),c.current=null)}},[]),(0,n.jsx)(o.Provider,{value:{isConnected:d,ws:s,setMessageHandler:e=>{i=e}},children:t})}function d(){let e=(0,a.useContext)(o);if(!e)throw Error("useWebSocket must be used within a WebSocketProvider");return e}},7406:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ej});var n=s(5155),a=s(2384),l=s(8145),o=s(7168),r=s(1492),i=s(7783),c=s(4432);let d=()=>[{accessorKey:"timestamp",header:e=>{let{column:t}=e;return(0,n.jsxs)(o.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Time",(0,n.jsx)(r.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.timestamp;return(0,n.jsx)("div",{className:"font-mono text-sm",children:new Date(s).toLocaleString()})}},{accessorKey:"provider",header:"Provider",cell:e=>{let{row:t}=e,s=t.original.provider;return(0,n.jsxs)(l.E,{variant:"secondary",className:"uppercase",children:[(0,c.FO)(s,{size:"sm"}),s]})}},{accessorKey:"model",header:"Model",cell:e=>{let{row:t}=e;return(0,n.jsx)("div",{className:"max-w-[240px] truncate text-sm font-medium",children:t.original.model})}},{accessorKey:"status",header:"Status",cell:e=>{let{row:t}=e,s=t.original.status;return(0,n.jsx)(l.E,{variant:"secondary",className:i.Ez[s],children:s})}},{accessorKey:"latency",header:e=>{let{column:t}=e;return(0,n.jsxs)(o.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Latency",(0,n.jsx)(r.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.latency;return(0,n.jsx)("div",{className:"font-mono text-sm",children:s?"".concat(s.toLocaleString(),"ms"):"N/A"})}},{accessorKey:"token_usage.total_tokens",header:e=>{let{column:t}=e;return(0,n.jsxs)(o.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Tokens",(0,n.jsx)(r.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.token_usage;return s?(0,n.jsxs)("div",{className:"text-sm",children:[(0,n.jsx)("div",{className:"font-mono",children:s.total_tokens.toLocaleString()}),(0,n.jsxs)("div",{className:"text-muted-foreground text-xs",children:[s.prompt_tokens,"+",s.completion_tokens]})]}):(0,n.jsx)("div",{className:"font-mono text-sm",children:"N/A"})}},{id:"request_type",header:"Type",cell:e=>{let{row:t}=e;return(0,n.jsx)(l.E,{variant:"outline",className:"".concat(i.wf[t.original.object]," text-xs"),children:i.tJ[t.original.object]})}}];var u=s(5784),m=s(4964),p=s(2379),h=s(4357),x=s(1243),g=s(2115),f=s(6671),j=s(9026),v=s(3999),y=s(1154),N=s(1362);let b=(0,s(5028).default)(()=>s.e(983).then(s.bind(s,1364)).then(e=>e.default),{loadableGenerated:{webpack:()=>[1364]},ssr:!1,loading:()=>(0,n.jsx)(y.A,{className:"h-4 w-4 animate-spin p-4"})});function w(e){var t,s,a,l,o,r,i,c,d,u,m,p,h,x,f,j;let{className:w,lang:_,code:k,onChange:S,height:C,minHeight:A}=e,L=(0,g.useRef)(null),[H,z]=(0,g.useState)(!1),[T,M]=(0,g.useState)(e.height||e.minHeight||200);(0,g.useEffect)(()=>{z(!0)},[]);let{theme:B,systemTheme:E}=(0,N.D)(),O={lineNumbers:(null==(t=e.options)?void 0:t.lineNumbers)||"off",readOnly:e.readonly,scrollBeyondLastLine:null!=(m=null==(s=e.options)?void 0:s.scrollBeyondLastLine)&&m,minimap:{enabled:!1},contextmenu:!1,fontFamily:"var(--font-geist-mono)",fontSize:e.fontSize||12.5,padding:{top:2,bottom:2},wordWrap:e.wrap?"on":"off",folding:null!=(p=null==(a=e.options)?void 0:a.collapsibleBlocks)&&p,glyphMargin:!1,lineNumbersMinChars:null!=(h=null==(l=e.options)?void 0:l.lineNumbersMinChars)?h:4,overviewRulerLanes:null!=(x=null==(o=e.options)?void 0:o.overviewRulerLanes)?x:0,renderLineHighlight:"none",cursorStyle:"line",cursorBlinking:"smooth",scrollbar:{vertical:(null==(r=e.options)?void 0:r.showVerticalScrollbar)?"auto":"hidden",horizontal:(null==(i=e.options)?void 0:i.showHorizontalScrollbar)?"auto":"hidden",alwaysConsumeMouseWheel:null!=(f=null==(c=e.options)?void 0:c.alwaysConsumeMouseWheel)&&f},guides:{indentation:null==(j=null==(d=e.options)?void 0:d.showIndentLines)||j},hover:{enabled:!(null==(u=e.options)?void 0:u.disableHover)},wordBasedSuggestions:"off",...e.options};return H?(0,n.jsx)("div",{id:e.id,ref:L,className:(0,v.cn)("group relative h-full w-full",e.containerClassName),onBlur:e.onBlur,children:(0,n.jsx)(b,{height:T,width:e.width,language:_||"javascript",value:k||"",theme:"dark"===B||"system"===B&&"dark"===E?"custom-dark":"light",options:O,loading:(0,n.jsx)(y.A,{className:"h-4 w-4 animate-spin"}),onChange:e=>{S&&S(e||"")},onMount:(t,s)=>{if(e.autoFocus&&t.focus(),e.shouldAdjustInitialHeight||e.autoResize){let s=()=>{try{let s=t.getContentHeight();e.minHeight&&se.maxHeight&&(s=e.maxHeight),M(s+15),t.layout()}catch(e){console.warn("Error updating editor height:",e)}};if(setTimeout(s,100),e.autoResize){let e=t.getModel();e&&e.onDidChangeContent(()=>{requestAnimationFrame(s)})}}if(e.autoFormat)try{var n;null==(n=t.getAction("editor.action.formatDocument"))||n.run()}catch(e){console.warn("Auto-format failed:",e)}},className:(0,v.cn)("code text-md w-full bg-transparent outline-none ring-offset-transparent",w),beforeMount:e=>{window.MonacoEnvironment={getWorker:()=>({postMessage:()=>{},terminate:()=>{},addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:()=>!1,onerror:null,onmessage:null,onmessageerror:null})},e.editor.defineTheme("custom-dark",{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":"#00000000",focusBorder:"#00000000","editor.lineHighlightBorder":"#00000000","editor.selectionHighlightBorder":"#00000000","editorWidget.border":"#00000000","editorOverviewRuler.border":"#00000000"}})}})}):(0,n.jsx)("div",{className:(0,v.cn)("group relative flex h-24 w-full items-center justify-center",e.containerClassName),children:(0,n.jsx)(y.A,{className:"h-4 w-4 animate-spin"})})}let _={scrollBeyondLastLine:!1,minimap:{enabled:!1},lineNumbers:"off",folding:!1,lineDecorationsWidth:0,lineNumbersMinChars:0,glyphMargin:!1};function k(e){let{code:t,language:s,onLanguageChange:a,showLanguageSelect:l=!1,readonly:r=!0}=e;return(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("div",{className:"absolute right-4 top-4 z-10 flex items-center gap-2",children:[l&&a&&(0,n.jsxs)(u.l6,{value:s,onValueChange:a,children:[(0,n.jsx)(u.bq,{className:"h-8 w-fit text-xs",children:(0,n.jsx)(u.yv,{})}),(0,n.jsxs)(u.gC,{children:[(0,n.jsx)(u.eb,{className:"text-xs",value:"python",children:"Python"}),(0,n.jsx)(u.eb,{className:"text-xs",value:"typescript",children:"TypeScript"})]})]}),(0,n.jsx)(o.$,{variant:"ghost",size:"icon",onClick:()=>{navigator.clipboard.writeText(t),f.o.success("Copied to clipboard")},children:(0,n.jsx)(h.A,{className:"size-4"})})]}),(0,n.jsx)(w,{className:"w-full",code:t,lang:s,readonly:r,height:300,fontSize:14,options:_})]})}function S(e){let{isSocketConnected:t,error:s}=e,[a,l]=(0,g.useState)("python"),o=(0,g.useMemo)(()=>{let e=(0,p.XO)();return{curl:"curl -X POST ".concat(e,'/v1/chat/completions \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "openai/gpt-4o-mini",\n "messages": [\n {"role": "user", "content": "Hello!"}\n ]\n }\''),sdk:{openai:{python:'import openai\n\nclient = openai.OpenAI(\n base_url="'.concat(e,'/openai",\n api_key="dummy-api-key" # Handled by Bifrost\n)\n\nresponse = client.chat.completions.create(\n model="gpt-4o-mini", # or "provider/model" for other providers (anthropic/claude-3-sonnet)\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import OpenAI from "openai";\n\nconst openai = new OpenAI({\n baseURL: "'.concat(e,'/openai",\n apiKey: "dummy-api-key", // Handled by Bifrost\n});\n\nconst response = await openai.chat.completions.create({\n model: "gpt-4o-mini", // or "provider/model" for other providers (anthropic/claude-3-sonnet)\n messages: [{ role: "user", content: "Hello!" }],\n});')},anthropic:{python:'import anthropic\n\nclient = anthropic.Anthropic(\n base_url="'.concat(e,'/anthropic",\n api_key="dummy-api-key" # Handled by Bifrost\n)\n\nresponse = client.messages.create(\n model="claude-3-sonnet-20240229", # or "provider/model" for other providers (openai/gpt-4o-mini)\n max_tokens=1000,\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import Anthropic from "@anthropic-ai/sdk";\n\nconst anthropic = new Anthropic({\n baseURL: "'.concat(e,'/anthropic",\n apiKey: "dummy-api-key", // Handled by Bifrost\n});\n\nconst response = await anthropic.messages.create({\n model: "claude-3-sonnet-20240229", // or "provider/model" for other providers (openai/gpt-4o-mini)\n max_tokens: 1000,\n messages: [{ role: "user", content: "Hello!" }],\n});')},genai:{python:'from google import genai\nfrom google.genai.types import HttpOptions\n\nclient = genai.Client(\n api_key="dummy-api-key", # Handled by Bifrost\n http_options=HttpOptions(base_url="'.concat(e,'/genai")\n)\n\nresponse = client.models.generate_content(\n model="gemini-2.5-pro", # or "provider/model" for other providers (openai/gpt-4o-mini)\n contents="Hello!"\n)'),typescript:'import { GoogleGenerativeAI } from "@google/generative-ai";\n\nconst genAI = new GoogleGenerativeAI("dummy-api-key", { // Handled by Bifrost\n baseUrl: "'.concat(e,'/genai",\n});\n\nconst model = genAI.getGenerativeModel({ model: "gemini-2.5-pro" }); // or "provider/model" for other providers (openai/gpt-4o-mini)\nconst response = await model.generateContent("Hello!");')},litellm:{python:'import litellm\n\nlitellm.api_base = "'.concat(e,'/litellm"\n\nresponse = litellm.completion(\n model="openai/gpt-4o-mini",\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import { completion } from "litellm";\n\nconst response = await completion({\n model: "openai/gpt-4o-mini",\n messages: [{ role: "user", content: "Hello!" }],\n api_base: "'.concat(e,'/litellm",\n});')}}}},[]);return(0,n.jsxs)("div",{className:"flex w-full flex-col items-center justify-center space-y-8",children:[s&&(0,n.jsxs)(j.Fc,{children:[(0,n.jsx)(x.A,{className:"h-4 w-4"}),(0,n.jsx)(j.TN,{children:s})]}),(0,n.jsxs)("div",{className:"w-full space-y-6",children:[(0,n.jsxs)("div",{className:"flex flex-row items-center gap-2",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h3",{className:"text-lg font-semibold",children:"Integration under 60 seconds"}),(0,n.jsx)("p",{className:"text-muted-foreground text-sm",children:"Send your first request to get started"})]}),(0,n.jsx)("div",{className:"ml-auto",children:t&&(0,n.jsxs)("div",{className:"inline-flex items-center rounded-full border border-green-200 bg-green-50 px-3 py-1 text-xs font-medium text-green-700 sm:px-4 sm:text-sm",children:[(0,n.jsxs)("span",{className:"relative mr-2 flex h-2 w-2 sm:mr-3",children:[(0,n.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-green-500 opacity-75"}),(0,n.jsx)("span",{className:"relative inline-flex h-2 w-2 rounded-full bg-green-600"})]}),(0,n.jsx)("span",{children:"Listening for logs..."})]})})]}),(0,n.jsxs)(m.tU,{defaultValue:"curl",className:"w-full rounded-lg border",children:[(0,n.jsxs)(m.j7,{className:"grid h-10 w-full grid-cols-5 rounded-b-none rounded-t-lg",children:[(0,n.jsx)(m.Xi,{value:"curl",children:"cURL"}),(0,n.jsx)(m.Xi,{value:"openai",children:"OpenAI SDK"}),(0,n.jsx)(m.Xi,{value:"anthropic",children:"Anthropic SDK"}),(0,n.jsx)(m.Xi,{value:"genai",children:"Google GenAI SDK"}),(0,n.jsx)(m.Xi,{value:"litellm",children:"LiteLLM SDK"})]}),(0,n.jsx)(m.av,{value:"curl",className:"px-4",children:(0,n.jsx)(k,{code:o.curl,language:"bash",readonly:!1})}),(0,n.jsx)(m.av,{value:"openai",className:"px-4",children:(0,n.jsx)(k,{code:o.sdk.openai[a],language:a,onLanguageChange:e=>l(e),showLanguageSelect:!0})}),(0,n.jsx)(m.av,{value:"anthropic",className:"px-4",children:(0,n.jsx)(k,{code:o.sdk.anthropic[a],language:a,onLanguageChange:e=>l(e),showLanguageSelect:!0})}),(0,n.jsx)(m.av,{value:"genai",className:"px-4",children:(0,n.jsx)(k,{code:o.sdk.genai[a],language:a,onLanguageChange:e=>l(e),showLanguageSelect:!0})}),(0,n.jsx)(m.av,{value:"litellm",className:"px-4",children:(0,n.jsx)(k,{code:o.sdk.litellm[a],language:a,onLanguageChange:e=>l(e),showLanguageSelect:!0})})]})]})]})}var C=s(1085),A=s(6561),L=s(7434),H=s(5868);function z(e){if(null===e.value)return null;let t=e.orientation||"vertical";return(0,n.jsx)("div",{className:(0,v.cn)("items-top flex flex-col gap-2",{["".concat(e.className)]:void 0!==e.className,"items-start":"left"===e.align||void 0===e.align,"items-end":"right"===e.align}),children:(0,n.jsxs)("div",{className:e.containerClassName,children:[""!==e.label&&(0,n.jsx)("div",{className:"text-muted-foreground flex shrink-0 flex-row items-center gap-2 text-xs font-medium",children:e.label.toUpperCase()}),(0,n.jsx)("div",{className:(0,v.cn)("text-md flex whitespace-nowrap text-xs font-medium transition-transform delay-75",{"w-full flex-col items-center gap-2":"horizontal"===t,"flex-row items-start gap-2":"vertical"===t,["".concat(e.valueClassName)]:void 0!==e.valueClassName,"text-end":"right"===e.align}),children:e.value})]})})}var T=s(2940),M=s.n(T),B=s(6037);let E=e=>{try{return JSON.parse(e),!0}catch(e){return!1}},O=e=>{try{return JSON.parse(e)}catch(t){return e}};function F(e){let{message:t}=e;return(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium capitalize",children:t.role}),"string"==typeof t.content&&t.content.length>0&&!E(t.content)?(0,n.jsx)("div",{className:"px-6 py-2 font-mono text-xs",children:t.content}):t.content.length>0&&(0,n.jsx)(w,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:250,wrap:!0,code:JSON.stringify(O(t.content),null,2),lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}}),t.tool_calls&&t.tool_calls.length>0&&(0,n.jsx)("div",{className:"border-b last:border-b-0",children:(0,n.jsx)(w,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:150,wrap:!0,code:JSON.stringify(O(t.tool_calls),null,2),lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})})]})}function I(e){var t,s,a,o,r,c,d,u;let{log:m,open:p,onOpenChange:h}=e;if(!m)return null;m.latency;let x=m.token_usage;x&&(x.completion_tokens,x.total_tokens),x&&(x.prompt_tokens,x.completion_tokens,x.prompt_tokens,x.completion_tokens);let g=null;if(null==(t=m.params)?void 0:t.tools)try{g=JSON.stringify(m.params.tools,null,2)}catch(e){}let f=null;if(null==(s=m.params)?void 0:s.tool_choice)try{f=JSON.stringify(m.params.tool_choice,null,2)}catch(e){}return(0,n.jsx)(C.cj,{open:p,onOpenChange:h,children:(0,n.jsxs)(C.h,{className:"flex w-full flex-col overflow-x-hidden p-8 sm:max-w-2xl",children:[(0,n.jsx)(C.Fm,{className:"px-0",children:(0,n.jsxs)(C.qp,{className:"flex w-fit items-center gap-2 font-medium",children:["success"===m.status&&(0,n.jsxs)("p",{className:"text-md max-w-full truncate",children:["Request ID: ",m.id]}),(0,n.jsx)(l.E,{variant:"outline",className:i.Ez[m.status],children:m.status})]})}),(0,n.jsxs)("div",{className:"space-y-4 rounded-sm border px-6 py-4",children:[(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(q,{title:"Timings",icon:(0,n.jsx)(A.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(z,{className:"w-full",label:"Start Timestamp",value:M()(m.timestamp).format("YYYY-MM-DD HH:mm:ss A")}),(0,n.jsx)(z,{className:"w-full",label:"End Timestamp",value:M()(m.timestamp).add(m.latency||0,"ms").format("YYYY-MM-DD HH:mm:ss A")}),(0,n.jsx)(z,{className:"w-full",label:"Latency",value:isNaN(m.latency||0)?"NA":(0,n.jsxs)("div",{children:[null==(a=m.latency||0)?void 0:a.toFixed(2),"ms"]})})]})]}),(0,n.jsx)(B.W,{}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(q,{title:"Request Details",icon:(0,n.jsx)(L.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(z,{className:"w-full",label:"Provider",value:i.oU[m.provider]}),(0,n.jsx)(z,{className:"w-full",label:"Model",value:m.model}),(0,n.jsx)(z,{className:"w-full",label:"Type",value:(0,n.jsx)("div",{className:"".concat(i.wf[m.object]," rounded-md px-3 py-1"),children:i.tJ[m.object]})}),m.params&&Object.keys(m.params).length>0&&Object.entries(m.params).filter(e=>{let[t]=e;return"tools"!==t}).filter(e=>{let[t,s]=e;return"boolean"==typeof s||"number"==typeof s||"string"==typeof s}).map(e=>{let[t,s]=e;return(0,n.jsx)(z,{className:"w-full",label:t,value:s},t)})]})]}),"success"===m.status&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(B.W,{}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(q,{title:"Tokens",icon:(0,n.jsx)(H.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(z,{className:"w-full",label:"Prompt Tokens",value:(null==(o=m.token_usage)?void 0:o.prompt_tokens)||"-"}),(0,n.jsx)(z,{className:"w-full",label:"Completion Tokens",value:(null==(r=m.token_usage)?void 0:r.completion_tokens)||"-"}),(0,n.jsx)(z,{className:"w-full",label:"Total Tokens",value:(null==(c=m.token_usage)?void 0:c.total_tokens)||"-"})]})]})]})]}),f&&(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Tool Choice"}),(0,n.jsx)(w,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:450,wrap:!0,code:f,lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})]}),g&&(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Tools"}),(0,n.jsx)(w,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:450,wrap:!0,code:g,lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})]}),(0,n.jsx)("div",{className:"mt-4 w-full text-center text-sm font-medium",children:"Conversation History"}),m.input_history&&m.input_history.map((e,t)=>(0,n.jsx)(F,{message:e},t)),"processing"!==m.status&&(0,n.jsxs)(n.Fragment,{children:[m.output_message&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"mt-4 w-full text-center text-sm font-medium",children:"Response"}),(0,n.jsx)(F,{message:m.output_message})]}),(null==(d=m.error_details)?void 0:d.error.message)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"mt-4 w-full text-center text-sm font-medium",children:"Error"}),(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Error"}),(0,n.jsx)("div",{className:"px-6 py-2 font-mono text-xs",children:m.error_details.error.message})]})]})]})]})})}let q=e=>{let{title:t,icon:s}=e;return(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsx)("div",{className:"text-sm font-medium",children:t})})};var R=s(6268),W=s(1032),D=s(8524),P=s(3904),K=s(4416),G=s(2355),J=s(3052),U=s(9852),Y=s(7924),X=s(5196),$=s(7740);function V(e){let{className:t,...s}=e;return(0,n.jsx)($.uB,{"data-slot":"command",className:(0,v.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",t),...s})}function Z(e){let{className:t,...s}=e;return(0,n.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,n.jsx)(Y.A,{className:"size-4 shrink-0 opacity-50"}),(0,n.jsx)($.uB.Input,{"data-slot":"command-input",className:(0,v.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t),...s})]})}function Q(e){let{className:t,...s}=e;return(0,n.jsx)($.uB.List,{"data-slot":"command-list",className:(0,v.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",t),...s})}function ee(e){let{...t}=e;return(0,n.jsx)($.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...t})}function et(e){let{className:t,...s}=e;return(0,n.jsx)($.uB.Group,{"data-slot":"command-group",className:(0,v.cn)("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",t),...s})}function es(e){let{className:t,...s}=e;return(0,n.jsx)($.uB.Item,{"data-slot":"command-item",className:(0,v.cn)("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}s(9840);var en=s(547);function ea(e){let{...t}=e;return(0,n.jsx)(en.bL,{"data-slot":"popover",...t})}function el(e){let{...t}=e;return(0,n.jsx)(en.l9,{"data-slot":"popover-trigger",...t})}function eo(e){let{className:t,align:s="center",sideOffset:a=4,...l}=e;return(0,n.jsx)(en.ZL,{children:(0,n.jsx)(en.UC,{"data-slot":"popover-content",align:s,sideOffset:a,className:(0,v.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",t),...l})})}let er={Status:i.f,Providers:i.xq,Type:i.mG};function ei(e){let{filters:t,onFiltersChange:s}=e,[a,l]=(0,g.useState)(!1),[r,c]=(0,g.useState)(t.content_search||""),d=(0,g.useRef)(void 0);(0,g.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]);let u=(0,g.useCallback)(e=>{c(e),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{s({...t,content_search:e})},500)},[t,s]),m=(e,n)=>{let a={Status:"status",Providers:"providers",Type:"objects"}[e],l=t[a]||[],o=l.includes(n)?l.filter(e=>e!==n):[...l,n];s({...t,[a]:o})},p=(e,s)=>{let n=t[({Status:"status",Providers:"providers",Type:"objects"})[e]];return Array.isArray(n)&&n.includes(s)},h=()=>Object.entries(t).reduce((e,t)=>{let[s,n]=t;return Array.isArray(n)?e+n.length:e+ +!!n},0);return(0,n.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,n.jsxs)("div",{className:"flex flex-1 items-center gap-2",children:[(0,n.jsx)(Y.A,{className:"size-5"}),(0,n.jsx)(U.p,{type:"text",className:"border-none shadow-none outline-none focus-visible:ring-0",placeholder:"Search logs",value:r,onChange:e=>u(e.target.value)})]}),(0,n.jsxs)(ea,{open:a,onOpenChange:l,children:[(0,n.jsx)(el,{asChild:!0,children:(0,n.jsxs)(o.$,{variant:"outline",size:"sm",className:"h-9",children:["Filters",h()>0&&(0,n.jsx)("span",{className:"bg-primary/10 flex h-6 w-6 items-center justify-center rounded-full text-xs font-normal",children:h()})]})}),(0,n.jsx)(eo,{className:"w-[200px] p-0",align:"end",children:(0,n.jsxs)(V,{children:[(0,n.jsx)(Z,{placeholder:"Search filters..."}),(0,n.jsxs)(Q,{children:[(0,n.jsx)(ee,{children:"No filters found."}),Object.entries(er).map(e=>{let[t,s]=e;return(0,n.jsx)(et,{heading:t,children:s.map(e=>{let s=p(t,e);return(0,n.jsxs)(es,{onSelect:()=>m(t,e),children:[(0,n.jsx)("div",{className:(0,v.cn)("border-primary mr-2 flex h-4 w-4 items-center justify-center rounded-sm border",s?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,n.jsx)(X.A,{className:"text-primary-foreground size-3"})}),(0,n.jsx)("span",{className:"lowercase",children:"Type"===t?i.tJ[e]:e})]},e)})},t)})]})]})})]})]})}function ec(e){let{columns:t,data:s,totalItems:a,loading:l=!1,filters:r,pagination:i,onFiltersChange:c,onPaginationChange:d,onRowClick:u,isSocketConnected:m}=e,[p,h]=(0,g.useState)([{id:i.sort_by,desc:"desc"===i.order}]),x=(0,R.N4)({data:s,columns:t,getCoreRowModel:(0,W.HT)(),manualPagination:!0,manualSorting:!0,manualFiltering:!0,pageCount:Math.ceil(a/i.limit),state:{sorting:p},onSortingChange:e=>{let t="function"==typeof e?e(p):e;if(h(t),t.length>0){let{id:e,desc:s}=t[0];d({...i,sort_by:e,order:s?"desc":"asc"})}}}),f=Math.floor(i.offset/i.limit)+1,j=Math.ceil(a/i.limit),v=i.offset+1,y=Math.min(i.offset+i.limit,a),N=e=>{let t=(e-1)*i.limit;d({...i,offset:t})};return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(ei,{filters:r,onFiltersChange:c}),(0,n.jsx)("div",{className:"rounded-md border",children:(0,n.jsxs)(D.XI,{children:[(0,n.jsx)(D.A0,{children:x.getHeaderGroups().map(e=>(0,n.jsx)(D.Hj,{children:e.headers.map(e=>(0,n.jsx)(D.nd,{children:e.isPlaceholder?null:(0,R.Kv)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,n.jsx)(D.BF,{children:l?(0,n.jsx)(D.Hj,{children:(0,n.jsx)(D.nA,{colSpan:t.length,className:"h-24 text-center",children:(0,n.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,n.jsx)(P.A,{className:"h-4 w-4 animate-spin"}),"Loading logs..."]})})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(D.Hj,{className:"hover:bg-transparent",children:(0,n.jsx)(D.nA,{colSpan:t.length,className:"h-12 text-center",children:(0,n.jsx)("div",{className:"flex items-center justify-center gap-2",children:m?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(P.A,{className:"h-4 w-4 animate-spin"}),"Listening for logs..."]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(K.A,{className:"h-4 w-4"}),"Not connected to socket, please refresh the page."]})})})}),x.getRowModel().rows.length?x.getRowModel().rows.map(e=>(0,n.jsx)(D.Hj,{className:"hover:bg-muted/50 h-12 cursor-pointer",onClick:()=>null==u?void 0:u(e.original),children:e.getVisibleCells().map(e=>(0,n.jsx)(D.nA,{children:(0,R.Kv)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,n.jsx)(D.Hj,{children:(0,n.jsx)(D.nA,{colSpan:t.length,className:"h-24 text-center",children:"No results found."})})]})})]})}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,n.jsxs)("div",{className:"text-muted-foreground flex items-center gap-2",children:[v.toLocaleString(),"-",y.toLocaleString()," of ",a.toLocaleString()," entries"]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(o.$,{variant:"outline",size:"sm",onClick:()=>N(f-1),disabled:1===f,children:(0,n.jsx)(G.A,{className:"size-3"})}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{children:"Page"}),(0,n.jsx)("span",{children:f}),(0,n.jsxs)("span",{children:["of ",j]})]}),(0,n.jsx)(o.$,{variant:"outline",size:"sm",onClick:()=>N(f+1),disabled:f===j,children:(0,n.jsx)(J.A,{className:"size-3"})})]})]})]})}var ed=s(8482),eu=s(6705),em=s(1886),ep=s(741),eh=s(646),ex=s(4186),eg=s(5448),ef=s(5339);function ej(){let[e,t]=(0,g.useState)([]),[s,l]=(0,g.useState)(0),[o,r]=(0,g.useState)(null),[i,c]=(0,g.useState)(!0),[u,m]=(0,g.useState)(!1),[p,h]=(0,g.useState)(null),[x,f]=(0,g.useState)(!1),[v,y]=(0,g.useState)(null),N=(0,g.useRef)(new Map),[b,w]=(0,g.useState)({providers:[],models:[],status:[],content_search:""}),[_,k]=(0,g.useState)({limit:50,offset:0,sort_by:"timestamp",order:"desc"}),C=(0,g.useCallback)((s,n)=>{if(x&&f(!1),"create"===n){if(0===_.offset&&"timestamp"===_.sort_by&&"desc"===_.order){if(!M(s,b))return;t(e=>{if(e.some(e=>e.id===s.id))return e;let t=[s,...e];return t.length>_.limit&&t.pop(),t}),y(e=>e&&e.id===s.id?s:e),l(e=>e+1),r(e=>{if(!e)return e;let t={...e};t.total_requests+=1;let n=e.success_rate/100*e.total_requests;return t.success_rate=("success"===s.status?n+1:n)/t.total_requests*100,s.latency&&(t.average_latency=(e.average_latency*e.total_requests+s.latency)/t.total_requests),s.token_usage&&(t.total_tokens+=s.token_usage.total_tokens),t})}}else if("update"===n)if(e.some(e=>e.id===s.id))if(s.stream){let e=N.current.get(s.id);e&&clearTimeout(e);let t=setTimeout(()=>{A(s),N.current.delete(s.id)},100);N.current.set(s.id,t)}else A(s);else 0===_.offset&&"timestamp"===_.sort_by&&"desc"===_.order&&M(s,b)&&t(e=>{if(e.some(e=>e.id===s.id))return e.map(e=>e.id===s.id?s:e);let t=[s,...e];return t.length>_.limit&&t.pop(),t})},[_.offset,_.sort_by,_.order,_.limit,b,x,e]),A=(0,g.useCallback)(e=>{t(t=>t.map(t=>t.id===e.id?e:t)),y(t=>t&&t.id===e.id?e:t),("success"===e.status||"error"===e.status)&&r(t=>{if(!t)return t;let s={...t},n=t.success_rate/100*t.total_requests;return s.success_rate=("success"===e.status?n+1:n)/s.total_requests*100,e.latency&&(s.average_latency=(t.average_latency*t.total_requests+e.latency)/s.total_requests),e.token_usage&&(s.total_tokens+=e.token_usage.total_tokens),s})},[]),{isConnected:L,setMessageHandler:H}=(0,eu.h)();(0,g.useEffect)(()=>{H(C)},[C,H]),(0,g.useEffect)(()=>()=>{N.current.forEach(e=>clearTimeout(e)),N.current.clear()},[]);let z=(0,g.useCallback)(async()=>{m(!0),h(null);try{let[e,s]=await em.K.getLogs(b,_);s?(h(s),t([]),l(0)):e&&(t(e.logs||[]),l(e.stats.total_requests),r(e.stats)),i&&f(!e||0===e.stats.total_requests)}catch(e){h("Cannot fetch logs. Please check if logs are enabled in your Bifrost config."),t([]),l(0),f(!0)}finally{m(!1)}},[b,_,i]);(0,g.useEffect)(()=>{i||z()},[z,i]),(0,g.useEffect)(()=>{z(),c(!1)},[]);let T=e=>"string"==typeof e?e:Array.isArray(e)?e.reduce((e,t)=>"text"===t.type&&t.text?e+t.text:e,""):"",M=(e,t)=>{var s,n,a;if((null==(s=t.providers)?void 0:s.length)&&!t.providers.includes(e.provider)||(null==(n=t.models)?void 0:n.length)&&!t.models.includes(e.model)||(null==(a=t.status)?void 0:a.length)&&!t.status.includes(e.status)||t.start_time&&new Date(e.timestamp)new Date(t.end_time)||t.min_latency&&(!e.latency||e.latencyt.max_latency)||t.min_tokens&&(!e.token_usage||e.token_usage.total_tokenst.max_tokens))return!1;if(t.content_search){let s=t.content_search.toLowerCase();if(![...(e.input_history||[]).map(e=>T(e.content)),e.output_message?T(e.output_message.content):""].join(" ").toLowerCase().includes(s))return!1}return!0},B=(0,g.useMemo)(()=>[{title:"Total Requests",value:(null==o?void 0:o.total_requests.toLocaleString())||"-",icon:(0,n.jsx)(ep.A,{className:"size-4"})},{title:"Success Rate",value:o?"".concat(o.success_rate.toFixed(2),"%"):"-",icon:(0,n.jsx)(eh.A,{className:"size-4"})},{title:"Avg Latency",value:o?"".concat(o.average_latency.toFixed(2),"ms"):"-",icon:(0,n.jsx)(ex.A,{className:"size-4"})},{title:"Total Tokens",value:(null==o?void 0:o.total_tokens.toLocaleString())||"-",icon:(0,n.jsx)(eg.A,{className:"size-4"})}],[o]),E=d();return(0,n.jsx)("div",{className:"bg-background",children:i?(0,n.jsx)(a.A,{}):x?(0,n.jsx)(S,{isSocketConnected:L,error:p}):(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"mb-2 text-3xl font-bold",children:"Request Logs"}),(0,n.jsx)("p",{className:"text-muted-foreground",children:"Monitor and analyze all API requests and responses"})]}),(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-4",children:B.map(e=>(0,n.jsx)(ed.Zp,{className:"py-4",children:(0,n.jsx)(ed.Wu,{className:"flex items-center justify-between px-4",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-muted-foreground text-xs",children:e.title}),(0,n.jsx)("div",{className:"text-2xl font-bold",children:e.value})]})})},e.title))}),p&&(0,n.jsxs)(j.Fc,{variant:"destructive",children:[(0,n.jsx)(ef.A,{className:"h-4 w-4"}),(0,n.jsx)(j.TN,{children:p})]}),(0,n.jsx)(ec,{columns:E,data:e,totalItems:s,loading:u,filters:b,pagination:_,onFiltersChange:w,onPaginationChange:k,onRowClick:y,isSocketConnected:L})]}),(0,n.jsx)(I,{log:v,open:null!==v,onOpenChange:e=>!e&&y(null)})]})})}}},e=>{var t=t=>e(e.s=t);e.O(0,[586,106,189,944,231,412,62,822,105,915,830,441,684,358],()=>t(2815)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/page-6e8e689326a7a90d.js b/transports/bifrost-http/ui/_next/static/chunks/app/page-6e8e689326a7a90d.js deleted file mode 100644 index 7846409c4c..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/app/page-6e8e689326a7a90d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{1085:(e,t,s)=>{"use strict";s.d(t,{Fm:()=>u,Qs:()=>p,cj:()=>r,h:()=>d,qp:()=>m});var n=s(5155);s(2115);var a=s(5452),l=s(4416),o=s(3999);function r(e){let{...t}=e;return(0,n.jsx)(a.bL,{"data-slot":"sheet",...t})}function i(e){let{...t}=e;return(0,n.jsx)(a.ZL,{"data-slot":"sheet-portal",...t})}function c(e){let{className:t,...s}=e;return(0,n.jsx)(a.hJ,{"data-slot":"sheet-overlay",className:(0,o.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s})}function d(e){let{className:t,children:s,side:r="right",...d}=e;return(0,n.jsxs)(i,{children:[(0,n.jsx)(c,{}),(0,n.jsxs)(a.UC,{"data-slot":"sheet-content",className:(0,o.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500","right"===r&&"data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm","left"===r&&"data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm","top"===r&&"data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b","bottom"===r&&"data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t",t),...d,children:[s,(0,n.jsxs)(a.bm,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-secondary absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,n.jsx)(l.A,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u(e){let{className:t,...s}=e;return(0,n.jsx)("div",{"data-slot":"sheet-header",className:(0,o.cn)("flex flex-col gap-1.5 p-4",t),...s})}function m(e){let{className:t,...s}=e;return(0,n.jsx)(a.hE,{"data-slot":"sheet-title",className:(0,o.cn)("text-foreground font-semibold",t),...s})}function p(e){let{className:t,...s}=e;return(0,n.jsx)(a.VY,{"data-slot":"sheet-description",className:(0,o.cn)("text-muted-foreground text-sm",t),...s})}},5196:(e,t,s)=>{Promise.resolve().then(s.bind(s,7406))},6037:(e,t,s)=>{"use strict";s.d(t,{W:()=>r,w:()=>o});var n=s(5155);s(2115);var a=s(7489),l=s(3999);function o(e){let{className:t,orientation:s="horizontal",decorative:o=!0,...r}=e;return(0,n.jsx)(a.b,{"data-slot":"separator",decorative:o,orientation:s,className:(0,l.cn)("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px",t),...r})}function r(e){let{className:t}=e;return(0,n.jsx)("div",{className:(0,l.cn)("border-border h-[1px] w-full border-t border-dashed bg-transparent",{["".concat(t)]:void 0!==t})})}},6705:(e,t,s)=>{"use strict";s.d(t,{WebSocketProvider:()=>c,h:()=>d});var n=s(5155),a=s(2115),l=s(2379);let o=(0,a.createContext)(null),r=null,i=null;function c(e){let{children:t,onMessage:s}=e,c=(0,a.useRef)(r),d=(0,a.useRef)(null),[u,m]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{let e=()=>{var t;if((null==(t=c.current)?void 0:t.readyState)===WebSocket.OPEN)return;let n=new WebSocket((0,l.$0)("/ws/logs"));c.current=n,r=n,n.onopen=()=>{console.log("WebSocket connected"),m(!0),d.current&&(clearTimeout(d.current),d.current=null)},n.onmessage=e=>{try{let t=JSON.parse(e.data);"log"===t.type&&(i?i(t.payload):s&&s(t.payload))}catch(e){console.error("Failed to parse WebSocket message:",e)}},n.onclose=()=>{console.log("WebSocket disconnected, attempting to reconnect..."),m(!1),d.current=setTimeout(e,5e3)},n.onerror=e=>{m(!1),n.close()}};return e(),()=>{d.current&&(clearTimeout(d.current),d.current=null)}},[s]),(0,n.jsx)(o.Provider,{value:{isConnected:u,ws:c,setMessageHandler:e=>{i=e}},children:t})}function d(){let e=(0,a.useContext)(o);if(!e)throw Error("useWebSocket must be used within a WebSocketProvider");return e}},7406:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>ey});var n=s(5155),a=s(2115),l=s(6268),o=s(1032),r=s(8524),i=s(7168),c=s(3904),d=s(4416),u=s(2355),m=s(3052),p=s(9852),h=s(7924),x=s(2815),g=s(7740),f=s(3999);function j(e){let{className:t,...s}=e;return(0,n.jsx)(g.uB,{"data-slot":"command",className:(0,f.cn)("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md",t),...s})}function v(e){let{className:t,...s}=e;return(0,n.jsxs)("div",{"data-slot":"command-input-wrapper",className:"flex h-9 items-center gap-2 border-b px-3",children:[(0,n.jsx)(h.A,{className:"size-4 shrink-0 opacity-50"}),(0,n.jsx)(g.uB.Input,{"data-slot":"command-input",className:(0,f.cn)("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50",t),...s})]})}function y(e){let{className:t,...s}=e;return(0,n.jsx)(g.uB.List,{"data-slot":"command-list",className:(0,f.cn)("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto",t),...s})}function N(e){let{...t}=e;return(0,n.jsx)(g.uB.Empty,{"data-slot":"command-empty",className:"py-6 text-center text-sm",...t})}function b(e){let{className:t,...s}=e;return(0,n.jsx)(g.uB.Group,{"data-slot":"command-group",className:(0,f.cn)("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium",t),...s})}function w(e){let{className:t,...s}=e;return(0,n.jsx)(g.uB.Item,{"data-slot":"command-item",className:(0,f.cn)("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}s(9840);var k=s(547);function _(e){let{...t}=e;return(0,n.jsx)(k.bL,{"data-slot":"popover",...t})}function S(e){let{...t}=e;return(0,n.jsx)(k.l9,{"data-slot":"popover-trigger",...t})}function A(e){let{className:t,align:s="center",sideOffset:a=4,...l}=e;return(0,n.jsx)(k.ZL,{children:(0,n.jsx)(k.UC,{"data-slot":"popover-content",align:s,sideOffset:a,className:(0,f.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 origin-(--radix-popover-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden",t),...l})})}var C=s(7783);let L={Status:C.f,Providers:C.xq,Type:C.mG};function H(e){let{filters:t,onFiltersChange:s}=e,[l,o]=(0,a.useState)(!1),[r,c]=(0,a.useState)(t.content_search||""),d=(0,a.useRef)(void 0);(0,a.useEffect)(()=>()=>{d.current&&clearTimeout(d.current)},[]);let u=(0,a.useCallback)(e=>{c(e),d.current&&clearTimeout(d.current),d.current=setTimeout(()=>{s({...t,content_search:e})},500)},[t,s]),m=(e,n)=>{let a={Status:"status",Providers:"providers",Type:"objects"}[e],l=t[a]||[],o=l.includes(n)?l.filter(e=>e!==n):[...l,n];s({...t,[a]:o})},g=(e,s)=>{let n=t[({Status:"status",Providers:"providers",Type:"objects"})[e]];return Array.isArray(n)&&n.includes(s)},k=()=>Object.entries(t).reduce((e,t)=>{let[s,n]=t;return Array.isArray(n)?e+n.length:e+ +!!n},0);return(0,n.jsxs)("div",{className:"flex items-center justify-between space-x-4",children:[(0,n.jsxs)("div",{className:"flex flex-1 items-center gap-2",children:[(0,n.jsx)(h.A,{className:"size-5"}),(0,n.jsx)(p.p,{type:"text",className:"border-none shadow-none outline-none focus-visible:ring-0",placeholder:"Search logs",value:r,onChange:e=>u(e.target.value)})]}),(0,n.jsxs)(_,{open:l,onOpenChange:o,children:[(0,n.jsx)(S,{asChild:!0,children:(0,n.jsxs)(i.$,{variant:"outline",size:"sm",className:"h-9",children:["Filters",k()>0&&(0,n.jsx)("span",{className:"bg-primary/10 flex h-6 w-6 items-center justify-center rounded-full text-xs font-normal",children:k()})]})}),(0,n.jsx)(A,{className:"w-[200px] p-0",align:"end",children:(0,n.jsxs)(j,{children:[(0,n.jsx)(v,{placeholder:"Search filters..."}),(0,n.jsxs)(y,{children:[(0,n.jsx)(N,{children:"No filters found."}),Object.entries(L).map(e=>{let[t,s]=e;return(0,n.jsx)(b,{heading:t,children:s.map(e=>{let s=g(t,e);return(0,n.jsxs)(w,{onSelect:()=>m(t,e),children:[(0,n.jsx)("div",{className:(0,f.cn)("border-primary mr-2 flex h-4 w-4 items-center justify-center rounded-sm border",s?"bg-primary text-primary-foreground":"opacity-50 [&_svg]:invisible"),children:(0,n.jsx)(x.A,{className:"text-primary-foreground size-3"})}),(0,n.jsx)("span",{children:e})]},e)})},t)})]})]})})]})]})}function z(e){let{columns:t,data:s,totalItems:p,loading:h=!1,filters:x,pagination:g,onFiltersChange:f,onPaginationChange:j,onRowClick:v,isSocketConnected:y}=e,[N,b]=(0,a.useState)([{id:g.sort_by,desc:"desc"===g.order}]),w=(0,l.N4)({data:s,columns:t,getCoreRowModel:(0,o.HT)(),manualPagination:!0,manualSorting:!0,manualFiltering:!0,pageCount:Math.ceil(p/g.limit),state:{sorting:N},onSortingChange:e=>{let t="function"==typeof e?e(N):e;if(b(t),t.length>0){let{id:e,desc:s}=t[0];j({...g,sort_by:e,order:s?"desc":"asc"})}}}),k=Math.floor(g.offset/g.limit)+1,_=Math.ceil(p/g.limit),S=g.offset+1,A=Math.min(g.offset+g.limit,p),C=e=>{let t=(e-1)*g.limit;j({...g,offset:t})};return(0,n.jsxs)("div",{className:"space-y-2",children:[(0,n.jsx)(H,{filters:x,onFiltersChange:f}),(0,n.jsx)("div",{className:"rounded-md border",children:(0,n.jsxs)(r.XI,{children:[(0,n.jsx)(r.A0,{children:w.getHeaderGroups().map(e=>(0,n.jsx)(r.Hj,{children:e.headers.map(e=>(0,n.jsx)(r.nd,{children:e.isPlaceholder?null:(0,l.Kv)(e.column.columnDef.header,e.getContext())},e.id))},e.id))}),(0,n.jsx)(r.BF,{children:h?(0,n.jsx)(r.Hj,{children:(0,n.jsx)(r.nA,{colSpan:t.length,className:"h-24 text-center",children:(0,n.jsxs)("div",{className:"flex items-center justify-center gap-2",children:[(0,n.jsx)(c.A,{className:"h-4 w-4 animate-spin"}),"Loading logs..."]})})}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.Hj,{className:"hover:bg-transparent",children:(0,n.jsx)(r.nA,{colSpan:t.length,className:"h-12 text-center",children:(0,n.jsx)("div",{className:"flex items-center justify-center gap-2",children:y?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.A,{className:"h-4 w-4 animate-spin"}),"Listening for logs..."]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.A,{className:"h-4 w-4"}),"Not connected to socket, please refresh the page."]})})})}),w.getRowModel().rows.length?w.getRowModel().rows.map(e=>(0,n.jsx)(r.Hj,{className:"hover:bg-muted/50 cursor-pointer",onClick:()=>null==v?void 0:v(e.original),children:e.getVisibleCells().map(e=>(0,n.jsx)(r.nA,{children:(0,l.Kv)(e.column.columnDef.cell,e.getContext())},e.id))},e.id)):(0,n.jsx)(r.Hj,{children:(0,n.jsx)(r.nA,{colSpan:t.length,className:"h-24 text-center",children:"No results found."})})]})})]})}),(0,n.jsxs)("div",{className:"flex items-center justify-between text-xs",children:[(0,n.jsxs)("div",{className:"text-muted-foreground flex items-center gap-2",children:[S.toLocaleString(),"-",A.toLocaleString()," of ",p.toLocaleString()," entries"]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>C(k-1),disabled:1===k,children:(0,n.jsx)(u.A,{className:"size-3"})}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{children:"Page"}),(0,n.jsx)("span",{children:k}),(0,n.jsxs)("span",{children:["of ",_]})]}),(0,n.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>C(k+1),disabled:k===_,children:(0,n.jsx)(m.A,{className:"size-3"})})]})]})]})}var M=s(8145),T=s(1085),B=s(6561),I=s(7434),O=s(5868);function E(e){if(null===e.value)return null;let t=e.orientation||"vertical";return(0,n.jsx)("div",{className:(0,f.cn)("items-top flex flex-col gap-2",{["".concat(e.className)]:void 0!==e.className,"items-start":"left"===e.align||void 0===e.align,"items-end":"right"===e.align}),children:(0,n.jsxs)("div",{className:e.containerClassName,children:[""!==e.label&&(0,n.jsx)("div",{className:"text-muted-foreground flex shrink-0 flex-row items-center gap-2 text-xs font-medium",children:e.label.toUpperCase()}),(0,n.jsx)("div",{className:(0,f.cn)("text-md flex text-xs font-medium whitespace-nowrap transition-transform delay-75",{"w-full flex-col items-center gap-2":"horizontal"===t,"flex-row items-start gap-2":"vertical"===t,["".concat(e.valueClassName)]:void 0!==e.valueClassName,"text-end":"right"===e.align}),children:e.value})]})})}var q=s(2940),R=s.n(q),W=s(6037),P=s(1154),F=s(1362);let D=(0,s(5028).default)(()=>s.e(364).then(s.bind(s,1364)).then(e=>e.default),{loadableGenerated:{webpack:()=>[1364]},ssr:!1,loading:()=>(0,n.jsx)(P.A,{className:"h-4 w-4 animate-spin p-4"})});function K(e){var t,s,l,o,r,i,c,d,u,m,p,h,x,g,j,v;let{className:y,lang:N,code:b,onChange:w,height:k,minHeight:_}=e,S=(0,a.useRef)(null),[A,C]=(0,a.useState)(!1),[L,H]=(0,a.useState)(e.height||e.minHeight||200);(0,a.useEffect)(()=>{C(!0)},[]);let{theme:z,systemTheme:M}=(0,F.D)(),T={lineNumbers:(null==(t=e.options)?void 0:t.lineNumbers)||"off",readOnly:e.readonly,scrollBeyondLastLine:null!=(p=null==(s=e.options)?void 0:s.scrollBeyondLastLine)&&p,minimap:{enabled:!1},contextmenu:!1,fontFamily:"var(--font-geist-mono)",fontSize:e.fontSize||12.5,padding:{top:2,bottom:2},wordWrap:e.wrap?"on":"off",folding:null!=(h=null==(l=e.options)?void 0:l.collapsibleBlocks)&&h,glyphMargin:!1,lineNumbersMinChars:null!=(x=null==(o=e.options)?void 0:o.lineNumbersMinChars)?x:4,overviewRulerLanes:null!=(g=null==(r=e.options)?void 0:r.overviewRulerLanes)?g:0,renderLineHighlight:"none",cursorStyle:"line",cursorBlinking:"smooth",scrollbar:{vertical:(null==(i=e.options)?void 0:i.showVerticalScrollbar)?"auto":"hidden",horizontal:(null==(c=e.options)?void 0:c.showHorizontalScrollbar)?"auto":"hidden",alwaysConsumeMouseWheel:null!=(j=null==(d=e.options)?void 0:d.alwaysConsumeMouseWheel)&&j},guides:{indentation:null==(v=null==(u=e.options)?void 0:u.showIndentLines)||v},hover:{enabled:!(null==(m=e.options)?void 0:m.disableHover)},wordBasedSuggestions:"off",...e.options};return A?(0,n.jsx)("div",{id:e.id,ref:S,className:(0,f.cn)("group relative h-full w-full",e.containerClassName),onBlur:e.onBlur,children:(0,n.jsx)(D,{height:L,width:e.width,language:N||"javascript",value:b||"",theme:"dark"===z||"system"===z&&"dark"===M?"custom-dark":"light",options:T,loading:(0,n.jsx)(P.A,{className:"h-4 w-4 animate-spin"}),onChange:e=>{w&&w(e||"")},onMount:(t,s)=>{if(e.autoFocus&&t.focus(),e.shouldAdjustInitialHeight||e.autoResize){let s=()=>{try{let s=t.getContentHeight();e.minHeight&&se.maxHeight&&(s=e.maxHeight),H(s+15),t.layout()}catch(e){console.warn("Error updating editor height:",e)}};if(setTimeout(s,100),e.autoResize){let e=t.getModel();e&&e.onDidChangeContent(()=>{requestAnimationFrame(s)})}}if(e.autoFormat)try{var n;null==(n=t.getAction("editor.action.formatDocument"))||n.run()}catch(e){console.warn("Auto-format failed:",e)}},className:(0,f.cn)("code text-md w-full bg-transparent ring-offset-transparent outline-none",y),beforeMount:e=>{window.MonacoEnvironment={getWorker:()=>({postMessage:()=>{},terminate:()=>{},addEventListener:()=>{},removeEventListener:()=>{},dispatchEvent:()=>!1,onerror:null,onmessage:null,onmessageerror:null})},e.editor.defineTheme("custom-dark",{base:"vs-dark",inherit:!0,rules:[],colors:{"editor.background":"#00000000",focusBorder:"#00000000","editor.lineHighlightBorder":"#00000000","editor.selectionHighlightBorder":"#00000000","editorWidget.border":"#00000000","editorOverviewRuler.border":"#00000000"}})}})}):(0,n.jsx)("div",{className:(0,f.cn)("group relative flex h-24 w-full items-center justify-center",e.containerClassName),children:(0,n.jsx)(P.A,{className:"h-4 w-4 animate-spin"})})}let G=e=>{try{return JSON.parse(e),!0}catch(e){return!1}},J=e=>{try{return JSON.parse(e)}catch(t){return e}};function U(e){let{message:t}=e;return(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium capitalize",children:t.role}),"string"==typeof t.content&&t.content.length>0&&!G(t.content)?(0,n.jsx)("div",{className:"px-6 py-2 font-mono text-xs",children:t.content}):t.content.length>0&&(0,n.jsx)(K,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:250,wrap:!0,code:JSON.stringify(J(t.content),null,2),lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}}),t.tool_calls&&t.tool_calls.length>0&&(0,n.jsx)("div",{className:"border-b last:border-b-0",children:(0,n.jsx)(K,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:150,wrap:!0,code:JSON.stringify(J(t.tool_calls),null,2),lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})})]})}function Y(e){var t,s,a,l,o,r,i,c;let{log:d,open:u,onOpenChange:m}=e;if(!d)return null;d.latency;let p=d.token_usage;p&&(p.completion_tokens,p.total_tokens),p&&(p.prompt_tokens,p.completion_tokens,p.prompt_tokens,p.completion_tokens);let h=null;if(null==(t=d.params)?void 0:t.tools)try{h=JSON.stringify(d.params.tools,null,2)}catch(e){}let x=null;if(null==(s=d.params)?void 0:s.tool_choice)try{x=JSON.stringify(d.params.tool_choice,null,2)}catch(e){}return(0,n.jsx)(T.cj,{open:u,onOpenChange:m,children:(0,n.jsxs)(T.h,{className:"flex w-full flex-col overflow-x-hidden p-8 sm:max-w-2xl",children:[(0,n.jsx)(T.Fm,{className:"px-0",children:(0,n.jsxs)(T.qp,{className:"flex w-fit items-center gap-2 font-medium",children:["success"===d.status&&(0,n.jsxs)("p",{className:"text-md max-w-full truncate",children:["Request ID: ",d.id]}),(0,n.jsx)(M.E,{variant:"outline",className:C.Ez[d.status],children:d.status})]})}),(0,n.jsxs)("div",{className:"space-y-4 rounded-sm border px-6 py-4",children:[(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(X,{title:"Timings",icon:(0,n.jsx)(B.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(E,{className:"w-full",label:"Start Timestamp",value:R()(d.timestamp).format("YYYY-MM-DD HH:mm:ss A")}),(0,n.jsx)(E,{className:"w-full",label:"End Timestamp",value:R()(d.timestamp).add(d.latency||0,"ms").format("YYYY-MM-DD HH:mm:ss A")}),(0,n.jsx)(E,{className:"w-full",label:"Latency",value:isNaN(d.latency||0)?"NA":(0,n.jsxs)("div",{children:[null==(a=d.latency||0)?void 0:a.toFixed(2),"ms"]})})]})]}),(0,n.jsx)(W.W,{}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(X,{title:"Request Details",icon:(0,n.jsx)(I.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(E,{className:"w-full",label:"Provider",value:C.oU[d.provider]}),(0,n.jsx)(E,{className:"w-full",label:"Model",value:d.model}),(0,n.jsx)(E,{className:"w-full",label:"Type",value:(0,n.jsx)("div",{className:"".concat(C.wf[d.object]," rounded-md px-3 py-1"),children:C.tJ[d.object]})}),d.params&&Object.keys(d.params).length>0&&Object.entries(d.params).filter(e=>{let[t]=e;return"tools"!==t}).filter(e=>{let[t,s]=e;return"boolean"==typeof s||"number"==typeof s||"string"==typeof s}).map(e=>{let[t,s]=e;return(0,n.jsx)(E,{className:"w-full",label:t,value:s},t)})]})]}),"success"===d.status&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(W.W,{}),(0,n.jsxs)("div",{className:"space-y-4",children:[(0,n.jsx)(X,{title:"Tokens",icon:(0,n.jsx)(O.A,{className:"h-5 w-5 text-gray-600"})}),(0,n.jsxs)("div",{className:"grid w-full grid-cols-3 items-center justify-between gap-4",children:[(0,n.jsx)(E,{className:"w-full",label:"Prompt Tokens",value:null==(l=d.token_usage)?void 0:l.prompt_tokens}),(0,n.jsx)(E,{className:"w-full",label:"Completion Tokens",value:null==(o=d.token_usage)?void 0:o.completion_tokens}),(0,n.jsx)(E,{className:"w-full",label:"Total Tokens",value:null==(r=d.token_usage)?void 0:r.total_tokens})]})]})]})]}),x&&(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Tool Choice"}),(0,n.jsx)(K,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:450,wrap:!0,code:x,lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})]}),h&&(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Tools"}),(0,n.jsx)(K,{className:"z-0 w-full",shouldAdjustInitialHeight:!0,maxHeight:450,wrap:!0,code:h,lang:"json",readonly:!0,options:{scrollBeyondLastLine:!1,collapsibleBlocks:!0,lineNumbers:"off",alwaysConsumeMouseWheel:!1}})]}),(0,n.jsx)("div",{className:"mt-4 w-full text-center text-sm font-medium",children:"Conversation History"}),d.input_history&&d.input_history.map(e=>(0,n.jsx)(U,{message:e},e.content.toString())),(0,n.jsx)("div",{className:"mt-4 w-full text-center text-sm font-medium",children:"Response"}),"success"===d.status?d.output_message&&(0,n.jsx)(U,{message:d.output_message}):(0,n.jsxs)("div",{className:"w-full rounded-sm border",children:[(0,n.jsx)("div",{className:"border-b px-6 py-2 text-sm font-medium",children:"Error"}),(0,n.jsx)("div",{className:"px-6 py-2 font-mono text-xs",children:null==(i=d.error_details)?void 0:i.error.message})]})]})})}let X=e=>{let{title:t,icon:s}=e;return(0,n.jsx)("div",{className:"flex items-center gap-2",children:(0,n.jsx)("div",{className:"text-sm font-medium",children:t})})};var $=s(1492),V=s(4432);let Z=()=>[{accessorKey:"timestamp",header:e=>{let{column:t}=e;return(0,n.jsxs)(i.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Time",(0,n.jsx)($.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.timestamp;return(0,n.jsx)("div",{className:"font-mono text-sm",children:new Date(s).toLocaleString()})}},{accessorKey:"provider",header:"Provider",cell:e=>{let{row:t}=e,s=t.original.provider;return(0,n.jsxs)(M.E,{variant:"secondary",className:"uppercase",children:[(0,V.FO)(s,{size:"sm"}),s]})}},{accessorKey:"model",header:"Model",cell:e=>{let{row:t}=e;return(0,n.jsx)("div",{className:"max-w-[240px] truncate text-sm font-medium",children:t.original.model})}},{accessorKey:"status",header:"Status",cell:e=>{let{row:t}=e,s=t.original.status;return(0,n.jsx)(M.E,{variant:"secondary",className:C.Ez[s],children:s})}},{accessorKey:"latency",header:e=>{let{column:t}=e;return(0,n.jsxs)(i.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Latency",(0,n.jsx)($.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.latency;return(0,n.jsx)("div",{className:"font-mono text-sm",children:s?"".concat(s.toLocaleString(),"ms"):"N/A"})}},{accessorKey:"token_usage.total_tokens",header:e=>{let{column:t}=e;return(0,n.jsxs)(i.$,{variant:"ghost",onClick:()=>t.toggleSorting("asc"===t.getIsSorted()),children:["Tokens",(0,n.jsx)($.A,{className:"ml-2 h-4 w-4"})]})},cell:e=>{let{row:t}=e,s=t.original.token_usage;return s?(0,n.jsxs)("div",{className:"text-sm",children:[(0,n.jsx)("div",{className:"font-mono",children:s.total_tokens.toLocaleString()}),(0,n.jsxs)("div",{className:"text-muted-foreground text-xs",children:[s.prompt_tokens,"+",s.completion_tokens]})]}):(0,n.jsx)("div",{className:"font-mono text-sm",children:"N/A"})}},{id:"request_type",header:"Type",cell:e=>{let{row:t}=e;return(0,n.jsx)(M.E,{variant:"outline",className:"".concat(C.wf[t.original.object]," text-xs"),children:C.tJ[t.original.object]})}}];var Q=s(1886),ee=s(8482),et=s(9026),es=s(741),en=s(646),ea=s(4186),el=s(5448),eo=s(5339),er=s(6705),ei=s(4964),ec=s(4357),ed=s(1243),eu=s(2138),em=s(6671),ep=s(5784),eh=s(2379);let ex={scrollBeyondLastLine:!1,minimap:{enabled:!1},lineNumbers:"off",folding:!1,lineDecorationsWidth:0,lineNumbersMinChars:0,glyphMargin:!1};function eg(e){let{code:t,language:s,onLanguageChange:a,showLanguageSelect:l=!1,readonly:o=!0}=e;return(0,n.jsxs)("div",{className:"relative",children:[(0,n.jsxs)("div",{className:"absolute top-4 right-4 z-10 flex items-center gap-2",children:[l&&a&&(0,n.jsxs)(ep.l6,{value:s,onValueChange:a,children:[(0,n.jsx)(ep.bq,{className:"h-8 w-fit text-xs",children:(0,n.jsx)(ep.yv,{})}),(0,n.jsxs)(ep.gC,{children:[(0,n.jsx)(ep.eb,{className:"text-xs",value:"python",children:"Python"}),(0,n.jsx)(ep.eb,{className:"text-xs",value:"typescript",children:"TypeScript"})]})]}),(0,n.jsx)(i.$,{variant:"ghost",size:"icon",onClick:()=>{navigator.clipboard.writeText(t),em.o.success("Copied to clipboard")},children:(0,n.jsx)(ec.A,{className:"size-4"})})]}),(0,n.jsx)(K,{className:"w-full",code:t,lang:s,readonly:o,height:300,fontSize:14,options:ex})]})}let ef=[{title:"What You'll See Here",description:"Real-time request logs from all your API calls",features:["Real-time request logs from all your API calls","Comprehensive request and error details","Token usage, latency, and cost metrics","Advanced filtering and search capabilities"]},{title:"Getting Started",description:"Use the examples below to get started",features:["Choose an example from below","Set Bifrost as your API endpoint","Send a test request","Monitor the response in real-time"]}];function ej(e){let{isSocketConnected:t,error:s}=e,[l,o]=(0,a.useState)("python"),r=(0,a.useMemo)(()=>{let e=(0,eh.XO)();return{curl:"curl -X POST ".concat(e,'/v1/chat/completions \\\n -H "Content-Type: application/json" \\\n -d \'{\n "model": "openai/gpt-4o-mini",\n "messages": [\n {"role": "user", "content": "Hello!"}\n ]\n }\''),sdk:{openai:{python:'import openai\n\nclient = openai.OpenAI(\n base_url="'.concat(e,'/openai",\n api_key="dummy-api-key" # Handled by Bifrost\n)\n\nresponse = client.chat.completions.create(\n model="gpt-4o-mini", # or "provider/model" for other providers (anthropic/claude-3-sonnet)\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import OpenAI from "openai";\n\nconst openai = new OpenAI({\n baseURL: "'.concat(e,'/openai",\n apiKey: "dummy-api-key", // Handled by Bifrost\n});\n\nconst response = await openai.chat.completions.create({\n model: "gpt-4o-mini", // or "provider/model" for other providers (anthropic/claude-3-sonnet)\n messages: [{ role: "user", content: "Hello!" }],\n});')},anthropic:{python:'import anthropic\n\nclient = anthropic.Anthropic(\n base_url="'.concat(e,'/anthropic",\n api_key="dummy-api-key" # Handled by Bifrost\n)\n\nresponse = client.messages.create(\n model="claude-3-sonnet-20240229", # or "provider/model" for other providers (openai/gpt-4o-mini)\n max_tokens=1000,\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import Anthropic from "@anthropic-ai/sdk";\n\nconst anthropic = new Anthropic({\n baseURL: "'.concat(e,'/anthropic",\n apiKey: "dummy-api-key", // Handled by Bifrost\n});\n\nconst response = await anthropic.messages.create({\n model: "claude-3-sonnet-20240229", // or "provider/model" for other providers (openai/gpt-4o-mini)\n max_tokens: 1000,\n messages: [{ role: "user", content: "Hello!" }],\n});')},genai:{python:'from google import genai\nfrom google.genai.types import HttpOptions\n\nclient = genai.Client(\n api_key="dummy-api-key", # Handled by Bifrost\n http_options=HttpOptions(base_url="'.concat(e,'/genai")\n)\n\nresponse = client.models.generate_content(\n model="gemini-2.5-pro", # or "provider/model" for other providers (openai/gpt-4o-mini)\n contents="Hello!"\n)'),typescript:'import { GoogleGenerativeAI } from "@google/generative-ai";\n\nconst genAI = new GoogleGenerativeAI("dummy-api-key", { // Handled by Bifrost\n baseUrl: "'.concat(e,'/genai",\n});\n\nconst model = genAI.getGenerativeModel({ model: "gemini-2.5-pro" }); // or "provider/model" for other providers (openai/gpt-4o-mini)\nconst response = await model.generateContent("Hello!");')},litellm:{python:'import litellm\n\nlitellm.api_base = "'.concat(e,'/litellm"\n\nresponse = litellm.completion(\n model="openai/gpt-4o-mini",\n messages=[{"role": "user", "content": "Hello!"}]\n)'),typescript:'import { completion } from "litellm";\n\nconst response = await completion({\n model: "openai/gpt-4o-mini",\n messages: [{ role: "user", content: "Hello!" }],\n api_base: "'.concat(e,'/litellm",\n});')}}}},[]);return(0,n.jsxs)("div",{className:"flex w-full flex-col items-center justify-center space-y-8",children:[(0,n.jsxs)("div",{className:"space-y-2 text-center",children:[(0,n.jsx)("h2",{className:"text-3xl font-bold",children:"Welcome to Request Logs"}),(0,n.jsx)("p",{className:"text-muted-foreground text-lg",children:"Monitor and analyze all your API requests in real-time"})]}),t&&(0,n.jsxs)("div",{className:"flex items-center justify-center gap-2 text-sm",children:[(0,n.jsx)(c.A,{className:"h-4 w-4 animate-spin"}),(0,n.jsx)("span",{children:"Listening for logs..."})]}),s&&(0,n.jsxs)(et.Fc,{children:[(0,n.jsx)(ed.A,{className:"h-4 w-4"}),(0,n.jsx)(et.TN,{children:s})]}),(0,n.jsx)("div",{className:"grid w-full grid-cols-1 gap-6 md:grid-cols-2",children:ef.map(e=>(0,n.jsxs)(ee.Zp,{className:"p-6",children:[(0,n.jsx)("h3",{className:"text-lg font-semibold",children:e.title}),(0,n.jsx)("p",{className:"text-muted-foreground",children:e.description}),(0,n.jsx)("ul",{className:"text-muted-foreground space-y-3",children:e.features.map(e=>(0,n.jsxs)("li",{className:"flex items-start gap-2",children:[(0,n.jsx)(eu.A,{className:"mt-0.5 h-5 w-5 shrink-0"}),(0,n.jsx)("span",{children:e})]},e))})]},e.title))}),(0,n.jsxs)("div",{className:"w-full space-y-6",children:[(0,n.jsxs)("div",{className:"",children:[(0,n.jsx)("h3",{className:"text-xl font-semibold",children:"Integration Examples"}),(0,n.jsx)("p",{className:"text-muted-foreground",children:"Send your first request to get started"})]}),(0,n.jsxs)(ei.tU,{defaultValue:"curl",className:"w-full",children:[(0,n.jsxs)(ei.j7,{className:"grid h-10 w-full grid-cols-5",children:[(0,n.jsx)(ei.Xi,{value:"curl",children:"cURL"}),(0,n.jsx)(ei.Xi,{value:"openai",children:"OpenAI SDK"}),(0,n.jsx)(ei.Xi,{value:"anthropic",children:"Anthropic SDK"}),(0,n.jsx)(ei.Xi,{value:"genai",children:"Google GenAI SDK"}),(0,n.jsx)(ei.Xi,{value:"litellm",children:"LiteLLM SDK"})]}),(0,n.jsx)(ei.av,{value:"curl",className:"mt-4",children:(0,n.jsx)(eg,{code:r.curl,language:"bash",readonly:!1})}),(0,n.jsx)(ei.av,{value:"openai",className:"mt-4",children:(0,n.jsx)(eg,{code:r.sdk.openai[l],language:l,onLanguageChange:e=>o(e),showLanguageSelect:!0})}),(0,n.jsx)(ei.av,{value:"anthropic",className:"mt-4",children:(0,n.jsx)(eg,{code:r.sdk.anthropic[l],language:l,onLanguageChange:e=>o(e),showLanguageSelect:!0})}),(0,n.jsx)(ei.av,{value:"genai",className:"mt-4",children:(0,n.jsx)(eg,{code:r.sdk.genai[l],language:l,onLanguageChange:e=>o(e),showLanguageSelect:!0})}),(0,n.jsx)(ei.av,{value:"litellm",className:"mt-4",children:(0,n.jsx)(eg,{code:r.sdk.litellm[l],language:l,onLanguageChange:e=>o(e),showLanguageSelect:!0})})]})]})]})}var ev=s(2384);function ey(){let[e,t]=(0,a.useState)([]),[s,l]=(0,a.useState)(0),[o,r]=(0,a.useState)(null),[i,c]=(0,a.useState)(!0),[d,u]=(0,a.useState)(!1),[m,p]=(0,a.useState)(null),[h,x]=(0,a.useState)(!1),[g,f]=(0,a.useState)(null),[j,v]=(0,a.useState)({providers:[],models:[],status:[],content_search:""}),[y,N]=(0,a.useState)({limit:50,offset:0,sort_by:"timestamp",order:"desc"}),b=(0,a.useCallback)(e=>{h&&x(!1),0===y.offset&&"timestamp"===y.sort_by&&"desc"===y.order&&A(e,j)&&(t(t=>{let s=[e,...t];return s.length>y.limit&&s.pop(),s}),l(e=>e+1),r(t=>{if(!t)return t;let s={...t};s.total_requests+=1;let n=t.success_rate/100*t.total_requests;return s.success_rate=("success"===e.status?n+1:n)/s.total_requests*100,e.latency&&(s.average_latency=(t.average_latency*t.total_requests+e.latency)/s.total_requests),e.token_usage&&(s.total_tokens+=e.token_usage.total_tokens),s}))},[y.offset,y.sort_by,y.order,y.limit,j,h]),{isConnected:w,setMessageHandler:k}=(0,er.h)();(0,a.useEffect)(()=>{k(b)},[b,k]);let _=(0,a.useCallback)(async()=>{u(!0),p(null);try{let[e,s]=await Q.K.getLogs(j,y);s?(p(s),t([]),l(0)):e&&(t(e.logs||[]),l(e.stats.total_requests),r(e.stats)),i&&x(!e||0===e.stats.total_requests)}catch(e){p("Cannot fetch logs. Please check if logs are enabled in your Bifrost config."),t([]),l(0),x(!0)}finally{u(!1)}},[j,y,i]);(0,a.useEffect)(()=>{i||_()},[_,i]),(0,a.useEffect)(()=>{_(),c(!1)},[]);let S=e=>"string"==typeof e?e:Array.isArray(e)?e.reduce((e,t)=>"text"===t.type&&t.text?e+t.text:e,""):"",A=(e,t)=>{var s,n,a;if((null==(s=t.providers)?void 0:s.length)&&!t.providers.includes(e.provider)||(null==(n=t.models)?void 0:n.length)&&!t.models.includes(e.model)||(null==(a=t.status)?void 0:a.length)&&!t.status.includes(e.status)||t.start_time&&new Date(e.timestamp)new Date(t.end_time)||t.min_latency&&(!e.latency||e.latencyt.max_latency)||t.min_tokens&&(!e.token_usage||e.token_usage.total_tokenst.max_tokens))return!1;if(t.content_search){let s=t.content_search.toLowerCase();if(![...(e.input_history||[]).map(e=>S(e.content)),e.output_message?S(e.output_message.content):""].join(" ").toLowerCase().includes(s))return!1}return!0},C=(0,a.useMemo)(()=>[{title:"Total Requests",value:(null==o?void 0:o.total_requests.toLocaleString())||"-",icon:(0,n.jsx)(es.A,{className:"size-4"})},{title:"Success Rate",value:o?"".concat(o.success_rate.toFixed(2),"%"):"-",icon:(0,n.jsx)(en.A,{className:"size-4"})},{title:"Avg Latency",value:o?"".concat(o.average_latency.toFixed(2),"ms"):"-",icon:(0,n.jsx)(ea.A,{className:"size-4"})},{title:"Total Tokens",value:(null==o?void 0:o.total_tokens.toLocaleString())||"-",icon:(0,n.jsx)(el.A,{className:"size-4"})}],[o]),L=Z();return(0,n.jsx)("div",{className:"bg-background",children:i?(0,n.jsx)(ev.A,{}):h?(0,n.jsx)(ej,{isSocketConnected:w,error:m}):(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsxs)("div",{children:[(0,n.jsx)("h1",{className:"mb-2 text-3xl font-bold",children:"Request Logs"}),(0,n.jsx)("p",{className:"text-muted-foreground",children:"Monitor and analyze all API requests and responses"})]}),(0,n.jsxs)("div",{className:"space-y-6",children:[(0,n.jsx)("div",{className:"grid grid-cols-1 gap-4 md:grid-cols-4",children:C.map(e=>(0,n.jsx)(ee.Zp,{className:"py-4",children:(0,n.jsx)(ee.Wu,{className:"flex items-center justify-between px-4",children:(0,n.jsxs)("div",{children:[(0,n.jsx)("div",{className:"text-muted-foreground text-xs",children:e.title}),(0,n.jsx)("div",{className:"text-2xl font-bold",children:e.value})]})})},e.title))}),m&&(0,n.jsxs)(et.Fc,{variant:"destructive",children:[(0,n.jsx)(eo.A,{className:"h-4 w-4"}),(0,n.jsx)(et.TN,{children:m})]}),(0,n.jsx)(z,{columns:L,data:e,totalItems:s,loading:d,filters:j,pagination:y,onFiltersChange:v,onPaginationChange:N,onRowClick:f,isSocketConnected:w})]}),(0,n.jsx)(Y,{log:g,open:null!==g,onOpenChange:e=>!e&&f(null)})]})})}}},e=>{var t=t=>e(e.s=t);e.O(0,[586,146,617,452,272,0,441,684,358],()=>t(5196)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-a4e9578519dd85c5.js b/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-a4e9578519dd85c5.js new file mode 100644 index 0000000000..30979d4619 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-a4e9578519dd85c5.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[153],{659:(e,t,s)=>{Promise.resolve().then(s.bind(s,4179))},1284:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(9946).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1539:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(9946).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},3052:(e,t,s)=>{"use strict";s.d(t,{A:()=>r});let r=(0,s(9946).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},3999:(e,t,s)=>{"use strict";s.d(t,{cn:()=>i});var r=s(2596),a=s(9688);function i(){for(var e=arguments.length,t=Array(e),s=0;s{"use strict";s.r(t),s.d(t,{default:()=>M});var r=s(5155),a=s(9026),i=s(8145),n=s(7168),l=s(8482),c=s(3999);let d=function(e){let{title:t,className:s}=e;return(0,r.jsx)("div",{className:(0,c.cn)("from-primary bg-gradient-to-r to-green-600 bg-clip-text pb-2 text-5xl font-bold text-transparent",s),children:t})};var o=s(4964),m=s(1450),x=s(9946);let u=(0,x.A)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),p=(0,x.A)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),g=(0,x.A)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),h=(0,x.A)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]]);var b=s(1539),v=s(7520),f=s(1243),j=s(3052);let N=(0,x.A)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]),y=(0,x.A)("container",[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]]);var k=s(1284);let w=(0,x.A)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);var A=s(1362),P=s(6766),T=s(6874),z=s.n(T);let _=[{name:"maxim",displayName:"Maxim Logger",description:"Advanced LLM observability, tracing, and analytics platform integration",category:"Observability",status:"production",httpSupport:!0,capabilities:["Real-time LLM tracing","Performance analytics","Cost tracking","Error monitoring","Custom session tracking"],icon:u,color:"bg-blue-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/maxim",quickStart:{http:"bifrost-http --plugins maxim",docker:"docker run -e APP_PLUGINS=maxim bifrost-transport"}},{name:"mocker",displayName:"Response Mocker",description:"Mock AI responses for testing, development, and cost-effective prototyping",category:"Development",status:"production",httpSupport:!1,capabilities:["Configurable mock responses","Request pattern matching","Development environment support","Cost-free testing","Latency simulation"],icon:p,color:"bg-blue-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/mocker",quickStart:{http:"HTTP support coming soon",docker:"HTTP support coming soon"}},{name:"circuit-breaker",displayName:"Circuit Breaker",description:"Resilience patterns for handling provider failures and preventing cascade errors",category:"Reliability",status:"enterprise",httpSupport:!1,capabilities:["Automatic failure detection","Fallback mechanisms","Rate limiting","Health monitoring","Recovery strategies"],icon:g,color:"bg-orange-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/circuitbreaker",quickStart:{http:"HTTP support coming soon",docker:"HTTP support coming soon"}}],C=[{name:"Redis Cache",description:"High-performance caching layer with Redis backend",icon:h,status:"coming-soon"},{name:"Auth Guard",description:"Enterprise authentication and authorization middleware",icon:g,status:"coming-soon"},{name:"Rate Limiter",description:"Advanced rate limiting with multiple strategies",icon:b.A,status:"coming-soon"}];function M(){let{resolvedTheme:e}=(0,A.D)();return(0,r.jsx)("div",{className:"bg-background min-h-screen",children:(0,r.jsx)("div",{className:"mx-auto max-w-7xl",children:(0,r.jsxs)("div",{className:"space-y-12",children:[(0,r.jsxs)("div",{className:"space-y-4 text-center",children:[(0,r.jsxs)("div",{className:"bg-primary/10 text-primary inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm",children:[(0,r.jsx)(v.A,{className:"h-4 w-4"}),(0,r.jsx)("span",{className:"font-semibold",children:"Plugin Ecosystem"}),(0,r.jsx)(i.E,{variant:"default",className:"ml-1 text-xs",children:"Beta"})]}),(0,r.jsx)(d,{title:"Supercharge Bifrost"}),(0,r.jsx)("p",{className:"text-muted-foreground mx-auto max-w-3xl text-lg leading-relaxed",children:"Extend Bifrost with powerful plugins for observability, testing, security, and custom business logic. Full support in Go SDK, with HTTP transport integration in active development."}),(0,r.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 sm:flex-row",children:[(0,r.jsx)(n.$,{size:"lg",asChild:!0,children:(0,r.jsxs)(z(),{href:"https://github.com/maximhq/bifrost/tree/main/plugins",target:"_blank",children:[(0,r.jsx)(m.y,{className:"mr-2 h-5 w-5",weight:"bold"}),"Browse All Plugins"]})}),(0,r.jsx)(n.$,{size:"lg",variant:"outline",asChild:!0,children:(0,r.jsxs)(z(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/contributing/plugin.md",target:"_blank",children:[(0,r.jsx)(p,{className:"mr-2 h-5 w-5"}),"Build Your Own"]})})]})]}),(0,r.jsxs)(a.Fc,{className:"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/20",children:[(0,r.jsx)(f.A,{className:"h-4 w-4 text-amber-600"}),(0,r.jsx)(a.TN,{className:"text-amber-800 dark:text-amber-200",children:"HTTP transport support for custom and third party plugins is currently in active development and will be available soon."})]}),(0,r.jsxs)("section",{className:"space-y-8",children:[(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Featured Plugins"}),(0,r.jsx)("p",{className:"text-muted-foreground text-lg",children:"Production-ready plugins with varying levels of HTTP transport support"})]}),(0,r.jsx)("div",{className:"grid gap-8 lg:grid-cols-3",children:_.map(t=>{let s=t.icon;return(0,r.jsxs)(l.Zp,{className:"hover:border-primary/50 border-1 group shadow-none transition-all duration-300 hover:shadow-xl",children:[(0,r.jsxs)(l.aR,{children:[(0,r.jsxs)("div",{className:"flex items-start justify-between",children:["maxim"==t.name?(0,r.jsx)(P.default,{src:"/maxim-logo".concat("dark"===e?"-dark":"",".png"),alt:"Maxim",width:32,height:32,className:"h-14 w-auto"}):(0,r.jsx)("div",{className:"rounded-xl p-3 ".concat(t.color," bg-opacity-10"),children:(0,r.jsx)(s,{className:"h-8 w-8 ".concat(t.color.replace("bg-","text-"))})}),(0,r.jsx)(i.E,{variant:"production"===t.status?"default":"secondary",className:"text-xs capitalize",children:t.status})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(l.ZB,{className:"group-hover:text-primary text-xl transition-colors",children:t.displayName}),(0,r.jsx)(i.E,{variant:"outline",className:"w-fit text-xs",children:t.category})]}),(0,r.jsx)(l.BT,{className:"text-base leading-relaxed",children:t.description})]}),(0,r.jsxs)(l.Wu,{className:"flex h-full flex-col justify-between gap-6",children:[(0,r.jsxs)("div",{className:"space-y-6",children:[(0,r.jsxs)("div",{className:"space-y-3",children:[(0,r.jsx)("h4",{className:"text-muted-foreground text-sm font-semibold uppercase tracking-wide",children:"Key Features"}),(0,r.jsx)("div",{className:"grid gap-2",children:t.capabilities.slice(0,3).map(e=>(0,r.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,r.jsx)(j.A,{className:"text-primary h-3 w-3"}),e]},e))})]}),t.httpSupport?(0,r.jsxs)(o.tU,{defaultValue:"http",className:"w-full",children:[(0,r.jsxs)(o.j7,{className:"grid w-full grid-cols-2",children:[(0,r.jsx)(o.Xi,{value:"http",className:"text-xs",children:"HTTP"}),(0,r.jsx)(o.Xi,{value:"docker",className:"text-xs",children:"Docker"})]}),(0,r.jsx)(o.av,{value:"http",className:"mt-3",children:(0,r.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,r.jsx)(N,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:"Command Line"})]}),(0,r.jsx)("code",{className:"block font-mono text-xs",children:t.quickStart.http})]})}),(0,r.jsx)(o.av,{value:"docker",className:"mt-3",children:(0,r.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,r.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,r.jsx)(y,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:"Docker Environment"})]}),(0,r.jsx)("code",{className:"block font-mono text-xs",children:t.quickStart.docker})]})})]}):(0,r.jsx)("div",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-950/20",children:(0,r.jsxs)("div",{className:"flex items-center gap-2 text-amber-700 dark:text-amber-300",children:[(0,r.jsx)(k.A,{className:"h-3 w-3"}),(0,r.jsx)("span",{className:"text-xs font-semibold",children:"HTTP transport support coming soon"})]})})]}),(0,r.jsxs)("div",{className:"space-y-2",children:[(0,r.jsx)(n.$,{asChild:!0,variant:"outline",className:"w-full",children:(0,r.jsxs)(z(),{href:t.url,target:"_blank",children:[(0,r.jsx)(p,{className:"mr-1 h-4 w-4"}),"Source Code"]})}),(0,r.jsx)(n.$,{asChild:!0,variant:"outline",className:"w-full",children:(0,r.jsxs)(z(),{href:t.url+"/README.md",target:"_blank",children:[(0,r.jsx)(k.A,{className:"mr-1 h-4 w-4"}),"Plugin Documentation"]})})]})]})]},t.name)})})]}),(0,r.jsxs)("section",{className:"space-y-8",children:[(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Usage Patterns"}),(0,r.jsx)("p",{className:"text-muted-foreground text-lg",children:"Multiple ways to integrate plugins into your workflow"})]}),(0,r.jsxs)("div",{className:"grid gap-6 md:grid-cols-3",children:[(0,r.jsxs)(l.Zp,{className:"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/20",children:[(0,r.jsx)(l.aR,{children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(N,{className:"h-8 w-8 text-blue-600"}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.ZB,{className:"text-blue-800 dark:text-blue-200",children:"HTTP Transport"}),(0,r.jsx)(l.BT,{className:"text-blue-700 dark:text-blue-300",children:"Maxim plugin only (for now)"})]})]})}),(0,r.jsxs)(l.Wu,{className:"space-y-3",children:[(0,r.jsx)("div",{className:"rounded-md bg-blue-100 p-3 dark:bg-blue-900",children:(0,r.jsx)("code",{className:"font-mono text-sm text-blue-800 dark:text-blue-200",children:"bifrost-http --plugins maxim"})}),(0,r.jsx)("p",{className:"text-sm text-blue-700 dark:text-blue-300",children:"Additional plugins coming soon"})]})]}),(0,r.jsxs)(l.Zp,{className:"border-purple-200 bg-purple-50 dark:border-purple-800 dark:bg-purple-950/20",children:[(0,r.jsx)(l.aR,{children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(y,{className:"h-8 w-8 text-purple-600"}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.ZB,{className:"text-purple-800 dark:text-purple-200",children:"Docker Deployment"}),(0,r.jsx)(l.BT,{className:"text-purple-700 dark:text-purple-300",children:"Environment variables"})]})]})}),(0,r.jsxs)(l.Wu,{className:"space-y-3",children:[(0,r.jsx)("div",{className:"rounded-md bg-purple-100 p-3 dark:bg-purple-900",children:(0,r.jsx)("code",{className:"font-mono text-sm text-purple-800 dark:text-purple-200",children:"docker run -e APP_PLUGINS=maxim"})}),(0,r.jsx)("p",{className:"text-sm text-purple-700 dark:text-purple-300",children:"Additional plugins coming soon"})]})]}),(0,r.jsxs)(l.Zp,{className:"border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20",children:[(0,r.jsx)(l.aR,{children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)(p,{className:"h-8 w-8 text-green-600"}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.ZB,{className:"text-green-800 dark:text-green-200",children:"Go SDK"}),(0,r.jsx)(l.BT,{className:"text-green-700 dark:text-green-300",children:"Full plugin ecosystem"})]})]})}),(0,r.jsxs)(l.Wu,{className:"space-y-3",children:[(0,r.jsx)("div",{className:"rounded-md bg-green-100 p-3 dark:bg-green-900",children:(0,r.jsxs)("code",{className:"font-mono text-sm text-green-800 dark:text-green-200",children:["Plugins: []schemas.Plugin","{...}"]})}),(0,r.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:"All plugins available"})]})]})]})]}),(0,r.jsxs)("section",{className:"space-y-8",children:[(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Coming Soon"}),(0,r.jsx)("p",{className:"text-muted-foreground text-lg",children:"Exciting plugins currently in development"})]}),(0,r.jsx)("div",{className:"grid gap-6 md:grid-cols-3",children:C.map(e=>{let t=e.icon;return(0,r.jsx)(l.Zp,{className:"border-muted-foreground/30 border-2 border-dashed",children:(0,r.jsxs)(l.aR,{children:[(0,r.jsx)("div",{className:"flex items-center justify-between",children:(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"bg-muted rounded-lg p-2",children:(0,r.jsx)(t,{className:"text-muted-foreground h-6 w-6"})}),(0,r.jsxs)("div",{children:[(0,r.jsx)(l.ZB,{className:"text-muted-foreground text-lg",children:e.name}),(0,r.jsx)(i.E,{variant:"secondary",className:"mt-1 text-xs",children:"Coming Soon"})]})]})}),(0,r.jsx)(l.BT,{className:"text-muted-foreground",children:e.description})]})},e.name)})})]}),(0,r.jsx)("section",{className:"from-primary/5 rounded-2xl bg-gradient-to-r to-green-600/5 p-8",children:(0,r.jsxs)("div",{className:"space-y-6 text-center",children:[(0,r.jsx)("h2",{className:"text-3xl font-bold",children:"Join the Plugin Ecosystem"}),(0,r.jsx)("p",{className:"text-muted-foreground mx-auto max-w-2xl text-lg",children:"Contribute to the growing collection of Bifrost plugins or build your own custom solutions"}),(0,r.jsxs)("div",{className:"flex flex-col justify-center gap-4 sm:flex-row",children:[(0,r.jsx)(n.$,{size:"lg",asChild:!0,children:(0,r.jsxs)(z(),{href:"https://github.com/maximhq/bifrost/tree/main/plugins",target:"_blank",children:[(0,r.jsx)(m.y,{className:"mr-2 h-5 w-5",weight:"bold"}),"Plugin Repository"]})}),(0,r.jsx)(n.$,{size:"lg",variant:"outline",asChild:!0,children:(0,r.jsxs)(z(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/contributing/plugin.md",target:"_blank",children:[(0,r.jsx)(w,{className:"mr-2 h-5 w-5"}),"Development Guide"]})}),(0,r.jsx)(n.$,{size:"lg",variant:"outline",asChild:!0,children:(0,r.jsxs)(z(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/architecture/plugins.md",target:"_blank",children:[(0,r.jsx)(v.A,{className:"mr-2 h-5 w-5"}),"Architecture Docs"]})})]})]})})]})})})}},4964:(e,t,s)=>{"use strict";s.d(t,{Xi:()=>c,av:()=>d,j7:()=>l,tU:()=>n});var r=s(5155);s(2115);var a=s(704),i=s(3999);function n(e){let{className:t,...s}=e;return(0,r.jsx)(a.bL,{"data-slot":"tabs",className:(0,i.cn)("flex flex-col gap-2",t),...s})}function l(e){let{className:t,...s}=e;return(0,r.jsx)(a.B8,{"data-slot":"tabs-list",className:(0,i.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",t),...s})}function c(e){let{className:t,...s}=e;return(0,r.jsx)(a.l9,{"data-slot":"tabs-trigger",className:(0,i.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}function d(e){let{className:t,...s}=e;return(0,r.jsx)(a.UC,{"data-slot":"tabs-content",className:(0,i.cn)("flex-1 outline-none",t),...s})}},7168:(e,t,s)=>{"use strict";s.d(t,{$:()=>d,r:()=>c});var r=s(5155);s(2115);var a=s(9708),i=s(2085),n=s(3999),l=s(1154);let c=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:s,size:a,asChild:i=!1,children:n,isLoading:c=!1,...d}=e;return(0,r.jsx)(o,{className:t,variant:s,size:a,asChild:i,...d,children:c?(0,r.jsx)(l.A,{className:"size-4 animate-spin"}):n})}function o(e){let{className:t,variant:s,size:i,asChild:l=!1,...d}=e,o=l?a.DX:"button";return(0,r.jsx)(o,{"data-slot":"button",className:(0,n.cn)(c({variant:s,size:i,className:t}),"cursor-pointer"),...d})}},8145:(e,t,s)=>{"use strict";s.d(t,{E:()=>c});var r=s(5155);s(2115);var a=s(9708),i=s(2085),n=s(3999);let l=(0,i.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function c(e){let{className:t,variant:s,asChild:i=!1,...c}=e,d=i?a.DX:"span";return(0,r.jsx)(d,{"data-slot":"badge",className:(0,n.cn)(l({variant:s}),t),...c})}},8482:(e,t,s)=>{"use strict";s.d(t,{BT:()=>c,Wu:()=>d,ZB:()=>l,Zp:()=>i,aR:()=>n});var r=s(5155);s(2115);var a=s(3999);function i(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card",className:(0,a.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...s})}function n(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})}function l(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-title",className:(0,a.cn)("leading-none font-semibold",t),...s})}function c(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-muted-foreground text-sm",t),...s})}function d(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-6",t),...s})}},9026:(e,t,s)=>{"use strict";s.d(t,{Fc:()=>l,TN:()=>c});var r=s(5155);s(2115);var a=s(2085),i=s(3999);let n=(0,a.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:s,...a}=e;return(0,r.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,i.cn)(n({variant:s}),t),...a})}function c(e){let{className:t,...s}=e;return(0,r.jsx)("div",{"data-slot":"alert-description",className:(0,i.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...s})}}},e=>{var t=t=>e(e.s=t);e.O(0,[106,944,874,822,978,441,684,358],()=>t(659)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-ad4b7f09b3bb7f4c.js b/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-ad4b7f09b3bb7f4c.js deleted file mode 100644 index f378b278ef..0000000000 --- a/transports/bifrost-http/ui/_next/static/chunks/app/plugins/page-ad4b7f09b3bb7f4c.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[153],{659:(e,t,s)=>{Promise.resolve().then(s.bind(s,7196))},704:(e,t,s)=>{"use strict";s.d(t,{B8:()=>P,UC:()=>_,bL:()=>z,l9:()=>M});var a=s(2115),r=s(5185),i=s(6081),n=s(9196),l=s(8905),c=s(3655),d=s(4315),o=s(5845),m=s(1285),u=s(5155),x="Tabs",[p,h]=(0,i.A)(x,[n.RG]),g=(0,n.RG)(),[b,v]=p(x),f=a.forwardRef((e,t)=>{let{__scopeTabs:s,value:a,onValueChange:r,defaultValue:i,orientation:n="horizontal",dir:l,activationMode:p="automatic",...h}=e,g=(0,d.jH)(l),[v,f]=(0,o.i)({prop:a,onChange:r,defaultProp:null!=i?i:"",caller:x});return(0,u.jsx)(b,{scope:s,baseId:(0,m.B)(),value:v,onValueChange:f,orientation:n,dir:g,activationMode:p,children:(0,u.jsx)(c.sG.div,{dir:g,"data-orientation":n,...h,ref:t})})});f.displayName=x;var j="TabsList",y=a.forwardRef((e,t)=>{let{__scopeTabs:s,loop:a=!0,...r}=e,i=v(j,s),l=g(s);return(0,u.jsx)(n.bL,{asChild:!0,...l,orientation:i.orientation,dir:i.dir,loop:a,children:(0,u.jsx)(c.sG.div,{role:"tablist","aria-orientation":i.orientation,...r,ref:t})})});y.displayName=j;var N="TabsTrigger",k=a.forwardRef((e,t)=>{let{__scopeTabs:s,value:a,disabled:i=!1,...l}=e,d=v(N,s),o=g(s),m=C(d.baseId,a),x=T(d.baseId,a),p=a===d.value;return(0,u.jsx)(n.q7,{asChild:!0,...o,focusable:!i,active:p,children:(0,u.jsx)(c.sG.button,{type:"button",role:"tab","aria-selected":p,"aria-controls":x,"data-state":p?"active":"inactive","data-disabled":i?"":void 0,disabled:i,id:m,...l,ref:t,onMouseDown:(0,r.m)(e.onMouseDown,e=>{i||0!==e.button||!1!==e.ctrlKey?e.preventDefault():d.onValueChange(a)}),onKeyDown:(0,r.m)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&d.onValueChange(a)}),onFocus:(0,r.m)(e.onFocus,()=>{let e="manual"!==d.activationMode;p||i||!e||d.onValueChange(a)})})})});k.displayName=N;var w="TabsContent",A=a.forwardRef((e,t)=>{let{__scopeTabs:s,value:r,forceMount:i,children:n,...d}=e,o=v(w,s),m=C(o.baseId,r),x=T(o.baseId,r),p=r===o.value,h=a.useRef(p);return a.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,u.jsx)(l.C,{present:i||p,children:s=>{let{present:a}=s;return(0,u.jsx)(c.sG.div,{"data-state":p?"active":"inactive","data-orientation":o.orientation,role:"tabpanel","aria-labelledby":m,hidden:!a,id:x,tabIndex:0,...d,ref:t,style:{...e.style,animationDuration:h.current?"0s":void 0},children:a&&n})}})});function C(e,t){return"".concat(e,"-trigger-").concat(t)}function T(e,t){return"".concat(e,"-content-").concat(t)}A.displayName=w;var z=f,P=y,M=k,_=A},1243:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(9946).A)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]])},1284:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(9946).A)("info",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 16v-4",key:"1dtifu"}],["path",{d:"M12 8h.01",key:"e9boi3"}]])},1539:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(9946).A)("zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},3052:(e,t,s)=>{"use strict";s.d(t,{A:()=>a});let a=(0,s(9946).A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]])},3999:(e,t,s)=>{"use strict";s.d(t,{cn:()=>i});var a=s(2596),r=s(9688);function i(){for(var e=arguments.length,t=Array(e),s=0;s{"use strict";s.d(t,{A:()=>a});let a=(0,s(9946).A)("database",[["ellipse",{cx:"12",cy:"5",rx:"9",ry:"3",key:"msslwz"}],["path",{d:"M3 5V19A9 3 0 0 0 21 19V5",key:"1wlel7"}],["path",{d:"M3 12A9 3 0 0 0 21 12",key:"mv7ke4"}]])},4964:(e,t,s)=>{"use strict";s.d(t,{Xi:()=>c,av:()=>d,j7:()=>l,tU:()=>n});var a=s(5155);s(2115);var r=s(704),i=s(3999);function n(e){let{className:t,...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"tabs",className:(0,i.cn)("flex flex-col gap-2",t),...s})}function l(e){let{className:t,...s}=e;return(0,a.jsx)(r.B8,{"data-slot":"tabs-list",className:(0,i.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",t),...s})}function c(e){let{className:t,...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"tabs-trigger",className:(0,i.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 cursor-pointer items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}function d(e){let{className:t,...s}=e;return(0,a.jsx)(r.UC,{"data-slot":"tabs-content",className:(0,i.cn)("flex-1 outline-none",t),...s})}},7168:(e,t,s)=>{"use strict";s.d(t,{$:()=>d,r:()=>c});var a=s(5155);s(2115);var r=s(9708),i=s(2085),n=s(3999),l=s(1154);let c=(0,i.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function d(e){let{className:t,variant:s,size:r,asChild:i=!1,children:n,isLoading:c=!1,...d}=e;return(0,a.jsx)(o,{className:t,variant:s,size:r,asChild:i,...d,children:c?(0,a.jsx)(l.A,{className:"size-4 animate-spin"}):n})}function o(e){let{className:t,variant:s,size:i,asChild:l=!1,...d}=e,o=l?r.DX:"button";return(0,a.jsx)(o,{"data-slot":"button",className:(0,n.cn)(c({variant:s,size:i,className:t}),"cursor-pointer"),...d})}},7196:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>_});var a=s(5155),r=s(8482),i=s(7168),n=s(8145),l=s(9026),c=s(4964),d=s(9946);let o=(0,d.A)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),m=(0,d.A)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]),u=(0,d.A)("shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]);var x=s(4213),p=s(1539),h=s(7520),g=s(1243),b=s(3052);let v=(0,d.A)("terminal",[["path",{d:"M12 19h8",key:"baeox8"}],["path",{d:"m4 17 6-6-6-6",key:"1yngyt"}]]),f=(0,d.A)("container",[["path",{d:"M22 7.7c0-.6-.4-1.2-.8-1.5l-6.3-3.9a1.72 1.72 0 0 0-1.7 0l-10.3 6c-.5.2-.9.8-.9 1.4v6.6c0 .5.4 1.2.8 1.5l6.3 3.9a1.72 1.72 0 0 0 1.7 0l10.3-6c.5-.3.9-1 .9-1.5Z",key:"1t2lqe"}],["path",{d:"M10 21.9V14L2.1 9.1",key:"o7czzq"}],["path",{d:"m10 14 11.9-6.9",key:"zm5e20"}],["path",{d:"M14 19.8v-8.1",key:"159ecu"}],["path",{d:"M18 17.5V9.4",key:"11uown"}]]);var j=s(1284);let y=(0,d.A)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]);var N=s(6874),k=s.n(N),w=s(3999);let A=function(e){let{title:t,className:s}=e;return(0,a.jsx)("div",{className:(0,w.cn)("from-primary bg-gradient-to-r to-green-600 bg-clip-text pb-2 text-5xl font-bold text-transparent",s),children:t})};var C=s(6766),T=s(1362),z=s(1450);let P=[{name:"maxim",displayName:"Maxim Logger",description:"Advanced LLM observability, tracing, and analytics platform integration",category:"Observability",status:"production",httpSupport:!0,capabilities:["Real-time LLM tracing","Performance analytics","Cost tracking","Error monitoring","Custom session tracking"],icon:o,color:"bg-blue-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/maxim",quickStart:{http:"bifrost-http --plugins maxim",docker:"docker run -e APP_PLUGINS=maxim bifrost-transport"}},{name:"mocker",displayName:"Response Mocker",description:"Mock AI responses for testing, development, and cost-effective prototyping",category:"Development",status:"production",httpSupport:!1,capabilities:["Configurable mock responses","Request pattern matching","Development environment support","Cost-free testing","Latency simulation"],icon:m,color:"bg-blue-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/mocker",quickStart:{http:"HTTP support coming soon",docker:"HTTP support coming soon"}},{name:"circuit-breaker",displayName:"Circuit Breaker",description:"Resilience patterns for handling provider failures and preventing cascade errors",category:"Reliability",status:"enterprise",httpSupport:!1,capabilities:["Automatic failure detection","Fallback mechanisms","Rate limiting","Health monitoring","Recovery strategies"],icon:u,color:"bg-orange-500",url:"https://github.com/maximhq/bifrost/tree/main/plugins/circuitbreaker",quickStart:{http:"HTTP support coming soon",docker:"HTTP support coming soon"}}],M=[{name:"Redis Cache",description:"High-performance caching layer with Redis backend",icon:x.A,status:"coming-soon"},{name:"Auth Guard",description:"Enterprise authentication and authorization middleware",icon:u,status:"coming-soon"},{name:"Rate Limiter",description:"Advanced rate limiting with multiple strategies",icon:p.A,status:"coming-soon"}];function _(){let{resolvedTheme:e}=(0,T.D)();return(0,a.jsx)("div",{className:"bg-background min-h-screen",children:(0,a.jsx)("div",{className:"mx-auto max-w-7xl",children:(0,a.jsxs)("div",{className:"space-y-12",children:[(0,a.jsxs)("div",{className:"space-y-4 text-center",children:[(0,a.jsxs)("div",{className:"bg-primary/10 text-primary inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm",children:[(0,a.jsx)(h.A,{className:"h-4 w-4"}),(0,a.jsx)("span",{className:"font-semibold",children:"Plugin Ecosystem"}),(0,a.jsx)(n.E,{variant:"default",className:"ml-1 text-xs",children:"Beta"})]}),(0,a.jsx)(A,{title:"Supercharge Bifrost"}),(0,a.jsx)("p",{className:"text-muted-foreground mx-auto max-w-3xl text-lg leading-relaxed",children:"Extend Bifrost with powerful plugins for observability, testing, security, and custom business logic. Full support in Go SDK, with HTTP transport integration in active development."}),(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center gap-4 sm:flex-row",children:[(0,a.jsx)(i.$,{size:"lg",asChild:!0,children:(0,a.jsxs)(k(),{href:"https://github.com/maximhq/bifrost/tree/main/plugins",target:"_blank",children:[(0,a.jsx)(z.y,{className:"mr-2 h-5 w-5",weight:"bold"}),"Browse All Plugins"]})}),(0,a.jsx)(i.$,{size:"lg",variant:"outline",asChild:!0,children:(0,a.jsxs)(k(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/contributing/plugin.md",target:"_blank",children:[(0,a.jsx)(m,{className:"mr-2 h-5 w-5"}),"Build Your Own"]})})]})]}),(0,a.jsxs)(l.Fc,{className:"border-amber-200 bg-amber-50 dark:border-amber-800 dark:bg-amber-950/20",children:[(0,a.jsx)(g.A,{className:"h-4 w-4 text-amber-600"}),(0,a.jsx)(l.TN,{className:"text-amber-800 dark:text-amber-200",children:"HTTP transport support for custom and third party plugins is currently in active development and will be available soon."})]}),(0,a.jsxs)("section",{className:"space-y-8",children:[(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Featured Plugins"}),(0,a.jsx)("p",{className:"text-muted-foreground text-lg",children:"Production-ready plugins with varying levels of HTTP transport support"})]}),(0,a.jsx)("div",{className:"grid gap-8 lg:grid-cols-3",children:P.map(t=>{let s=t.icon;return(0,a.jsxs)(r.Zp,{className:"group hover:border-primary/50 border-2 transition-all duration-300 hover:shadow-xl",children:[(0,a.jsxs)(r.aR,{children:[(0,a.jsxs)("div",{className:"flex items-start justify-between",children:["maxim"==t.name?(0,a.jsx)(C.default,{src:"/maxim-logo".concat("dark"===e?"-dark":"",".png"),alt:"Maxim",width:32,height:32,className:"h-14 w-auto"}):(0,a.jsx)("div",{className:"rounded-xl p-3 ".concat(t.color," bg-opacity-10"),children:(0,a.jsx)(s,{className:"h-8 w-8 ".concat(t.color.replace("bg-","text-"))})}),(0,a.jsx)(n.E,{variant:"production"===t.status?"default":"secondary",className:"text-xs capitalize",children:t.status})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(r.ZB,{className:"group-hover:text-primary text-xl transition-colors",children:t.displayName}),(0,a.jsx)(n.E,{variant:"outline",className:"w-fit text-xs",children:t.category})]}),(0,a.jsx)(r.BT,{className:"text-base leading-relaxed",children:t.description})]}),(0,a.jsxs)(r.Wu,{className:"flex h-full flex-col justify-between gap-6",children:[(0,a.jsxs)("div",{className:"space-y-6",children:[(0,a.jsxs)("div",{className:"space-y-3",children:[(0,a.jsx)("h4",{className:"text-muted-foreground text-sm font-semibold tracking-wide uppercase",children:"Key Features"}),(0,a.jsx)("div",{className:"grid gap-2",children:t.capabilities.slice(0,3).map(e=>(0,a.jsxs)("div",{className:"flex items-center gap-2 text-sm",children:[(0,a.jsx)(b.A,{className:"text-primary h-3 w-3"}),e]},e))})]}),t.httpSupport?(0,a.jsxs)(c.tU,{defaultValue:"http",className:"w-full",children:[(0,a.jsxs)(c.j7,{className:"grid w-full grid-cols-2",children:[(0,a.jsx)(c.Xi,{value:"http",className:"text-xs",children:"HTTP"}),(0,a.jsx)(c.Xi,{value:"docker",className:"text-xs",children:"Docker"})]}),(0,a.jsx)(c.av,{value:"http",className:"mt-3",children:(0,a.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)(v,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"text-xs font-semibold",children:"Command Line"})]}),(0,a.jsx)("code",{className:"block font-mono text-xs",children:t.quickStart.http})]})}),(0,a.jsx)(c.av,{value:"docker",className:"mt-3",children:(0,a.jsxs)("div",{className:"bg-muted rounded-md p-3",children:[(0,a.jsxs)("div",{className:"mb-2 flex items-center gap-2",children:[(0,a.jsx)(f,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"text-xs font-semibold",children:"Docker Environment"})]}),(0,a.jsx)("code",{className:"block font-mono text-xs",children:t.quickStart.docker})]})})]}):(0,a.jsx)("div",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 p-3 dark:border-amber-800 dark:bg-amber-950/20",children:(0,a.jsxs)("div",{className:"flex items-center gap-2 text-amber-700 dark:text-amber-300",children:[(0,a.jsx)(j.A,{className:"h-3 w-3"}),(0,a.jsx)("span",{className:"text-xs font-semibold",children:"HTTP transport support coming soon"})]})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(i.$,{asChild:!0,variant:"outline",className:"w-full",children:(0,a.jsxs)(k(),{href:t.url,target:"_blank",children:[(0,a.jsx)(m,{className:"mr-1 h-4 w-4"}),"Source Code"]})}),(0,a.jsx)(i.$,{asChild:!0,variant:"outline",className:"w-full",children:(0,a.jsxs)(k(),{href:t.url+"/README.md",target:"_blank",children:[(0,a.jsx)(j.A,{className:"mr-1 h-4 w-4"}),"Plugin Documentation"]})})]})]})]},t.name)})})]}),(0,a.jsxs)("section",{className:"space-y-8",children:[(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Usage Patterns"}),(0,a.jsx)("p",{className:"text-muted-foreground text-lg",children:"Multiple ways to integrate plugins into your workflow"})]}),(0,a.jsxs)("div",{className:"grid gap-6 md:grid-cols-3",children:[(0,a.jsxs)(r.Zp,{className:"border-blue-200 bg-blue-50 dark:border-blue-800 dark:bg-blue-950/20",children:[(0,a.jsx)(r.aR,{children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(v,{className:"h-8 w-8 text-blue-600"}),(0,a.jsxs)("div",{children:[(0,a.jsx)(r.ZB,{className:"text-blue-800 dark:text-blue-200",children:"HTTP Transport"}),(0,a.jsx)(r.BT,{className:"text-blue-700 dark:text-blue-300",children:"Maxim plugin only (for now)"})]})]})}),(0,a.jsxs)(r.Wu,{className:"space-y-3",children:[(0,a.jsx)("div",{className:"rounded-md bg-blue-100 p-3 dark:bg-blue-900",children:(0,a.jsx)("code",{className:"font-mono text-sm text-blue-800 dark:text-blue-200",children:"bifrost-http --plugins maxim"})}),(0,a.jsx)("p",{className:"text-sm text-blue-700 dark:text-blue-300",children:"Additional plugins coming soon"})]})]}),(0,a.jsxs)(r.Zp,{className:"border-purple-200 bg-purple-50 dark:border-purple-800 dark:bg-purple-950/20",children:[(0,a.jsx)(r.aR,{children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(f,{className:"h-8 w-8 text-purple-600"}),(0,a.jsxs)("div",{children:[(0,a.jsx)(r.ZB,{className:"text-purple-800 dark:text-purple-200",children:"Docker Deployment"}),(0,a.jsx)(r.BT,{className:"text-purple-700 dark:text-purple-300",children:"Environment variables"})]})]})}),(0,a.jsxs)(r.Wu,{className:"space-y-3",children:[(0,a.jsx)("div",{className:"rounded-md bg-purple-100 p-3 dark:bg-purple-900",children:(0,a.jsx)("code",{className:"font-mono text-sm text-purple-800 dark:text-purple-200",children:"docker run -e APP_PLUGINS=maxim"})}),(0,a.jsx)("p",{className:"text-sm text-purple-700 dark:text-purple-300",children:"Additional plugins coming soon"})]})]}),(0,a.jsxs)(r.Zp,{className:"border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20",children:[(0,a.jsx)(r.aR,{children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)(m,{className:"h-8 w-8 text-green-600"}),(0,a.jsxs)("div",{children:[(0,a.jsx)(r.ZB,{className:"text-green-800 dark:text-green-200",children:"Go SDK"}),(0,a.jsx)(r.BT,{className:"text-green-700 dark:text-green-300",children:"Full plugin ecosystem"})]})]})}),(0,a.jsxs)(r.Wu,{className:"space-y-3",children:[(0,a.jsx)("div",{className:"rounded-md bg-green-100 p-3 dark:bg-green-900",children:(0,a.jsxs)("code",{className:"font-mono text-sm text-green-800 dark:text-green-200",children:["Plugins: []schemas.Plugin","{...}"]})}),(0,a.jsx)("p",{className:"text-sm text-green-700 dark:text-green-300",children:"All plugins available"})]})]})]})]}),(0,a.jsxs)("section",{className:"space-y-8",children:[(0,a.jsxs)("div",{className:"text-center",children:[(0,a.jsx)("h2",{className:"mb-4 text-3xl font-bold",children:"Coming Soon"}),(0,a.jsx)("p",{className:"text-muted-foreground text-lg",children:"Exciting plugins currently in development"})]}),(0,a.jsx)("div",{className:"grid gap-6 md:grid-cols-3",children:M.map(e=>{let t=e.icon;return(0,a.jsx)(r.Zp,{className:"border-muted-foreground/30 border-2 border-dashed",children:(0,a.jsxs)(r.aR,{children:[(0,a.jsx)("div",{className:"flex items-center justify-between",children:(0,a.jsxs)("div",{className:"flex items-center gap-3",children:[(0,a.jsx)("div",{className:"bg-muted rounded-lg p-2",children:(0,a.jsx)(t,{className:"text-muted-foreground h-6 w-6"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)(r.ZB,{className:"text-muted-foreground text-lg",children:e.name}),(0,a.jsx)(n.E,{variant:"secondary",className:"mt-1 text-xs",children:"Coming Soon"})]})]})}),(0,a.jsx)(r.BT,{className:"text-muted-foreground",children:e.description})]})},e.name)})})]}),(0,a.jsx)("section",{className:"from-primary/5 rounded-2xl bg-gradient-to-r to-green-600/5 p-8",children:(0,a.jsxs)("div",{className:"space-y-6 text-center",children:[(0,a.jsx)("h2",{className:"text-3xl font-bold",children:"Join the Plugin Ecosystem"}),(0,a.jsx)("p",{className:"text-muted-foreground mx-auto max-w-2xl text-lg",children:"Contribute to the growing collection of Bifrost plugins or build your own custom solutions"}),(0,a.jsxs)("div",{className:"flex flex-col justify-center gap-4 sm:flex-row",children:[(0,a.jsx)(i.$,{size:"lg",asChild:!0,children:(0,a.jsxs)(k(),{href:"https://github.com/maximhq/bifrost/tree/main/plugins",target:"_blank",children:[(0,a.jsx)(z.y,{className:"mr-2 h-5 w-5",weight:"bold"}),"Plugin Repository"]})}),(0,a.jsx)(i.$,{size:"lg",variant:"outline",asChild:!0,children:(0,a.jsxs)(k(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/contributing/plugin.md",target:"_blank",children:[(0,a.jsx)(y,{className:"mr-2 h-5 w-5"}),"Development Guide"]})}),(0,a.jsx)(i.$,{size:"lg",variant:"outline",asChild:!0,children:(0,a.jsxs)(k(),{href:"https://github.com/maximhq/bifrost/tree/main/docs/architecture/plugins.md",target:"_blank",children:[(0,a.jsx)(h.A,{className:"mr-2 h-5 w-5"}),"Architecture Docs"]})})]})]})})]})})})}},8145:(e,t,s)=>{"use strict";s.d(t,{E:()=>c});var a=s(5155);s(2115);var r=s(9708),i=s(2085),n=s(3999);let l=(0,i.F)("inline-flex items-center justify-center rounded-md border px-2 py-0.5 text-xs font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground [a&]:hover:bg-primary/90",secondary:"border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90",destructive:"border-transparent bg-destructive text-white [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground",success:"border-transparent bg-green-700 text-white [a&]:hover:bg-green-700/90"}},defaultVariants:{variant:"default"}});function c(e){let{className:t,variant:s,asChild:i=!1,...c}=e,d=i?r.DX:"span";return(0,a.jsx)(d,{"data-slot":"badge",className:(0,n.cn)(l({variant:s}),t),...c})}},8482:(e,t,s)=>{"use strict";s.d(t,{BT:()=>c,Wu:()=>d,ZB:()=>l,Zp:()=>i,aR:()=>n});var a=s(5155);s(2115);var r=s(3999);function i(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"card",className:(0,r.cn)("bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm",t),...s})}function n(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"card-header",className:(0,r.cn)("@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6",t),...s})}function l(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"card-title",className:(0,r.cn)("leading-none font-semibold",t),...s})}function c(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"card-description",className:(0,r.cn)("text-muted-foreground text-sm",t),...s})}function d(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"card-content",className:(0,r.cn)("px-6",t),...s})}},9026:(e,t,s)=>{"use strict";s.d(t,{Fc:()=>l,TN:()=>c});var a=s(5155);s(2115);var r=s(2085),i=s(3999);let n=(0,r.F)("relative w-full rounded-lg border px-4 py-3 text-sm grid has-[>svg]:grid-cols-[calc(var(--spacing)*4)_1fr] grid-cols-[0_1fr] has-[>svg]:gap-x-3 gap-y-0.5 items-start [&>svg]:size-4 [&>svg]:translate-y-0.5 [&>svg]:text-current",{variants:{variant:{default:"bg-card text-card-foreground",destructive:"text-destructive bg-card [&>svg]:text-current *:data-[slot=alert-description]:text-destructive/90"}},defaultVariants:{variant:"default"}});function l(e){let{className:t,variant:s,...r}=e;return(0,a.jsx)("div",{"data-slot":"alert",role:"alert",className:(0,i.cn)(n({variant:s}),t),...r})}function c(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"alert-description",className:(0,i.cn)("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed",t),...s})}}},e=>{var t=t=>e(e.s=t);e.O(0,[146,874,978,441,684,358],()=>t(659)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/app/providers/page-b25fa0ce16423da1.js b/transports/bifrost-http/ui/_next/static/chunks/app/providers/page-b25fa0ce16423da1.js new file mode 100644 index 0000000000..a3a70d3a63 --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/chunks/app/providers/page-b25fa0ce16423da1.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[387],{2067:(e,s,t)=>{"use strict";t.d(s,{Dr:()=>a});class a{isValid(){return!this.rules.some(e=>!e.isValid)}getErrors(){return this.rules.filter(e=>!e.isValid).map(e=>e.message)}getFirstError(){let e=this.rules.find(e=>!e.isValid);return null==e?void 0:e.message}static required(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"This field is required";return{isValid:null!=e&&""!==e&&0!==e,message:s}}static minValue(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(s);return{isValid:!isNaN(e)&&e>=s,message:t}}static maxValue(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(s);return{isValid:!isNaN(e)&&e<=s,message:t}}static pattern(e,s,t){return{isValid:s.test(e||""),message:t}}static email(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid email";return this.pattern(e,/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,s)}static url(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must be a valid URL";return this.pattern(e,/^https?:\/\/.+/,s)}static minLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at least ".concat(s," characters");return{isValid:(e||"").length>=s,message:t}}static maxLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be at most ".concat(s," characters");return{isValid:(e||"").length<=s,message:t}}static arrayMinLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at least ".concat(s," items");return{isValid:(null==e?void 0:e.length)>=s,message:t}}static arrayMaxLength(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must have at most ".concat(s," items");return{isValid:(null==e?void 0:e.length)<=s,message:t}}static arrayUnique(e){let s=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Must have unique items";return{isValid:(null==e?void 0:e.length)===new Set(e).size,message:s}}static arraysEqual(e,s){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Must be equal";return{isValid:(null==e?void 0:e.length)===(null==s?void 0:s.length)&&(null==e?void 0:e.every((e,t)=>e===s[t])),message:t}}static custom(e,s){return{isValid:e,message:s}}static all(e){return e.find(e=>!e.isValid)||{isValid:!0,message:""}}constructor(e){this.rules=e.filter(e=>void 0!==e)}}},3580:(e,s,t)=>{"use strict";t.d(s,{d:()=>r});var a=t(6671);function r(){return{toast:e=>{let{title:s,description:t,variant:r}=e,n=t?"".concat(s,": ").concat(t):s;"destructive"===r?a.o.error(n):a.o.success(n)}}}},3621:(e,s,t)=>{"use strict";t.r(s),t.d(s,{default:()=>F});var a=t(5155),r=t(6559),n=t(8145),i=t(7168),l=t(8524),d=t(1886),o=t(4432),c=t(7783),u=t(4616),m=t(9803),x=t(3717),h=t(1154),p=t(2525),f=t(2115),v=t(6671),g=t(8482),j=t(9840),y=t(9852),b=t(5784),N=t(4964),_=t(4416),w=t(3999);let k=f.forwardRef((e,s)=>{let{className:t,value:r,onValueChange:i,...l}=e,[d,o]=f.useState(""),c=e=>{i(r.filter(s=>s!==e))};return(0,a.jsxs)("div",{className:(0,w.cn)("border-input flex flex-wrap items-center gap-2 rounded-md border p-2",t),children:[r.map(e=>(0,a.jsxs)(n.E,{variant:"secondary",className:"flex items-center gap-1",children:[e,(0,a.jsx)("button",{type:"button",className:"ring-offset-background focus:ring-ring cursor-pointer rounded-full outline-none focus:ring-2 focus:ring-offset-2",onClick:()=>c(e),children:(0,a.jsx)(_.A,{className:"h-3 w-3"})})]},e)),(0,a.jsx)(y.p,{ref:s,type:"text",value:d,onChange:e=>{o(e.target.value)},onKeyDown:e=>{if("Enter"===e.key||","===e.key){e.preventDefault();let s=d.trim();s&&!r.includes(s)&&i([...r,s]),o("")}else"Backspace"===e.key&&""===d&&r.length>0&&i(r.slice(0,-1))},className:"flex-1 border-0 shadow-none focus-visible:ring-0",...l})]})});k.displayName="TagInput";var C=t(7777),A=t(6034),z=t(2067),P=t(9231),V=t.n(P),D=t(1284),q=t(4869),I=t(1539),S=t(1243),E=t(4229),R=t(9026),O=t(9474),M=t(8103);let B={azure:{title:"Azure OpenAI Meta Config",fields:[{name:"endpoint",label:"Endpoint",type:"text",placeholder:"https://your-resource.openai.azure.com or env.AZURE_ENDPOINT"},{name:"api_version",label:"API Version (Optional)",type:"text",placeholder:"YYYY-MM-DD or env.AZURE_VERSION"},{name:"deployments",label:"Deployments (JSON format)",type:"textarea",placeholder:'{ "gpt-4": "my-deployment" }',isJson:!0}]},bedrock:{title:"AWS Bedrock Meta Config",fields:[{name:"region",label:"Region",type:"text",placeholder:"us-east-1 or env.AWS_REGION"}]},vertex:{title:"Google Vertex AI Meta Config",fields:[{name:"project_id",label:"Project ID",type:"text",placeholder:"gcp-project-id or env.GCP_PROJECT"},{name:"region",label:"Region",type:"text",placeholder:"us-central1 or env.GCP_REGION"},{name:"auth_credentials",label:"Auth Credentials (JSON key)",type:"textarea",placeholder:"JSON key or env.GCP_CREDS"}]}},Z=e=>{let{provider:s,metaConfig:t,onMetaConfigChange:r}=e,n=B[s];if(!n)return null;let i=e=>{let s=t[e.name];return"textarea"===e.type?(0,a.jsx)(O.T,{placeholder:e.placeholder,value:e.isJson?"string"==typeof s?s:JSON.stringify(s,null,2):s||"",onChange:s=>{r(e.name,s.target.value)},onBlur:s=>{if(e.isJson)try{let t=JSON.parse(s.target.value);r(e.name,t)}catch(e){}},rows:4,className:"wrap-anywhere max-w-full font-mono text-sm"}):(0,a.jsx)(y.p,{placeholder:e.placeholder,value:s||"",onChange:s=>r(e.name,s.target.value)})};return(0,a.jsxs)("div",{className:"",children:[(0,a.jsx)(g.aR,{className:"mb-2 px-0",children:(0,a.jsxs)(g.ZB,{className:"flex items-center gap-2 text-base",children:[(0,a.jsx)(M.A,{className:"h-4 w-4"}),n.title,(0,a.jsx)(C.Bc,{children:(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(D.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,a.jsx)(C.ZI,{className:"max-w-fit",children:(0,a.jsxs)("p",{children:["Use ",(0,a.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]})}),(0,a.jsx)(g.Wu,{className:"space-y-4 px-0",children:n.fields.map(e=>(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"block text-sm font-medium",children:e.label}),i(e)]},e.name))})]})},L=(e,s)=>{let t=!e,a=(null==e?void 0:e.name)||s||"",r=!["vertex","ollama","sgl"].includes(a);return{selectedProvider:a,keys:t&&r?[{value:"",models:[],weight:1}]:!t&&r&&(null==e?void 0:e.keys)?e.keys:[],networkConfig:(null==e?void 0:e.network_config)||A.mR,performanceConfig:(null==e?void 0:e.concurrency_and_buffer_size)||A.qV,metaConfig:(null==e?void 0:e.meta_config)||{endpoint:"",deployments:{},api_version:""},proxyConfig:(null==e?void 0:e.proxy_config)||{type:"none",url:"",username:"",password:""}}};function U(e){var s,t;let{provider:r,onSave:n,onCancel:l,existingProviders:m}=e,x=r?void 0:c.xq.find(e=>!m.includes(e))||"",[h]=(0,f.useState)(L(r,x)),[p,g]=(0,f.useState)({...h,isDirty:!1}),[A,P]=(0,f.useState)(!1),{selectedProvider:O,keys:M,networkConfig:B,performanceConfig:U,metaConfig:$,proxyConfig:K,isDirty:T}=p,F="ollama"===O||"sgl"===O,J=!["vertex","ollama","sgl"].includes(O);J&&M.every(e=>""!==e.value.trim()),J&&M.length;let H=U.concurrency>0&&U.buffer_size>0&&U.concurrency{let e=!0,s="";if("azure"===O){let t=!!$.endpoint&&""!==$.endpoint.trim(),a=!!($.deployments&&"object"==typeof $.deployments&&Object.keys($.deployments).length>0);(e=t&&a)||(s="Endpoint and at least one Deployment are required for Azure")}else if("bedrock"===O)(e=!!$.region&&""!==$.region.trim())||(s="Region is required for AWS Bedrock");else if("vertex"===O){let t=!!$.project_id&&""!==$.project_id.trim(),a=!!$.auth_credentials&&""!==$.auth_credentials.trim(),r=!!$.region&&""!==$.region.trim();(e=t&&a&&r)||(s="Project ID, Auth Credentials, and Region are required for Vertex AI")}return{valid:e,message:s}})();(0,f.useEffect)(()=>{let e={selectedProvider:O,keys:J?M:[],networkConfig:B,performanceConfig:U,metaConfig:$,proxyConfig:K};g(s=>({...s,isDirty:!V()(h,e)}))},[O,M,B,U,$,K,h,J]);let X=(e,s)=>{g(t=>({...t,[e]:s}))},Q=(e,s)=>{X("proxyConfig",{...K,[e]:s})},ee=r?c.xq:c.xq.filter(e=>!m.includes(e)),es=async e=>{if(!et.isValid())return void v.o.error(et.getFirstError());e.preventDefault(),P(!0);let s=null;if(r){let e={keys:J?M.filter(e=>""!==e.value.trim()):[],network_config:B,concurrency_and_buffer_size:U,meta_config:$,proxy_config:K};[,s]=await d.K.updateProvider(r.name,e)}else{let e={provider:O,keys:J?M.filter(e=>""!==e.value.trim()):[],network_config:B,concurrency_and_buffer_size:U,meta_config:$,proxy_config:K};[,s]=await d.K.createProvider(e)}P(!1),s?v.o.error(s):(v.o.success("Provider ".concat(r?"updated":"added"," successfully")),n())},et=new z.Dr([z.Dr.required(O,"Please select a provider"),z.Dr.custom(T,"No changes to save"),...F?[z.Dr.required(B.base_url,"Base URL is required for Ollama provider"),z.Dr.pattern(B.base_url||"",/^https?:\/\/.+/,"Base URL must start with http:// or https://")]:[],...J?[z.Dr.minValue(M.length,1,"At least one API key is required"),z.Dr.custom(M.every(e=>""!==e.value.trim()),"API key value cannot be empty")]:[],z.Dr.minValue(B.default_request_timeout_in_seconds,1,"Timeout must be greater than 0 seconds"),z.Dr.minValue(B.max_retries,0,"Max retries cannot be negative"),z.Dr.minValue(U.concurrency,1,"Concurrency must be greater than 0"),z.Dr.minValue(U.buffer_size,1,"Buffer size must be greater than 0"),z.Dr.custom(U.concurrency{X("keys",M.filter((s,t)=>t!==e))},er=(e,s,t)=>{let a=[...M],r={...a[e]};"models"===s&&Array.isArray(t)?r.models=t:"value"===s&&"string"==typeof t?r.value=t:"weight"===s&&"string"==typeof t&&(r.weight=Number.parseFloat(t)||1),a[e]=r,X("keys",a)},en=(0,f.useMemo)(()=>{let e=[];return J&&e.push({id:"api-keys",label:"API Keys"}),("azure"===O||"bedrock"===O||"vertex"===O)&&e.push({id:"meta-config",label:"Meta Config"}),e.push({id:"network",label:"Network"}),e.push({id:"performance",label:"Performance"}),e},[J,O]),[ei,el]=(0,f.useState)((null==(s=en[0])?void 0:s.id)||"api-keys");return(0,f.useEffect)(()=>{if(!en.map(e=>e.id).includes(ei)){var e;el((null==(e=en[0])?void 0:e.id)||"api-keys")}},[en]),(0,a.jsx)(j.lG,{open:!0,onOpenChange:l,children:(0,a.jsxs)(j.Cf,{className:"custom-scrollbar max-h-[90vh] overflow-y-auto p-0 sm:max-w-4xl",showCloseButton:!1,children:[(0,a.jsxs)(j.c7,{className:"z-10 px-6 pt-6",children:[(0,a.jsx)(j.L3,{children:r?(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,o.FO)(r.name,{size:20}),(0,a.jsx)("span",{className:"font-semibold",children:c.oU[r.name]})]}):(0,a.jsx)("div",{className:"flex items-center gap-2",children:"Add Provider"})}),(0,a.jsx)(j.rr,{children:"Configure AI provider settings, API keys, and network options."})]}),(0,a.jsxs)("form",{onSubmit:es,className:"flex flex-row gap-2 px-6 pt-6",children:[!r&&(0,a.jsx)(C.Bc,{children:(0,a.jsx)("div",{className:"flex w-[250px] flex-col gap-1 pb-10",children:c.xq.map(e=>(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{className:(0,w.cn)("flex w-full items-center gap-2 rounded-lg border px-4 py-2 text-sm transition-all duration-200 ease-in-out",O===e?"bg-secondary opacity-100 hover:opacity-100":ee.includes(e)?"hover:bg-secondary cursor-pointer border-transparent opacity-100 hover:border":"cursor-not-allowed border-transparent opacity-30"),onClick:s=>{s.preventDefault(),ee.includes(e)&&X("selectedProvider",e)},asChild:!0,children:(0,a.jsxs)("span",{children:[(0,o.FO)(e,{size:"sm",className:"w-5 h-5"}),(0,a.jsx)("div",{className:"text-sm",children:c.oU[e]})]})}),!ee.includes(e)&&(0,a.jsx)(C.ZI,{children:"Provider is already configured"})]},e))})}),(0,a.jsxs)("div",{className:"flex h-full w-full flex-col justify-between px-2",children:[(0,a.jsxs)(N.tU,{defaultValue:null==(t=en[0])?void 0:t.id,value:ei,onValueChange:el,className:"space-y-6",children:[(0,a.jsx)(N.j7,{style:{gridTemplateColumns:"repeat(".concat(en.length,", 1fr)")},className:"mb-4 grid h-10 w-full",children:en.map(e=>(0,a.jsx)(N.Xi,{value:e.id,className:"flex items-center gap-2 transition-all duration-200 ease-in-out",children:e.label},e.id))}),(0,a.jsx)("div",{className:"relative overflow-hidden",children:(0,a.jsxs)("div",{className:"transition-all duration-300 ease-in-out",style:{maxHeight:"2000px",opacity:1},children:[J&&"api-keys"===ei&&(0,a.jsxs)("div",{className:"animate-in fade-in-0 slide-in-from-right-2 space-y-4 duration-300",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("h3",{className:"text-base font-medium",children:"API Keys"}),(0,a.jsx)(C.Bc,{children:(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(D.A,{className:"text-muted-foreground ml-1 h-3 w-3"})})}),(0,a.jsx)(C.ZI,{className:"max-w-fit",children:(0,a.jsxs)("p",{children:["Use ",(0,a.jsx)("code",{className:"rounded bg-neutral-100 px-1 py-0.5 text-neutral-800",children:"env."})," to read the value from an environment variable."]})})]})})]}),(0,a.jsxs)(i.$,{type:"button",variant:"outline",size:"sm",onClick:()=>{X("keys",[...M,{value:"",models:[],weight:1}])},children:[(0,a.jsx)(u.A,{className:"h-4 w-4"}),"Add Key"]})]}),(0,a.jsx)("div",{className:"space-y-4",children:M.map((e,s)=>(0,a.jsxs)("div",{className:"animate-in fade-in-0 slide-in-from-left-2 space-y-4 rounded-md border p-4 duration-300",style:{animationDelay:"".concat(50*s,"ms")},children:[(0,a.jsxs)("div",{className:"flex gap-4",children:[(0,a.jsxs)("div",{className:"flex-1",children:[(0,a.jsx)("div",{className:"text-sm font-medium",children:"API Key"}),(0,a.jsx)(y.p,{placeholder:"API Key or env.MY_KEY",value:e.value,onChange:e=>er(s,"value",e.target.value),type:"text",className:"flex-1 transition-all duration-200 ease-in-out ".concat(J&&""===e.value.trim()?"border-destructive":"")})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Weight"}),(0,a.jsx)(C.Bc,{children:(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(D.A,{className:"text-muted-foreground h-3 w-3"})})}),(0,a.jsx)(C.ZI,{children:(0,a.jsx)("p",{children:"Determines traffic distribution between keys. Higher weights receive more requests."})})]})})]}),(0,a.jsx)(y.p,{placeholder:"1.0",value:e.weight,onChange:e=>er(s,"weight",e.target.value),type:"number",step:"0.1",min:"0",max:"1.0",className:"w-20 transition-all duration-200 ease-in-out"})]})]}),(0,a.jsxs)("div",{children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Models (Optional)"}),(0,a.jsx)(C.Bc,{children:(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsx)(D.A,{className:"text-muted-foreground h-3 w-3"})})}),(0,a.jsx)(C.ZI,{children:(0,a.jsx)("p",{children:"Comma-separated list of models this key applies to. Leave blank for all models."})})]})})]}),(0,a.jsx)(k,{placeholder:"e.g. gpt-4, gpt-3.5-turbo",value:e.models||[],onValueChange:e=>er(s,"models",e)})]}),M.length>1&&(0,a.jsxs)(i.$,{type:"button",variant:"destructive",size:"sm",onClick:()=>ea(s),className:"mt-2 transition-all duration-200 ease-in-out",children:[(0,a.jsx)(_.A,{className:"h-4 w-4"}),"Remove Key"]})]},s))})]}),"anthropic"!==O&&"openai"!==O&&"cohere"!==O&&"meta-config"===ei&&(0,a.jsx)("div",{className:"animate-in fade-in-0 slide-in-from-right-2 duration-300",children:(0,a.jsx)(Z,{provider:O,metaConfig:$,onMetaConfigChange:(e,s)=>{X("metaConfig",{...$,[e]:s})}})}),"network"===ei&&(0,a.jsxs)("div",{className:"animate-in fade-in-0 slide-in-from-right-2 space-y-6 duration-300",children:[(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(q.A,{className:"h-4 w-4"}),(0,a.jsx)("h3",{className:"text-base font-medium",children:"Network Configuration"})]}),(0,a.jsxs)("div",{className:"grid grid-cols-1 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsxs)("label",{className:"text-sm font-medium",children:["Base URL ",F?"(Required)":"(Optional)"]}),(0,a.jsx)(y.p,{placeholder:"https://api.example.com",value:B.base_url||"",onChange:e=>X("networkConfig",{...B,base_url:e.target.value}),className:"transition-all duration-200 ease-in-out ".concat(F&&!B.base_url?"border-destructive":"")})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Timeout (seconds)"}),(0,a.jsx)(y.p,{type:"number",placeholder:"30",value:B.default_request_timeout_in_seconds,onChange:e=>X("networkConfig",{...B,default_request_timeout_in_seconds:Number.parseInt(e.target.value)||30}),className:"transition-all duration-200 ease-in-out"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Max Retries"}),(0,a.jsx)(y.p,{type:"number",placeholder:"0",value:B.max_retries,onChange:e=>X("networkConfig",{...B,max_retries:Number.parseInt(e.target.value)||0}),className:"transition-all duration-200 ease-in-out"})]})]})]})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(q.A,{className:"h-4 w-4"}),(0,a.jsx)("h3",{className:"text-base font-medium",children:"Proxy Settings"})]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Proxy Type"}),(0,a.jsxs)(b.l6,{value:K.type,onValueChange:e=>Q("type",e),children:[(0,a.jsx)(b.bq,{className:"w-48 transition-all duration-200 ease-in-out",children:(0,a.jsx)(b.yv,{placeholder:"Select type"})}),(0,a.jsxs)(b.gC,{children:[(0,a.jsx)(b.eb,{value:"none",children:"None"}),(0,a.jsx)(b.eb,{value:"http",children:"HTTP"}),(0,a.jsx)(b.eb,{value:"socks5",children:"SOCKS5"}),(0,a.jsx)(b.eb,{value:"environment",children:"Environment"})]})]})]}),(0,a.jsx)("div",{className:"overflow-hidden transition-all duration-300 ease-in-out",style:{maxHeight:"none"!==K.type&&"environment"!==K.type?"300px":"0px",opacity:+("none"!==K.type&&"environment"!==K.type)},children:(0,a.jsxs)("div",{className:"space-y-4 pt-2",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Proxy URL"}),(0,a.jsx)(y.p,{placeholder:"http://proxy.example.com",value:K.url||"",onChange:e=>Q("url",e.target.value),className:"transition-all duration-200 ease-in-out"})]}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Username"}),(0,a.jsx)(y.p,{value:K.username||"",onChange:e=>Q("username",e.target.value),placeholder:"Proxy username",className:"transition-all duration-200 ease-in-out"})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Password"}),(0,a.jsx)(y.p,{type:"password",value:K.password||"",onChange:e=>Q("password",e.target.value),placeholder:"Proxy password",className:"transition-all duration-200 ease-in-out"})]})]})]})})]})]})]}),"performance"===ei&&(0,a.jsxs)("div",{className:"animate-in fade-in-0 slide-in-from-right-2 space-y-4 duration-300",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(I.A,{className:"h-4 w-4"}),(0,a.jsx)("h3",{className:"text-base font-medium",children:"Performance Settings"})]}),(0,a.jsx)("div",{className:"overflow-hidden transition-all duration-300 ease-in-out",style:{maxHeight:G?"200px":"0px",opacity:+!!G},children:(0,a.jsxs)(R.Fc,{className:"mb-4",children:[(0,a.jsx)(S.A,{className:"h-4 w-4"}),(0,a.jsxs)(R.TN,{children:[(0,a.jsx)("strong",{children:"Heads up:"})," Changing concurrency or buffer size may temporarily affect request latency for this provider while the new settings are being applied."]})]})}),(0,a.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Concurrency"}),(0,a.jsx)(y.p,{type:"number",value:U.concurrency,onChange:e=>X("performanceConfig",{...U,concurrency:Number.parseInt(e.target.value)||0}),className:"transition-all duration-200 ease-in-out ".concat(H?"":"border-destructive")})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("label",{className:"text-sm font-medium",children:"Buffer Size"}),(0,a.jsx)(y.p,{type:"number",value:U.buffer_size,onChange:e=>X("performanceConfig",{...U,buffer_size:Number.parseInt(e.target.value)||0}),className:"transition-all duration-200 ease-in-out ".concat(H?"":"border-destructive")})]})]})]})]})})]}),(0,a.jsx)("div",{className:"bg-background sticky bottom-0 py-3",children:ee.length>0&&(0,a.jsxs)("div",{className:"flex justify-end space-x-3",children:[(0,a.jsx)(i.$,{type:"button",variant:"outline",onClick:l,className:"transition-all duration-200 ease-in-out",children:"Cancel"}),(0,a.jsx)(C.Bc,{children:(0,a.jsxs)(C.m_,{children:[(0,a.jsx)(C.k$,{asChild:!0,children:(0,a.jsx)("span",{children:(0,a.jsxs)(i.$,{type:"submit",disabled:!et.isValid()||A,isLoading:A,className:"transition-all duration-200 ease-in-out",children:[(0,a.jsx)(E.A,{className:"h-4 w-4"}),A?"Saving...":"Save Provider"]})})}),(!et.isValid()||A)&&(0,a.jsx)(C.ZI,{children:(0,a.jsx)("p",{children:A?"Saving...":et.getFirstError()||"Please fix validation errors"})})]})})]})})]})]})]})})}function $(e){let{providers:s,onRefresh:t}=e,[j,y]=(0,f.useState)(!1),[b,N]=(0,f.useState)(null),[_,w]=(0,f.useState)(null),k=async e=>{w(e);let[,s]=await d.K.deleteProvider(e);w(null),s?v.o.error(s):(v.o.success("Provider deleted successfully"),t())},C=e=>{N(e),y(!0)};return(0,a.jsxs)(a.Fragment,{children:[j&&(0,a.jsx)(U,{provider:b,onSave:()=>{y(!1),N(null),t()},onCancel:()=>y(!1),existingProviders:s.map(e=>e.name)}),(0,a.jsxs)(g.aR,{className:"mb-4 px-0",children:[(0,a.jsxs)(g.ZB,{className:"flex items-center justify-between",children:[(0,a.jsx)("div",{className:"flex items-center gap-2",children:"AI Providers"}),(0,a.jsxs)(i.$,{onClick:()=>{N(null),y(!0)},children:[(0,a.jsx)(u.A,{className:"h-4 w-4"}),"Add Provider"]})]}),(0,a.jsx)(g.BT,{children:"Manage AI model providers, their API keys, and configuration settings."})]}),(0,a.jsx)("div",{className:"rounded-md border",children:(0,a.jsxs)(l.XI,{children:[(0,a.jsx)(l.A0,{children:(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nd,{children:"Provider"}),(0,a.jsx)(l.nd,{children:"Concurrency"}),(0,a.jsx)(l.nd,{children:"Buffer Size"}),(0,a.jsx)(l.nd,{children:"Max Retries"}),(0,a.jsx)(l.nd,{children:"API Keys"}),(0,a.jsx)(l.nd,{className:"text-right",children:"Actions"})]})}),(0,a.jsxs)(l.BF,{children:[0===s.length&&(0,a.jsx)(l.Hj,{children:(0,a.jsx)(l.nA,{colSpan:6,className:"py-6 text-center",children:"No providers found."})}),s.map(e=>{var s,t,d,u;return(0,a.jsxs)(l.Hj,{children:[(0,a.jsx)(l.nA,{children:(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,o.FO)(e.name,{size:16}),(0,a.jsx)("p",{className:"font-medium",children:c.oU[e.name]||e.name})]})}),(0,a.jsx)(l.nA,{children:(0,a.jsx)("div",{className:"flex items-center space-x-2",children:(0,a.jsx)(n.E,{variant:"outline",children:(null==(s=e.concurrency_and_buffer_size)?void 0:s.concurrency)||1})})}),(0,a.jsx)(l.nA,{children:(0,a.jsx)("div",{className:"flex items-center space-x-2",children:(0,a.jsx)(n.E,{variant:"outline",children:(null==(t=e.concurrency_and_buffer_size)?void 0:t.buffer_size)||10})})}),(0,a.jsx)(l.nA,{children:(0,a.jsx)("div",{className:"flex items-center space-x-2",children:(0,a.jsx)(n.E,{variant:"outline",children:(null==(d=e.network_config)?void 0:d.max_retries)||0})})}),(0,a.jsx)(l.nA,{children:(0,a.jsx)("div",{className:"flex items-center space-x-2",children:"vertex"!==e.name&&"ollama"!==e.name?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(m.A,{className:"text-muted-foreground h-4 w-4"}),(0,a.jsxs)("span",{className:"text-sm",children:[(null==(u=e.keys)?void 0:u.length)||0," keys"]})]}):(0,a.jsx)("span",{className:"text-sm",children:"N/A"})})}),(0,a.jsx)(l.nA,{className:"text-right",children:(0,a.jsxs)("div",{className:"flex items-center justify-end space-x-2",children:[(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>C(e),children:(0,a.jsx)(x.A,{className:"h-4 w-4"})}),(0,a.jsxs)(r.Lt,{children:[(0,a.jsx)(r.tv,{asChild:!0,children:(0,a.jsx)(i.$,{variant:"outline",size:"sm",disabled:_===e.name,children:_===e.name?(0,a.jsx)(h.A,{className:"h-4 w-4 animate-spin"}):(0,a.jsx)(p.A,{className:"h-4 w-4"})})}),(0,a.jsxs)(r.EO,{children:[(0,a.jsxs)(r.wd,{children:[(0,a.jsx)(r.r7,{children:"Delete Provider"}),(0,a.jsxs)(r.$v,{children:["Are you sure you want to delete provider ",e.name,"? This action cannot be undone."]})]}),(0,a.jsxs)(r.ck,{children:[(0,a.jsx)(r.Zr,{children:"Cancel"}),(0,a.jsx)(r.Rx,{onClick:()=>k(e.name),children:"Delete"})]})]})]})]})})]},e.name)})]})]})})]})}var K=t(2384),T=t(3580);function F(){let[e,s]=(0,f.useState)(!0),[t,r]=(0,f.useState)([]),{toast:n}=(0,T.d)();(0,f.useEffect)(()=>{i()},[]);let i=async()=>{let[e,t]=await d.K.getProviders();if(s(!1),t)return void n({title:"Error",description:t,variant:"destructive"});r((null==e?void 0:e.providers)||[])};return(0,a.jsx)("div",{children:e?(0,a.jsx)(K.A,{}):(0,a.jsx)($,{providers:t,onRefresh:i})})}},6034:(e,s,t)=>{"use strict";t.d(s,{Dk:()=>n,mR:()=>a,qV:()=>r});let a={base_url:"",default_request_timeout_in_seconds:30,max_retries:0,retry_backoff_initial:1e3,retry_backoff_max:1e4},r={concurrency:10,buffer_size:100},n={connected:"bg-green-100 text-green-800",error:"bg-red-100 text-red-800",disconnected:"bg-gray-100 text-gray-800"}},6559:(e,s,t)=>{"use strict";t.d(s,{$v:()=>p,EO:()=>u,Lt:()=>l,Rx:()=>f,Zr:()=>v,ck:()=>x,r7:()=>h,tv:()=>d,wd:()=>m});var a=t(5155);t(2115);var r=t(7649),n=t(3999),i=t(7168);function l(e){let{...s}=e;return(0,a.jsx)(r.bL,{"data-slot":"alert-dialog",...s})}function d(e){let{...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"alert-dialog-trigger",...s})}function o(e){let{...s}=e;return(0,a.jsx)(r.ZL,{"data-slot":"alert-dialog-portal",...s})}function c(e){let{className:s,...t}=e;return(0,a.jsx)(r.hJ,{"data-slot":"alert-dialog-overlay",className:(0,n.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",s),...t})}function u(e){let{className:s,...t}=e;return(0,a.jsxs)(o,{children:[(0,a.jsx)(c,{}),(0,a.jsx)(r.UC,{"data-slot":"alert-dialog-content",className:(0,n.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",s),...t})]})}function m(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-header",className:(0,n.cn)("flex flex-col gap-2 text-center sm:text-left",s),...t})}function x(e){let{className:s,...t}=e;return(0,a.jsx)("div",{"data-slot":"alert-dialog-footer",className:(0,n.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",s),...t})}function h(e){let{className:s,...t}=e;return(0,a.jsx)(r.hE,{"data-slot":"alert-dialog-title",className:(0,n.cn)("text-lg font-semibold",s),...t})}function p(e){let{className:s,...t}=e;return(0,a.jsx)(r.VY,{"data-slot":"alert-dialog-description",className:(0,n.cn)("text-muted-foreground text-sm",s),...t})}function f(e){let{className:s,...t}=e;return(0,a.jsx)(r.rc,{className:(0,n.cn)((0,i.r)({variant:"destructive"}),s),...t})}function v(e){let{className:s,...t}=e;return(0,a.jsx)(r.ZD,{className:(0,n.cn)((0,i.r)({variant:"outline"}),s),...t})}},7777:(e,s,t)=>{"use strict";t.d(s,{Bc:()=>i,ZI:()=>o,k$:()=>d,m_:()=>l});var a=t(5155);t(2115);var r=t(9613),n=t(3999);function i(e){let{delayDuration:s=0,...t}=e;return(0,a.jsx)(r.Kq,{"data-slot":"tooltip-provider",delayDuration:s,...t})}function l(e){let{...s}=e;return(0,a.jsx)(i,{children:(0,a.jsx)(r.bL,{"data-slot":"tooltip",...s})})}function d(e){let{...s}=e;return(0,a.jsx)(r.l9,{"data-slot":"tooltip-trigger",...s})}function o(e){let{className:s,sideOffset:t=0,children:i,...l}=e;return(0,a.jsx)(r.ZL,{children:(0,a.jsxs)(r.UC,{"data-slot":"tooltip-content",sideOffset:t,className:(0,n.cn)("bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit origin-(--radix-tooltip-content-transform-origin) rounded-md px-3 py-1.5 text-xs text-balance",s),...l,children:[i,(0,a.jsx)(r.i3,{className:"bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]"})]})})}},9385:(e,s,t)=>{Promise.resolve().then(t.bind(t,3621))},9474:(e,s,t)=>{"use strict";t.d(s,{T:()=>n});var a=t(5155);t(2115);var r=t(3999);function n(e){let{className:s,...t}=e;return(0,a.jsx)("textarea",{"data-slot":"textarea",className:(0,r.cn)("border-input placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",s),...t})}}},e=>{var s=s=>e(e.s=s);e.O(0,[106,189,944,231,412,62,822,613,925,915,830,441,684,358],()=>s(9385)),_N_E=e.O()}]); \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/chunks/webpack-f94117c709bbd3ec.js b/transports/bifrost-http/ui/_next/static/chunks/webpack-0fdc6f0f3c9262dc.js similarity index 98% rename from transports/bifrost-http/ui/_next/static/chunks/webpack-f94117c709bbd3ec.js rename to transports/bifrost-http/ui/_next/static/chunks/webpack-0fdc6f0f3c9262dc.js index 96b396ed9d..91294d349e 100644 --- a/transports/bifrost-http/ui/_next/static/chunks/webpack-f94117c709bbd3ec.js +++ b/transports/bifrost-http/ui/_next/static/chunks/webpack-0fdc6f0f3c9262dc.js @@ -1 +1 @@ -(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={id:o,loaded:!1,exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.loaded=!0,a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var l=1/0,i=0;i=a)&&Object.keys(r.O).every(e=>r.O[e](o[d]))?o.splice(d--,1):(u=!1,a{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>"static/chunks/"+e+".d75b74f24ea30de9.js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var l,u,d=document.getElementsByTagName("script"),c=0;c{l.onerror=l.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=f.bind(null,l.onerror),l.onload=f.bind(null,l.onload),u&&document.head.appendChild(l)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,261:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(261|68)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),l=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",l.name="ChunkLoadError",l.type=a,l.request=i,n[1](l)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,l,u]=o,d=0;if(i.some(t=>0!==e[t])){for(n in l)r.o(l,n)&&(r.m[n]=l[n]);if(u)var c=u(r)}for(t&&t(o);d{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={id:o,loaded:!1,exports:{}},i=!0;try{e[o].call(a.exports,a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.loaded=!0,a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var l=1/0,i=0;i=a)&&Object.keys(r.O).every(e=>r.O[e](o[d]))?o.splice(d--,1):(u=!1,a{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&o;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>"static/chunks/"+e+".c3e846ecee47b8cf.js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var l,u,d=document.getElementsByTagName("script"),c=0;c{l.onerror=l.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],l.parentNode&&l.parentNode.removeChild(l),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=f.bind(null,l.onerror),l.onload=f.bind(null,l.onload),u&&document.head.appendChild(l)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0,261:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(261|68)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),l=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",l.name="ChunkLoadError",l.type=a,l.request=i,n[1](l)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,l,u]=o,d=0;if(i.some(t=>0!==e[t])){for(n in l)r.o(l,n)&&(r.m[n]=l[n]);if(u)var c=u(r)}for(t&&t(o);d:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-green-200{border-color:var(--color-green-200)}.border-input{border-color:var(--input)}.border-muted-foreground\/30{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/30{border-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.border-primary,.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary)20%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-700{background-color:var(--color-green-700)}.bg-green-800{background-color:var(--color-green-800)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--primary)5%,transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-primary{--tw-gradient-from:var(--primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/5{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/5{--tw-gradient-from:color-mix(in oklab,var(--primary)5%,transparent)}}.from-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-600{--tw-gradient-to:var(--color-green-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-600\/5{--tw-gradient-to:#00a5440d}@supports (color:color-mix(in lab,red,red)){.to-green-600\/5{--tw-gradient-to:color-mix(in oklab,var(--color-green-600)5%,transparent)}}.to-green-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-8{padding-top:calc(var(--spacing)*8)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.wrap-anywhere{overflow-wrap:anywhere}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral-800{color:var(--color-neutral-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)))}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.shadow-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-md,.shadow-none{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-sm,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.ring-offset-transparent{--tw-ring-offset-color:transparent}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-75{transition-delay:75ms}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.delay-75{--tw-animation-delay:75ms;animation-delay:75ms}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:bg-primary\/20:is(:where(.group):hover *){background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-primary\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--primary)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)))}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-lg:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.hover\:shadow-sm:hover{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.hover\:shadow-sm:hover,.hover\:shadow-xl:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive)90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@media (min-width:40rem){.sm\:flex{display:flex}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-3xl{max-width:var(--container-3xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:text-left{text-align:left}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-purple-800:is(.dark *){border-color:var(--color-purple-800)}.dark\:bg-amber-950\/20:is(.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-blue-900:is(.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-green-200:is(.dark *){background-color:var(--color-green-200)}.dark\:bg-green-900:is(.dark *){background-color:var(--color-green-900)}.dark\:bg-green-950\/20:is(.dark *){background-color:#032e1533}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-950)20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-purple-900:is(.dark *){background-color:var(--color-purple-900)}.dark\:bg-purple-950\/20:is(.dark *){background-color:#3c036633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-950)20%,transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-green-200:is(.dark *){color:var(--color-green-200)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-200:is(.dark *){color:var(--color-purple-200)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}.dark\:shadow-gray-700:is(.dark *){--tw-shadow-color:oklch(37.3% .034 259.733)}@supports (color:color-mix(in lab,red,red)){.dark\:shadow-gray-700:is(.dark *){--tw-shadow-color:color-mix(in oklab,var(--color-gray-700)var(--tw-shadow-alpha),transparent)}}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-green-700\/90:hover{background-color:#008138e6}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-green-700\/90:hover{background-color:color-mix(in oklab,var(--color-green-700)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(21% .006 285.885);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.1% .005 285.823);--sidebar-primary:oklch(21% .006 285.885);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(96.7% .001 286.375);--sidebar-accent-foreground:oklch(21% .006 285.885);--sidebar-border:oklch(92% .004 286.32);--sidebar-ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21% .006 285.885);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(27.4% .006 286.033);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.2% .016 285.938)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}to{height:0}}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8d697b304b401681-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba015fad6dcf6784-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/569ce4b8f30dc480-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Fallback;src:local("Arial");ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.00%;size-adjust:104.76%}.__className_5cfdac{font-family:Geist,Geist Fallback;font-style:normal}.__variable_5cfdac{--font-geist-sans:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/9610d9e46709d722-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/747892c23ea88013-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/93f479601ee12b01-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Mono Fallback;src:local("Arial");ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_9a8899{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_9a8899{--font-geist-mono:"Geist Mono","Geist Mono Fallback"} \ No newline at end of file diff --git a/transports/bifrost-http/ui/_next/static/css/215063fa9dc64c3d.css b/transports/bifrost-http/ui/_next/static/css/215063fa9dc64c3d.css new file mode 100644 index 0000000000..fc947ea97a --- /dev/null +++ b/transports/bifrost-http/ui/_next/static/css/215063fa9dc64c3d.css @@ -0,0 +1 @@ +/*! tailwindcss v4.1.11 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-gradient-position:initial;--tw-gradient-from:#0000;--tw-gradient-via:#0000;--tw-gradient-to:#0000;--tw-gradient-stops:initial;--tw-gradient-via-stops:initial;--tw-gradient-from-position:0%;--tw-gradient-via-position:50%;--tw-gradient-to-position:100%;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:"";--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@layer theme{:host,:root{--color-red-100:oklch(93.6% .032 17.717);--color-red-800:oklch(44.4% .177 26.899);--color-orange-500:oklch(70.5% .213 47.604);--color-amber-50:oklch(98.7% .022 95.277);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-300:oklch(87.9% .169 91.605);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-950:oklch(27.9% .077 45.635);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-50:oklch(98.2% .018 155.826);--color-green-100:oklch(96.2% .044 156.743);--color-green-200:oklch(92.5% .084 155.995);--color-green-300:oklch(87.1% .15 154.449);--color-green-500:oklch(72.3% .219 149.579);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-green-950:oklch(26.6% .065 152.934);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-300:oklch(80.9% .105 251.813);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-blue-900:oklch(37.9% .146 265.522);--color-blue-950:oklch(28.2% .091 267.935);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-100:oklch(94.6% .033 307.174);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-300:oklch(82.7% .119 306.383);--color-purple-600:oklch(55.8% .288 302.321);--color-purple-700:oklch(49.6% .265 301.924);--color-purple-800:oklch(43.8% .218 303.724);--color-purple-900:oklch(38.1% .176 304.987);--color-purple-950:oklch(29.1% .149 302.717);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-800:oklch(27.8% .033 256.848);--color-neutral-100:oklch(97% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-sm:24rem;--container-lg:32rem;--container-2xl:42rem;--container-3xl:48rem;--container-4xl:56rem;--container-5xl:64rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height:calc(1.5/1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25/1.875);--text-5xl:3rem;--text-5xl--line-height:1;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--tracking-wide:.025em;--tracking-wider:.05em;--tracking-widest:.1em;--leading-relaxed:1.625;--radius-xs:.125rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--animate-ping:ping 1s cubic-bezier(0,0,.2,1)infinite;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}*{border-color:var(--border);outline-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){*{outline-color:color-mix(in oklab,var(--ring)50%,transparent)}}body{background-color:var(--background);color:var(--foreground)}}@layer components;@layer utilities{.\@container\/card-header{container:card-header/inline-size}.pointer-events-none{pointer-events:none}.custom-scrollbar{scrollbar-width:thin;scrollbar-color:#e4e4e7 transparent;overflow:auto!important}.custom-scrollbar::-webkit-scrollbar{--custom-scrollbar-width:8px;--custom-scrollbar-height:8px;width:var(--custom-scrollbar-width,8px);height:var(--custom-scrollbar-height,8px);touch-action:none}.custom-scrollbar::-webkit-scrollbar-track{background-color:#0000}.custom-scrollbar::-webkit-scrollbar-thumb{opacity:0;visibility:hidden;border-radius:8px;--tw-bg-opacity:1!important;background-color:rgba(228,228,231,var(--tw-bg-opacity))!important}.custom-scrollbar:hover::-webkit-scrollbar-thumb{opacity:1;visibility:visible}.custom-scrollbar::-webkit-scrollbar-thumb:hover{--tw-bg-opacity:1!important;background-color:rgba(82,82,91,var(--tw-bg-opacity))!important}.custom-scrollbar::-webkit-scrollbar-thumb:horizontal{background-color:rgba(228,228,231,var(--tw-bg-opacity))!important}.custom-scrollbar::-webkit-scrollbar-thumb:vertical{background-color:rgba(228,228,231,var(--tw-bg-opacity))!important}.custom-scrollbar:hover::-webkit-scrollbar-thumb:horizontal{background-color:rgba(82,82,91,var(--tw-bg-opacity))!important}.custom-scrollbar:hover::-webkit-scrollbar-thumb:vertical{background-color:rgba(82,82,91,var(--tw-bg-opacity))!important}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden}.absolute,.sr-only{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.inset-x-0{inset-inline:calc(var(--spacing)*0)}.inset-y-0{inset-block:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\.5{top:calc(var(--spacing)*1.5)}.top-3\.5{top:calc(var(--spacing)*3.5)}.top-4{top:calc(var(--spacing)*4)}.top-\[50\%\]{top:50%}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.right-2{right:calc(var(--spacing)*2)}.right-3{right:calc(var(--spacing)*3)}.right-4{right:calc(var(--spacing)*4)}.bottom-0{bottom:calc(var(--spacing)*0)}.left-\(--sidebar-width\){left:var(--sidebar-width)}.left-0{left:calc(var(--spacing)*0)}.left-2{left:calc(var(--spacing)*2)}.left-\[50\%\]{left:50%}.z-0{z-index:0}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-2{grid-column-start:2}.row-span-2{grid-row:span 2/span 2}.row-start-1{grid-row-start:1}.-mx-1{margin-inline:calc(var(--spacing)*-1)}.mx-2{margin-inline:calc(var(--spacing)*2)}.mx-3\.5{margin-inline:calc(var(--spacing)*3.5)}.mx-auto{margin-inline:auto}.my-1{margin-block:calc(var(--spacing)*1)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-auto{margin-top:auto}.mr-1{margin-right:calc(var(--spacing)*1)}.mr-2{margin-right:calc(var(--spacing)*2)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-1{margin-left:calc(var(--spacing)*1)}.ml-2{margin-left:calc(var(--spacing)*2)}.ml-auto{margin-left:auto}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.table-row{display:table-row}.field-sizing-content{field-sizing:content}.aspect-square{aspect-ratio:1}.size-2{width:calc(var(--spacing)*2);height:calc(var(--spacing)*2)}.size-2\.5{width:calc(var(--spacing)*2.5);height:calc(var(--spacing)*2.5)}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-7{width:calc(var(--spacing)*7);height:calc(var(--spacing)*7)}.size-8{width:calc(var(--spacing)*8);height:calc(var(--spacing)*8)}.size-9{width:calc(var(--spacing)*9);height:calc(var(--spacing)*9)}.size-full{width:100%;height:100%}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-2{height:calc(var(--spacing)*2)}.h-2\.5{height:calc(var(--spacing)*2.5)}.h-3{height:calc(var(--spacing)*3)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-7{height:calc(var(--spacing)*7)}.h-8{height:calc(var(--spacing)*8)}.h-9{height:calc(var(--spacing)*9)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-14{height:calc(var(--spacing)*14)}.h-16{height:calc(var(--spacing)*16)}.h-24{height:calc(var(--spacing)*24)}.h-64{height:calc(var(--spacing)*64)}.h-\[1\.2rem\]{height:1.2rem}.h-\[1px\]{height:1px}.h-\[calc\(100\%-1px\)\]{height:calc(100% - 1px)}.h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.h-auto{height:auto}.h-base{height:calc(100vh - 6rem)}.h-full{height:100%}.h-px{height:1px}.h-svh{height:100svh}.max-h-\(--radix-dropdown-menu-content-available-height\){max-height:var(--radix-dropdown-menu-content-available-height)}.max-h-\(--radix-select-content-available-height\){max-height:var(--radix-select-content-available-height)}.max-h-\[90vh\]{max-height:90vh}.max-h-\[300px\]{max-height:300px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-4{min-height:calc(var(--spacing)*4)}.min-h-16{min-height:calc(var(--spacing)*16)}.min-h-screen{min-height:100vh}.min-h-svh{min-height:100svh}.w-\(--sidebar-width\){width:var(--sidebar-width)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-2{width:calc(var(--spacing)*2)}.w-2\.5{width:calc(var(--spacing)*2.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\/4{width:75%}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-5xl{width:var(--container-5xl)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-11{width:calc(var(--spacing)*11)}.w-12{width:calc(var(--spacing)*12)}.w-16{width:calc(var(--spacing)*16)}.w-20{width:calc(var(--spacing)*20)}.w-24{width:calc(var(--spacing)*24)}.w-48{width:calc(var(--spacing)*48)}.w-64{width:calc(var(--spacing)*64)}.w-72{width:calc(var(--spacing)*72)}.w-\[1\.2rem\]{width:1.2rem}.w-\[200px\]{width:200px}.w-\[250px\]{width:250px}.w-auto{width:auto}.w-fit{width:fit-content}.w-full{width:100%}.max-w-\(--skeleton-width\){max-width:var(--skeleton-width)}.max-w-2xl{max-width:var(--container-2xl)}.max-w-3xl{max-width:var(--container-3xl)}.max-w-7xl{max-width:var(--container-7xl)}.max-w-72{max-width:calc(var(--spacing)*72)}.max-w-\[240px\]{max-width:240px}.max-w-\[calc\(100\%-2rem\)\]{max-width:calc(100% - 2rem)}.max-w-fit{max-width:fit-content}.max-w-full{max-width:100%}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-5{min-width:calc(var(--spacing)*5)}.min-w-\[8rem\]{min-width:8rem}.min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.flex-1{flex:1}.shrink-0{flex-shrink:0}.caption-bottom{caption-side:bottom}.origin-\(--radix-dropdown-menu-content-transform-origin\){transform-origin:var(--radix-dropdown-menu-content-transform-origin)}.origin-\(--radix-hover-card-content-transform-origin\){transform-origin:var(--radix-hover-card-content-transform-origin)}.origin-\(--radix-popover-content-transform-origin\){transform-origin:var(--radix-popover-content-transform-origin)}.origin-\(--radix-select-content-transform-origin\){transform-origin:var(--radix-select-content-transform-origin)}.origin-\(--radix-tooltip-content-transform-origin\){transform-origin:var(--radix-tooltip-content-transform-origin)}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-px{--tw-translate-x:-1px}.translate-x-\[-50\%\]{--tw-translate-x:-50%}.translate-x-\[-50\%\],.translate-x-px{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-px{--tw-translate-x:1px}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*.5)}.translate-y-0\.5,.translate-y-\[-50\%\]{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-\[-50\%\]{--tw-translate-y:-50%}.translate-y-\[calc\(-50\%_-_2px\)\]{--tw-translate-y:calc(-50% - 2px);translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%}.scale-0,.scale-100{scale:var(--tw-scale-x)var(--tw-scale-y)}.scale-100{--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%}.rotate-0{rotate:none}.rotate-45{rotate:45deg}.rotate-90{rotate:90deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-in{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.animate-ping{animation:var(--animate-ping)}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-default{cursor:default}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.scroll-my-1{scroll-margin-block:calc(var(--spacing)*1)}.scroll-py-1{scroll-padding-block:calc(var(--spacing)*1)}.auto-rows-min{grid-auto-rows:min-content}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-\[0_1fr\]{grid-template-columns:0 1fr}.grid-rows-\[auto_auto\]{grid-template-rows:auto auto}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-items-start{justify-items:start}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-0\.5>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*.5)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*.5)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-8>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*8)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-12>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*12)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*12)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-1>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*1)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-2>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*2)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-3>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*3)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-x-reverse)))}:where(.space-x-4>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*4)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-x-reverse)))}.gap-y-0\.5{row-gap:calc(var(--spacing)*.5)}.self-start{align-self:flex-start}.justify-self-end{justify-self:flex-end}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[2px\]{border-radius:2px}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-sm{border-radius:calc(var(--radius) - 4px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.rounded-xs{border-radius:var(--radius-xs)}.rounded-t-lg{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius)}.rounded-b-none{border-bottom-right-radius:0;border-bottom-left-radius:0}.border{border-style:var(--tw-border-style);border-width:1px}.border-0{border-style:var(--tw-border-style);border-width:0}.border-1{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-none{--tw-border-style:none;border-style:none}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-border{border-color:var(--border)}.border-destructive{border-color:var(--destructive)}.border-green-200{border-color:var(--color-green-200)}.border-input{border-color:var(--input)}.border-muted-foreground\/30{border-color:var(--muted-foreground)}@supports (color:color-mix(in lab,red,red)){.border-muted-foreground\/30{border-color:color-mix(in oklab,var(--muted-foreground)30%,transparent)}}.border-primary,.border-primary\/10{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/10{border-color:color-mix(in oklab,var(--primary)10%,transparent)}}.border-primary\/20{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.border-primary\/20{border-color:color-mix(in oklab,var(--primary)20%,transparent)}}.border-purple-200{border-color:var(--color-purple-200)}.border-sidebar-border{border-color:var(--sidebar-border)}.border-transparent{border-color:#0000}.border-t-transparent{border-top-color:#0000}.border-l-transparent{border-left-color:#0000}.bg-accent{background-color:var(--accent)}.bg-amber-50{background-color:var(--color-amber-50)}.bg-background{background-color:var(--background)}.bg-black\/50{background-color:#00000080}@supports (color:color-mix(in lab,red,red)){.bg-black\/50{background-color:color-mix(in oklab,var(--color-black)50%,transparent)}}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-blue-500{background-color:var(--color-blue-500)}.bg-border{background-color:var(--border)}.bg-card{background-color:var(--card)}.bg-destructive{background-color:var(--destructive)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-green-50{background-color:var(--color-green-50)}.bg-green-100{background-color:var(--color-green-100)}.bg-green-500{background-color:var(--color-green-500)}.bg-green-600{background-color:var(--color-green-600)}.bg-green-700{background-color:var(--color-green-700)}.bg-green-800{background-color:var(--color-green-800)}.bg-muted,.bg-muted\/50{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.bg-muted\/50{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-orange-500{background-color:var(--color-orange-500)}.bg-popover{background-color:var(--popover)}.bg-primary,.bg-primary\/5{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/5{background-color:color-mix(in oklab,var(--primary)5%,transparent)}}.bg-primary\/10{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/10{background-color:color-mix(in oklab,var(--primary)10%,transparent)}}.bg-primary\/20{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.bg-primary\/20{background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.bg-purple-50{background-color:var(--color-purple-50)}.bg-purple-100{background-color:var(--color-purple-100)}.bg-red-100{background-color:var(--color-red-100)}.bg-secondary{background-color:var(--secondary)}.bg-sidebar{background-color:var(--sidebar)}.bg-sidebar-border{background-color:var(--sidebar-border)}.bg-transparent{background-color:#0000}.bg-yellow-100{background-color:var(--color-yellow-100)}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.from-primary{--tw-gradient-from:var(--primary);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.from-primary\/5{--tw-gradient-from:var(--primary)}@supports (color:color-mix(in lab,red,red)){.from-primary\/5{--tw-gradient-from:color-mix(in oklab,var(--primary)5%,transparent)}}.from-primary\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-600{--tw-gradient-to:var(--color-green-600);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.to-green-600\/5{--tw-gradient-to:#00a5440d}@supports (color:color-mix(in lab,red,red)){.to-green-600\/5{--tw-gradient-to:color-mix(in oklab,var(--color-green-600)5%,transparent)}}.to-green-600\/5{--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from)var(--tw-gradient-from-position),var(--tw-gradient-to)var(--tw-gradient-to-position))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.fill-current{fill:currentColor}.fill-primary{fill:var(--primary)}.p-0{padding:calc(var(--spacing)*0)}.p-1{padding:calc(var(--spacing)*1)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-8{padding:calc(var(--spacing)*8)}.p-\[3px\]{padding:3px}.p-px{padding:1px}.px-0{padding-inline:calc(var(--spacing)*0)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-2\.5{padding-inline:calc(var(--spacing)*2.5)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-6{padding-block:calc(var(--spacing)*6)}.py-12{padding-block:calc(var(--spacing)*12)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-6{padding-top:calc(var(--spacing)*6)}.pt-8{padding-top:calc(var(--spacing)*8)}.pr-2{padding-right:calc(var(--spacing)*2)}.pr-8{padding-right:calc(var(--spacing)*8)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-10{padding-bottom:calc(var(--spacing)*10)}.pb-24{padding-bottom:calc(var(--spacing)*24)}.pl-2{padding-left:calc(var(--spacing)*2)}.pl-8{padding-left:calc(var(--spacing)*8)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-5xl{font-size:var(--text-5xl);line-height:var(--tw-leading,var(--text-5xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-none{--tw-leading:1;line-height:1}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-wider{--tw-tracking:var(--tracking-wider);letter-spacing:var(--tracking-wider)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.text-balance{text-wrap:balance}.wrap-anywhere{overflow-wrap:anywhere}.text-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-card-foreground{color:var(--card-foreground)}.text-destructive{color:var(--destructive)}.text-foreground{color:var(--foreground)}.text-gray-600{color:var(--color-gray-600)}.text-gray-800{color:var(--color-gray-800)}.text-green-600{color:var(--color-green-600)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-muted-foreground{color:var(--muted-foreground)}.text-neutral-800{color:var(--color-neutral-800)}.text-popover-foreground{color:var(--popover-foreground)}.text-primary{color:var(--primary)}.text-primary-foreground{color:var(--primary-foreground)}.text-purple-600{color:var(--color-purple-600)}.text-purple-700{color:var(--color-purple-700)}.text-purple-800{color:var(--color-purple-800)}.text-red-800{color:var(--color-red-800)}.text-secondary-foreground{color:var(--secondary-foreground)}.text-sidebar-foreground,.text-sidebar-foreground\/70{color:var(--sidebar-foreground)}@supports (color:color-mix(in lab,red,red)){.text-sidebar-foreground\/70{color:color-mix(in oklab,var(--sidebar-foreground)70%,transparent)}}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.capitalize{text-transform:capitalize}.lowercase{text-transform:lowercase}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,)var(--tw-slashed-zero,)var(--tw-numeric-figure,)var(--tw-numeric-spacing,)var(--tw-numeric-fraction,)}.underline-offset-4{text-underline-offset:4px}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-30{opacity:.3}.opacity-50{opacity:.5}.opacity-70{opacity:.7}.opacity-75{opacity:.75}.opacity-100{opacity:1}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\]{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-border)))}.shadow-\[0_0_0_1px_hsl\(var\(--sidebar-border\)\)\],.shadow-lg{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-md,.shadow-none{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a)}.shadow-sm,.shadow-xs{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xs{--tw-shadow:0 1px 2px 0 var(--tw-shadow-color,#0000000d)}.ring-0{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-sidebar-ring{--tw-ring-color:var(--sidebar-ring)}.ring-offset-background{--tw-ring-offset-color:var(--background)}.ring-offset-transparent{--tw-ring-offset-color:transparent}.outline-hidden{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.outline-hidden{outline-offset:2px;outline:2px solid #0000}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,visibility,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[color\,box-shadow\]{transition-property:color,box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[left\,right\,width\]{transition-property:left,right,width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[margin\,opacity\]{transition-property:margin,opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\,padding\]{transition-property:width,height,padding;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.delay-75{transition-delay:75ms}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-linear{--tw-ease:linear;transition-timing-function:linear}.delay-75{--tw-animation-delay:75ms;animation-delay:75ms}.fade-in-0{--tw-enter-opacity:0}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.zoom-in-95{--tw-enter-scale:.95}.running{animation-play-state:running}.slide-in-from-left-2{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.slide-in-from-right-2{--tw-enter-translate-x:calc(2*var(--spacing))}.group-focus-within\/menu-item\:opacity-100:is(:where(.group\/menu-item):focus-within *){opacity:1}@media (hover:hover){.group-hover\:bg-primary\/20:is(:where(.group):hover *){background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.group-hover\:bg-primary\/20:is(:where(.group):hover *){background-color:color-mix(in oklab,var(--primary)20%,transparent)}}.group-hover\:text-primary:is(:where(.group):hover *){color:var(--primary)}.group-hover\/menu-item\:opacity-100:is(:where(.group\/menu-item):hover *),.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-has-data-\[sidebar\=menu-action\]\/menu-item\:pr-8:is(:where(.group\/menu-item):has([data-sidebar=menu-action]) *){padding-right:calc(var(--spacing)*8)}.group-data-\[collapsible\=icon\]\:-mt-8:is(:where(.group)[data-collapsible=icon] *){margin-top:calc(var(--spacing)*-8)}.group-data-\[collapsible\=icon\]\:hidden:is(:where(.group)[data-collapsible=icon] *){display:none}.group-data-\[collapsible\=icon\]\:size-8\!:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--spacing)*8)!important;height:calc(var(--spacing)*8)!important}.group-data-\[collapsible\=icon\]\:w-\(--sidebar-width-icon\):is(:where(.group)[data-collapsible=icon] *){width:var(--sidebar-width-icon)}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)))}.group-data-\[collapsible\=icon\]\:w-\[calc\(var\(--sidebar-width-icon\)\+\(--spacing\(4\)\)\+2px\)\]:is(:where(.group)[data-collapsible=icon] *){width:calc(var(--sidebar-width-icon) + (calc(var(--spacing)*4)) + 2px)}.group-data-\[collapsible\=icon\]\:overflow-hidden:is(:where(.group)[data-collapsible=icon] *){overflow:hidden}.group-data-\[collapsible\=icon\]\:p-0\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*0)!important}.group-data-\[collapsible\=icon\]\:p-2\!:is(:where(.group)[data-collapsible=icon] *){padding:calc(var(--spacing)*2)!important}.group-data-\[collapsible\=icon\]\:opacity-0:is(:where(.group)[data-collapsible=icon] *){opacity:0}.group-data-\[collapsible\=offcanvas\]\:right-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){right:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:left-\[calc\(var\(--sidebar-width\)\*-1\)\]:is(:where(.group)[data-collapsible=offcanvas] *){left:calc(var(--sidebar-width)*-1)}.group-data-\[collapsible\=offcanvas\]\:w-0:is(:where(.group)[data-collapsible=offcanvas] *){width:calc(var(--spacing)*0)}.group-data-\[collapsible\=offcanvas\]\:translate-x-0:is(:where(.group)[data-collapsible=offcanvas] *){--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.group-data-\[disabled\=true\]\:pointer-events-none:is(:where(.group)[data-disabled=true] *){pointer-events:none}.group-data-\[disabled\=true\]\:opacity-50:is(:where(.group)[data-disabled=true] *){opacity:.5}.group-data-\[side\=left\]\:-right-4:is(:where(.group)[data-side=left] *){right:calc(var(--spacing)*-4)}.group-data-\[side\=left\]\:border-r:is(:where(.group)[data-side=left] *){border-right-style:var(--tw-border-style);border-right-width:1px}.group-data-\[side\=right\]\:left-0:is(:where(.group)[data-side=right] *){left:calc(var(--spacing)*0)}.group-data-\[side\=right\]\:rotate-180:is(:where(.group)[data-side=right] *){rotate:180deg}.group-data-\[side\=right\]\:border-l:is(:where(.group)[data-side=right] *){border-left-style:var(--tw-border-style);border-left-width:1px}.group-data-\[variant\=floating\]\:rounded-lg:is(:where(.group)[data-variant=floating] *){border-radius:var(--radius)}.group-data-\[variant\=floating\]\:border:is(:where(.group)[data-variant=floating] *){border-style:var(--tw-border-style);border-width:1px}.group-data-\[variant\=floating\]\:border-sidebar-border:is(:where(.group)[data-variant=floating] *){border-color:var(--sidebar-border)}.group-data-\[variant\=floating\]\:shadow-sm:is(:where(.group)[data-variant=floating] *){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}@media (hover:hover){.peer-hover\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button):hover~*){color:var(--sidebar-accent-foreground)}}.peer-disabled\:cursor-not-allowed:is(:where(.peer):disabled~*){cursor:not-allowed}.peer-disabled\:opacity-50:is(:where(.peer):disabled~*){opacity:.5}.peer-data-\[active\=true\]\/menu-button\:text-sidebar-accent-foreground:is(:where(.peer\/menu-button)[data-active=true]~*){color:var(--sidebar-accent-foreground)}.peer-data-\[size\=default\]\/menu-button\:top-1\.5:is(:where(.peer\/menu-button)[data-size=default]~*){top:calc(var(--spacing)*1.5)}.peer-data-\[size\=lg\]\/menu-button\:top-2\.5:is(:where(.peer\/menu-button)[data-size=lg]~*){top:calc(var(--spacing)*2.5)}.peer-data-\[size\=sm\]\/menu-button\:top-1:is(:where(.peer\/menu-button)[data-size=sm]~*){top:calc(var(--spacing)*1)}.selection\:bg-primary ::selection{background-color:var(--primary)}.selection\:bg-primary::selection{background-color:var(--primary)}.selection\:text-primary-foreground ::selection{color:var(--primary-foreground)}.selection\:text-primary-foreground::selection{color:var(--primary-foreground)}.file\:inline-flex::file-selector-button{display:inline-flex}.file\:h-7::file-selector-button{height:calc(var(--spacing)*7)}.file\:border-0::file-selector-button{border-style:var(--tw-border-style);border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.file\:font-medium::file-selector-button{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.file\:text-foreground::file-selector-button{color:var(--foreground)}.placeholder\:text-muted-foreground::placeholder{color:var(--muted-foreground)}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:-inset-2:after{content:var(--tw-content);inset:calc(var(--spacing)*-2)}.after\:inset-y-0:after{content:var(--tw-content);inset-block:calc(var(--spacing)*0)}.after\:left-1\/2:after{content:var(--tw-content);left:50%}.after\:w-\[2px\]:after{content:var(--tw-content);width:2px}.group-data-\[collapsible\=offcanvas\]\:after\:left-full:is(:where(.group)[data-collapsible=offcanvas] *):after{content:var(--tw-content);left:100%}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}@media (hover:hover){.hover\:border:hover{border-style:var(--tw-border-style);border-width:1px}.hover\:border-primary\/50:hover{border-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:border-primary\/50:hover{border-color:color-mix(in oklab,var(--primary)50%,transparent)}}.hover\:bg-accent:hover{background-color:var(--accent)}.hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}.hover\:bg-muted\/50:hover{background-color:var(--muted)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-muted\/50:hover{background-color:color-mix(in oklab,var(--muted)50%,transparent)}}.hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}.hover\:bg-secondary:hover,.hover\:bg-secondary\/80:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){.hover\:bg-secondary\/80:hover{background-color:color-mix(in oklab,var(--secondary)80%,transparent)}}.hover\:bg-sidebar-accent:hover{background-color:var(--sidebar-accent)}.hover\:bg-transparent:hover{background-color:#0000}.hover\:text-accent-foreground:hover{color:var(--accent-foreground)}.hover\:text-sidebar-accent-foreground:hover{color:var(--sidebar-accent-foreground)}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover{--tw-shadow:0 0 0 1px var(--tw-shadow-color,hsl(var(--sidebar-accent)))}.hover\:shadow-\[0_0_0_1px_hsl\(var\(--sidebar-accent\)\)\]:hover,.hover\:shadow-lg:hover{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:group-data-\[collapsible\=offcanvas\]\:bg-sidebar:hover:is(:where(.group)[data-collapsible=offcanvas] *){background-color:var(--sidebar)}.hover\:after\:bg-sidebar-border:hover:after{content:var(--tw-content);background-color:var(--sidebar-border)}}.focus\:bg-accent:focus{background-color:var(--accent)}.focus\:text-accent-foreground:focus{color:var(--accent-foreground)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-ring:focus{--tw-ring-color:var(--ring)}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus\:outline-hidden:focus{--tw-outline-style:none;outline-style:none}@media (forced-colors:active){.focus\:outline-hidden:focus{outline-offset:2px;outline:2px solid #0000}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-0:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(0px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-2:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-destructive\/20:focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.focus-visible\:ring-ring:focus-visible,.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color)}.focus-visible\:ring-offset-background:focus-visible{--tw-ring-offset-color:var(--background)}.focus-visible\:outline-1:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-ring:focus-visible{outline-color:var(--ring)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.active\:bg-sidebar-accent:active{background-color:var(--sidebar-accent)}.active\:text-sidebar-accent-foreground:active{color:var(--sidebar-accent-foreground)}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}:where([data-side=left]) .in-data-\[side\=left\]\:cursor-w-resize{cursor:w-resize}:where([data-side=right]) .in-data-\[side\=right\]\:cursor-e-resize{cursor:e-resize}.has-data-\[slot\=card-action\]\:grid-cols-\[1fr_auto\]:has([data-slot=card-action]){grid-template-columns:1fr auto}.has-data-\[variant\=inset\]\:bg-sidebar:has([data-variant=inset]){background-color:var(--sidebar)}.has-\[\>svg\]\:grid-cols-\[calc\(var\(--spacing\)\*4\)_1fr\]:has(>svg){grid-template-columns:calc(var(--spacing)*4)1fr}.has-\[\>svg\]\:gap-x-3:has(>svg){column-gap:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-2\.5:has(>svg){padding-inline:calc(var(--spacing)*2.5)}.has-\[\>svg\]\:px-3:has(>svg){padding-inline:calc(var(--spacing)*3)}.has-\[\>svg\]\:px-4:has(>svg){padding-inline:calc(var(--spacing)*4)}.aria-disabled\:pointer-events-none[aria-disabled=true]{pointer-events:none}.aria-disabled\:opacity-50[aria-disabled=true]{opacity:.5}.aria-invalid\:border-destructive[aria-invalid=true]{border-color:var(--destructive)}.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.aria-invalid\:ring-destructive\/20[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.data-\[active\=true\]\:bg-sidebar-accent[data-active=true]{background-color:var(--sidebar-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-sidebar-accent-foreground[data-active=true]{color:var(--sidebar-accent-foreground)}.data-\[disabled\]\:pointer-events-none[data-disabled]{pointer-events:none}.data-\[disabled\]\:opacity-50[data-disabled]{opacity:.5}.data-\[disabled\=true\]\:pointer-events-none[data-disabled=true]{pointer-events:none}.data-\[disabled\=true\]\:opacity-50[data-disabled=true]{opacity:.5}.data-\[inset\]\:pl-8[data-inset]{padding-left:calc(var(--spacing)*8)}.data-\[orientation\=horizontal\]\:h-px[data-orientation=horizontal]{height:1px}.data-\[orientation\=horizontal\]\:w-full[data-orientation=horizontal]{width:100%}.data-\[orientation\=vertical\]\:h-full[data-orientation=vertical]{height:100%}.data-\[orientation\=vertical\]\:w-px[data-orientation=vertical]{width:1px}.data-\[placeholder\]\:text-muted-foreground[data-placeholder]{color:var(--muted-foreground)}.data-\[selected\=true\]\:bg-accent[data-selected=true]{background-color:var(--accent)}.data-\[selected\=true\]\:text-accent-foreground[data-selected=true]{color:var(--accent-foreground)}.data-\[side\=bottom\]\:translate-y-1[data-side=bottom]{--tw-translate-y:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=bottom\]\:slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:calc(2*var(--spacing)*-1)}.data-\[side\=left\]\:-translate-x-1[data-side=left]{--tw-translate-x:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=left\]\:slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:calc(2*var(--spacing))}.data-\[side\=right\]\:translate-x-1[data-side=right]{--tw-translate-x:calc(var(--spacing)*1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=right\]\:slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:calc(2*var(--spacing)*-1)}.data-\[side\=top\]\:-translate-y-1[data-side=top]{--tw-translate-y:calc(var(--spacing)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[side\=top\]\:slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:calc(2*var(--spacing))}.data-\[size\=default\]\:h-9[data-size=default]{height:calc(var(--spacing)*9)}.data-\[size\=sm\]\:h-8[data-size=sm]{height:calc(var(--spacing)*8)}:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){:is(.\*\:data-\[slot\=alert-description\]\:text-destructive\/90>*)[data-slot=alert-description]{color:color-mix(in oklab,var(--destructive)90%,transparent)}}:is(.\*\*\:data-\[slot\=command-input-wrapper\]\:h-12 *)[data-slot=command-input-wrapper]{height:calc(var(--spacing)*12)}:is(.\*\:data-\[slot\=select-value\]\:line-clamp-1>*)[data-slot=select-value]{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}:is(.\*\:data-\[slot\=select-value\]\:flex>*)[data-slot=select-value]{display:flex}:is(.\*\:data-\[slot\=select-value\]\:items-center>*)[data-slot=select-value]{align-items:center}:is(.\*\:data-\[slot\=select-value\]\:gap-2>*)[data-slot=select-value]{gap:calc(var(--spacing)*2)}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:var(--background)}.data-\[state\=active\]\:shadow-sm[data-state=active]{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.data-\[state\=checked\]\:translate-x-5[data-state=checked]{--tw-translate-x:calc(var(--spacing)*5);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=checked\]\:bg-primary[data-state=checked]{background-color:var(--primary)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=closed\]\:animate-out[data-state=closed]{animation:exit var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=closed\]\:duration-300[data-state=closed]{--tw-duration:.3s;transition-duration:.3s}.data-\[state\=closed\]\:fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=closed\]\:zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=closed\]\:slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=closed\]\:slide-out-to-left[data-state=closed]{--tw-exit-translate-x:-100%}.data-\[state\=closed\]\:slide-out-to-right[data-state=closed]{--tw-exit-translate-x:100%}.data-\[state\=closed\]\:slide-out-to-top[data-state=closed]{--tw-exit-translate-y:-100%}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-animation-duration,var(--tw-duration,.2s))ease-out}.data-\[state\=open\]\:animate-in[data-state=open]{animation:enter var(--tw-animation-duration,var(--tw-duration,.15s))var(--tw-ease,ease)var(--tw-animation-delay,0s)var(--tw-animation-iteration-count,1)var(--tw-animation-direction,normal)var(--tw-animation-fill-mode,none)}.data-\[state\=open\]\:bg-accent[data-state=open]{background-color:var(--accent)}.data-\[state\=open\]\:bg-secondary[data-state=open]{background-color:var(--secondary)}.data-\[state\=open\]\:text-accent-foreground[data-state=open]{color:var(--accent-foreground)}.data-\[state\=open\]\:text-muted-foreground[data-state=open]{color:var(--muted-foreground)}.data-\[state\=open\]\:opacity-100[data-state=open]{opacity:1}.data-\[state\=open\]\:duration-500[data-state=open]{--tw-duration:.5s;transition-duration:.5s}.data-\[state\=open\]\:fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=open\]\:zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[state\=open\]\:slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.data-\[state\=open\]\:slide-in-from-left[data-state=open]{--tw-enter-translate-x:-100%}.data-\[state\=open\]\:slide-in-from-right[data-state=open]{--tw-enter-translate-x:100%}.data-\[state\=open\]\:slide-in-from-top[data-state=open]{--tw-enter-translate-y:-100%}@media (hover:hover){.data-\[state\=open\]\:hover\:bg-sidebar-accent[data-state=open]:hover{background-color:var(--sidebar-accent)}.data-\[state\=open\]\:hover\:text-sidebar-accent-foreground[data-state=open]:hover{color:var(--sidebar-accent-foreground)}}.data-\[state\=selected\]\:bg-muted[data-state=selected]{background-color:var(--muted)}.data-\[state\=unchecked\]\:translate-x-0[data-state=unchecked]{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.data-\[state\=unchecked\]\:bg-input[data-state=unchecked]{background-color:var(--input)}.data-\[variant\=destructive\]\:text-destructive[data-variant=destructive]{color:var(--destructive)}.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.data-\[variant\=destructive\]\:focus\:bg-destructive\/10[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)10%,transparent)}}.data-\[variant\=destructive\]\:focus\:text-destructive[data-variant=destructive]:focus{color:var(--destructive)}@media (min-width:40rem){.sm\:mr-3{margin-right:calc(var(--spacing)*3)}.sm\:flex{display:flex}.sm\:max-w-2xl{max-width:var(--container-2xl)}.sm\:max-w-4xl{max-width:var(--container-4xl)}.sm\:max-w-lg{max-width:var(--container-lg)}.sm\:max-w-sm{max-width:var(--container-sm)}.sm\:flex-row{flex-direction:row}.sm\:justify-end{justify-content:flex-end}.sm\:px-4{padding-inline:calc(var(--spacing)*4)}.sm\:text-left{text-align:left}.sm\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:48rem){.md\:block{display:block}.md\:flex{display:flex}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.md\:opacity-0{opacity:0}.md\:peer-data-\[variant\=inset\]\:m-2:is(:where(.peer)[data-variant=inset]~*){margin:calc(var(--spacing)*2)}.md\:peer-data-\[variant\=inset\]\:ml-0:is(:where(.peer)[data-variant=inset]~*){margin-left:calc(var(--spacing)*0)}.md\:peer-data-\[variant\=inset\]\:rounded-xl:is(:where(.peer)[data-variant=inset]~*){border-radius:calc(var(--radius) + 4px)}.md\:peer-data-\[variant\=inset\]\:shadow-sm:is(:where(.peer)[data-variant=inset]~*){--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.md\:peer-data-\[variant\=inset\]\:peer-data-\[state\=collapsed\]\:ml-2:is(:where(.peer)[data-variant=inset]~*):is(:where(.peer)[data-state=collapsed]~*){margin-left:calc(var(--spacing)*2)}.md\:after\:hidden:after{content:var(--tw-content);display:none}}@media (min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}.dark\:scale-0:is(.dark *){--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:scale-100:is(.dark *){--tw-scale-x:100%;--tw-scale-y:100%;--tw-scale-z:100%;scale:var(--tw-scale-x)var(--tw-scale-y)}.dark\:-rotate-90:is(.dark *){rotate:-90deg}.dark\:rotate-0:is(.dark *){rotate:none}.dark\:border-amber-800:is(.dark *){border-color:var(--color-amber-800)}.dark\:border-blue-800:is(.dark *){border-color:var(--color-blue-800)}.dark\:border-green-800:is(.dark *){border-color:var(--color-green-800)}.dark\:border-input:is(.dark *){border-color:var(--input)}.dark\:border-purple-800:is(.dark *){border-color:var(--color-purple-800)}.dark\:bg-amber-950\/20:is(.dark *){background-color:#46190133}@supports (color:color-mix(in lab,red,red)){.dark\:bg-amber-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-amber-950)20%,transparent)}}.dark\:bg-blue-900:is(.dark *){background-color:var(--color-blue-900)}.dark\:bg-blue-950\/20:is(.dark *){background-color:#16245633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-blue-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-blue-950)20%,transparent)}}.dark\:bg-destructive\/60:is(.dark *){background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-destructive\/60:is(.dark *){background-color:color-mix(in oklab,var(--destructive)60%,transparent)}}.dark\:bg-green-200:is(.dark *){background-color:var(--color-green-200)}.dark\:bg-green-900:is(.dark *){background-color:var(--color-green-900)}.dark\:bg-green-950\/20:is(.dark *){background-color:#032e1533}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-green-950)20%,transparent)}}.dark\:bg-input\/30:is(.dark *){background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:bg-input\/30:is(.dark *){background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:bg-purple-900:is(.dark *){background-color:var(--color-purple-900)}.dark\:bg-purple-950\/20:is(.dark *){background-color:#3c036633}@supports (color:color-mix(in lab,red,red)){.dark\:bg-purple-950\/20:is(.dark *){background-color:color-mix(in oklab,var(--color-purple-950)20%,transparent)}}.dark\:text-amber-200:is(.dark *){color:var(--color-amber-200)}.dark\:text-amber-300:is(.dark *){color:var(--color-amber-300)}.dark\:text-blue-200:is(.dark *){color:var(--color-blue-200)}.dark\:text-blue-300:is(.dark *){color:var(--color-blue-300)}.dark\:text-green-200:is(.dark *){color:var(--color-green-200)}.dark\:text-green-300:is(.dark *){color:var(--color-green-300)}.dark\:text-muted-foreground:is(.dark *){color:var(--muted-foreground)}.dark\:text-purple-200:is(.dark *){color:var(--color-purple-200)}.dark\:text-purple-300:is(.dark *){color:var(--color-purple-300)}@media (hover:hover){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-accent\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--accent)50%,transparent)}}.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-input\/50:is(.dark *):hover{background-color:color-mix(in oklab,var(--input)50%,transparent)}}}.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:focus-visible\:ring-destructive\/40:is(.dark *):focus-visible{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:aria-invalid\:ring-destructive\/40:is(.dark *)[aria-invalid=true]{--tw-ring-color:color-mix(in oklab,var(--destructive)40%,transparent)}}.dark\:data-\[state\=active\]\:border-input:is(.dark *)[data-state=active]{border-color:var(--input)}.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:var(--input)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[state\=active\]\:bg-input\/30:is(.dark *)[data-state=active]{background-color:color-mix(in oklab,var(--input)30%,transparent)}}.dark\:data-\[state\=active\]\:text-foreground:is(.dark *)[data-state=active]{color:var(--foreground)}.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){.dark\:data-\[variant\=destructive\]\:focus\:bg-destructive\/20:is(.dark *)[data-variant=destructive]:focus{background-color:color-mix(in oklab,var(--destructive)20%,transparent)}}.\[\&_\[cmdk-group-heading\]\]\:px-2 [cmdk-group-heading]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group-heading\]\]\:py-1\.5 [cmdk-group-heading]{padding-block:calc(var(--spacing)*1.5)}.\[\&_\[cmdk-group-heading\]\]\:text-xs [cmdk-group-heading]{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.\[\&_\[cmdk-group-heading\]\]\:font-medium [cmdk-group-heading]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.\[\&_\[cmdk-group-heading\]\]\:text-muted-foreground [cmdk-group-heading]{color:var(--muted-foreground)}.\[\&_\[cmdk-group\]\]\:px-2 [cmdk-group]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-group\]\:not\(\[hidden\]\)_\~\[cmdk-group\]\]\:pt-0 [cmdk-group]:not([hidden])~[cmdk-group]{padding-top:calc(var(--spacing)*0)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:h-5 [cmdk-input-wrapper] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-input-wrapper\]_svg\]\:w-5 [cmdk-input-wrapper] svg{width:calc(var(--spacing)*5)}.\[\&_\[cmdk-input\]\]\:h-12 [cmdk-input]{height:calc(var(--spacing)*12)}.\[\&_\[cmdk-item\]\]\:px-2 [cmdk-item]{padding-inline:calc(var(--spacing)*2)}.\[\&_\[cmdk-item\]\]\:py-3 [cmdk-item]{padding-block:calc(var(--spacing)*3)}.\[\&_\[cmdk-item\]_svg\]\:h-5 [cmdk-item] svg{height:calc(var(--spacing)*5)}.\[\&_\[cmdk-item\]_svg\]\:w-5 [cmdk-item] svg{width:calc(var(--spacing)*5)}.\[\&_p\]\:leading-relaxed p{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:invisible svg{visibility:hidden}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}.\[\&_svg\:not\(\[class\*\=\'size-\'\]\)\]\:size-4 svg:not([class*=size-]){width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\:not\(\[class\*\=\'text-\'\]\)\]\:text-muted-foreground svg:not([class*=text-]){color:var(--muted-foreground)}.\[\&_tr\]\:border-b tr{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.\[\&_tr\:last-child\]\:border-0 tr:last-child{border-style:var(--tw-border-style);border-width:0}.\[\&\:has\(\[role\=checkbox\]\)\]\:pr-0:has([role=checkbox]){padding-right:calc(var(--spacing)*0)}.\[\.border-b\]\:pb-6.border-b{padding-bottom:calc(var(--spacing)*6)}.\[\.border-t\]\:pt-6.border-t{padding-top:calc(var(--spacing)*6)}:is(.\*\:\[span\]\:last\:flex>*):is(span):last-child{display:flex}:is(.\*\:\[span\]\:last\:items-center>*):is(span):last-child{align-items:center}:is(.\*\:\[span\]\:last\:gap-2>*):is(span):last-child{gap:calc(var(--spacing)*2)}:is(.data-\[variant\=destructive\]\:\*\:\[svg\]\:\!text-destructive[data-variant=destructive]>*):is(svg){color:var(--destructive)!important}.\[\&\>\[role\=checkbox\]\]\:translate-y-\[2px\]>[role=checkbox]{--tw-translate-y:2px;translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>button\]\:hidden>button{display:none}.\[\&\>span\:last-child\]\:truncate>span:last-child{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.\[\&\>svg\]\:pointer-events-none>svg{pointer-events:none}.\[\&\>svg\]\:size-3>svg{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.\[\&\>svg\]\:size-4>svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&\>svg\]\:shrink-0>svg{flex-shrink:0}.\[\&\>svg\]\:translate-y-0\.5>svg{--tw-translate-y:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.\[\&\>svg\]\:text-current>svg{color:currentColor}.\[\&\>svg\]\:text-sidebar-accent-foreground>svg{color:var(--sidebar-accent-foreground)}.\[\&\>tr\]\:last\:border-b-0>tr:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}[data-side=left][data-collapsible=offcanvas] .\[\[data-side\=left\]\[data-collapsible\=offcanvas\]_\&\]\:-right-2{right:calc(var(--spacing)*-2)}[data-side=left][data-state=collapsed] .\[\[data-side\=left\]\[data-state\=collapsed\]_\&\]\:cursor-e-resize{cursor:e-resize}[data-side=right][data-collapsible=offcanvas] .\[\[data-side\=right\]\[data-collapsible\=offcanvas\]_\&\]\:-left-2{left:calc(var(--spacing)*-2)}[data-side=right][data-state=collapsed] .\[\[data-side\=right\]\[data-state\=collapsed\]_\&\]\:cursor-w-resize{cursor:w-resize}@media (hover:hover){a.\[a\&\]\:hover\:bg-accent:hover{background-color:var(--accent)}a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:var(--destructive)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-destructive\/90:hover{background-color:color-mix(in oklab,var(--destructive)90%,transparent)}}a.\[a\&\]\:hover\:bg-green-700\/90:hover{background-color:#008138e6}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-green-700\/90:hover{background-color:color-mix(in oklab,var(--color-green-700)90%,transparent)}}a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:var(--primary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-primary\/90:hover{background-color:color-mix(in oklab,var(--primary)90%,transparent)}}a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:var(--secondary)}@supports (color:color-mix(in lab,red,red)){a.\[a\&\]\:hover\:bg-secondary\/90:hover{background-color:color-mix(in oklab,var(--secondary)90%,transparent)}}a.\[a\&\]\:hover\:text-accent-foreground:hover{color:var(--accent-foreground)}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(100% 0 0);--foreground:oklch(14.1% .005 285.823);--card:oklch(100% 0 0);--card-foreground:oklch(14.1% .005 285.823);--popover:oklch(100% 0 0);--popover-foreground:oklch(14.1% .005 285.823);--primary:oklch(50.81% .1049 165.61);--primary-foreground:oklch(98.5% 0 0);--secondary:oklch(96.7% .001 286.375);--secondary-foreground:oklch(21% .006 285.885);--muted:oklch(96.7% .001 286.375);--muted-foreground:oklch(55.2% .016 285.938);--accent:oklch(96.7% .001 286.375);--accent-foreground:oklch(21% .006 285.885);--destructive:oklch(57.7% .245 27.325);--border:oklch(92% .004 286.32);--input:oklch(92% .004 286.32);--ring:oklch(70.5% .015 286.067);--chart-1:oklch(64.6% .222 41.116);--chart-2:oklch(60% .118 184.704);--chart-3:oklch(39.8% .07 227.392);--chart-4:oklch(82.8% .189 84.429);--chart-5:oklch(76.9% .188 70.08);--sidebar:oklch(98.5% 0 0);--sidebar-foreground:oklch(14.1% .005 285.823);--sidebar-primary:oklch(21% .006 285.885);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(96.7% .001 286.375);--sidebar-accent-foreground:oklch(21% .006 285.885);--sidebar-border:oklch(92% .004 286.32);--sidebar-ring:oklch(70.5% .015 286.067)}.dark{--background:oklch(14.1% .005 285.823);--foreground:oklch(98.5% 0 0);--card:oklch(21% .006 285.885);--card-foreground:oklch(98.5% 0 0);--popover:oklch(21% .006 285.885);--popover-foreground:oklch(98.5% 0 0);--primary:oklch(92% .004 286.32);--primary-foreground:oklch(21% .006 285.885);--secondary:oklch(27.4% .006 286.033);--secondary-foreground:oklch(98.5% 0 0);--muted:oklch(27.4% .006 286.033);--muted-foreground:oklch(70.5% .015 286.067);--accent:oklch(27.4% .006 286.033);--accent-foreground:oklch(98.5% 0 0);--destructive:oklch(70.4% .191 22.216);--border:oklch(100% 0 0/.1);--input:oklch(100% 0 0/.15);--ring:oklch(55.2% .016 285.938);--chart-1:oklch(48.8% .243 264.376);--chart-2:oklch(69.6% .17 162.48);--chart-3:oklch(76.9% .188 70.08);--chart-4:oklch(62.7% .265 303.9);--chart-5:oklch(64.5% .246 16.439);--sidebar:oklch(21% .006 285.885);--sidebar-foreground:oklch(98.5% 0 0);--sidebar-primary:oklch(48.8% .243 264.376);--sidebar-primary-foreground:oklch(98.5% 0 0);--sidebar-accent:oklch(27.4% .006 286.033);--sidebar-accent-foreground:oklch(98.5% 0 0);--sidebar-border:oklch(100% 0 0/.1);--sidebar-ring:oklch(55.2% .016 285.938)}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-gradient-position{syntax:"*";inherits:false}@property --tw-gradient-from{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-via{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-to{syntax:"";inherits:false;initial-value:#0000}@property --tw-gradient-stops{syntax:"*";inherits:false}@property --tw-gradient-via-stops{syntax:"*";inherits:false}@property --tw-gradient-from-position{syntax:"";inherits:false;initial-value:0}@property --tw-gradient-via-position{syntax:"";inherits:false;initial-value:50%}@property --tw-gradient-to-position{syntax:"";inherits:false;initial-value:100%}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(1turn)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes pulse{50%{opacity:.5}}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,var(--reka-accordion-content-height,var(--kb-accordion-content-height,auto))))}to{height:0}}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8d697b304b401681-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba015fad6dcf6784-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/569ce4b8f30dc480-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Fallback;src:local("Arial");ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.00%;size-adjust:104.76%}.__className_5cfdac{font-family:Geist,Geist Fallback;font-style:normal}.__variable_5cfdac{--font-geist-sans:"Geist","Geist Fallback"}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/9610d9e46709d722-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/747892c23ea88013-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/93f479601ee12b01-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Geist Mono Fallback;src:local("Arial");ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.00%;size-adjust:134.59%}.__className_9a8899{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.__variable_9a8899{--font-geist-mono:"Geist Mono","Geist Mono Fallback"} \ No newline at end of file diff --git a/transports/bifrost-http/ui/config/index.html b/transports/bifrost-http/ui/config/index.html index d2e25abe04..7232245f20 100644 --- a/transports/bifrost-http/ui/config/index.html +++ b/transports/bifrost-http/ui/config/index.html @@ -1,4 +1,4 @@ -Bifrost - The fastest LLM gateway
\ No newline at end of file +
\ No newline at end of file diff --git a/transports/bifrost-http/ui/config/index.txt b/transports/bifrost-http/ui/config/index.txt index aa3f176f86..e171cea8e1 100644 --- a/transports/bifrost-http/ui/config/index.txt +++ b/transports/bifrost-http/ui/config/index.txt @@ -1,14 +1,14 @@ 1:"$Sreact.fragment" -2:I[7942,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] -3:I[9304,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"ThemeProvider"] -4:I[6671,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"Toaster"] -5:I[6705,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"WebSocketProvider"] -6:I[193,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"SidebarProvider"] -7:I[975,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] 8:I[7555,[],""] 9:I[1295,[],""] a:I[894,[],"ClientPageRoot"] -b:I[12,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","452","static/chunks/452-52b7b5dcb4902a2c.js","273","static/chunks/273-9756261fec6bc01b.js","447","static/chunks/447-2fb3004c69b6e1a0.js","0","static/chunks/0-92aa8a29adf5b5bf.js","653","static/chunks/app/config/page-48faa8da2b43fe44.js"],"default"] +b:I[4527,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","412","static/chunks/412-1cad36ab64c91342.js","653","static/chunks/app/config/page-10636692240e10da.js"],"default"] e:I[9665,[],"OutletBoundary"] 11:I[4911,[],"AsyncMetadataOutlet"] 13:I[9665,[],"ViewportBoundary"] @@ -16,8 +16,8 @@ e:I[9665,[],"OutletBoundary"] 17:I[6614,[],""] :HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/1c39a7604f11b7f7.css","style"] -0:{"P":null,"b":"build","p":"","c":["","config",""],"i":false,"f":[[["",{"children":["config",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1c39a7604f11b7f7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar relative mx-auto flex min-h-screen w-5xl flex-col py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["config",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","bAwBFZJksnmEZkwADQnE1v",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["","config",""],"i":false,"f":[[["",{"children":["config",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["config",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Se7ep-X2olt1FpjUwyBYlv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} 18:"$Sreact.suspense" 19:I[4911,[],"AsyncMetadata"] c:{} @@ -26,5 +26,5 @@ d:{} 10:null 14:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] f:null -12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 8+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} 1a:{"metadata":"$12:metadata","error":null,"digest":"$undefined"} diff --git a/transports/bifrost-http/ui/docs/index.html b/transports/bifrost-http/ui/docs/index.html index e18694e7bd..4e7eb0ea69 100644 --- a/transports/bifrost-http/ui/docs/index.html +++ b/transports/bifrost-http/ui/docs/index.html @@ -1,4 +1,4 @@ -Bifrost - The fastest LLM gateway
Documentation
Power Up Your Bifrost Stack

Everything you need to know about building production AI applications with Bifrost

Popular
Quick Start
Get Bifrost running in under 30 seconds
  • HTTP Transport Setup
  • Go Package Usage
  • Docker Guide
Read More
Architecture
Deep dive into Bifrost's design and performance
  • System Overview
  • Request Flow
  • Concurrency Model
  • Design Decisions
Read More
Comprehensive
Usage Guides
Complete API reference and configuration guides
  • Providers Setup
  • Key Management
  • Error Handling
  • Memory & Networking
Read More
Contributing
Help improve Bifrost for everyone
  • Contributing Guide
  • Adding Providers
  • Plugin Development
  • Code Conventions
Read More
Integration Examples
Practical examples and testing code
  • OpenAI Integration
  • Anthropic Integration
  • GenAI Integration
  • Migration Guides
Read More
Benchmarks
Performance metrics and guides
  • 5K RPS Test Results
  • Performance Metrics
  • Configuration Tuning
  • Hardware Comparisons
Read More
MCP Documentation
Comprehensive guide to Model Context Protocol integration

Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations.

View MCP Guide
Configuration Reference
Complete reference for all configuration options

Detailed documentation on provider setup, key management, and advanced configuration options.

Configuration Docs
\ No newline at end of file +
Documentation
Power Up Your Bifrost Stack

Everything you need to know about building production AI applications with Bifrost

Popular
Quick Start
Get Bifrost running in under 30 seconds
  • HTTP Transport Setup
  • Go Package Usage
  • Docker Guide
Read More
Architecture
Deep dive into Bifrost's design and performance
  • System Overview
  • Request Flow
  • Concurrency Model
  • Design Decisions
Read More
Comprehensive
Usage Guides
Complete API reference and configuration guides
  • Providers Setup
  • Key Management
  • Error Handling
  • Memory & Networking
Read More
Contributing
Help improve Bifrost for everyone
  • Contributing Guide
  • Adding Providers
  • Plugin Development
  • Code Conventions
Read More
Integration Examples
Practical examples and testing code
  • OpenAI Integration
  • Anthropic Integration
  • GenAI Integration
  • Migration Guides
Read More
Benchmarks
Performance metrics and guides
  • 5K RPS Test Results
  • Performance Metrics
  • Configuration Tuning
  • Hardware Comparisons
Read More
MCP Documentation
Comprehensive guide to Model Context Protocol integration

Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations.

View MCP Guide
Configuration Reference
Complete reference for all configuration options

Detailed documentation on provider setup, key management, and advanced configuration options.

Configuration Docs
\ No newline at end of file diff --git a/transports/bifrost-http/ui/docs/index.txt b/transports/bifrost-http/ui/docs/index.txt index a2b91bff0f..cb66298d1d 100644 --- a/transports/bifrost-http/ui/docs/index.txt +++ b/transports/bifrost-http/ui/docs/index.txt @@ -1,10 +1,10 @@ 1:"$Sreact.fragment" -2:I[7942,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] -3:I[9304,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"ThemeProvider"] -4:I[6671,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"Toaster"] -5:I[6705,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"WebSocketProvider"] -6:I[193,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"SidebarProvider"] -7:I[975,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] 8:I[7555,[],""] 9:I[1295,[],""] a:I[6874,["874","static/chunks/874-37fb0661d0af7eec.js","40","static/chunks/app/docs/page-a1cc76d315d682c5.js"],""] @@ -15,13 +15,13 @@ e:I[4911,[],"AsyncMetadataOutlet"] 14:I[6614,[],""] :HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/1c39a7604f11b7f7.css","style"] -0:{"P":null,"b":"build","p":"","c":["","docs",""],"i":false,"f":[[["",{"children":["docs",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1c39a7604f11b7f7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar relative mx-auto flex min-h-screen w-5xl flex-col py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","div",null,{"className":"bg-background","children":["$","div",null,{"className":"mx-auto max-w-7xl","children":["$","div",null,{"className":"space-y-8","children":[["$","div",null,{"className":"space-y-4 text-center","children":[["$","div",null,{"className":"bg-primary/10 text-primary inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open h-4 w-4","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}],["$","span",null,{"className":"font-semibold","children":"Documentation"}]]}],["$","div",null,{"className":"from-primary bg-gradient-to-r to-green-600 bg-clip-text pb-2 text-5xl font-bold text-transparent","children":"Power Up Your Bifrost Stack"}],["$","p",null,{"className":"text-muted-foreground mx-auto max-w-2xl text-lg","children":"Everything you need to know about building production AI applications with Bifrost"}],["$","div",null,{"className":"flex justify-center gap-4","children":[["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}],"View Full Documentation"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[>svg]:px-3 cursor-pointer","ref":null}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/quickstart","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-play mr-2 h-4 w-4","aria-hidden":"true","children":[["$","polygon","1oa8hb",{"points":"6 3 20 12 6 21 6 3"}],"$undefined"]}],"Quick Start Guide"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 cursor-pointer","ref":null}]]}]]}],["$","div",null,{"className":"grid gap-6 md:grid-cols-2 lg:grid-cols-3","children":[["$","div","Quick Start",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-play text-primary h-6 w-6","aria-hidden":"true","children":[["$","polygon","1oa8hb",{"points":"6 3 20 12 6 21 6 3"}],"$undefined"]}]}],["$","span",null,{"data-slot":"badge","className":"inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 text-xs","children":"Popular"}]]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Quick Start"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Get Bifrost running in under 30 seconds"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"HTTP Transport Setup"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Go Package Usage"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Docker Guide"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/quickstart","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Architecture",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-git-branch text-primary h-6 w-6","aria-hidden":"true","children":[["$","line","17qcm7",{"x1":"6","x2":"6","y1":"3","y2":"15"}],["$","circle","1h7g24",{"cx":"18","cy":"6","r":"3"}],["$","circle","fqmcym",{"cx":"6","cy":"18","r":"3"}],["$","path","n2h4wq",{"d":"M18 9a9 9 0 0 1-9 9"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Architecture"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Deep dive into Bifrost's design and performance"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"System Overview"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Request Flow"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Concurrency Model"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Design Decisions"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/architecture","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Usage Guides",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}]}],["$","span",null,{"data-slot":"badge","className":"inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 text-xs","children":"Comprehensive"}]]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Usage Guides"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Complete API reference and configuration guides"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Providers Setup"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Key Management"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Error Handling"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Memory & Networking"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Contributing",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-users text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1yyitq",{"d":"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}],["$","path","16gr8j",{"d":"M16 3.128a4 4 0 0 1 0 7.744"}],["$","path","kshegd",{"d":"M22 21v-2a4 4 0 0 0-3-3.87"}],["$","circle","nufk8",{"cx":"9","cy":"7","r":"4"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Contributing"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Help improve Bifrost for everyone"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Contributing Guide"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Adding Providers"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Plugin Development"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Code Conventions"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/contributing","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Integration Examples",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-code text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","eg8j8",{"d":"m16 18 6-6-6-6"}],["$","path","ppft3o",{"d":"m8 6-6 6 6 6"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Integration Examples"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Practical examples and testing code"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"OpenAI Integration"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Anthropic Integration"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"GenAI Integration"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Migration Guides"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/integrations","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Benchmarks",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-zap text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1xq2db",{"d":"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Benchmarks"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Performance metrics and guides"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"5K RPS Test Results"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Performance Metrics"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Configuration Tuning"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Hardware Comparisons"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/blob/main/docs/benchmarks.md","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}]]}],["$","div",null,{"className":"grid gap-6 pt-8 md:grid-cols-2","children":[["$","div",null,{"data-slot":"card","className":"text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm border-primary/20 bg-primary/5","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"data-slot":"card-title","className":"leading-none font-semibold flex items-center gap-2","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-file-text text-primary h-5 w-5","aria-hidden":"true","children":[["$","path","1rqfz7",{"d":"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}],["$","path","tnqrlb",{"d":"M14 2v4a2 2 0 0 0 2 2h4"}],["$","path","b1mrlr",{"d":"M10 9H8"}],["$","path","t4e002",{"d":"M16 13H8"}],["$","path","z1uh3a",{"d":"M16 17H8"}],"$undefined"]}],"MCP Documentation"]}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm","children":"Comprehensive guide to Model Context Protocol integration"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6","children":[["$","p",null,{"className":"text-muted-foreground mb-4 text-sm","children":"Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations."}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/blob/main/docs/mcp.md","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}],"View MCP Guide"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer","ref":null}]]}]]}],["$","div",null,{"data-slot":"card","className":"text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"data-slot":"card-title","className":"leading-none font-semibold flex items-center gap-2","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-settings h-5 w-5 text-green-600","aria-hidden":"true","children":[["$","path","1qme2f",{"d":"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["$","circle","1v7zrd",{"cx":"12","cy":"12","r":"3"}],"$undefined"]}],"Configuration Reference"]}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm","children":"Complete reference for all configuration options"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6","children":[["$","p",null,{"className":"text-muted-foreground mb-4 text-sm","children":"Detailed documentation on provider setup, key management, and advanced configuration options."}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/configuration","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-settings mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1qme2f",{"d":"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["$","circle","1v7zrd",{"cx":"12","cy":"12","r":"3"}],"$undefined"]}],"Configuration Docs"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer","ref":null}]]}]]}]]}]]}]}]}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","-CABHCPiJdzREE1sEbUiFv",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L12",null,{"children":"$L13"}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["","docs",""],"i":false,"f":[[["",{"children":["docs",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","div",null,{"className":"bg-background","children":["$","div",null,{"className":"mx-auto max-w-7xl","children":["$","div",null,{"className":"space-y-8","children":[["$","div",null,{"className":"space-y-4 text-center","children":[["$","div",null,{"className":"bg-primary/10 text-primary inline-flex items-center gap-2 rounded-full px-4 py-2 text-sm","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open h-4 w-4","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}],["$","span",null,{"className":"font-semibold","children":"Documentation"}]]}],["$","div",null,{"className":"from-primary bg-gradient-to-r to-green-600 bg-clip-text pb-2 text-5xl font-bold text-transparent","children":"Power Up Your Bifrost Stack"}],["$","p",null,{"className":"text-muted-foreground mx-auto max-w-2xl text-lg","children":"Everything you need to know about building production AI applications with Bifrost"}],["$","div",null,{"className":"flex justify-center gap-4","children":[["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}],"View Full Documentation"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[>svg]:px-3 cursor-pointer","ref":null}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/quickstart","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-play mr-2 h-4 w-4","aria-hidden":"true","children":[["$","polygon","1oa8hb",{"points":"6 3 20 12 6 21 6 3"}],"$undefined"]}],"Quick Start Guide"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 cursor-pointer","ref":null}]]}]]}],["$","div",null,{"className":"grid gap-6 md:grid-cols-2 lg:grid-cols-3","children":[["$","div","Quick Start",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-play text-primary h-6 w-6","aria-hidden":"true","children":[["$","polygon","1oa8hb",{"points":"6 3 20 12 6 21 6 3"}],"$undefined"]}]}],["$","span",null,{"data-slot":"badge","className":"inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 text-xs","children":"Popular"}]]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Quick Start"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Get Bifrost running in under 30 seconds"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"HTTP Transport Setup"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Go Package Usage"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Docker Guide"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/quickstart","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Architecture",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-git-branch text-primary h-6 w-6","aria-hidden":"true","children":[["$","line","17qcm7",{"x1":"6","x2":"6","y1":"3","y2":"15"}],["$","circle","1h7g24",{"cx":"18","cy":"6","r":"3"}],["$","circle","fqmcym",{"cx":"6","cy":"18","r":"3"}],["$","path","n2h4wq",{"d":"M18 9a9 9 0 0 1-9 9"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Architecture"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Deep dive into Bifrost's design and performance"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"System Overview"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Request Flow"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Concurrency Model"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Design Decisions"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/architecture","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Usage Guides",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}]}],["$","span",null,{"data-slot":"badge","className":"inline-flex items-center justify-center rounded-md border px-2 py-0.5 font-medium w-fit whitespace-nowrap shrink-0 [&>svg]:size-3 gap-1 [&>svg]:pointer-events-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive transition-[color,box-shadow] overflow-hidden border-transparent bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 text-xs","children":"Comprehensive"}]]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Usage Guides"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Complete API reference and configuration guides"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Providers Setup"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Key Management"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Error Handling"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Memory & Networking"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Contributing",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-users text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1yyitq",{"d":"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}],["$","path","16gr8j",{"d":"M16 3.128a4 4 0 0 1 0 7.744"}],["$","path","kshegd",{"d":"M22 21v-2a4 4 0 0 0-3-3.87"}],["$","circle","nufk8",{"cx":"9","cy":"7","r":"4"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Contributing"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Help improve Bifrost for everyone"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Contributing Guide"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Adding Providers"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Plugin Development"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Code Conventions"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/contributing","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Integration Examples",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-code text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","eg8j8",{"d":"m16 18 6-6-6-6"}],["$","path","ppft3o",{"d":"m8 6-6 6 6 6"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Integration Examples"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Practical examples and testing code"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"OpenAI Integration"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Anthropic Integration"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"GenAI Integration"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Migration Guides"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/integrations","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}],["$","div","Benchmarks",{"data-slot":"card","className":"bg-card text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm group transition-all duration-200 hover:shadow-lg","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"className":"bg-primary/10 group-hover:bg-primary/20 mb-4 flex h-12 w-12 items-center justify-center rounded-lg transition-colors","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-zap text-primary h-6 w-6","aria-hidden":"true","children":[["$","path","1xq2db",{"d":"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z"}],"$undefined"]}]}],"$undefined"]}],["$","div",null,{"data-slot":"card-title","className":"font-semibold text-xl","children":"Benchmarks"}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm leading-relaxed","children":"Performance metrics and guides"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6 flex h-full flex-col justify-between gap-8","children":[["$","div",null,{"className":"space-y-4","children":["$","ul",null,{"className":"space-y-2","children":[["$","li","0",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"5K RPS Test Results"]}],["$","li","1",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Performance Metrics"]}],["$","li","2",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Configuration Tuning"]}],["$","li","3",{"className":"text-muted-foreground flex items-center gap-2 text-sm","children":[["$","div",null,{"className":"bg-primary h-1.5 w-1.5 rounded-full"}],"Hardware Comparisons"]}]]}]}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/blob/main/docs/benchmarks.md","target":"_blank","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer flex items-center justify-center gap-2","children":["Read More",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-external-link h-4 w-4","aria-hidden":"true","children":[["$","path","1q9fwt",{"d":"M15 3h6v6"}],["$","path","gplh6r",{"d":"M10 14 21 3"}],["$","path","a6xqqp",{"d":"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}],"$undefined"]}]],"data-slot":"button","ref":null}]]}]]}]]}],["$","div",null,{"className":"grid gap-6 pt-8 md:grid-cols-2","children":[["$","div",null,{"data-slot":"card","className":"text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm border-primary/20 bg-primary/5","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"data-slot":"card-title","className":"leading-none font-semibold flex items-center gap-2","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-file-text text-primary h-5 w-5","aria-hidden":"true","children":[["$","path","1rqfz7",{"d":"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"}],["$","path","tnqrlb",{"d":"M14 2v4a2 2 0 0 0 2 2h4"}],["$","path","b1mrlr",{"d":"M10 9H8"}],["$","path","t4e002",{"d":"M16 13H8"}],["$","path","z1uh3a",{"d":"M16 17H8"}],"$undefined"]}],"MCP Documentation"]}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm","children":"Comprehensive guide to Model Context Protocol integration"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6","children":[["$","p",null,{"className":"text-muted-foreground mb-4 text-sm","children":"Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations."}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/blob/main/docs/mcp.md","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-book-open mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1akyts",{"d":"M12 7v14"}],["$","path","ruj8y",{"d":"M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z"}],"$undefined"]}],"View MCP Guide"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive bg-primary text-primary-foreground shadow-xs hover:bg-primary/90 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer","ref":null}]]}]]}],["$","div",null,{"data-slot":"card","className":"text-card-foreground flex flex-col gap-6 rounded-xl border py-6 shadow-sm border-green-200 bg-green-50 dark:border-green-800 dark:bg-green-950/20","children":[["$","div",null,{"data-slot":"card-header","className":"@container/card-header grid auto-rows-min grid-rows-[auto_auto] items-start gap-1.5 px-6 has-data-[slot=card-action]:grid-cols-[1fr_auto] [.border-b]:pb-6","children":[["$","div",null,{"data-slot":"card-title","className":"leading-none font-semibold flex items-center gap-2","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-settings h-5 w-5 text-green-600","aria-hidden":"true","children":[["$","path","1qme2f",{"d":"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["$","circle","1v7zrd",{"cx":"12","cy":"12","r":"3"}],"$undefined"]}],"Configuration Reference"]}],["$","div",null,{"data-slot":"card-description","className":"text-muted-foreground text-sm","children":"Complete reference for all configuration options"}]]}],["$","div",null,{"data-slot":"card-content","className":"px-6","children":[["$","p",null,{"className":"text-muted-foreground mb-4 text-sm","children":"Detailed documentation on provider setup, key management, and advanced configuration options."}],["$","$La",null,{"href":"https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/configuration","target":"_blank","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-settings mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1qme2f",{"d":"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"}],["$","circle","1v7zrd",{"cx":"12","cy":"12","r":"3"}],"$undefined"]}],"Configuration Docs"],"data-slot":"button","className":"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 h-9 px-4 py-2 has-[>svg]:px-3 w-full cursor-pointer","ref":null}]]}]]}]]}]]}]}]}],null,["$","$Lb",null,{"children":["$Lc","$Ld",["$","$Le",null,{"promise":"$@f"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","CG6exotWPr_RQ5bkW3Wx6v",{"children":[["$","$L10",null,{"children":"$L11"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L12",null,{"children":"$L13"}]]}],false]],"m":"$undefined","G":["$14","$undefined"],"s":false,"S":true} 15:"$Sreact.suspense" 16:I[4911,[],"AsyncMetadata"] 13:["$","div",null,{"hidden":true,"children":["$","$15",null,{"fallback":null,"children":["$","$L16",null,{"promise":"$@17"}]}]}] d:null 11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] c:null -f:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 8+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +f:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} 17:{"metadata":"$f:metadata","error":null,"digest":"$undefined"} diff --git a/transports/bifrost-http/ui/index.html b/transports/bifrost-http/ui/index.html index f5f637afe8..0b281127fa 100644 --- a/transports/bifrost-http/ui/index.html +++ b/transports/bifrost-http/ui/index.html @@ -1,4 +1,4 @@ -Bifrost - The fastest LLM gateway
\ No newline at end of file +
\ No newline at end of file diff --git a/transports/bifrost-http/ui/index.txt b/transports/bifrost-http/ui/index.txt index 8911a4beb0..4d1ecd86e2 100644 --- a/transports/bifrost-http/ui/index.txt +++ b/transports/bifrost-http/ui/index.txt @@ -1,14 +1,14 @@ 1:"$Sreact.fragment" -2:I[7942,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] -3:I[9304,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"ThemeProvider"] -4:I[6671,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"Toaster"] -5:I[6705,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"WebSocketProvider"] -6:I[193,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"SidebarProvider"] -7:I[975,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] 8:I[7555,[],""] 9:I[1295,[],""] a:I[894,[],"ClientPageRoot"] -b:I[7406,["586","static/chunks/13b76428-4be7d9456b47e491.js","146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","452","static/chunks/452-52b7b5dcb4902a2c.js","272","static/chunks/272-ea143f89da3f8b1f.js","0","static/chunks/0-92aa8a29adf5b5bf.js","974","static/chunks/app/page-6e8e689326a7a90d.js"],"default"] +b:I[7406,["586","static/chunks/13b76428-4be7d9456b47e491.js","106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","412","static/chunks/412-1cad36ab64c91342.js","62","static/chunks/62-2bb67bacb7d964db.js","822","static/chunks/822-002f831ce65c92b1.js","105","static/chunks/105-03c7a8798baa706f.js","915","static/chunks/915-36ceadf34271615d.js","830","static/chunks/830-ff62672a2ba99b18.js","974","static/chunks/app/page-11ab4958df35c5b1.js"],"default"] e:I[9665,[],"OutletBoundary"] 11:I[4911,[],"AsyncMetadataOutlet"] 13:I[9665,[],"ViewportBoundary"] @@ -16,8 +16,8 @@ e:I[9665,[],"OutletBoundary"] 17:I[6614,[],""] :HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/1c39a7604f11b7f7.css","style"] -0:{"P":null,"b":"build","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1c39a7604f11b7f7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar relative mx-auto flex min-h-screen w-5xl flex-col py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","z-wze67vmGs3a3iU4uH-pv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["",""],"i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","71v20r63JFBj8GaiDCnhrv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} 18:"$Sreact.suspense" 19:I[4911,[],"AsyncMetadata"] c:{} @@ -26,5 +26,5 @@ d:{} 10:null 14:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] f:null -12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 8+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} 1a:{"metadata":"$12:metadata","error":null,"digest":"$undefined"} diff --git a/transports/bifrost-http/ui/mcp-clients/index.html b/transports/bifrost-http/ui/mcp-clients/index.html new file mode 100644 index 0000000000..f069dc3dd6 --- /dev/null +++ b/transports/bifrost-http/ui/mcp-clients/index.html @@ -0,0 +1,122 @@ +Bifrost - The fastest LLM gateway
\ No newline at end of file diff --git a/transports/bifrost-http/ui/mcp-clients/index.txt b/transports/bifrost-http/ui/mcp-clients/index.txt new file mode 100644 index 0000000000..0525a93b25 --- /dev/null +++ b/transports/bifrost-http/ui/mcp-clients/index.txt @@ -0,0 +1,30 @@ +1:"$Sreact.fragment" +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +8:I[7555,[],""] +9:I[1295,[],""] +a:I[894,[],"ClientPageRoot"] +b:I[7765,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","412","static/chunks/412-1cad36ab64c91342.js","62","static/chunks/62-2bb67bacb7d964db.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","915","static/chunks/915-36ceadf34271615d.js","364","static/chunks/app/mcp-clients/page-b2d03b2155b1dfee.js"],"default"] +e:I[9665,[],"OutletBoundary"] +11:I[4911,[],"AsyncMetadataOutlet"] +13:I[9665,[],"ViewportBoundary"] +15:I[9665,[],"MetadataBoundary"] +17:I[6614,[],""] +:HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["","mcp-clients",""],"i":false,"f":[[["",{"children":["mcp-clients",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["mcp-clients",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","5ktnMBbTUE3xHXNz2uQqGv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} +18:"$Sreact.suspense" +19:I[4911,[],"AsyncMetadata"] +c:{} +d:{} +16:["$","div",null,{"hidden":true,"children":["$","$18",null,{"fallback":null,"children":["$","$L19",null,{"promise":"$@1a"}]}]}] +10:null +14:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +f:null +12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +1a:{"metadata":"$12:metadata","error":null,"digest":"$undefined"} diff --git a/transports/bifrost-http/ui/plugins/index.html b/transports/bifrost-http/ui/plugins/index.html index a65de201c2..017d1856e7 100644 --- a/transports/bifrost-http/ui/plugins/index.html +++ b/transports/bifrost-http/ui/plugins/index.html @@ -1,4 +1,4 @@ -Bifrost - The fastest LLM gateway
Plugin EcosystemBeta
Supercharge Bifrost

Extend Bifrost with powerful plugins for observability, testing, security, and custom business logic. Full support in Go SDK, with HTTP transport integration in active development.

Featured Plugins

Production-ready plugins with varying levels of HTTP transport support

Maximproduction
Maxim Logger
Observability
Advanced LLM observability, tracing, and analytics platform integration

Key Features

Real-time LLM tracing
Performance analytics
Cost tracking
Command Line
bifrost-http --plugins maxim
production
Response Mocker
Development
Mock AI responses for testing, development, and cost-effective prototyping

Key Features

Configurable mock responses
Request pattern matching
Development environment support
HTTP transport support coming soon
enterprise
Circuit Breaker
Reliability
Resilience patterns for handling provider failures and preventing cascade errors

Key Features

Automatic failure detection
Fallback mechanisms
Rate limiting
HTTP transport support coming soon

Usage Patterns

Multiple ways to integrate plugins into your workflow

HTTP Transport
Maxim plugin only (for now)
bifrost-http --plugins maxim

Additional plugins coming soon

Docker Deployment
Environment variables
docker run -e APP_PLUGINS=maxim

Additional plugins coming soon

Go SDK
Full plugin ecosystem
Plugins: []schemas.Plugin{...}

All plugins available

Coming Soon

Exciting plugins currently in development

Redis Cache
Coming Soon
High-performance caching layer with Redis backend
Auth Guard
Coming Soon
Enterprise authentication and authorization middleware
Rate Limiter
Coming Soon
Advanced rate limiting with multiple strategies

Join the Plugin Ecosystem

Contribute to the growing collection of Bifrost plugins or build your own custom solutions

\ No newline at end of file +
Plugin EcosystemBeta
Supercharge Bifrost

Extend Bifrost with powerful plugins for observability, testing, security, and custom business logic. Full support in Go SDK, with HTTP transport integration in active development.

Featured Plugins

Production-ready plugins with varying levels of HTTP transport support

Maximproduction
Maxim Logger
Observability
Advanced LLM observability, tracing, and analytics platform integration

Key Features

Real-time LLM tracing
Performance analytics
Cost tracking
Command Line
bifrost-http --plugins maxim
production
Response Mocker
Development
Mock AI responses for testing, development, and cost-effective prototyping

Key Features

Configurable mock responses
Request pattern matching
Development environment support
HTTP transport support coming soon
enterprise
Circuit Breaker
Reliability
Resilience patterns for handling provider failures and preventing cascade errors

Key Features

Automatic failure detection
Fallback mechanisms
Rate limiting
HTTP transport support coming soon

Usage Patterns

Multiple ways to integrate plugins into your workflow

HTTP Transport
Maxim plugin only (for now)
bifrost-http --plugins maxim

Additional plugins coming soon

Docker Deployment
Environment variables
docker run -e APP_PLUGINS=maxim

Additional plugins coming soon

Go SDK
Full plugin ecosystem
Plugins: []schemas.Plugin{...}

All plugins available

Coming Soon

Exciting plugins currently in development

Redis Cache
Coming Soon
High-performance caching layer with Redis backend
Auth Guard
Coming Soon
Enterprise authentication and authorization middleware
Rate Limiter
Coming Soon
Advanced rate limiting with multiple strategies

Join the Plugin Ecosystem

Contribute to the growing collection of Bifrost plugins or build your own custom solutions

\ No newline at end of file diff --git a/transports/bifrost-http/ui/plugins/index.txt b/transports/bifrost-http/ui/plugins/index.txt index cbc26c9032..7b463aa53a 100644 --- a/transports/bifrost-http/ui/plugins/index.txt +++ b/transports/bifrost-http/ui/plugins/index.txt @@ -1,14 +1,14 @@ 1:"$Sreact.fragment" -2:I[7942,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] -3:I[9304,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"ThemeProvider"] -4:I[6671,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"Toaster"] -5:I[6705,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"WebSocketProvider"] -6:I[193,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"SidebarProvider"] -7:I[975,["146","static/chunks/146-0f84e0451d3a2c28.js","617","static/chunks/617-7dfbdf69410b1b51.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","273","static/chunks/273-9756261fec6bc01b.js","983","static/chunks/983-ee41b772651f7909.js","177","static/chunks/app/layout-c2b2a9913cc00c9e.js"],"default"] +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] 8:I[7555,[],""] 9:I[1295,[],""] a:I[894,[],"ClientPageRoot"] -b:I[7196,["146","static/chunks/146-0f84e0451d3a2c28.js","874","static/chunks/874-37fb0661d0af7eec.js","978","static/chunks/978-ce74b487c7fe1ab8.js","153","static/chunks/app/plugins/page-ad4b7f09b3bb7f4c.js"],"default"] +b:I[4179,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","944","static/chunks/944-f01f5d77bd313da6.js","874","static/chunks/874-37fb0661d0af7eec.js","822","static/chunks/822-002f831ce65c92b1.js","978","static/chunks/978-ce74b487c7fe1ab8.js","153","static/chunks/app/plugins/page-a4e9578519dd85c5.js"],"default"] e:I[9665,[],"OutletBoundary"] 11:I[4911,[],"AsyncMetadataOutlet"] 13:I[9665,[],"ViewportBoundary"] @@ -16,8 +16,8 @@ e:I[9665,[],"OutletBoundary"] 17:I[6614,[],""] :HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/1c39a7604f11b7f7.css","style"] -0:{"P":null,"b":"build","p":"","c":["","plugins",""],"i":false,"f":[[["",{"children":["plugins",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/1c39a7604f11b7f7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar relative mx-auto flex min-h-screen w-5xl flex-col py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["plugins",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Lws1jHVHgb7SpcKDFXzvhv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["","plugins",""],"i":false,"f":[[["",{"children":["plugins",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["plugins",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","OumpsqGtvxIomOieQa4R0v",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} 18:"$Sreact.suspense" 19:I[4911,[],"AsyncMetadata"] c:{} @@ -26,5 +26,5 @@ d:{} 10:null 14:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] f:null -12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 8+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} 1a:{"metadata":"$12:metadata","error":null,"digest":"$undefined"} diff --git a/transports/bifrost-http/ui/providers/index.html b/transports/bifrost-http/ui/providers/index.html new file mode 100644 index 0000000000..52afd5ecfc --- /dev/null +++ b/transports/bifrost-http/ui/providers/index.html @@ -0,0 +1,122 @@ +Bifrost - The fastest LLM gateway
\ No newline at end of file diff --git a/transports/bifrost-http/ui/providers/index.txt b/transports/bifrost-http/ui/providers/index.txt new file mode 100644 index 0000000000..46e2f84006 --- /dev/null +++ b/transports/bifrost-http/ui/providers/index.txt @@ -0,0 +1,30 @@ +1:"$Sreact.fragment" +2:I[7942,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +3:I[9304,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"ThemeProvider"] +4:I[6671,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"Toaster"] +5:I[6705,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"WebSocketProvider"] +6:I[193,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"SidebarProvider"] +7:I[975,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","874","static/chunks/874-37fb0661d0af7eec.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","978","static/chunks/978-ce74b487c7fe1ab8.js","485","static/chunks/485-82d411514498e7b2.js","177","static/chunks/app/layout-3652827c7680b065.js"],"default"] +8:I[7555,[],""] +9:I[1295,[],""] +a:I[894,[],"ClientPageRoot"] +b:I[3621,["106","static/chunks/106-5f7ab4dfb56f2b8d.js","189","static/chunks/189-34927d98e5a18740.js","944","static/chunks/944-f01f5d77bd313da6.js","231","static/chunks/231-650d1d0c1739f9f4.js","412","static/chunks/412-1cad36ab64c91342.js","62","static/chunks/62-2bb67bacb7d964db.js","822","static/chunks/822-002f831ce65c92b1.js","613","static/chunks/613-5b9d5c2343ec7cb3.js","925","static/chunks/925-c10f273e99bd2248.js","915","static/chunks/915-36ceadf34271615d.js","830","static/chunks/830-ff62672a2ba99b18.js","387","static/chunks/app/providers/page-b25fa0ce16423da1.js"],"default"] +e:I[9665,[],"OutletBoundary"] +11:I[4911,[],"AsyncMetadataOutlet"] +13:I[9665,[],"ViewportBoundary"] +15:I[9665,[],"MetadataBoundary"] +17:I[6614,[],""] +:HL["/_next/static/media/569ce4b8f30dc480-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/css/215063fa9dc64c3d.css","style"] +0:{"P":null,"b":"build","p":"","c":["","providers",""],"i":false,"f":[[["",{"children":["providers",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/215063fa9dc64c3d.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","suppressHydrationWarning":true,"children":["$","body",null,{"className":"__variable_5cfdac __variable_9a8899 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"attribute":"class","defaultTheme":"system","enableSystem":true,"children":[["$","$L4",null,{}],["$","$L5",null,{"children":["$","$L6",null,{"children":[["$","$L7",null,{}],["$","main",null,{"className":"custom-scrollbar w-5xl relative mx-auto flex min-h-screen flex-col px-4 py-12","children":["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]}]]}]}]}]}]]}],{"children":["providers",["$","$1","c",{"children":[null,["$","$L8",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L9",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$La",null,{"Component":"$b","searchParams":{},"params":{},"promises":["$@c","$@d"]}],null,["$","$Le",null,{"children":["$Lf","$L10",["$","$L11",null,{"promise":"$@12"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","TJMrJl_xLqHRC35sJm-CNv",{"children":[["$","$L13",null,{"children":"$L14"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],["$","$L15",null,{"children":"$L16"}]]}],false]],"m":"$undefined","G":["$17","$undefined"],"s":false,"S":true} +18:"$Sreact.suspense" +19:I[4911,[],"AsyncMetadata"] +c:{} +d:{} +16:["$","div",null,{"hidden":true,"children":["$","$18",null,{"fallback":null,"children":["$","$L19",null,{"promise":"$@1a"}]}]}] +10:null +14:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +f:null +12:{"metadata":[["$","title","0",{"children":"Bifrost - The fastest LLM gateway"}],["$","meta","1",{"name":"description","content":"Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments."}],["$","link","2",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}]],"error":null,"digest":"$undefined"} +1a:{"metadata":"$12:metadata","error":null,"digest":"$undefined"} diff --git a/transports/go.sum b/transports/go.sum index 6d39113506..18707deaaf 100644 --- a/transports/go.sum +++ b/transports/go.sum @@ -79,8 +79,6 @@ github.com/mark3labs/mcp-go v0.32.0 h1:fgwmbfL2gbd67obg57OfV2Dnrhs1HtSdlY/i5fn7M github.com/mark3labs/mcp-go v0.32.0/go.mod h1:rXqOudj/djTORU/ThxYx8fqEVj/5pvTuuebQ2RC7uk4= github.com/mattn/go-sqlite3 v1.14.28 h1:ThEiQrnbtumT+QMknw63Befp/ce/nUPgBPMlRFEum7A= github.com/mattn/go-sqlite3 v1.14.28/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= -github.com/maximhq/bifrost/core v1.1.7 h1:Kwpa10T9Xcm9kbrrpjQCiTtKO3m55R0Hika1M7W2THI= -github.com/maximhq/bifrost/core v1.1.7/go.mod h1:yMRCncTgKYBIrECSRVxMbY3BL8CjLbipJlc644jryxc= github.com/maximhq/bifrost/plugins/maxim v1.0.6 h1:m1tWjbmxW9Lz4mDhXclQhZdFt/TrRPbZwFcoWY9ZAEk= github.com/maximhq/bifrost/plugins/maxim v1.0.6/go.mod h1:+D/E498VB4JNTEzG4fYyFJf9WQaq/9FgYrmzl49mLNc= github.com/maximhq/maxim-go v0.1.3 h1:nVzdz3hEjZVxmWHARWIM+Yrn1Jp50qrsK4BA/sz2jj8= diff --git a/ui/README.md b/ui/README.md index cf9def8da2..a6ecff27e2 100644 --- a/ui/README.md +++ b/ui/README.md @@ -90,7 +90,7 @@ The main dashboard provides comprehensive request monitoring: Manage all your AI providers from a unified interface: -- **Supported Providers**: OpenAI, Azure OpenAI, Anthropic, AWS Bedrock, Cohere, Google Vertex AI, Mistral, Ollama +- **Supported Providers**: OpenAI, Azure OpenAI, Anthropic, AWS Bedrock, Cohere, Google Vertex AI, Mistral, Ollama, Groq, SGLang - **Key Management**: Multiple API keys with weights and model assignments - **Network Configuration**: Custom base URLs, timeouts, retry policies, proxy settings - **Provider-specific Settings**: Azure deployments, Bedrock regions, Vertex projects @@ -143,17 +143,17 @@ The UI communicates with the Bifrost HTTP transport backend through a typed API ```typescript // Example API usage -import { apiService } from '@/lib/api'; +import { apiService } from '@/lib/api' // Get real-time logs -const [logs, error] = await apiService.getLogs(filters, pagination); +const [logs, error] = await apiService.getLogs(filters, pagination) // Configure provider const [result, error] = await apiService.createProvider({ provider: 'openai', keys: [{ value: 'sk-...', models: ['gpt-4'], weight: 1 }], // ... other config -}); +}) ``` ### Component Guidelines @@ -179,20 +179,22 @@ The UI supports comprehensive provider configuration: ```typescript interface ProviderConfig { - keys: Key[]; // API keys with model assignments - network_config: NetworkConfig; // URLs, timeouts, retries - meta_config?: MetaConfig; // Provider-specific settings - concurrency_and_buffer_size: { // Performance tuning - concurrency: number; - buffer_size: number; - }; - proxy_config?: ProxyConfig; // Proxy settings + keys: Key[] // API keys with model assignments + network_config: NetworkConfig // URLs, timeouts, retries + meta_config?: MetaConfig // Provider-specific settings + concurrency_and_buffer_size: { + // Performance tuning + concurrency: number + buffer_size: number + } + proxy_config?: ProxyConfig // Proxy settings } ``` ### Real-time Features WebSocket connection provides: + - Live log streaming - Connection status monitoring - Automatic reconnection @@ -237,4 +239,4 @@ Licensed under the same terms as the main Bifrost project. See [LICENSE](../LICE --- -*Built with ♥️ by [Maxim AI](https://getmaxim.ai)* +_Built with ♥️ by [Maxim AI](https://getmaxim.ai)_ diff --git a/ui/app/docs/page.tsx b/ui/app/docs/page.tsx index 086103e127..363dcee58d 100644 --- a/ui/app/docs/page.tsx +++ b/ui/app/docs/page.tsx @@ -1,178 +1,178 @@ -import Header from "@/components/header"; -import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; -import { Button } from "@/components/ui/button"; -import { Badge } from "@/components/ui/badge"; -import { BookOpen, ExternalLink, Zap, Settings, Code, Users, FileText, Play, GitBranch } from "lucide-react"; -import Link from "next/link"; -import GradientHeader from "@/components/ui/gradient-header"; +import Header from '@/components/header' +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card' +import { Button } from '@/components/ui/button' +import { Badge } from '@/components/ui/badge' +import { BookOpen, ExternalLink, Zap, Settings, Code, Users, FileText, Play, GitBranch } from 'lucide-react' +import Link from 'next/link' +import GradientHeader from '@/components/ui/gradient-header' const docSections = [ - { - title: "Quick Start", - description: "Get Bifrost running in under 30 seconds", - icon: Play, - url: "https://github.com/maximhq/bifrost/tree/main/docs/quickstart", - badge: "Popular", - items: ["HTTP Transport Setup", "Go Package Usage", "Docker Guide"], - }, - { - title: "Architecture", - description: "Deep dive into Bifrost's design and performance", - icon: GitBranch, - url: "https://github.com/maximhq/bifrost/tree/main/docs/architecture", - items: ["System Overview", "Request Flow", "Concurrency Model", "Design Decisions"], - }, - { - title: "Usage Guides", - description: "Complete API reference and configuration guides", - icon: BookOpen, - url: "https://github.com/maximhq/bifrost/tree/main/docs/usage", - badge: "Comprehensive", - items: ["Providers Setup", "Key Management", "Error Handling", "Memory & Networking"], - }, - { - title: "Contributing", - description: "Help improve Bifrost for everyone", - icon: Users, - url: "https://github.com/maximhq/bifrost/tree/main/docs/contributing", - items: ["Contributing Guide", "Adding Providers", "Plugin Development", "Code Conventions"], - }, - { - title: "Integration Examples", - description: "Practical examples and testing code", - icon: Code, - url: "https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/integrations", - items: ["OpenAI Integration", "Anthropic Integration", "GenAI Integration", "Migration Guides"], - }, - { - title: "Benchmarks", - description: "Performance metrics and guides", - icon: Zap, - url: "https://github.com/maximhq/bifrost/blob/main/docs/benchmarks.md", - items: ["5K RPS Test Results", "Performance Metrics", "Configuration Tuning", "Hardware Comparisons"], - }, -]; + { + title: 'Quick Start', + description: 'Get Bifrost running in under 30 seconds', + icon: Play, + url: 'https://github.com/maximhq/bifrost/tree/main/docs/quickstart', + badge: 'Popular', + items: ['HTTP Transport Setup', 'Go Package Usage', 'Docker Guide'], + }, + { + title: 'Architecture', + description: "Deep dive into Bifrost's design and performance", + icon: GitBranch, + url: 'https://github.com/maximhq/bifrost/tree/main/docs/architecture', + items: ['System Overview', 'Request Flow', 'Concurrency Model', 'Design Decisions'], + }, + { + title: 'Usage Guides', + description: 'Complete API reference and configuration guides', + icon: BookOpen, + url: 'https://github.com/maximhq/bifrost/tree/main/docs/usage', + badge: 'Comprehensive', + items: ['Providers Setup', 'Key Management', 'Error Handling', 'Memory & Networking'], + }, + { + title: 'Contributing', + description: 'Help improve Bifrost for everyone', + icon: Users, + url: 'https://github.com/maximhq/bifrost/tree/main/docs/contributing', + items: ['Contributing Guide', 'Adding Providers', 'Plugin Development', 'Code Conventions'], + }, + { + title: 'Integration Examples', + description: 'Practical examples and testing code', + icon: Code, + url: 'https://github.com/maximhq/bifrost/tree/main/docs/usage/http-transport/integrations', + items: ['OpenAI Integration', 'Anthropic Integration', 'GenAI Integration', 'Migration Guides'], + }, + { + title: 'Benchmarks', + description: 'Performance metrics and guides', + icon: Zap, + url: 'https://github.com/maximhq/bifrost/blob/main/docs/benchmarks.md', + items: ['5K RPS Test Results', 'Performance Metrics', 'Configuration Tuning', 'Hardware Comparisons'], + }, +] export default function DocsPage() { - return ( -
-
-
- {/* Header */} -
-
- - Documentation -
- -

- Everything you need to know about building production AI applications with Bifrost -

-
- - -
-
+ return ( +
+
+
+ {/* Header */} +
+
+ + Documentation +
+ +

+ Everything you need to know about building production AI applications with Bifrost +

+
+ + +
+
- {/* Documentation Sections */} -
- {docSections.map((section) => { - const Icon = section.icon; - return ( - - -
-
- -
- {section.badge && ( - - {section.badge} - - )} -
- {section.title} - {section.description} -
- -
-
    - {section.items.map((item, index) => ( -
  • -
    - {item} -
  • - ))} -
-
- -
-
- ); - })} -
+ {/* Documentation Sections */} +
+ {docSections.map((section) => { + const Icon = section.icon + return ( + + +
+
+ +
+ {section.badge && ( + + {section.badge} + + )} +
+ {section.title} + {section.description} +
+ +
+
    + {section.items.map((item, index) => ( +
  • +
    + {item} +
  • + ))} +
+
+ +
+
+ ) + })} +
- {/* Additional Resources */} -
- - - - - MCP Documentation - - Comprehensive guide to Model Context Protocol integration - - -

- Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations. -

- -
-
+ {/* Additional Resources */} +
+ + + + + MCP Documentation + + Comprehensive guide to Model Context Protocol integration + + +

+ Learn how to build sophisticated AI agents with MCP support, tool calling, and external integrations. +

+ +
+
- - - - - Configuration Reference - - Complete reference for all configuration options - - -

- Detailed documentation on provider setup, key management, and advanced configuration options. -

- -
-
-
-
-
-
- ); + + + + + Configuration Reference + + Complete reference for all configuration options + + +

+ Detailed documentation on provider setup, key management, and advanced configuration options. +

+ +
+
+
+
+
+
+ ) } diff --git a/ui/app/layout.tsx b/ui/app/layout.tsx index f7f2386e5c..0e406bf64c 100644 --- a/ui/app/layout.tsx +++ b/ui/app/layout.tsx @@ -21,7 +21,7 @@ const geistMono = Geist_Mono({ export const metadata: Metadata = { title: 'Bifrost - The fastest LLM gateway', description: - 'Production-ready fastest LLM gateway that connects to 8+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments.', + 'Production-ready fastest LLM gateway that connects to 10+ providers through a single API. Get automatic failover, load balancing, mcp support and zero-downtime deployments.', } export default function RootLayout({ children }: { children: React.ReactNode }) { @@ -34,7 +34,7 @@ export default function RootLayout({ children }: { children: React.ReactNode }) -
{children}
+
{children}
diff --git a/ui/app/page.tsx b/ui/app/page.tsx index 3a37a21277..23ffc9ee80 100644 --- a/ui/app/page.tsx +++ b/ui/app/page.tsx @@ -11,7 +11,7 @@ import { useWebSocket } from '@/hooks/useWebSocket' import { apiService } from '@/lib/api' import type { BifrostMessage, ContentBlock, LogEntry, LogFilters, LogStats, MessageContent, Pagination } from '@/lib/types/logs' import { AlertCircle, BarChart, CheckCircle, Clock, Hash } from 'lucide-react' -import { useCallback, useEffect, useMemo, useState } from 'react' +import { useCallback, useEffect, useMemo, useState, useRef } from 'react' export default function LogsPage() { const [logs, setLogs] = useState([]) @@ -24,6 +24,9 @@ export default function LogsPage() { const [selectedLog, setSelectedLog] = useState(null) + // Debouncing for streaming updates (client-side) + const streamingUpdateTimeouts = useRef>(new Map()) + const [filters, setFilters] = useState({ providers: [], models: [], @@ -37,65 +40,178 @@ export default function LogsPage() { order: 'desc', }) - const handleNewLog = useCallback( - (log: LogEntry) => { + const handleLogMessage = useCallback( + (log: LogEntry, operation: 'create' | 'update') => { // If we were in empty state, exit it since we now have logs if (showEmptyState) { setShowEmptyState(false) } - // Only prepend the new log if we're on the first page and sorted by timestamp desc - if (pagination.offset === 0 && pagination.sort_by === 'timestamp' && pagination.order === 'desc') { - // Check if the log matches current filters - if (!matchesFilters(log, filters)) { - return - } - - setLogs((prevLogs: LogEntry[]) => { - // Remove the last log if we're at the page limit - const updatedLogs = [log, ...prevLogs] - if (updatedLogs.length > pagination.limit) { - updatedLogs.pop() + if (operation === 'create') { + // Handle new log creation + // Only prepend the new log if we're on the first page and sorted by timestamp desc + if (pagination.offset === 0 && pagination.sort_by === 'timestamp' && pagination.order === 'desc') { + // Check if the log matches current filters + if (!matchesFilters(log, filters)) { + return } - return updatedLogs - }) - setTotalItems((prev: number) => prev + 1) - setStats((prevStats) => { - if (!prevStats) return prevStats + setLogs((prevLogs: LogEntry[]) => { + // Check if log already exists (prevent duplicates) + if (prevLogs.some((existingLog) => existingLog.id === log.id)) { + return prevLogs + } - const newStats = { ...prevStats } - newStats.total_requests += 1 + // Remove the last log if we're at the page limit + const updatedLogs = [log, ...prevLogs] + if (updatedLogs.length > pagination.limit) { + updatedLogs.pop() + } + return updatedLogs + }) - // Update success rate - const successCount = (prevStats.success_rate / 100) * prevStats.total_requests - const newSuccessCount = log.status === 'success' ? successCount + 1 : successCount - newStats.success_rate = (newSuccessCount / newStats.total_requests) * 100 + // Update selectedLog if it matches (for detail sheet real-time updates) + setSelectedLog((prevSelectedLog) => { + if (prevSelectedLog && prevSelectedLog.id === log.id) { + return log + } + return prevSelectedLog + }) - // Update average latency - if (log.latency) { - const totalLatency = prevStats.average_latency * prevStats.total_requests - newStats.average_latency = (totalLatency + log.latency) / newStats.total_requests - } + setTotalItems((prev: number) => prev + 1) + + setStats((prevStats) => { + if (!prevStats) return prevStats + + const newStats = { ...prevStats } + newStats.total_requests += 1 + + // Update success rate + const successCount = (prevStats.success_rate / 100) * prevStats.total_requests + const newSuccessCount = log.status === 'success' ? successCount + 1 : successCount + newStats.success_rate = (newSuccessCount / newStats.total_requests) * 100 + + // Update average latency + if (log.latency) { + const totalLatency = prevStats.average_latency * prevStats.total_requests + newStats.average_latency = (totalLatency + log.latency) / newStats.total_requests + } + + // Update total tokens + if (log.token_usage) { + newStats.total_tokens += log.token_usage.total_tokens + } - // Update total tokens - if (log.token_usage) { - newStats.total_tokens += log.token_usage.total_tokens + return newStats + }) + } + } else if (operation === 'update') { + // Handle log updates with debouncing for streaming + + // Check if the log exists in our current list + const logExists = logs.some((existingLog) => existingLog.id === log.id) + + if (!logExists) { + // Fallback: if log doesn't exist, treat as create (e.g., user was on different page when created) + if (pagination.offset === 0 && pagination.sort_by === 'timestamp' && pagination.order === 'desc') { + // Check if the log matches current filters + if (matchesFilters(log, filters)) { + setLogs((prevLogs: LogEntry[]) => { + // Double-check it doesn't exist (race condition protection) + if (prevLogs.some((existingLog) => existingLog.id === log.id)) { + return prevLogs.map((existingLog) => (existingLog.id === log.id ? log : existingLog)) + } + + // Add as new log + const updatedLogs = [log, ...prevLogs] + if (updatedLogs.length > pagination.limit) { + updatedLogs.pop() + } + return updatedLogs + }) + } } + } else { + // Normal update flow for existing logs + if (log.stream) { + // For streaming logs, debounce updates to avoid UI thrashing + const existingTimeout = streamingUpdateTimeouts.current.get(log.id) + if (existingTimeout) { + clearTimeout(existingTimeout) + } - return newStats - }) + const timeout = setTimeout(() => { + updateExistingLog(log) + streamingUpdateTimeouts.current.delete(log.id) + }, 100) // 100ms debounce for streaming updates + + streamingUpdateTimeouts.current.set(log.id, timeout) + } else { + // For non-streaming updates, update immediately + updateExistingLog(log) + } + } } }, - [pagination.offset, pagination.sort_by, pagination.order, pagination.limit, filters, showEmptyState], + [pagination.offset, pagination.sort_by, pagination.order, pagination.limit, filters, showEmptyState, logs], ) + const updateExistingLog = useCallback((updatedLog: LogEntry) => { + setLogs((prevLogs: LogEntry[]) => { + return prevLogs.map((existingLog) => (existingLog.id === updatedLog.id ? updatedLog : existingLog)) + }) + + // Update selectedLog if it matches the updated log (for real-time detail sheet updates) + setSelectedLog((prevSelectedLog) => { + if (prevSelectedLog && prevSelectedLog.id === updatedLog.id) { + return updatedLog + } + return prevSelectedLog + }) + + // Update stats for completed requests + if (updatedLog.status === 'success' || updatedLog.status === 'error') { + setStats((prevStats) => { + if (!prevStats) return prevStats + + const newStats = { ...prevStats } + + // Recalculate success rate (this is an approximation) + const successCount = (prevStats.success_rate / 100) * prevStats.total_requests + const newSuccessCount = updatedLog.status === 'success' ? successCount + 1 : successCount + newStats.success_rate = (newSuccessCount / newStats.total_requests) * 100 + + // Update average latency + if (updatedLog.latency) { + // This is an approximation - for exact stats, we'd need to refetch + const totalLatency = prevStats.average_latency * prevStats.total_requests + newStats.average_latency = (totalLatency + updatedLog.latency) / newStats.total_requests + } + + // Update total tokens + if (updatedLog.token_usage) { + newStats.total_tokens += updatedLog.token_usage.total_tokens + } + + return newStats + }) + } + }, []) + const { isConnected: isSocketConnected, setMessageHandler } = useWebSocket() // Set up the message handler when the component mounts useEffect(() => { - setMessageHandler(handleNewLog) - }, [handleNewLog, setMessageHandler]) + setMessageHandler(handleLogMessage) + }, [handleLogMessage, setMessageHandler]) + + // Cleanup timeouts on unmount + useEffect(() => { + return () => { + streamingUpdateTimeouts.current.forEach((timeout) => clearTimeout(timeout)) + streamingUpdateTimeouts.current.clear() + } + }, []) const fetchLogs = useCallback(async () => { setFetchingLogs(true) diff --git a/ui/app/plugins/page.tsx b/ui/app/plugins/page.tsx index 8c9a6e38fa..1a33e3aac1 100644 --- a/ui/app/plugins/page.tsx +++ b/ui/app/plugins/page.tsx @@ -150,7 +150,7 @@ export default function PluginsPage() { return (
@@ -186,7 +186,7 @@ export default function PluginsPage() {
-

Key Features

+

Key Features

{plugin.capabilities.slice(0, 3).map((capability) => (
diff --git a/ui/components/config/core-settings-list.tsx b/ui/components/config/core-settings-list.tsx index ea89e74f10..1b7a29fcb6 100644 --- a/ui/components/config/core-settings-list.tsx +++ b/ui/components/config/core-settings-list.tsx @@ -1,224 +1,224 @@ -"use client"; - -import { useState, useEffect, useCallback, useRef } from "react"; -import { CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; -import { Switch } from "@/components/ui/switch"; -import { AlertTriangle, Loader2 } from "lucide-react"; -import { CoreConfig } from "@/lib/types/config"; -import { apiService } from "@/lib/api"; -import { toast } from "sonner"; -import { Separator } from "@radix-ui/react-separator"; -import { Alert, AlertDescription } from "../ui/alert"; -import { Input } from "../ui/input"; -import { Textarea } from "../ui/textarea"; -import { parseArrayFromText } from "@/lib/utils/array"; +'use client' + +import { useState, useEffect, useCallback, useRef } from 'react' +import { CardDescription, CardHeader, CardTitle } from '@/components/ui/card' +import { Switch } from '@/components/ui/switch' +import { AlertTriangle, Loader2 } from 'lucide-react' +import { CoreConfig } from '@/lib/types/config' +import { apiService } from '@/lib/api' +import { toast } from 'sonner' +import { Separator } from '@radix-ui/react-separator' +import { Alert, AlertDescription } from '../ui/alert' +import { Input } from '../ui/input' +import { Textarea } from '../ui/textarea' +import { parseArrayFromText } from '@/lib/utils/array' export default function CoreSettingsList() { - const [config, setConfig] = useState({ - drop_excess_requests: false, - initial_pool_size: 300, - enable_logging: true, - }); - const [droppedRequests, setDroppedRequests] = useState(0); - const [isLoading, setIsLoading] = useState(true); - const [localValues, setLocalValues] = useState<{ - initial_pool_size: string; - prometheus_labels: string; - }>({ - initial_pool_size: "300", - prometheus_labels: "", - }); - - useEffect(() => { - const fetchDroppedRequests = async () => { - const [response, error] = await apiService.getDroppedRequests(); - if (error) { - toast.error(error); - } else if (response) { - setDroppedRequests(response.dropped_requests); - } - }; - fetchDroppedRequests(); - }, []); - - // Use refs to store timeout IDs - const poolSizeTimeoutRef = useRef(undefined); - const prometheusLabelsTimeoutRef = useRef(undefined); - - useEffect(() => { - const fetchConfig = async () => { - const [coreConfig, error] = await apiService.getCoreConfig(); - if (error) { - toast.error(error); - } else if (coreConfig) { - setConfig(coreConfig); - setLocalValues({ - initial_pool_size: coreConfig.initial_pool_size?.toString() || "300", - prometheus_labels: coreConfig.prometheus_labels || "", - }); - } - setIsLoading(false); - }; - fetchConfig(); - }, []); - - const updateConfig = useCallback( - async (field: keyof CoreConfig, value: boolean | number | string[]) => { - const newConfig = { ...config, [field]: value }; - setConfig(newConfig); - - const [, error] = await apiService.updateCoreConfig(newConfig); - if (error) { - toast.error(error); - } else { - toast.success("Core setting updated successfully."); - } - }, - [config], - ); - - const handleConfigChange = async (field: keyof CoreConfig, value: boolean | number | string[]) => { - await updateConfig(field, value); - }; - - const handlePoolSizeChange = useCallback( - (value: string) => { - setLocalValues((prev) => ({ ...prev, initial_pool_size: value })); - - // Clear existing timeout - if (poolSizeTimeoutRef.current) { - clearTimeout(poolSizeTimeoutRef.current); - } - - // Set new timeout - poolSizeTimeoutRef.current = setTimeout(() => { - const numValue = Number.parseInt(value); - if (!isNaN(numValue) && numValue > 0) { - updateConfig("initial_pool_size", numValue); - } - }, 1000); - }, - [updateConfig], - ); - - const handlePrometheusLabelsChange = useCallback( - (value: string) => { - setLocalValues((prev) => ({ ...prev, prometheus_labels: value })); - - // Clear existing timeout - if (prometheusLabelsTimeoutRef.current) { - clearTimeout(prometheusLabelsTimeoutRef.current); - } - - // Set new timeout - prometheusLabelsTimeoutRef.current = setTimeout(() => { - updateConfig("prometheus_labels", parseArrayFromText(value)); - }, 1000); - }, - [updateConfig], - ); - - // Cleanup timeouts on unmount - useEffect(() => { - return () => { - if (poolSizeTimeoutRef.current) { - clearTimeout(poolSizeTimeoutRef.current); - } - if (prometheusLabelsTimeoutRef.current) { - clearTimeout(prometheusLabelsTimeoutRef.current); - } - }; - }, []); - - if (isLoading) { - return ( -
- -
- ); - } - - return ( -
- - Core System Settings - Configure core Bifrost settings like request handling, pool sizes, and system behavior. - -
- {/* Drop Excess Requests */} -
-
- -

If enabled, Bifrost will drop requests that exceed pool capacity.

-
- handleConfigChange("drop_excess_requests", checked)} - /> -
- - - - - - - The settings below require a Bifrost service restart to take effect. Current connections will continue with existing settings - until restart. - - - -
-
- -

The initial connection pool size.

-
- handlePoolSizeChange(e.target.value)} - min="1" - /> -
- -
-
- -

- Enable logging of requests and responses to a SQLite database. This can add 40-60mb of overhead to the system memory. -

-
- handleConfigChange("enable_logging", checked)} - /> -
- -
-
- -

Comma-separated list of custom labels to add to the Prometheus metrics.

-
-