@dbx-tools/shared-genie 0.9.129 → 0.9.131
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -7
- package/index.ts +5 -5
- package/lib/index.d.ts +5 -5
- package/lib/index.js +4 -4
- package/lib/src/agent-mode.d.ts +43 -0
- package/lib/src/agent-mode.js +91 -7
- package/lib/src/genie-model.d.ts +49 -1
- package/lib/src/genie-model.js +19 -1
- package/package.json +2 -2
- package/src/agent-mode.ts +115 -6
- package/src/genie-model.ts +20 -0
package/README.md
CHANGED
|
@@ -19,8 +19,8 @@ Key features:
|
|
|
19
19
|
- Runtime schemas for Genie messages, responses, spaces, attachments, and
|
|
20
20
|
statuses, including fields observed on the live wire.
|
|
21
21
|
- Forward-compatible Agent Mode SSE schemas plus a pure reducer that projects
|
|
22
|
-
reasoning, SQL, Markdown output,
|
|
23
|
-
status into `GenieMessage`.
|
|
22
|
+
reasoning, SQL, Markdown output, statement ids, visualization metadata, and
|
|
23
|
+
terminal status into `GenieMessage`.
|
|
24
24
|
- A flat `GenieChatEvent` vocabulary for thinking, SQL, rows, result, status,
|
|
25
25
|
and error rendering.
|
|
26
26
|
- Snapshot diff helpers that emit only newly observed semantic events.
|
|
@@ -53,8 +53,8 @@ const attachments = genieModel.GenieResponseSchema.parse(rawMessage);
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
55
|
The schemas extend generated Databricks SDK Genie types with fields observed on
|
|
56
|
-
the wire, including query thoughts,
|
|
57
|
-
space data.
|
|
56
|
+
the wire, including query thoughts, visualization attachments, attachment
|
|
57
|
+
discriminators, and serialized space data.
|
|
58
58
|
|
|
59
59
|
## Handle Typed Chat Events
|
|
60
60
|
|
|
@@ -105,8 +105,8 @@ const kind = genieModel.detectAttachmentType(message.attachments?.[0]);
|
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
`humanizeStatus()` is the shared display-label function. `detectAttachmentType()`
|
|
108
|
-
lets consumers switch on `query`, `text`, or `
|
|
109
|
-
probing optional fields.
|
|
108
|
+
lets consumers switch on `query`, `text`, `suggested_questions`, or `viz`
|
|
109
|
+
instead of probing optional fields.
|
|
110
110
|
|
|
111
111
|
## Event Model
|
|
112
112
|
|
|
@@ -141,7 +141,7 @@ The SDK itself is a dev dependency, so importing this package pulls in zod only.
|
|
|
141
141
|
## Modules
|
|
142
142
|
|
|
143
143
|
- `agentMode` - forward-compatible zod schemas plus the pure Agent Mode event
|
|
144
|
-
reducer and `GenieMessage`
|
|
144
|
+
reducer and live/history `GenieMessage` projectors.
|
|
145
145
|
- `genieModel` - Genie schemas, status helpers, attachment helpers, and event
|
|
146
146
|
union schemas/types.
|
|
147
147
|
- `event` - event detector factory, individual detectors, and
|
package/index.ts
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
|
|
5
5
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
6
|
-
export const PACKAGE_VERSION = "0.9.
|
|
6
|
+
export const PACKAGE_VERSION = "0.9.131";
|
|
7
7
|
export * as agentMode from "./src/agent-mode.ts";
|
|
8
8
|
export * as dashboards from "./src/dashboards.ts";
|
|
9
9
|
export * as event from "./src/event.ts";
|
|
10
10
|
export * as genieModel from "./src/genie-model.ts";
|
|
11
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
12
|
-
export type { GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
11
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
12
|
+
export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
13
13
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
|
|
14
14
|
export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, DashboardView, DeleteScheduleRequest, DeleteSubscriptionRequest, GenieSuggestedQuestionsAttachment, GenieConversation, GenieConversationSummary, GenieCreateConversationMessageRequest, GenieDeleteConversationMessageRequest, GenieDeleteConversationRequest, GenieExecuteMessageAttachmentQueryRequest, GenieExecuteMessageQueryRequest, GenieFeedbackRating, GenieGetConversationMessageRequest, GenieGetMessageAttachmentQueryResultRequest, GenieGetMessageQueryResultRequest, GenieGetMessageQueryResultResponse, GenieGetQueryResultByAttachmentRequest, GenieGetSpaceRequest, GenieListConversationMessagesRequest, GenieListConversationsRequest, GenieListConversationsResponse, GenieListSpacesRequest, GenieFeedback, Result, QueryAttachmentParameter, GenieResultMetadata, GenieSendMessageFeedbackRequest, GenieStartConversationMessageRequest, GenieTrashSpaceRequest, GetDashboardRequest, GetPublishedDashboardRequest, GetPublishedDashboardTokenInfoRequest, AuthorizationDetails, GetScheduleRequest, GetSubscriptionRequest, ListDashboardsRequest, Dashboard, ListSchedulesRequest, ListSubscriptionsRequest, MessageErrorType, MigrateDashboardRequest, PublishRequest, PublishedDashboard, SchedulePauseStatus, SubscriptionSubscriberDestination, SubscriptionSubscriberUser, Subscriber, TextAttachmentPurpose, TrashDashboardRequest, UnpublishDashboardRequest, UpdateDashboardRequest, Schedule, CreateDashboardRequest, CreateScheduleRequest, Subscription, TextAttachment, GenieListSpacesResponse, MessageError, GetPublishedDashboardTokenInfoResponse, ListDashboardsResponse, ListSchedulesResponse, ListSubscriptionsResponse, UpdateScheduleRequest, CreateSubscriptionRequest, GenieListConversationMessagesResponse, GenieStartConversationResponse } from "./src/dashboards.ts";
|
|
15
15
|
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.ts";
|
|
16
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
17
|
-
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
|
16
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
17
|
+
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
package/lib/index.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
2
|
-
export declare const PACKAGE_VERSION = "0.9.
|
|
2
|
+
export declare const PACKAGE_VERSION = "0.9.131";
|
|
3
3
|
export * as agentMode from "./src/agent-mode.ts";
|
|
4
4
|
export * as dashboards from "./src/dashboards.ts";
|
|
5
5
|
export * as event from "./src/event.ts";
|
|
6
6
|
export * as genieModel from "./src/genie-model.ts";
|
|
7
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
8
|
-
export type { GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
7
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.ts";
|
|
8
|
+
export type { GenieAgentConversationItems, GenieAgentOutputItem, GenieAgentResponse, GenieAgentModeEvent } from "./src/agent-mode.ts";
|
|
9
9
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.ts";
|
|
10
10
|
export type { AuthorizationDetailsGrantRule, CronSchedule, LifecycleState, DashboardView, DeleteScheduleRequest, DeleteSubscriptionRequest, GenieSuggestedQuestionsAttachment, GenieConversation, GenieConversationSummary, GenieCreateConversationMessageRequest, GenieDeleteConversationMessageRequest, GenieDeleteConversationRequest, GenieExecuteMessageAttachmentQueryRequest, GenieExecuteMessageQueryRequest, GenieFeedbackRating, GenieGetConversationMessageRequest, GenieGetMessageAttachmentQueryResultRequest, GenieGetMessageQueryResultRequest, GenieGetMessageQueryResultResponse, GenieGetQueryResultByAttachmentRequest, GenieGetSpaceRequest, GenieListConversationMessagesRequest, GenieListConversationsRequest, GenieListConversationsResponse, GenieListSpacesRequest, GenieFeedback, Result, QueryAttachmentParameter, GenieResultMetadata, GenieSendMessageFeedbackRequest, GenieStartConversationMessageRequest, GenieTrashSpaceRequest, GetDashboardRequest, GetPublishedDashboardRequest, GetPublishedDashboardTokenInfoRequest, AuthorizationDetails, GetScheduleRequest, GetSubscriptionRequest, ListDashboardsRequest, Dashboard, ListSchedulesRequest, ListSubscriptionsRequest, MessageErrorType, MigrateDashboardRequest, PublishRequest, PublishedDashboard, SchedulePauseStatus, SubscriptionSubscriberDestination, SubscriptionSubscriberUser, Subscriber, TextAttachmentPurpose, TrashDashboardRequest, UnpublishDashboardRequest, UpdateDashboardRequest, Schedule, CreateDashboardRequest, CreateScheduleRequest, Subscription, TextAttachment, GenieListSpacesResponse, MessageError, GetPublishedDashboardTokenInfoResponse, ListDashboardsResponse, ListSchedulesResponse, ListSubscriptionsResponse, UpdateScheduleRequest, CreateSubscriptionRequest, GenieListConversationMessagesResponse, GenieStartConversationResponse } from "./src/dashboards.ts";
|
|
11
11
|
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.ts";
|
|
12
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
13
|
-
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
|
12
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.ts";
|
|
13
|
+
export type { MessageStatus, GenieThoughtType, GenieThought, KnownAttachmentType, AttachmentType, GenieQueryAttachment, GenieTextAttachmentPurpose, GenieTextAttachment, GenieVizAttachment, GenieAttachment, GenieMessage, GenieResponse, GenieSpace, TerminalStatus, GenieChatLocation, QuestionEvent, MessageEvent, StatusEvent, AttachmentEvent, ThinkingEvent, TextEvent, QueryEvent, StatementEvent, RowsEvent, SuggestedQuestionsEvent, ResultEvent, GenieChatEvent, GenieChatEventType, GenieChatEventFields } from "./src/genie-model.ts";
|
package/lib/index.js
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
// Regenerated from the exporting modules in ./src.
|
|
3
3
|
// Hand edits are overwritten on the next watch; this file is read-only.
|
|
4
4
|
export const PACKAGE_IDENTIFIER = "@dbx-tools/shared-genie";
|
|
5
|
-
export const PACKAGE_VERSION = "0.9.
|
|
5
|
+
export const PACKAGE_VERSION = "0.9.131";
|
|
6
6
|
export * as agentMode from "./src/agent-mode.js";
|
|
7
7
|
export * as dashboards from "./src/dashboards.js";
|
|
8
8
|
export * as event from "./src/event.js";
|
|
9
9
|
export * as genieModel from "./src/genie-model.js";
|
|
10
|
-
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.js";
|
|
10
|
+
export { GenieAgentContentSchema, GenieAgentOutputItemSchema, GenieAgentConversationItemsSchema, GenieAgentResponseSchema, GenieAgentModeEventSchema, GenieAgentModeProjection } from "./src/agent-mode.js";
|
|
11
11
|
export { authorizationDetailsGrantRuleSchema, cronScheduleSchema, lifecycleStateSchema, dashboardViewSchema, deleteScheduleRequestSchema, deleteSubscriptionRequestSchema, genieSuggestedQuestionsAttachmentSchema, genieConversationSchema, genieConversationSummarySchema, genieCreateConversationMessageRequestSchema, genieDeleteConversationMessageRequestSchema, genieDeleteConversationRequestSchema, genieExecuteMessageAttachmentQueryRequestSchema, genieExecuteMessageQueryRequestSchema, genieFeedbackRatingSchema, genieGetConversationMessageRequestSchema, genieGetMessageAttachmentQueryResultRequestSchema, genieGetMessageQueryResultRequestSchema, genieGetMessageQueryResultResponseSchema, genieGetQueryResultByAttachmentRequestSchema, genieGetSpaceRequestSchema, genieListConversationMessagesRequestSchema, genieListConversationsRequestSchema, genieListConversationsResponseSchema, genieListSpacesRequestSchema, genieSpaceSchema, genieFeedbackSchema, resultSchema, messageStatusSchema, queryAttachmentParameterSchema, genieResultMetadataSchema, genieSendMessageFeedbackRequestSchema, genieStartConversationMessageRequestSchema, genieTrashSpaceRequestSchema, getDashboardRequestSchema, getPublishedDashboardRequestSchema, getPublishedDashboardTokenInfoRequestSchema, authorizationDetailsSchema, getScheduleRequestSchema, getSubscriptionRequestSchema, listDashboardsRequestSchema, dashboardSchema, listSchedulesRequestSchema, listSubscriptionsRequestSchema, messageErrorTypeSchema, migrateDashboardRequestSchema, publishRequestSchema, publishedDashboardSchema, schedulePauseStatusSchema, subscriptionSubscriberDestinationSchema, subscriptionSubscriberUserSchema, subscriberSchema, textAttachmentPurposeSchema, trashDashboardRequestSchema, unpublishDashboardRequestSchema, updateDashboardRequestSchema, scheduleSchema, createDashboardRequestSchema, createScheduleRequestSchema, subscriptionSchema, genieQueryAttachmentSchema, textAttachmentSchema, genieListSpacesResponseSchema, genieAttachmentSchema, messageErrorSchema, genieMessageSchema, getPublishedDashboardTokenInfoResponseSchema, listDashboardsResponseSchema, listSchedulesResponseSchema, listSubscriptionsResponseSchema, updateScheduleRequestSchema, createSubscriptionRequestSchema, genieListConversationMessagesResponseSchema, genieStartConversationResponseSchema } from "./src/dashboards.js";
|
|
12
12
|
export { detectStatus, detectAttachmentAdded, detectThinking, detectText, detectQuery, detectStatement, detectRows, detectSuggestedQuestions } from "./src/event.js";
|
|
13
|
-
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.js";
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFekssT0FBTyxFQUFFLG1DQUFtQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLDJDQUEyQyxFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLCtDQUErQyxFQUFFLHFDQUFxQyxFQUFFLHlCQUF5QixFQUFFLHdDQUF3QyxFQUFFLGlEQUFpRCxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLDRDQUE0QyxFQUFFLDBCQUEwQixFQUFFLDBDQUEwQyxFQUFFLG1DQUFtQyxFQUFFLG9DQUFvQyxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSwwQ0FBMEMsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSwyQ0FBMkMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsdUNBQXVDLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN3lFLE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEyOVwiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBkYXNoYm9hcmRzIGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgKiBhcyBldmVudCBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllTW9kZWwgZnJvbSBcIi4vc3JjL2dlbmllLW1vZGVsLnRzXCI7XG5leHBvcnQgeyBHZW5pZUFnZW50Q29udGVudFNjaGVtYSwgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEsIEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYSwgR2VuaWVBZ2VudE1vZGVFdmVudFNjaGVtYSwgR2VuaWVBZ2VudE1vZGVQcm9qZWN0aW9uIH0gZnJvbSBcIi4vc3JjL2FnZW50LW1vZGUudHNcIjtcbmV4cG9ydCB0eXBlIHsgR2VuaWVBZ2VudE91dHB1dEl0ZW0sIEdlbmllQWdlbnRSZXNwb25zZSwgR2VuaWVBZ2VudE1vZGVFdmVudCB9IGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgeyBhdXRob3JpemF0aW9uRGV0YWlsc0dyYW50UnVsZVNjaGVtYSwgY3JvblNjaGVkdWxlU2NoZW1hLCBsaWZlY3ljbGVTdGF0ZVNjaGVtYSwgZGFzaGJvYXJkVmlld1NjaGVtYSwgZGVsZXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBkZWxldGVTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBnZW5pZVN1Z2dlc3RlZFF1ZXN0aW9uc0F0dGFjaG1lbnRTY2hlbWEsIGdlbmllQ29udmVyc2F0aW9uU2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblN1bW1hcnlTY2hlbWEsIGdlbmllQ3JlYXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWEsIGdlbmllRGVsZXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWEsIGdlbmllRGVsZXRlQ29udmVyc2F0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVFeGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VRdWVyeVJlcXVlc3RTY2hlbWEsIGdlbmllRmVlZGJhY2tSYXRpbmdTY2hlbWEsIGdlbmllR2V0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVxdWVzdFNjaGVtYSwgZ2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXNwb25zZVNjaGVtYSwgZ2VuaWVHZXRRdWVyeVJlc3VsdEJ5QXR0YWNobWVudFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0U3BhY2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25NZXNzYWdlc1JlcXVlc3RTY2hlbWEsIGdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2VTY2hlbWEsIGdlbmllTGlzdFNwYWNlc1JlcXVlc3RTY2hlbWEsIGdlbmllU3BhY2VTY2hlbWEsIGdlbmllRmVlZGJhY2tTY2hlbWEsIHJlc3VsdFNjaGVtYSwgbWVzc2FnZVN0YXR1c1NjaGVtYSwgcXVlcnlBdHRhY2htZW50UGFyYW1ldGVyU2NoZW1hLCBnZW5pZVJlc3VsdE1ldGFkYXRhU2NoZW1hLCBnZW5pZVNlbmRNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0U2NoZW1hLCBnZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3RTY2hlbWEsIGdlbmllVHJhc2hTcGFjZVJlcXVlc3RTY2hlbWEsIGdldERhc2hib2FyZFJlcXVlc3RTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFJlcXVlc3RTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1JlcXVlc3RTY2hlbWEsIGF1dGhvcml6YXRpb25EZXRhaWxzU2NoZW1hLCBnZXRTY2hlZHVsZVJlcXVlc3RTY2hlbWEsIGdldFN1YnNjcmlwdGlvblJlcXVlc3RTY2hlbWEsIGxpc3REYXNoYm9hcmRzUmVxdWVzdFNjaGVtYSwgZGFzaGJvYXJkU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVxdWVzdFNjaGVtYSwgbGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0U2NoZW1hLCBtZXNzYWdlRXJyb3JUeXBlU2NoZW1hLCBtaWdyYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgcHVibGlzaFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hlZERhc2hib2FyZFNjaGVtYSwgc2NoZWR1bGVQYXVzZVN0YXR1c1NjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlckRlc3RpbmF0aW9uU2NoZW1hLCBzdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlclNjaGVtYSwgc3Vic2NyaWJlclNjaGVtYSwgdGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hLCB0cmFzaERhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHVucHVibGlzaERhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHVwZGF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHNjaGVkdWxlU2NoZW1hLCBjcmVhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBjcmVhdGVTY2hlZHVsZVJlcXVlc3RTY2hlbWEsIHN1YnNjcmlwdGlvblNjaGVtYSwgZ2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEsIHRleHRBdHRhY2htZW50U2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVBdHRhY2htZW50U2NoZW1hLCBtZXNzYWdlRXJyb3JTY2hlbWEsIGdlbmllTWVzc2FnZVNjaGVtYSwgZ2V0UHVibGlzaGVkRGFzaGJvYXJkVG9rZW5JbmZvUmVzcG9uc2VTY2hlbWEsIGxpc3REYXNoYm9hcmRzUmVzcG9uc2VTY2hlbWEsIGxpc3RTY2hlZHVsZXNSZXNwb25zZVNjaGVtYSwgbGlzdFN1YnNjcmlwdGlvbnNSZXNwb25zZVNjaGVtYSwgdXBkYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBjcmVhdGVTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25NZXNzYWdlc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZVN0YXJ0Q29udmVyc2F0aW9uUmVzcG9uc2VTY2hlbWEgfSBmcm9tIFwiLi9zcmMvZGFzaGJvYXJkcy50c1wiO1xuZXhwb3J0IHR5cGUgeyBBdXRob3JpemF0aW9uRGV0YWlsc0dyYW50UnVsZSwgQ3JvblNjaGVkdWxlLCBMaWZlY3ljbGVTdGF0ZSwgRGFzaGJvYXJkVmlldywgRGVsZXRlU2NoZWR1bGVSZXF1ZXN0LCBEZWxldGVTdWJzY3JpcHRpb25SZXF1ZXN0LCBHZW5pZVN1Z2dlc3RlZFF1ZXN0aW9uc0F0dGFjaG1lbnQsIEdlbmllQ29udmVyc2F0aW9uLCBHZW5pZUNvbnZlcnNhdGlvblN1bW1hcnksIEdlbmllQ3JlYXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QsIEdlbmllRGVsZXRlQ29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QsIEdlbmllRGVsZXRlQ29udmVyc2F0aW9uUmVxdWVzdCwgR2VuaWVFeGVjdXRlTWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VRdWVyeVJlcXVlc3QsIEdlbmllRmVlZGJhY2tSYXRpbmcsIEdlbmllR2V0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZUF0dGFjaG1lbnRRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVxdWVzdCwgR2VuaWVHZXRNZXNzYWdlUXVlcnlSZXN1bHRSZXNwb25zZSwgR2VuaWVHZXRRdWVyeVJlc3VsdEJ5QXR0YWNobWVudFJlcXVlc3QsIEdlbmllR2V0U3BhY2VSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25NZXNzYWdlc1JlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbnNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVzcG9uc2UsIEdlbmllTGlzdFNwYWNlc1JlcXVlc3QsIEdlbmllRmVlZGJhY2ssIFJlc3VsdCwgUXVlcnlBdHRhY2htZW50UGFyYW1ldGVyLCBHZW5pZVJlc3VsdE1ldGFkYXRhLCBHZW5pZVNlbmRNZXNzYWdlRmVlZGJhY2tSZXF1ZXN0LCBHZW5pZVN0YXJ0Q29udmVyc2F0aW9uTWVzc2FnZVJlcXVlc3QsIEdlbmllVHJhc2hTcGFjZVJlcXVlc3QsIEdldERhc2hib2FyZFJlcXVlc3QsIEdldFB1Ymxpc2hlZERhc2hib2FyZFJlcXVlc3QsIEdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1JlcXVlc3QsIEF1dGhvcml6YXRpb25EZXRhaWxzLCBHZXRTY2hlZHVsZVJlcXVlc3QsIEdldFN1YnNjcmlwdGlvblJlcXVlc3QsIExpc3REYXNoYm9hcmRzUmVxdWVzdCwgRGFzaGJvYXJkLCBMaXN0U2NoZWR1bGVzUmVxdWVzdCwgTGlzdFN1YnNjcmlwdGlvbnNSZXF1ZXN0LCBNZXNzYWdlRXJyb3JUeXBlLCBNaWdyYXRlRGFzaGJvYXJkUmVxdWVzdCwgUHVibGlzaFJlcXVlc3QsIFB1Ymxpc2hlZERhc2hib2FyZCwgU2NoZWR1bGVQYXVzZVN0YXR1cywgU3Vic2NyaXB0aW9uU3Vic2NyaWJlckRlc3RpbmF0aW9uLCBTdWJzY3JpcHRpb25TdWJzY3JpYmVyVXNlciwgU3Vic2NyaWJlciwgVGV4dEF0dGFjaG1lbnRQdXJwb3NlLCBUcmFzaERhc2hib2FyZFJlcXVlc3QsIFVucHVibGlzaERhc2hib2FyZFJlcXVlc3QsIFVwZGF0ZURhc2hib2FyZFJlcXVlc3QsIFNjaGVkdWxlLCBDcmVhdGVEYXNoYm9hcmRSZXF1ZXN0LCBDcmVhdGVTY2hlZHVsZVJlcXVlc3QsIFN1YnNjcmlwdGlvbiwgVGV4dEF0dGFjaG1lbnQsIEdlbmllTGlzdFNwYWNlc1Jlc3BvbnNlLCBNZXNzYWdlRXJyb3IsIEdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlLCBMaXN0RGFzaGJvYXJkc1Jlc3BvbnNlLCBMaXN0U2NoZWR1bGVzUmVzcG9uc2UsIExpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2UsIFVwZGF0ZVNjaGVkdWxlUmVxdWVzdCwgQ3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZSwgR2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB7IGRldGVjdFN0YXR1cywgZGV0ZWN0QXR0YWNobWVudEFkZGVkLCBkZXRlY3RUaGlua2luZywgZGV0ZWN0VGV4dCwgZGV0ZWN0UXVlcnksIGRldGVjdFN0YXRlbWVudCwgZGV0ZWN0Um93cywgZGV0ZWN0U3VnZ2VzdGVkUXVlc3Rpb25zIH0gZnJvbSBcIi4vc3JjL2V2ZW50LnRzXCI7XG5leHBvcnQgeyBNZXNzYWdlU3RhdHVzU2NoZW1hLCBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLCBHZW5pZVRob3VnaHRTY2hlbWEsIEFUVEFDSE1FTlRfVFlQRVMsIEtub3duQXR0YWNobWVudFR5cGVTY2hlbWEsIEF0dGFjaG1lbnRUeXBlU2NoZW1hLCBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEsIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWEsIEdlbmllQXR0YWNobWVudFNjaGVtYSwgR2VuaWVNZXNzYWdlU2NoZW1hLCBHZW5pZVJlc3BvbnNlU2NoZW1hLCBHZW5pZVNwYWNlU2NoZW1hLCBURVJNSU5BTF9TVEFUVVNFUywgVGVybWluYWxTdGF0dXNTY2hlbWEsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllQXR0YWNobWVudCwgR2VuaWVNZXNzYWdlLCBHZW5pZVJlc3BvbnNlLCBHZW5pZVNwYWNlLCBUZXJtaW5hbFN0YXR1cywgR2VuaWVDaGF0TG9jYXRpb24sIFF1ZXN0aW9uRXZlbnQsIE1lc3NhZ2VFdmVudCwgU3RhdHVzRXZlbnQsIEF0dGFjaG1lbnRFdmVudCwgVGhpbmtpbmdFdmVudCwgVGV4dEV2ZW50LCBRdWVyeUV2ZW50LCBTdGF0ZW1lbnRFdmVudCwgUm93c0V2ZW50LCBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudCwgUmVzdWx0RXZlbnQsIEdlbmllQ2hhdEV2ZW50LCBHZW5pZUNoYXRFdmVudFR5cGUsIEdlbmllQ2hhdEV2ZW50RmllbGRzIH0gZnJvbSBcIi4vc3JjL2dlbmllLW1vZGVsLnRzXCI7XG4iXX0=
|
|
13
|
+
export { MessageStatusSchema, GenieThoughtTypeSchema, GenieThoughtSchema, ATTACHMENT_TYPES, KnownAttachmentTypeSchema, AttachmentTypeSchema, GenieQueryAttachmentSchema, GenieTextAttachmentPurposeSchema, GenieTextAttachmentSchema, GenieVizAttachmentSchema, GenieAttachmentSchema, GenieMessageSchema, GenieResponseSchema, GenieSpaceSchema, TERMINAL_STATUSES, TerminalStatusSchema, GenieChatLocationSchema, QuestionEventSchema, MessageEventSchema, StatusEventSchema, AttachmentEventSchema, ThinkingEventSchema, TextEventSchema, QueryEventSchema, StatementEventSchema, RowsEventSchema, SuggestedQuestionsEventSchema, ResultEventSchema, GenieChatEventSchema } from "./src/genie-model.js";
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsbURBQW1EO0FBQ25ELHdFQUF3RTtBQUV4RSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyx5QkFBeUIsQ0FBQztBQUM1RCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsU0FBUyxDQUFDO0FBQ3pDLE9BQU8sS0FBSyxTQUFTLE1BQU0scUJBQXFCLENBQUM7QUFDakQsT0FBTyxLQUFLLFVBQVUsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRCxPQUFPLEtBQUssS0FBSyxNQUFNLGdCQUFnQixDQUFDO0FBQ3hDLE9BQU8sS0FBSyxVQUFVLE1BQU0sc0JBQXNCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLDBCQUEwQixFQUFFLGlDQUFpQyxFQUFFLHdCQUF3QixFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFNU0sT0FBTyxFQUFFLG1DQUFtQyxFQUFFLGtCQUFrQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxFQUFFLHVCQUF1QixFQUFFLDhCQUE4QixFQUFFLDJDQUEyQyxFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLCtDQUErQyxFQUFFLHFDQUFxQyxFQUFFLHlCQUF5QixFQUFFLHdDQUF3QyxFQUFFLGlEQUFpRCxFQUFFLHVDQUF1QyxFQUFFLHdDQUF3QyxFQUFFLDRDQUE0QyxFQUFFLDBCQUEwQixFQUFFLDBDQUEwQyxFQUFFLG1DQUFtQyxFQUFFLG9DQUFvQyxFQUFFLDRCQUE0QixFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFlBQVksRUFBRSxtQkFBbUIsRUFBRSw4QkFBOEIsRUFBRSx5QkFBeUIsRUFBRSxxQ0FBcUMsRUFBRSwwQ0FBMEMsRUFBRSw0QkFBNEIsRUFBRSx5QkFBeUIsRUFBRSxrQ0FBa0MsRUFBRSwyQ0FBMkMsRUFBRSwwQkFBMEIsRUFBRSx3QkFBd0IsRUFBRSw0QkFBNEIsRUFBRSwyQkFBMkIsRUFBRSxlQUFlLEVBQUUsMEJBQTBCLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsb0JBQW9CLEVBQUUsd0JBQXdCLEVBQUUseUJBQXlCLEVBQUUsdUNBQXVDLEVBQUUsZ0NBQWdDLEVBQUUsZ0JBQWdCLEVBQUUsMkJBQTJCLEVBQUUsMkJBQTJCLEVBQUUsK0JBQStCLEVBQUUsNEJBQTRCLEVBQUUsY0FBYyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLGtCQUFrQixFQUFFLDBCQUEwQixFQUFFLG9CQUFvQixFQUFFLDZCQUE2QixFQUFFLHFCQUFxQixFQUFFLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLDRDQUE0QyxFQUFFLDRCQUE0QixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJCQUEyQixFQUFFLCtCQUErQixFQUFFLDJDQUEyQyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFN3lFLE9BQU8sRUFBRSxZQUFZLEVBQUUscUJBQXFCLEVBQUUsY0FBYyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JLLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxzQkFBc0IsRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsRUFBRSx5QkFBeUIsRUFBRSxvQkFBb0IsRUFBRSwwQkFBMEIsRUFBRSxnQ0FBZ0MsRUFBRSx5QkFBeUIsRUFBRSx3QkFBd0IsRUFBRSxxQkFBcUIsRUFBRSxrQkFBa0IsRUFBRSxtQkFBbUIsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSx1QkFBdUIsRUFBRSxtQkFBbUIsRUFBRSxrQkFBa0IsRUFBRSxpQkFBaUIsRUFBRSxxQkFBcUIsRUFBRSxtQkFBbUIsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsZUFBZSxFQUFFLDZCQUE2QixFQUFFLGlCQUFpQixFQUFFLG9CQUFvQixFQUFFLE1BQU0sc0JBQXNCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBHRU5FUkFURUQgYnkgcHJvamVuIHdhdGNoIC0gRE8gTk9UIEVESVQuXG4vLyBSZWdlbmVyYXRlZCBmcm9tIHRoZSBleHBvcnRpbmcgbW9kdWxlcyBpbiAuL3NyYy5cbi8vIEhhbmQgZWRpdHMgYXJlIG92ZXJ3cml0dGVuIG9uIHRoZSBuZXh0IHdhdGNoOyB0aGlzIGZpbGUgaXMgcmVhZC1vbmx5LlxuXG5leHBvcnQgY29uc3QgUEFDS0FHRV9JREVOVElGSUVSID0gXCJAZGJ4LXRvb2xzL3NoYXJlZC1nZW5pZVwiO1xuZXhwb3J0IGNvbnN0IFBBQ0tBR0VfVkVSU0lPTiA9IFwiMC45LjEzMVwiO1xuZXhwb3J0ICogYXMgYWdlbnRNb2RlIGZyb20gXCIuL3NyYy9hZ2VudC1tb2RlLnRzXCI7XG5leHBvcnQgKiBhcyBkYXNoYm9hcmRzIGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgKiBhcyBldmVudCBmcm9tIFwiLi9zcmMvZXZlbnQudHNcIjtcbmV4cG9ydCAqIGFzIGdlbmllTW9kZWwgZnJvbSBcIi4vc3JjL2dlbmllLW1vZGVsLnRzXCI7XG5leHBvcnQgeyBHZW5pZUFnZW50Q29udGVudFNjaGVtYSwgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEsIEdlbmllQWdlbnRDb252ZXJzYXRpb25JdGVtc1NjaGVtYSwgR2VuaWVBZ2VudFJlc3BvbnNlU2NoZW1hLCBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hLCBHZW5pZUFnZW50TW9kZVByb2plY3Rpb24gfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHR5cGUgeyBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXMsIEdlbmllQWdlbnRPdXRwdXRJdGVtLCBHZW5pZUFnZW50UmVzcG9uc2UsIEdlbmllQWdlbnRNb2RlRXZlbnQgfSBmcm9tIFwiLi9zcmMvYWdlbnQtbW9kZS50c1wiO1xuZXhwb3J0IHsgYXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGVTY2hlbWEsIGNyb25TY2hlZHVsZVNjaGVtYSwgbGlmZWN5Y2xlU3RhdGVTY2hlbWEsIGRhc2hib2FyZFZpZXdTY2hlbWEsIGRlbGV0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgZGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50U2NoZW1hLCBnZW5pZUNvbnZlcnNhdGlvblNjaGVtYSwgZ2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5U2NoZW1hLCBnZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3RTY2hlbWEsIGdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0U2NoZW1hLCBnZW5pZUZlZWRiYWNrUmF0aW5nU2NoZW1hLCBnZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3RTY2hlbWEsIGdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2VTY2hlbWEsIGdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0U2NoZW1hLCBnZW5pZUdldFNwYWNlUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlU2NoZW1hLCBnZW5pZUxpc3RTcGFjZXNSZXF1ZXN0U2NoZW1hLCBnZW5pZVNwYWNlU2NoZW1hLCBnZW5pZUZlZWRiYWNrU2NoZW1hLCByZXN1bHRTY2hlbWEsIG1lc3NhZ2VTdGF0dXNTY2hlbWEsIHF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlclNjaGVtYSwgZ2VuaWVSZXN1bHRNZXRhZGF0YVNjaGVtYSwgZ2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdFNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0U2NoZW1hLCBnZW5pZVRyYXNoU3BhY2VSZXF1ZXN0U2NoZW1hLCBnZXREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBnZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0U2NoZW1hLCBhdXRob3JpemF0aW9uRGV0YWlsc1NjaGVtYSwgZ2V0U2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBnZXRTdWJzY3JpcHRpb25SZXF1ZXN0U2NoZW1hLCBsaXN0RGFzaGJvYXJkc1JlcXVlc3RTY2hlbWEsIGRhc2hib2FyZFNjaGVtYSwgbGlzdFNjaGVkdWxlc1JlcXVlc3RTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVxdWVzdFNjaGVtYSwgbWVzc2FnZUVycm9yVHlwZVNjaGVtYSwgbWlncmF0ZURhc2hib2FyZFJlcXVlc3RTY2hlbWEsIHB1Ymxpc2hSZXF1ZXN0U2NoZW1hLCBwdWJsaXNoZWREYXNoYm9hcmRTY2hlbWEsIHNjaGVkdWxlUGF1c2VTdGF0dXNTY2hlbWEsIHN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvblNjaGVtYSwgc3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXJTY2hlbWEsIHN1YnNjcmliZXJTY2hlbWEsIHRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSwgdHJhc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1bnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCB1cGRhdGVEYXNoYm9hcmRSZXF1ZXN0U2NoZW1hLCBzY2hlZHVsZVNjaGVtYSwgY3JlYXRlRGFzaGJvYXJkUmVxdWVzdFNjaGVtYSwgY3JlYXRlU2NoZWR1bGVSZXF1ZXN0U2NoZW1hLCBzdWJzY3JpcHRpb25TY2hlbWEsIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLCB0ZXh0QXR0YWNobWVudFNjaGVtYSwgZ2VuaWVMaXN0U3BhY2VzUmVzcG9uc2VTY2hlbWEsIGdlbmllQXR0YWNobWVudFNjaGVtYSwgbWVzc2FnZUVycm9yU2NoZW1hLCBnZW5pZU1lc3NhZ2VTY2hlbWEsIGdldFB1Ymxpc2hlZERhc2hib2FyZFRva2VuSW5mb1Jlc3BvbnNlU2NoZW1hLCBsaXN0RGFzaGJvYXJkc1Jlc3BvbnNlU2NoZW1hLCBsaXN0U2NoZWR1bGVzUmVzcG9uc2VTY2hlbWEsIGxpc3RTdWJzY3JpcHRpb25zUmVzcG9uc2VTY2hlbWEsIHVwZGF0ZVNjaGVkdWxlUmVxdWVzdFNjaGVtYSwgY3JlYXRlU3Vic2NyaXB0aW9uUmVxdWVzdFNjaGVtYSwgZ2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXNwb25zZVNjaGVtYSwgZ2VuaWVTdGFydENvbnZlcnNhdGlvblJlc3BvbnNlU2NoZW1hIH0gZnJvbSBcIi4vc3JjL2Rhc2hib2FyZHMudHNcIjtcbmV4cG9ydCB0eXBlIHsgQXV0aG9yaXphdGlvbkRldGFpbHNHcmFudFJ1bGUsIENyb25TY2hlZHVsZSwgTGlmZWN5Y2xlU3RhdGUsIERhc2hib2FyZFZpZXcsIERlbGV0ZVNjaGVkdWxlUmVxdWVzdCwgRGVsZXRlU3Vic2NyaXB0aW9uUmVxdWVzdCwgR2VuaWVTdWdnZXN0ZWRRdWVzdGlvbnNBdHRhY2htZW50LCBHZW5pZUNvbnZlcnNhdGlvbiwgR2VuaWVDb252ZXJzYXRpb25TdW1tYXJ5LCBHZW5pZUNyZWF0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZURlbGV0ZUNvbnZlcnNhdGlvblJlcXVlc3QsIEdlbmllRXhlY3V0ZU1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXF1ZXN0LCBHZW5pZUV4ZWN1dGVNZXNzYWdlUXVlcnlSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrUmF0aW5nLCBHZW5pZUdldENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VBdHRhY2htZW50UXVlcnlSZXN1bHRSZXF1ZXN0LCBHZW5pZUdldE1lc3NhZ2VRdWVyeVJlc3VsdFJlcXVlc3QsIEdlbmllR2V0TWVzc2FnZVF1ZXJ5UmVzdWx0UmVzcG9uc2UsIEdlbmllR2V0UXVlcnlSZXN1bHRCeUF0dGFjaG1lbnRSZXF1ZXN0LCBHZW5pZUdldFNwYWNlUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uTWVzc2FnZXNSZXF1ZXN0LCBHZW5pZUxpc3RDb252ZXJzYXRpb25zUmVxdWVzdCwgR2VuaWVMaXN0Q29udmVyc2F0aW9uc1Jlc3BvbnNlLCBHZW5pZUxpc3RTcGFjZXNSZXF1ZXN0LCBHZW5pZUZlZWRiYWNrLCBSZXN1bHQsIFF1ZXJ5QXR0YWNobWVudFBhcmFtZXRlciwgR2VuaWVSZXN1bHRNZXRhZGF0YSwgR2VuaWVTZW5kTWVzc2FnZUZlZWRiYWNrUmVxdWVzdCwgR2VuaWVTdGFydENvbnZlcnNhdGlvbk1lc3NhZ2VSZXF1ZXN0LCBHZW5pZVRyYXNoU3BhY2VSZXF1ZXN0LCBHZXREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRSZXF1ZXN0LCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXF1ZXN0LCBBdXRob3JpemF0aW9uRGV0YWlscywgR2V0U2NoZWR1bGVSZXF1ZXN0LCBHZXRTdWJzY3JpcHRpb25SZXF1ZXN0LCBMaXN0RGFzaGJvYXJkc1JlcXVlc3QsIERhc2hib2FyZCwgTGlzdFNjaGVkdWxlc1JlcXVlc3QsIExpc3RTdWJzY3JpcHRpb25zUmVxdWVzdCwgTWVzc2FnZUVycm9yVHlwZSwgTWlncmF0ZURhc2hib2FyZFJlcXVlc3QsIFB1Ymxpc2hSZXF1ZXN0LCBQdWJsaXNoZWREYXNoYm9hcmQsIFNjaGVkdWxlUGF1c2VTdGF0dXMsIFN1YnNjcmlwdGlvblN1YnNjcmliZXJEZXN0aW5hdGlvbiwgU3Vic2NyaXB0aW9uU3Vic2NyaWJlclVzZXIsIFN1YnNjcmliZXIsIFRleHRBdHRhY2htZW50UHVycG9zZSwgVHJhc2hEYXNoYm9hcmRSZXF1ZXN0LCBVbnB1Ymxpc2hEYXNoYm9hcmRSZXF1ZXN0LCBVcGRhdGVEYXNoYm9hcmRSZXF1ZXN0LCBTY2hlZHVsZSwgQ3JlYXRlRGFzaGJvYXJkUmVxdWVzdCwgQ3JlYXRlU2NoZWR1bGVSZXF1ZXN0LCBTdWJzY3JpcHRpb24sIFRleHRBdHRhY2htZW50LCBHZW5pZUxpc3RTcGFjZXNSZXNwb25zZSwgTWVzc2FnZUVycm9yLCBHZXRQdWJsaXNoZWREYXNoYm9hcmRUb2tlbkluZm9SZXNwb25zZSwgTGlzdERhc2hib2FyZHNSZXNwb25zZSwgTGlzdFNjaGVkdWxlc1Jlc3BvbnNlLCBMaXN0U3Vic2NyaXB0aW9uc1Jlc3BvbnNlLCBVcGRhdGVTY2hlZHVsZVJlcXVlc3QsIENyZWF0ZVN1YnNjcmlwdGlvblJlcXVlc3QsIEdlbmllTGlzdENvbnZlcnNhdGlvbk1lc3NhZ2VzUmVzcG9uc2UsIEdlbmllU3RhcnRDb252ZXJzYXRpb25SZXNwb25zZSB9IGZyb20gXCIuL3NyYy9kYXNoYm9hcmRzLnRzXCI7XG5leHBvcnQgeyBkZXRlY3RTdGF0dXMsIGRldGVjdEF0dGFjaG1lbnRBZGRlZCwgZGV0ZWN0VGhpbmtpbmcsIGRldGVjdFRleHQsIGRldGVjdFF1ZXJ5LCBkZXRlY3RTdGF0ZW1lbnQsIGRldGVjdFJvd3MsIGRldGVjdFN1Z2dlc3RlZFF1ZXN0aW9ucyB9IGZyb20gXCIuL3NyYy9ldmVudC50c1wiO1xuZXhwb3J0IHsgTWVzc2FnZVN0YXR1c1NjaGVtYSwgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYSwgR2VuaWVUaG91Z2h0U2NoZW1hLCBBVFRBQ0hNRU5UX1RZUEVTLCBLbm93bkF0dGFjaG1lbnRUeXBlU2NoZW1hLCBBdHRhY2htZW50VHlwZVNjaGVtYSwgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEsIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hLCBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hLCBHZW5pZVZpekF0dGFjaG1lbnRTY2hlbWEsIEdlbmllQXR0YWNobWVudFNjaGVtYSwgR2VuaWVNZXNzYWdlU2NoZW1hLCBHZW5pZVJlc3BvbnNlU2NoZW1hLCBHZW5pZVNwYWNlU2NoZW1hLCBURVJNSU5BTF9TVEFUVVNFUywgVGVybWluYWxTdGF0dXNTY2hlbWEsIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLCBRdWVzdGlvbkV2ZW50U2NoZW1hLCBNZXNzYWdlRXZlbnRTY2hlbWEsIFN0YXR1c0V2ZW50U2NoZW1hLCBBdHRhY2htZW50RXZlbnRTY2hlbWEsIFRoaW5raW5nRXZlbnRTY2hlbWEsIFRleHRFdmVudFNjaGVtYSwgUXVlcnlFdmVudFNjaGVtYSwgU3RhdGVtZW50RXZlbnRTY2hlbWEsIFJvd3NFdmVudFNjaGVtYSwgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsIFJlc3VsdEV2ZW50U2NoZW1hLCBHZW5pZUNoYXRFdmVudFNjaGVtYSB9IGZyb20gXCIuL3NyYy9nZW5pZS1tb2RlbC50c1wiO1xuZXhwb3J0IHR5cGUgeyBNZXNzYWdlU3RhdHVzLCBHZW5pZVRob3VnaHRUeXBlLCBHZW5pZVRob3VnaHQsIEtub3duQXR0YWNobWVudFR5cGUsIEF0dGFjaG1lbnRUeXBlLCBHZW5pZVF1ZXJ5QXR0YWNobWVudCwgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UsIEdlbmllVGV4dEF0dGFjaG1lbnQsIEdlbmllVml6QXR0YWNobWVudCwgR2VuaWVBdHRhY2htZW50LCBHZW5pZU1lc3NhZ2UsIEdlbmllUmVzcG9uc2UsIEdlbmllU3BhY2UsIFRlcm1pbmFsU3RhdHVzLCBHZW5pZUNoYXRMb2NhdGlvbiwgUXVlc3Rpb25FdmVudCwgTWVzc2FnZUV2ZW50LCBTdGF0dXNFdmVudCwgQXR0YWNobWVudEV2ZW50LCBUaGlua2luZ0V2ZW50LCBUZXh0RXZlbnQsIFF1ZXJ5RXZlbnQsIFN0YXRlbWVudEV2ZW50LCBSb3dzRXZlbnQsIFN1Z2dlc3RlZFF1ZXN0aW9uc0V2ZW50LCBSZXN1bHRFdmVudCwgR2VuaWVDaGF0RXZlbnQsIEdlbmllQ2hhdEV2ZW50VHlwZSwgR2VuaWVDaGF0RXZlbnRGaWVsZHMgfSBmcm9tIFwiLi9zcmMvZ2VuaWUtbW9kZWwudHNcIjtcbiJdfQ==
|
package/lib/src/agent-mode.d.ts
CHANGED
|
@@ -23,12 +23,40 @@ export declare const GenieAgentOutputItemSchema: z.ZodObject<{
|
|
|
23
23
|
arguments: z.ZodOptional<z.ZodString>;
|
|
24
24
|
output: z.ZodOptional<z.ZodString>;
|
|
25
25
|
status: z.ZodOptional<z.ZodString>;
|
|
26
|
+
role: z.ZodOptional<z.ZodString>;
|
|
26
27
|
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
27
28
|
type: z.ZodString;
|
|
28
29
|
text: z.ZodOptional<z.ZodString>;
|
|
29
30
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
30
31
|
}, z.core.$loose>>>;
|
|
32
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
33
|
+
created_at: z.ZodOptional<z.ZodNumber>;
|
|
34
|
+
}, z.core.$loose>;
|
|
35
|
+
/** One page of an Agent Mode conversation's item history. */
|
|
36
|
+
export declare const GenieAgentConversationItemsSchema: z.ZodObject<{
|
|
37
|
+
data: z.ZodArray<z.ZodObject<{
|
|
38
|
+
type: z.ZodString;
|
|
39
|
+
id: z.ZodOptional<z.ZodString>;
|
|
40
|
+
call_id: z.ZodOptional<z.ZodString>;
|
|
41
|
+
name: z.ZodOptional<z.ZodString>;
|
|
42
|
+
arguments: z.ZodOptional<z.ZodString>;
|
|
43
|
+
output: z.ZodOptional<z.ZodString>;
|
|
44
|
+
status: z.ZodOptional<z.ZodString>;
|
|
45
|
+
role: z.ZodOptional<z.ZodString>;
|
|
46
|
+
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
47
|
+
type: z.ZodString;
|
|
48
|
+
text: z.ZodOptional<z.ZodString>;
|
|
49
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
50
|
+
}, z.core.$loose>>>;
|
|
51
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
52
|
+
created_at: z.ZodOptional<z.ZodNumber>;
|
|
53
|
+
}, z.core.$loose>>;
|
|
54
|
+
has_more: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
last_id: z.ZodOptional<z.ZodString>;
|
|
56
|
+
status: z.ZodOptional<z.ZodString>;
|
|
31
57
|
}, z.core.$loose>;
|
|
58
|
+
/** Validated Agent Mode conversation item page. */
|
|
59
|
+
export type GenieAgentConversationItems = z.infer<typeof GenieAgentConversationItemsSchema>;
|
|
32
60
|
/** Genie Agent Mode response carried by lifecycle events. */
|
|
33
61
|
export declare const GenieAgentResponseSchema: z.ZodObject<{
|
|
34
62
|
object: z.ZodOptional<z.ZodString>;
|
|
@@ -43,11 +71,14 @@ export declare const GenieAgentResponseSchema: z.ZodObject<{
|
|
|
43
71
|
arguments: z.ZodOptional<z.ZodString>;
|
|
44
72
|
output: z.ZodOptional<z.ZodString>;
|
|
45
73
|
status: z.ZodOptional<z.ZodString>;
|
|
74
|
+
role: z.ZodOptional<z.ZodString>;
|
|
46
75
|
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
47
76
|
type: z.ZodString;
|
|
48
77
|
text: z.ZodOptional<z.ZodString>;
|
|
49
78
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
50
79
|
}, z.core.$loose>>>;
|
|
80
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
81
|
+
created_at: z.ZodOptional<z.ZodNumber>;
|
|
51
82
|
}, z.core.$loose>>>;
|
|
52
83
|
conversation_id: z.ZodOptional<z.ZodString>;
|
|
53
84
|
created_at: z.ZodOptional<z.ZodNumber>;
|
|
@@ -71,11 +102,14 @@ export declare const GenieAgentModeEventSchema: z.ZodObject<{
|
|
|
71
102
|
arguments: z.ZodOptional<z.ZodString>;
|
|
72
103
|
output: z.ZodOptional<z.ZodString>;
|
|
73
104
|
status: z.ZodOptional<z.ZodString>;
|
|
105
|
+
role: z.ZodOptional<z.ZodString>;
|
|
74
106
|
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
75
107
|
type: z.ZodString;
|
|
76
108
|
text: z.ZodOptional<z.ZodString>;
|
|
77
109
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
78
110
|
}, z.core.$loose>>>;
|
|
111
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
112
|
+
created_at: z.ZodOptional<z.ZodNumber>;
|
|
79
113
|
}, z.core.$loose>>>;
|
|
80
114
|
conversation_id: z.ZodOptional<z.ZodString>;
|
|
81
115
|
created_at: z.ZodOptional<z.ZodNumber>;
|
|
@@ -89,11 +123,14 @@ export declare const GenieAgentModeEventSchema: z.ZodObject<{
|
|
|
89
123
|
arguments: z.ZodOptional<z.ZodString>;
|
|
90
124
|
output: z.ZodOptional<z.ZodString>;
|
|
91
125
|
status: z.ZodOptional<z.ZodString>;
|
|
126
|
+
role: z.ZodOptional<z.ZodString>;
|
|
92
127
|
content: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
93
128
|
type: z.ZodString;
|
|
94
129
|
text: z.ZodOptional<z.ZodString>;
|
|
95
130
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
96
131
|
}, z.core.$loose>>>;
|
|
132
|
+
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
133
|
+
created_at: z.ZodOptional<z.ZodNumber>;
|
|
97
134
|
}, z.core.$loose>>;
|
|
98
135
|
}, z.core.$loose>;
|
|
99
136
|
/** Validated Agent Mode response output item. */
|
|
@@ -120,3 +157,9 @@ export declare class GenieAgentModeProjection {
|
|
|
120
157
|
}
|
|
121
158
|
/** Project one Agent Mode response snapshot onto the shared Genie message shape. */
|
|
122
159
|
export declare function projectAgentModeMessage(spaceId: string, content: string, response: GenieAgentResponse, items: GenieAgentOutputItem[]): GenieMessage;
|
|
160
|
+
/**
|
|
161
|
+
* Project an Agent Mode conversation's item history onto one Genie message per
|
|
162
|
+
* turn. Items are grouped by their `metadata.message_id`; each turn's user
|
|
163
|
+
* `message` item supplies the question.
|
|
164
|
+
*/
|
|
165
|
+
export declare function projectAgentModeConversation(spaceId: string, conversationId: string, items: GenieAgentOutputItem[], status?: string): GenieMessage[];
|
package/lib/src/agent-mode.js
CHANGED
|
@@ -27,9 +27,22 @@ export const GenieAgentOutputItemSchema = z
|
|
|
27
27
|
arguments: z.string().optional(),
|
|
28
28
|
output: z.string().optional(),
|
|
29
29
|
status: z.string().optional(),
|
|
30
|
+
role: z.string().optional(),
|
|
30
31
|
content: z.array(GenieAgentContentSchema).optional(),
|
|
32
|
+
metadata: z.unknown().optional(),
|
|
33
|
+
created_at: z.number().optional(),
|
|
31
34
|
})
|
|
32
35
|
.loose();
|
|
36
|
+
/** One page of an Agent Mode conversation's item history. */
|
|
37
|
+
export const GenieAgentConversationItemsSchema = z
|
|
38
|
+
.object({
|
|
39
|
+
data: z.array(GenieAgentOutputItemSchema).describe("Conversation items, oldest first."),
|
|
40
|
+
has_more: z.boolean().optional().describe("Whether another page follows `last_id`."),
|
|
41
|
+
last_id: z.string().optional().describe("Item id that the next page starts after."),
|
|
42
|
+
status: z.string().optional().describe("Current status of the conversation's latest response."),
|
|
43
|
+
})
|
|
44
|
+
.loose()
|
|
45
|
+
.describe("Page of Agent Mode conversation items.");
|
|
33
46
|
/** Genie Agent Mode response carried by lifecycle events. */
|
|
34
47
|
export const GenieAgentResponseSchema = z
|
|
35
48
|
.object({
|
|
@@ -114,18 +127,73 @@ export function projectAgentModeMessage(spaceId, content, response, items) {
|
|
|
114
127
|
: typeof response.error === "string"
|
|
115
128
|
? response.error
|
|
116
129
|
: undefined;
|
|
130
|
+
const messageId = items.map(itemMessageId).find((id) => id !== undefined) ?? response.id;
|
|
117
131
|
return GenieMessageSchema.parse({
|
|
118
|
-
id:
|
|
119
|
-
message_id:
|
|
132
|
+
id: messageId,
|
|
133
|
+
message_id: messageId,
|
|
120
134
|
space_id: spaceId,
|
|
121
135
|
conversation_id: response.conversation_id ?? "",
|
|
122
136
|
content,
|
|
123
137
|
status: agentModeStatus(response.status, items),
|
|
124
|
-
attachments: items.flatMap(itemAttachments),
|
|
138
|
+
attachments: withStatementIds(items.flatMap(itemAttachments), items),
|
|
125
139
|
...(response.created_at !== undefined ? { created_timestamp: response.created_at } : {}),
|
|
126
140
|
...(errorMessage ? { error: { error: errorMessage } } : {}),
|
|
127
141
|
});
|
|
128
142
|
}
|
|
143
|
+
/**
|
|
144
|
+
* Project an Agent Mode conversation's item history onto one Genie message per
|
|
145
|
+
* turn. Items are grouped by their `metadata.message_id`; each turn's user
|
|
146
|
+
* `message` item supplies the question.
|
|
147
|
+
*/
|
|
148
|
+
export function projectAgentModeConversation(spaceId, conversationId, items, status = "completed") {
|
|
149
|
+
const turns = [];
|
|
150
|
+
let current;
|
|
151
|
+
for (const item of items) {
|
|
152
|
+
if (item.type === "message" && item.role === "user") {
|
|
153
|
+
const messageId = itemMessageId(item) ??
|
|
154
|
+
(item.id?.endsWith("_input") ? item.id.slice(0, -"_input".length) : item.id);
|
|
155
|
+
if (!messageId)
|
|
156
|
+
continue;
|
|
157
|
+
current = { messageId, question: item, items: [] };
|
|
158
|
+
turns.push(current);
|
|
159
|
+
continue;
|
|
160
|
+
}
|
|
161
|
+
current?.items.push(item);
|
|
162
|
+
}
|
|
163
|
+
return turns.map((turn, index) => {
|
|
164
|
+
const failed = turn.items.some((item) => item.status === "failed");
|
|
165
|
+
const turnStatus = failed ? "failed" : index === turns.length - 1 ? status : "completed";
|
|
166
|
+
return projectAgentModeMessage(spaceId, contentText(turn.question.content, "input_text").join("\n"), {
|
|
167
|
+
id: turn.messageId,
|
|
168
|
+
status: turnStatus,
|
|
169
|
+
conversation_id: conversationId,
|
|
170
|
+
...(turn.question.created_at !== undefined ? { created_at: turn.question.created_at } : {}),
|
|
171
|
+
}, turn.items);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
function itemMetadata(item) {
|
|
175
|
+
return object.isRecord(item.metadata) ? item.metadata : undefined;
|
|
176
|
+
}
|
|
177
|
+
function itemMessageId(item) {
|
|
178
|
+
const messageId = itemMetadata(item)?.message_id;
|
|
179
|
+
return typeof messageId === "string" ? messageId : undefined;
|
|
180
|
+
}
|
|
181
|
+
/** Copy each query output's `statement_id` onto the query attachment it answers. */
|
|
182
|
+
function withStatementIds(attachments, items) {
|
|
183
|
+
const statements = new Map();
|
|
184
|
+
for (const item of items) {
|
|
185
|
+
const statementId = itemMetadata(item)?.statement_id;
|
|
186
|
+
if (item.type === "function_call_output" && item.call_id && typeof statementId === "string") {
|
|
187
|
+
statements.set(item.call_id, statementId);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
return attachments.map((attachment) => {
|
|
191
|
+
const statementId = attachment.query && statements.get(attachment.attachment_id ?? "");
|
|
192
|
+
return statementId && attachment.query
|
|
193
|
+
? { ...attachment, query: { ...attachment.query, statement_id: statementId } }
|
|
194
|
+
: attachment;
|
|
195
|
+
});
|
|
196
|
+
}
|
|
129
197
|
function agentModeStatus(value, items) {
|
|
130
198
|
if (value === "completed")
|
|
131
199
|
return "COMPLETED";
|
|
@@ -149,6 +217,7 @@ function itemAttachments(item) {
|
|
|
149
217
|
: [{ attachment_id: id, attachment_type: "query", query: { id, thoughts } }];
|
|
150
218
|
}
|
|
151
219
|
if (item.type === "function_call") {
|
|
220
|
+
const callId = item.call_id ?? item.id;
|
|
152
221
|
const argumentsValue = json.parseRecord(item.arguments);
|
|
153
222
|
const query = typeof argumentsValue?.sql === "string"
|
|
154
223
|
? argumentsValue.sql
|
|
@@ -159,10 +228,10 @@ function itemAttachments(item) {
|
|
|
159
228
|
return query
|
|
160
229
|
? [
|
|
161
230
|
{
|
|
162
|
-
attachment_id:
|
|
231
|
+
attachment_id: callId,
|
|
163
232
|
attachment_type: "query",
|
|
164
233
|
query: {
|
|
165
|
-
id,
|
|
234
|
+
id: callId,
|
|
166
235
|
query,
|
|
167
236
|
...(title ? { title } : {}),
|
|
168
237
|
},
|
|
@@ -171,7 +240,22 @@ function itemAttachments(item) {
|
|
|
171
240
|
: [];
|
|
172
241
|
}
|
|
173
242
|
if (item.type === "function_call_output" && item.output !== undefined) {
|
|
174
|
-
|
|
243
|
+
const viz = itemMetadata(item)?.viz;
|
|
244
|
+
if (object.isRecord(viz) && typeof viz.attachment_id === "string") {
|
|
245
|
+
return [
|
|
246
|
+
{
|
|
247
|
+
attachment_id: viz.attachment_id,
|
|
248
|
+
attachment_type: "viz",
|
|
249
|
+
viz: {
|
|
250
|
+
...(item.output ? { title: item.output } : {}),
|
|
251
|
+
...(typeof viz.query_attachment_id === "string"
|
|
252
|
+
? { query_attachment_id: viz.query_attachment_id }
|
|
253
|
+
: {}),
|
|
254
|
+
},
|
|
255
|
+
},
|
|
256
|
+
];
|
|
257
|
+
}
|
|
258
|
+
return [textAttachment(id, item.output, item.metadata)];
|
|
175
259
|
}
|
|
176
260
|
if (item.type === "message") {
|
|
177
261
|
return (item.content ?? []).flatMap((part) => part.type === "output_text" && part.text
|
|
@@ -197,4 +281,4 @@ function textAttachment(id, content, metadata) {
|
|
|
197
281
|
},
|
|
198
282
|
};
|
|
199
283
|
}
|
|
200
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2hELENBQUMsQ0FBQyxFQUFFLENBQ1AsQ0FBQztJQUNKLENBQUM7SUFDRCxPQUFPLEVBQUUsQ0FBQztBQUNaLENBQUM7QUFFRCxTQUFTLFdBQVcsQ0FDbEIsS0FBNEQsRUFDNUQsSUFBWTtJQUVaLElBQUksQ0FBQyxLQUFLO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDdEIsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3ZGLENBQUM7QUFFRCxTQUFTLGNBQWMsQ0FDckIsRUFBc0IsRUFDdEIsT0FBZSxFQUNmLFFBQWtCO0lBRWxCLE9BQU87UUFDTCxhQUFhLEVBQUUsRUFBRTtRQUNqQixlQUFlLEVBQUUsTUFBTTtRQUN2QixJQUFJLEVBQUU7WUFDSixFQUFFO1lBQ0YsT0FBTztZQUNQLE9BQU8sRUFBRSxnQ0FBZ0M7WUFDekMsR0FBRyxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztTQUNoRDtLQUNGLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBCcm93c2VyLXNhZmUgR2VuaWUgQWdlbnQgTW9kZSBTU0UgY29udHJhY3RzLlxuICpcbiAqIFNjaGVtYXMgdmFsaWRhdGUgdGhlIHN0YWJsZSBSZXNwb25zZXMtc3R5bGUgZXZlbnQgZW52ZWxvcGUgd2hpbGUgcHJlc2VydmluZ1xuICogYWRkaXRpdmUgZmllbGRzIGFuZCBvdXRwdXQtaXRlbSB2YXJpYW50cyBpbnRyb2R1Y2VkIGJ5IHRoZSBiZXRhIEFQSS5cbiAqXG4gKiBAbW9kdWxlXG4gKi9cblxuaW1wb3J0IHsganNvbiwgb2JqZWN0IH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5cbmltcG9ydCB7XG4gIEdlbmllTWVzc2FnZVNjaGVtYSxcbiAgdHlwZSBHZW5pZUF0dGFjaG1lbnQsXG4gIHR5cGUgR2VuaWVNZXNzYWdlLFxuICB0eXBlIEdlbmllVGhvdWdodCxcbn0gZnJvbSBcIi4vZ2VuaWUtbW9kZWwudHNcIjtcblxuLyoqIEFnZW50IE1vZGUgb3V0cHV0IGNvbnRlbnQgaXRlbSB3aXRoIGZvcndhcmQtY29tcGF0aWJsZSBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudENvbnRlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgdGV4dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0gd2l0aCBrbm93biBwcm9qZWN0aW9uIGZpZWxkcy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdHlwZTogei5zdHJpbmcoKSxcbiAgICBpZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNhbGxfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBuYW1lOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgYXJndW1lbnRzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgY29udGVudDogei5hcnJheShHZW5pZUFnZW50Q29udGVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIGNhcnJpZWQgYnkgbGlmZWN5Y2xlIGV2ZW50cy4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIG9iamVjdDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGlkOiB6LnN0cmluZygpLFxuICAgIG1vZGVsOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLFxuICAgIG91dHB1dDogei5hcnJheShHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYSkub3B0aW9uYWwoKSxcbiAgICBjb252ZXJzYXRpb25faWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjcmVhdGVkX2F0OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgZXJyb3I6IHoudW5rbm93bigpLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogT25lIFNTRSBldmVudCBmcm9tIHRoZSBHZW5pZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHN0cmVhbS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHNlcXVlbmNlX251bWJlcjogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dF9pbmRleDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICAgIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgICBpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYS5vcHRpb25hbCgpLFxuICB9KVxuICAubG9vc2UoKTtcblxuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE91dHB1dEl0ZW0gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50T3V0cHV0SXRlbVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50UmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50UmVzcG9uc2VTY2hlbWE+O1xuLyoqIFZhbGlkYXRlZCBBZ2VudCBNb2RlIFNTRSBldmVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRNb2RlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50TW9kZUV2ZW50U2NoZW1hPjtcblxuLyoqIFN0YXRlZnVsIHB1cmUgcmVkdWNlciBmcm9tIEFnZW50IE1vZGUgU1NFIGV2ZW50cyB0byBHZW5pZSBtZXNzYWdlIHNuYXBzaG90cy4gKi9cbmV4cG9ydCBjbGFzcyBHZW5pZUFnZW50TW9kZVByb2plY3Rpb24ge1xuICBwcml2YXRlIHJlYWRvbmx5IGl0ZW1zID0gbmV3IE1hcDxzdHJpbmcsIEdlbmllQWdlbnRPdXRwdXRJdGVtPigpO1xuICBwcml2YXRlIHJlc3BvbnNlOiBHZW5pZUFnZW50UmVzcG9uc2UgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzcGFjZUlkOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb250ZW50OiBzdHJpbmcsXG4gICkge31cblxuICAvKiogQXBwbHkgb25lIHZhbGlkYXRlZCBTU0UgZXZlbnQgYW5kIHJldHVybiBpdHMgcHJvamVjdGVkIHNuYXBzaG90LiAqL1xuICBhcHBseShldmVudDogR2VuaWVBZ2VudE1vZGVFdmVudCk6IEdlbmllTWVzc2FnZSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGV2ZW50LnJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnJlc3BvbnNlID0gZXZlbnQucmVzcG9uc2U7XG4gICAgICBpZiAoZXZlbnQucmVzcG9uc2Uub3V0cHV0KSB7XG4gICAgICAgIHRoaXMuaXRlbXMuY2xlYXIoKTtcbiAgICAgICAgZXZlbnQucmVzcG9uc2Uub3V0cHV0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG4gICAgICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGl0ZW0sIGluZGV4KSwgaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXZlbnQuaXRlbSkge1xuICAgICAgdGhpcy5pdGVtcy5zZXQoYWdlbnRJdGVtS2V5KGV2ZW50Lml0ZW0sIGV2ZW50Lm91dHB1dF9pbmRleCksIGV2ZW50Lml0ZW0pO1xuICAgIH1cbiAgICBpZiAoKCFldmVudC5yZXNwb25zZSAmJiAhZXZlbnQuaXRlbSkgfHwgIXRoaXMucmVzcG9uc2UpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKHRoaXMuc3BhY2VJZCwgdGhpcy5jb250ZW50LCB0aGlzLnJlc3BvbnNlLCBbXG4gICAgICAuLi50aGlzLml0ZW1zLnZhbHVlcygpLFxuICAgIF0pO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgcmVzcG9uc2UgaWQsIG9uY2UgYHJlc3BvbnNlLmNyZWF0ZWRgIGhhcyBhcnJpdmVkLiAqL1xuICBnZXQgcmVzcG9uc2VJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc3BvbnNlPy5pZDtcbiAgfVxuXG4gIC8qKiBDdXJyZW50IGNvbnZlcnNhdGlvbiBpZCwgb25jZSBhc3NpZ25lZCBieSBHZW5pZS4gKi9cbiAgZ2V0IGNvbnZlcnNhdGlvbklkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmNvbnZlcnNhdGlvbl9pZDtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYXRlc3QgcmVzcG9uc2Ugc3RhdHVzIGlzIHRlcm1pbmFsLiAqL1xuICBnZXQgdGVybWluYWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2UgPyBpc1Rlcm1pbmFsU3RhdHVzKHRoaXMucmVzcG9uc2Uuc3RhdHVzKSA6IGZhbHNlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoc3RhdHVzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gXCJjb21wbGV0ZWRcIiB8fCBzdGF0dXMgPT09IFwiZmFpbGVkXCIgfHwgc3RhdHVzID09PSBcImNhbmNlbGxlZFwiO1xufVxuXG5mdW5jdGlvbiBhZ2VudEl0ZW1LZXkoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0sIGluZGV4OiB1bmtub3duKTogc3RyaW5nIHtcbiAgaWYgKHR5cGVvZiBpdGVtLmlkID09PSBcInN0cmluZ1wiKSByZXR1cm4gaXRlbS5pZDtcbiAgaWYgKHR5cGVvZiBpdGVtLmNhbGxfaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmNhbGxfaWQ7XG4gIHJldHVybiBTdHJpbmcodHlwZW9mIGluZGV4ID09PSBcIm51bWJlclwiID8gaW5kZXggOiAoaXRlbS50eXBlID8/IFwiaXRlbVwiKSk7XG59XG5cbi8qKiBQcm9qZWN0IG9uZSBBZ2VudCBNb2RlIHJlc3BvbnNlIHNuYXBzaG90IG9udG8gdGhlIHNoYXJlZCBHZW5pZSBtZXNzYWdlIHNoYXBlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2plY3RBZ2VudE1vZGVNZXNzYWdlKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSxcbiAgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10sXG4pOiBHZW5pZU1lc3NhZ2Uge1xuICBjb25zdCBlcnJvclZhbHVlID0gb2JqZWN0LmlzUmVjb3JkKHJlc3BvbnNlLmVycm9yKSA/IHJlc3BvbnNlLmVycm9yIDogdW5kZWZpbmVkO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPVxuICAgIHR5cGVvZiBlcnJvclZhbHVlPy5tZXNzYWdlID09PSBcInN0cmluZ1wiXG4gICAgICA/IGVycm9yVmFsdWUubWVzc2FnZVxuICAgICAgOiB0eXBlb2YgcmVzcG9uc2UuZXJyb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyByZXNwb25zZS5lcnJvclxuICAgICAgICA6IHVuZGVmaW5lZDtcbiAgcmV0dXJuIEdlbmllTWVzc2FnZVNjaGVtYS5wYXJzZSh7XG4gICAgaWQ6IHJlc3BvbnNlLmlkLFxuICAgIG1lc3NhZ2VfaWQ6IHJlc3BvbnNlLmlkLFxuICAgIHNwYWNlX2lkOiBzcGFjZUlkLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogcmVzcG9uc2UuY29udmVyc2F0aW9uX2lkID8/IFwiXCIsXG4gICAgY29udGVudCxcbiAgICBzdGF0dXM6IGFnZW50TW9kZVN0YXR1cyhyZXNwb25zZS5zdGF0dXMsIGl0ZW1zKSxcbiAgICBhdHRhY2htZW50czogaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLFxuICAgIC4uLihyZXNwb25zZS5jcmVhdGVkX2F0ICE9PSB1bmRlZmluZWQgPyB7IGNyZWF0ZWRfdGltZXN0YW1wOiByZXNwb25zZS5jcmVhdGVkX2F0IH0gOiB7fSksXG4gICAgLi4uKGVycm9yTWVzc2FnZSA/IHsgZXJyb3I6IHsgZXJyb3I6IGVycm9yTWVzc2FnZSB9IH0gOiB7fSksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZ2VudE1vZGVTdGF0dXModmFsdWU6IHN0cmluZywgaXRlbXM6IEdlbmllQWdlbnRPdXRwdXRJdGVtW10pOiBHZW5pZU1lc3NhZ2VbXCJzdGF0dXNcIl0ge1xuICBpZiAodmFsdWUgPT09IFwiY29tcGxldGVkXCIpIHJldHVybiBcIkNPTVBMRVRFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiZmFpbGVkXCIpIHJldHVybiBcIkZBSUxFRFwiO1xuICBpZiAodmFsdWUgPT09IFwiY2FuY2VsbGVkXCIpIHJldHVybiBcIkNBTkNFTExFRFwiO1xuICBpZiAoaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikpIHJldHVybiBcIkVYRUNVVElOR19RVUVSWVwiO1xuICByZXR1cm4gXCJBU0tJTkdfQUlcIjtcbn1cblxuZnVuY3Rpb24gaXRlbUF0dGFjaG1lbnRzKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBpZCA9IGl0ZW0uaWQgPz8gaXRlbS5jYWxsX2lkO1xuICBpZiAoaXRlbS50eXBlID09PSBcInJlYXNvbmluZ1wiKSB7XG4gICAgY29uc3QgdGhvdWdodHMgPSBjb250ZW50VGV4dChpdGVtLmNvbnRlbnQsIFwicmVhc29uaW5nX3RleHRcIikubWFwKFxuICAgICAgKHRob3VnaHRDb250ZW50KTogR2VuaWVUaG91Z2h0ID0+ICh7XG4gICAgICAgIHRob3VnaHRfdHlwZTogXCJUSE9VR0hUX1RZUEVfU1RFUFNcIixcbiAgICAgICAgY29udGVudDogdGhvdWdodENvbnRlbnQsXG4gICAgICB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aG91Z2h0cy5sZW5ndGggPT09IDBcbiAgICAgID8gW11cbiAgICAgIDogW3sgYXR0YWNobWVudF9pZDogaWQsIGF0dGFjaG1lbnRfdHlwZTogXCJxdWVyeVwiLCBxdWVyeTogeyBpZCwgdGhvdWdodHMgfSB9XTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxcIikge1xuICAgIGNvbnN0IGFyZ3VtZW50c1ZhbHVlID0ganNvbi5wYXJzZVJlY29yZChpdGVtLmFyZ3VtZW50cyk7XG4gICAgY29uc3QgcXVlcnkgPVxuICAgICAgdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy5zcWwgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5zcWxcbiAgICAgICAgOiB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnF1ZXJ5ID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgPyBhcmd1bWVudHNWYWx1ZS5xdWVyeVxuICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHRpdGxlID0gdHlwZW9mIGFyZ3VtZW50c1ZhbHVlPy50aXRsZSA9PT0gXCJzdHJpbmdcIiA/IGFyZ3VtZW50c1ZhbHVlLnRpdGxlIDogaXRlbS5uYW1lO1xuICAgIHJldHVybiBxdWVyeVxuICAgICAgPyBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgYXR0YWNobWVudF9pZDogaWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkLFxuICAgICAgICAgICAgICBxdWVyeSxcbiAgICAgICAgICAgICAgLi4uKHRpdGxlID8geyB0aXRsZSB9IDoge30pLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICA6IFtdO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbF9vdXRwdXRcIiAmJiBpdGVtLm91dHB1dCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIFt0ZXh0QXR0YWNobWVudChpZCwgaXRlbS5vdXRwdXQpXTtcbiAgfVxuICBpZiAoaXRlbS50eXBlID09PSBcIm1lc3NhZ2VcIikge1xuICAgIHJldHVybiAoaXRlbS5jb250ZW50ID8/IFtdKS5mbGF0TWFwKChwYXJ0KSA9PlxuICAgICAgcGFydC50eXBlID09PSBcIm91dHB1dF90ZXh0XCIgJiYgcGFydC50ZXh0XG4gICAgICAgID8gW3RleHRBdHRhY2htZW50KGlkLCBwYXJ0LnRleHQsIHBhcnQubWV0YWRhdGEpXVxuICAgICAgICA6IFtdLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBjb250ZW50VGV4dChcbiAgdmFsdWU6IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRDb250ZW50U2NoZW1hPltdIHwgdW5kZWZpbmVkLFxuICB0eXBlOiBzdHJpbmcsXG4pOiBzdHJpbmdbXSB7XG4gIGlmICghdmFsdWUpIHJldHVybiBbXTtcbiAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHBhcnQpID0+IChwYXJ0LnR5cGUgPT09IHR5cGUgJiYgcGFydC50ZXh0ID8gW3BhcnQudGV4dF0gOiBbXSkpO1xufVxuXG5mdW5jdGlvbiB0ZXh0QXR0YWNobWVudChcbiAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgY29udGVudDogc3RyaW5nLFxuICBtZXRhZGF0YT86IHVua25vd24sXG4pOiBHZW5pZUF0dGFjaG1lbnQge1xuICByZXR1cm4ge1xuICAgIGF0dGFjaG1lbnRfaWQ6IGlkLFxuICAgIGF0dGFjaG1lbnRfdHlwZTogXCJ0ZXh0XCIsXG4gICAgdGV4dDoge1xuICAgICAgaWQsXG4gICAgICBjb250ZW50LFxuICAgICAgcHVycG9zZTogXCJURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJcIixcbiAgICAgIC4uLihtZXRhZGF0YSAhPT0gdW5kZWZpbmVkID8geyBtZXRhZGF0YSB9IDoge30pLFxuICAgIH0sXG4gIH07XG59XG4iXX0=
|
|
284
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWdlbnQtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hZ2VudC1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O0dBT0c7QUFFSCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFeEIsT0FBTyxFQUNMLGtCQUFrQixHQUluQixNQUFNLGtCQUFrQixDQUFDO0FBRTFCLHFFQUFxRTtBQUNyRSxNQUFNLENBQUMsTUFBTSx1QkFBdUIsR0FBRyxDQUFDO0tBQ3JDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFFBQVEsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxFQUFFO0NBQ2pDLENBQUM7S0FDRCxLQUFLLEVBQUUsQ0FBQztBQUVYLG9FQUFvRTtBQUNwRSxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBRyxDQUFDO0tBQ3hDLE1BQU0sQ0FBQztJQUNOLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFO0lBQ2hCLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzlCLElBQUksRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzNCLFNBQVMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQ2hDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxFQUFFO0lBQzdCLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMs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QUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDM0MsSUFBSSxDQUFDLElBQUksS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLElBQUk7WUFDdEMsQ0FBQyxDQUFDLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNoRCxDQUFDLENBQUMsRUFBRSxDQUNQLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTyxFQUFFLENBQUM7QUFDWixDQUFDO0FBRUQsU0FBUyxXQUFXLENBQ2xCLEtBQTRELEVBQzVELElBQVk7SUFFWixJQUFJLENBQUMsS0FBSztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ3RCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN2RixDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLEVBQXNCLEVBQ3RCLE9BQWUsRUFDZixRQUFrQjtJQUVsQixPQUFPO1FBQ0wsYUFBYSxFQUFFLEVBQUU7UUFDakIsZUFBZSxFQUFFLE1BQU07UUFDdkIsSUFBSSxFQUFFO1lBQ0osRUFBRTtZQUNGLE9BQU87WUFDUCxPQUFPLEVBQUUsZ0NBQWdDO1lBQ3pDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7U0FDaEQ7S0FDRixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQnJvd3Nlci1zYWZlIEdlbmllIEFnZW50IE1vZGUgU1NFIGNvbnRyYWN0cy5cbiAqXG4gKiBTY2hlbWFzIHZhbGlkYXRlIHRoZSBzdGFibGUgUmVzcG9uc2VzLXN0eWxlIGV2ZW50IGVudmVsb3BlIHdoaWxlIHByZXNlcnZpbmdcbiAqIGFkZGl0aXZlIGZpZWxkcyBhbmQgb3V0cHV0LWl0ZW0gdmFyaWFudHMgaW50cm9kdWNlZCBieSB0aGUgYmV0YSBBUEkuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IGpzb24sIG9iamVjdCB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuXG5pbXBvcnQge1xuICBHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIHR5cGUgR2VuaWVBdHRhY2htZW50LFxuICB0eXBlIEdlbmllTWVzc2FnZSxcbiAgdHlwZSBHZW5pZVRob3VnaHQsXG59IGZyb20gXCIuL2dlbmllLW1vZGVsLnRzXCI7XG5cbi8qKiBBZ2VudCBNb2RlIG91dHB1dCBjb250ZW50IGl0ZW0gd2l0aCBmb3J3YXJkLWNvbXBhdGlibGUgZmllbGRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRDb250ZW50U2NoZW1hID0gelxuICAub2JqZWN0KHtcbiAgICB0eXBlOiB6LnN0cmluZygpLFxuICAgIHRleHQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBBZ2VudCBNb2RlIHJlc3BvbnNlIG91dHB1dCBpdGVtIHdpdGgga25vd24gcHJvamVjdGlvbiBmaWVsZHMuICovXG5leHBvcnQgY29uc3QgR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjYWxsX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgbmFtZTogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGFyZ3VtZW50czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIG91dHB1dDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHN0YXR1czogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIHJvbGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBjb250ZW50OiB6LmFycmF5KEdlbmllQWdlbnRDb250ZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIG1ldGFkYXRhOiB6LnVua25vd24oKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgcGFnZSBvZiBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeS4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUFnZW50Q29udmVyc2F0aW9uSXRlbXNTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIGRhdGE6IHouYXJyYXkoR2VuaWVBZ2VudE91dHB1dEl0ZW1TY2hlbWEpLmRlc2NyaWJlKFwiQ29udmVyc2F0aW9uIGl0ZW1zLCBvbGRlc3QgZmlyc3QuXCIpLFxuICAgIGhhc19tb3JlOiB6LmJvb2xlYW4oKS5vcHRpb25hbCgpLmRlc2NyaWJlKFwiV2hldGhlciBhbm90aGVyIHBhZ2UgZm9sbG93cyBgbGFzdF9pZGAuXCIpLFxuICAgIGxhc3RfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkl0ZW0gaWQgdGhhdCB0aGUgbmV4dCBwYWdlIHN0YXJ0cyBhZnRlci5cIiksXG4gICAgc3RhdHVzOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJDdXJyZW50IHN0YXR1cyBvZiB0aGUgY29udmVyc2F0aW9uJ3MgbGF0ZXN0IHJlc3BvbnNlLlwiKSxcbiAgfSlcbiAgLmxvb3NlKClcbiAgLmRlc2NyaWJlKFwiUGFnZSBvZiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbiBpdGVtcy5cIik7XG5cbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSBjb252ZXJzYXRpb24gaXRlbSBwYWdlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBZ2VudENvbnZlcnNhdGlvbkl0ZW1zU2NoZW1hPjtcblxuLyoqIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2UgY2FycmllZCBieSBsaWZlY3ljbGUgZXZlbnRzLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgb2JqZWN0OiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gICAgaWQ6IHouc3RyaW5nKCksXG4gICAgbW9kZWw6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgICBzdGF0dXM6IHouc3RyaW5nKCksXG4gICAgb3V0cHV0OiB6LmFycmF5KEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hKS5vcHRpb25hbCgpLFxuICAgIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICAgIGNyZWF0ZWRfYXQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbiAgICBlcnJvcjogei51bmtub3duKCkub3B0aW9uYWwoKSxcbiAgfSlcbiAgLmxvb3NlKCk7XG5cbi8qKiBPbmUgU1NFIGV2ZW50IGZyb20gdGhlIEdlbmllIEFnZW50IE1vZGUgcmVzcG9uc2Ugc3RyZWFtLiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHR5cGU6IHouc3RyaW5nKCksXG4gICAgc2VxdWVuY2VfbnVtYmVyOiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgb3V0cHV0X2luZGV4OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG4gICAgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYS5vcHRpb25hbCgpLFxuICAgIGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hLm9wdGlvbmFsKCksXG4gIH0pXG4gIC5sb29zZSgpO1xuXG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgcmVzcG9uc2Ugb3V0cHV0IGl0ZW0uICovXG5leHBvcnQgdHlwZSBHZW5pZUFnZW50T3V0cHV0SXRlbSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRPdXRwdXRJdGVtU2NoZW1hPjtcbi8qKiBWYWxpZGF0ZWQgQWdlbnQgTW9kZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllQWdlbnRSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRSZXNwb25zZVNjaGVtYT47XG4vKiogVmFsaWRhdGVkIEFnZW50IE1vZGUgU1NFIGV2ZW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBZ2VudE1vZGVFdmVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllQWdlbnRNb2RlRXZlbnRTY2hlbWE+O1xuXG4vKiogU3RhdGVmdWwgcHVyZSByZWR1Y2VyIGZyb20gQWdlbnQgTW9kZSBTU0UgZXZlbnRzIHRvIEdlbmllIG1lc3NhZ2Ugc25hcHNob3RzLiAqL1xuZXhwb3J0IGNsYXNzIEdlbmllQWdlbnRNb2RlUHJvamVjdGlvbiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgaXRlbXMgPSBuZXcgTWFwPHN0cmluZywgR2VuaWVBZ2VudE91dHB1dEl0ZW0+KCk7XG4gIHByaXZhdGUgcmVzcG9uc2U6IEdlbmllQWdlbnRSZXNwb25zZSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHNwYWNlSWQ6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRlbnQ6IHN0cmluZyxcbiAgKSB7fVxuXG4gIC8qKiBBcHBseSBvbmUgdmFsaWRhdGVkIFNTRSBldmVudCBhbmQgcmV0dXJuIGl0cyBwcm9qZWN0ZWQgc25hcHNob3QuICovXG4gIGFwcGx5KGV2ZW50OiBHZW5pZUFnZW50TW9kZUV2ZW50KTogR2VuaWVNZXNzYWdlIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoZXZlbnQucmVzcG9uc2UpIHtcbiAgICAgIHRoaXMucmVzcG9uc2UgPSBldmVudC5yZXNwb25zZTtcbiAgICAgIGlmIChldmVudC5yZXNwb25zZS5vdXRwdXQpIHtcbiAgICAgICAgdGhpcy5pdGVtcy5jbGVhcigpO1xuICAgICAgICBldmVudC5yZXNwb25zZS5vdXRwdXQuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcbiAgICAgICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoaXRlbSwgaW5kZXgpLCBpdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChldmVudC5pdGVtKSB7XG4gICAgICB0aGlzLml0ZW1zLnNldChhZ2VudEl0ZW1LZXkoZXZlbnQuaXRlbSwgZXZlbnQub3V0cHV0X2luZGV4KSwgZXZlbnQuaXRlbSk7XG4gICAgfVxuICAgIGlmICgoIWV2ZW50LnJlc3BvbnNlICYmICFldmVudC5pdGVtKSB8fCAhdGhpcy5yZXNwb25zZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UodGhpcy5zcGFjZUlkLCB0aGlzLmNvbnRlbnQsIHRoaXMucmVzcG9uc2UsIFtcbiAgICAgIC4uLnRoaXMuaXRlbXMudmFsdWVzKCksXG4gICAgXSk7XG4gIH1cblxuICAvKiogQ3VycmVudCByZXNwb25zZSBpZCwgb25jZSBgcmVzcG9uc2UuY3JlYXRlZGAgaGFzIGFycml2ZWQuICovXG4gIGdldCByZXNwb25zZUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMucmVzcG9uc2U/LmlkO1xuICB9XG5cbiAgLyoqIEN1cnJlbnQgY29udmVyc2F0aW9uIGlkLCBvbmNlIGFzc2lnbmVkIGJ5IEdlbmllLiAqL1xuICBnZXQgY29udmVyc2F0aW9uSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZT8uY29udmVyc2F0aW9uX2lkO1xuICB9XG5cbiAgLyoqIFdoZXRoZXIgdGhlIGxhdGVzdCByZXNwb25zZSBzdGF0dXMgaXMgdGVybWluYWwuICovXG4gIGdldCB0ZXJtaW5hbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5yZXNwb25zZSA/IGlzVGVybWluYWxTdGF0dXModGhpcy5yZXNwb25zZS5zdGF0dXMpIDogZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gaXNUZXJtaW5hbFN0YXR1cyhzdGF0dXM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gc3RhdHVzID09PSBcImNvbXBsZXRlZFwiIHx8IHN0YXR1cyA9PT0gXCJmYWlsZWRcIiB8fCBzdGF0dXMgPT09IFwiY2FuY2VsbGVkXCI7XG59XG5cbmZ1bmN0aW9uIGFnZW50SXRlbUtleShpdGVtOiBHZW5pZUFnZW50T3V0cHV0SXRlbSwgaW5kZXg6IHVua25vd24pOiBzdHJpbmcge1xuICBpZiAodHlwZW9mIGl0ZW0uaWQgPT09IFwic3RyaW5nXCIpIHJldHVybiBpdGVtLmlkO1xuICBpZiAodHlwZW9mIGl0ZW0uY2FsbF9pZCA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGl0ZW0uY2FsbF9pZDtcbiAgcmV0dXJuIFN0cmluZyh0eXBlb2YgaW5kZXggPT09IFwibnVtYmVyXCIgPyBpbmRleCA6IChpdGVtLnR5cGUgPz8gXCJpdGVtXCIpKTtcbn1cblxuLyoqIFByb2plY3Qgb25lIEFnZW50IE1vZGUgcmVzcG9uc2Ugc25hcHNob3Qgb250byB0aGUgc2hhcmVkIEdlbmllIG1lc3NhZ2Ugc2hhcGUuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvamVjdEFnZW50TW9kZU1lc3NhZ2UoXG4gIHNwYWNlSWQ6IHN0cmluZyxcbiAgY29udGVudDogc3RyaW5nLFxuICByZXNwb25zZTogR2VuaWVBZ2VudFJlc3BvbnNlLFxuICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSxcbik6IEdlbmllTWVzc2FnZSB7XG4gIGNvbnN0IGVycm9yVmFsdWUgPSBvYmplY3QuaXNSZWNvcmQocmVzcG9uc2UuZXJyb3IpID8gcmVzcG9uc2UuZXJyb3IgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9XG4gICAgdHlwZW9mIGVycm9yVmFsdWU/Lm1lc3NhZ2UgPT09IFwic3RyaW5nXCJcbiAgICAgID8gZXJyb3JWYWx1ZS5tZXNzYWdlXG4gICAgICA6IHR5cGVvZiByZXNwb25zZS5lcnJvciA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IHJlc3BvbnNlLmVycm9yXG4gICAgICAgIDogdW5kZWZpbmVkO1xuICBjb25zdCBtZXNzYWdlSWQgPSBpdGVtcy5tYXAoaXRlbU1lc3NhZ2VJZCkuZmluZCgoaWQpID0+IGlkICE9PSB1bmRlZmluZWQpID8/IHJlc3BvbnNlLmlkO1xuICByZXR1cm4gR2VuaWVNZXNzYWdlU2NoZW1hLnBhcnNlKHtcbiAgICBpZDogbWVzc2FnZUlkLFxuICAgIG1lc3NhZ2VfaWQ6IG1lc3NhZ2VJZCxcbiAgICBzcGFjZV9pZDogc3BhY2VJZCxcbiAgICBjb252ZXJzYXRpb25faWQ6IHJlc3BvbnNlLmNvbnZlcnNhdGlvbl9pZCA/PyBcIlwiLFxuICAgIGNvbnRlbnQsXG4gICAgc3RhdHVzOiBhZ2VudE1vZGVTdGF0dXMocmVzcG9uc2Uuc3RhdHVzLCBpdGVtcyksXG4gICAgYXR0YWNobWVudHM6IHdpdGhTdGF0ZW1lbnRJZHMoaXRlbXMuZmxhdE1hcChpdGVtQXR0YWNobWVudHMpLCBpdGVtcyksXG4gICAgLi4uKHJlc3BvbnNlLmNyZWF0ZWRfYXQgIT09IHVuZGVmaW5lZCA/IHsgY3JlYXRlZF90aW1lc3RhbXA6IHJlc3BvbnNlLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAuLi4oZXJyb3JNZXNzYWdlID8geyBlcnJvcjogeyBlcnJvcjogZXJyb3JNZXNzYWdlIH0gfSA6IHt9KSxcbiAgfSk7XG59XG5cbi8qKlxuICogUHJvamVjdCBhbiBBZ2VudCBNb2RlIGNvbnZlcnNhdGlvbidzIGl0ZW0gaGlzdG9yeSBvbnRvIG9uZSBHZW5pZSBtZXNzYWdlIHBlclxuICogdHVybi4gSXRlbXMgYXJlIGdyb3VwZWQgYnkgdGhlaXIgYG1ldGFkYXRhLm1lc3NhZ2VfaWRgOyBlYWNoIHR1cm4ncyB1c2VyXG4gKiBgbWVzc2FnZWAgaXRlbSBzdXBwbGllcyB0aGUgcXVlc3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9qZWN0QWdlbnRNb2RlQ29udmVyc2F0aW9uKFxuICBzcGFjZUlkOiBzdHJpbmcsXG4gIGNvbnZlcnNhdGlvbklkOiBzdHJpbmcsXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuICBzdGF0dXMgPSBcImNvbXBsZXRlZFwiLFxuKTogR2VuaWVNZXNzYWdlW10ge1xuICBjb25zdCB0dXJuczogQXJyYXk8e1xuICAgIG1lc3NhZ2VJZDogc3RyaW5nO1xuICAgIHF1ZXN0aW9uOiBHZW5pZUFnZW50T3V0cHV0SXRlbTtcbiAgICBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXTtcbiAgfT4gPSBbXTtcbiAgbGV0IGN1cnJlbnQ6ICh0eXBlb2YgdHVybnMpW251bWJlcl0gfCB1bmRlZmluZWQ7XG4gIGZvciAoY29uc3QgaXRlbSBvZiBpdGVtcykge1xuICAgIGlmIChpdGVtLnR5cGUgPT09IFwibWVzc2FnZVwiICYmIGl0ZW0ucm9sZSA9PT0gXCJ1c2VyXCIpIHtcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9XG4gICAgICAgIGl0ZW1NZXNzYWdlSWQoaXRlbSkgPz9cbiAgICAgICAgKGl0ZW0uaWQ/LmVuZHNXaXRoKFwiX2lucHV0XCIpID8gaXRlbS5pZC5zbGljZSgwLCAtXCJfaW5wdXRcIi5sZW5ndGgpIDogaXRlbS5pZCk7XG4gICAgICBpZiAoIW1lc3NhZ2VJZCkgY29udGludWU7XG4gICAgICBjdXJyZW50ID0geyBtZXNzYWdlSWQsIHF1ZXN0aW9uOiBpdGVtLCBpdGVtczogW10gfTtcbiAgICAgIHR1cm5zLnB1c2goY3VycmVudCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY3VycmVudD8uaXRlbXMucHVzaChpdGVtKTtcbiAgfVxuICByZXR1cm4gdHVybnMubWFwKCh0dXJuLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGZhaWxlZCA9IHR1cm4uaXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5zdGF0dXMgPT09IFwiZmFpbGVkXCIpO1xuICAgIGNvbnN0IHR1cm5TdGF0dXMgPSBmYWlsZWQgPyBcImZhaWxlZFwiIDogaW5kZXggPT09IHR1cm5zLmxlbmd0aCAtIDEgPyBzdGF0dXMgOiBcImNvbXBsZXRlZFwiO1xuICAgIHJldHVybiBwcm9qZWN0QWdlbnRNb2RlTWVzc2FnZShcbiAgICAgIHNwYWNlSWQsXG4gICAgICBjb250ZW50VGV4dCh0dXJuLnF1ZXN0aW9uLmNvbnRlbnQsIFwiaW5wdXRfdGV4dFwiKS5qb2luKFwiXFxuXCIpLFxuICAgICAge1xuICAgICAgICBpZDogdHVybi5tZXNzYWdlSWQsXG4gICAgICAgIHN0YXR1czogdHVyblN0YXR1cyxcbiAgICAgICAgY29udmVyc2F0aW9uX2lkOiBjb252ZXJzYXRpb25JZCxcbiAgICAgICAgLi4uKHR1cm4ucXVlc3Rpb24uY3JlYXRlZF9hdCAhPT0gdW5kZWZpbmVkID8geyBjcmVhdGVkX2F0OiB0dXJuLnF1ZXN0aW9uLmNyZWF0ZWRfYXQgfSA6IHt9KSxcbiAgICAgIH0sXG4gICAgICB0dXJuLml0ZW1zLFxuICAgICk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpdGVtTWV0YWRhdGEoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiBvYmplY3QuaXNSZWNvcmQoaXRlbS5tZXRhZGF0YSkgPyBpdGVtLm1ldGFkYXRhIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpdGVtTWVzc2FnZUlkKGl0ZW06IEdlbmllQWdlbnRPdXRwdXRJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbWVzc2FnZUlkID0gaXRlbU1ldGFkYXRhKGl0ZW0pPy5tZXNzYWdlX2lkO1xuICByZXR1cm4gdHlwZW9mIG1lc3NhZ2VJZCA9PT0gXCJzdHJpbmdcIiA/IG1lc3NhZ2VJZCA6IHVuZGVmaW5lZDtcbn1cblxuLyoqIENvcHkgZWFjaCBxdWVyeSBvdXRwdXQncyBgc3RhdGVtZW50X2lkYCBvbnRvIHRoZSBxdWVyeSBhdHRhY2htZW50IGl0IGFuc3dlcnMuICovXG5mdW5jdGlvbiB3aXRoU3RhdGVtZW50SWRzKFxuICBhdHRhY2htZW50czogR2VuaWVBdHRhY2htZW50W10sXG4gIGl0ZW1zOiBHZW5pZUFnZW50T3V0cHV0SXRlbVtdLFxuKTogR2VuaWVBdHRhY2htZW50W10ge1xuICBjb25zdCBzdGF0ZW1lbnRzID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBpdGVtIG9mIGl0ZW1zKSB7XG4gICAgY29uc3Qgc3RhdGVtZW50SWQgPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnN0YXRlbWVudF9pZDtcbiAgICBpZiAoaXRlbS50eXBlID09PSBcImZ1bmN0aW9uX2NhbGxfb3V0cHV0XCIgJiYgaXRlbS5jYWxsX2lkICYmIHR5cGVvZiBzdGF0ZW1lbnRJZCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgc3RhdGVtZW50cy5zZXQoaXRlbS5jYWxsX2lkLCBzdGF0ZW1lbnRJZCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBhdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQpID0+IHtcbiAgICBjb25zdCBzdGF0ZW1lbnRJZCA9IGF0dGFjaG1lbnQucXVlcnkgJiYgc3RhdGVtZW50cy5nZXQoYXR0YWNobWVudC5hdHRhY2htZW50X2lkID8/IFwiXCIpO1xuICAgIHJldHVybiBzdGF0ZW1lbnRJZCAmJiBhdHRhY2htZW50LnF1ZXJ5XG4gICAgICA/IHsgLi4uYXR0YWNobWVudCwgcXVlcnk6IHsgLi4uYXR0YWNobWVudC5xdWVyeSwgc3RhdGVtZW50X2lkOiBzdGF0ZW1lbnRJZCB9IH1cbiAgICAgIDogYXR0YWNobWVudDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFnZW50TW9kZVN0YXR1cyh2YWx1ZTogc3RyaW5nLCBpdGVtczogR2VuaWVBZ2VudE91dHB1dEl0ZW1bXSk6IEdlbmllTWVzc2FnZVtcInN0YXR1c1wiXSB7XG4gIGlmICh2YWx1ZSA9PT0gXCJjb21wbGV0ZWRcIikgcmV0dXJuIFwiQ09NUExFVEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJmYWlsZWRcIikgcmV0dXJuIFwiRkFJTEVEXCI7XG4gIGlmICh2YWx1ZSA9PT0gXCJjYW5jZWxsZWRcIikgcmV0dXJuIFwiQ0FOQ0VMTEVEXCI7XG4gIGlmIChpdGVtcy5zb21lKChpdGVtKSA9PiBpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSkgcmV0dXJuIFwiRVhFQ1VUSU5HX1FVRVJZXCI7XG4gIHJldHVybiBcIkFTS0lOR19BSVwiO1xufVxuXG5mdW5jdGlvbiBpdGVtQXR0YWNobWVudHMoaXRlbTogR2VuaWVBZ2VudE91dHB1dEl0ZW0pOiBHZW5pZUF0dGFjaG1lbnRbXSB7XG4gIGNvbnN0IGlkID0gaXRlbS5pZCA/PyBpdGVtLmNhbGxfaWQ7XG4gIGlmIChpdGVtLnR5cGUgPT09IFwicmVhc29uaW5nXCIpIHtcbiAgICBjb25zdCB0aG91Z2h0cyA9IGNvbnRlbnRUZXh0KGl0ZW0uY29udGVudCwgXCJyZWFzb25pbmdfdGV4dFwiKS5tYXAoXG4gICAgICAodGhvdWdodENvbnRlbnQpOiBHZW5pZVRob3VnaHQgPT4gKHtcbiAgICAgICAgdGhvdWdodF90eXBlOiBcIlRIT1VHSFRfVFlQRV9TVEVQU1wiLFxuICAgICAgICBjb250ZW50OiB0aG91Z2h0Q29udGVudCxcbiAgICAgIH0pLFxuICAgICk7XG4gICAgcmV0dXJuIHRob3VnaHRzLmxlbmd0aCA9PT0gMFxuICAgICAgPyBbXVxuICAgICAgOiBbeyBhdHRhY2htZW50X2lkOiBpZCwgYXR0YWNobWVudF90eXBlOiBcInF1ZXJ5XCIsIHF1ZXJ5OiB7IGlkLCB0aG91Z2h0cyB9IH1dO1xuICB9XG4gIGlmIChpdGVtLnR5cGUgPT09IFwiZnVuY3Rpb25fY2FsbFwiKSB7XG4gICAgY29uc3QgY2FsbElkID0gaXRlbS5jYWxsX2lkID8/IGl0ZW0uaWQ7XG4gICAgY29uc3QgYXJndW1lbnRzVmFsdWUgPSBqc29uLnBhcnNlUmVjb3JkKGl0ZW0uYXJndW1lbnRzKTtcbiAgICBjb25zdCBxdWVyeSA9XG4gICAgICB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnNxbCA9PT0gXCJzdHJpbmdcIlxuICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnNxbFxuICAgICAgICA6IHR5cGVvZiBhcmd1bWVudHNWYWx1ZT8ucXVlcnkgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICA/IGFyZ3VtZW50c1ZhbHVlLnF1ZXJ5XG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG4gICAgY29uc3QgdGl0bGUgPSB0eXBlb2YgYXJndW1lbnRzVmFsdWU/LnRpdGxlID09PSBcInN0cmluZ1wiID8gYXJndW1lbnRzVmFsdWUudGl0bGUgOiBpdGVtLm5hbWU7XG4gICAgcmV0dXJuIHF1ZXJ5XG4gICAgICA/IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBhdHRhY2htZW50X2lkOiBjYWxsSWQsXG4gICAgICAgICAgICBhdHRhY2htZW50X3R5cGU6IFwicXVlcnlcIixcbiAgICAgICAgICAgIHF1ZXJ5OiB7XG4gICAgICAgICAgICAgIGlkOiBjYWxsSWQsXG4gICAgICAgICAgICAgIHF1ZXJ5LFxuICAgICAgICAgICAgICAuLi4odGl0bGUgPyB7IHRpdGxlIH0gOiB7fSksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF1cbiAgICAgIDogW107XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJmdW5jdGlvbl9jYWxsX291dHB1dFwiICYmIGl0ZW0ub3V0cHV0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb25zdCB2aXogPSBpdGVtTWV0YWRhdGEoaXRlbSk/LnZpejtcbiAgICBpZiAob2JqZWN0LmlzUmVjb3JkKHZpeikgJiYgdHlwZW9mIHZpei5hdHRhY2htZW50X2lkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICB7XG4gICAgICAgICAgYXR0YWNobWVudF9pZDogdml6LmF0dGFjaG1lbnRfaWQsXG4gICAgICAgICAgYXR0YWNobWVudF90eXBlOiBcInZpelwiLFxuICAgICAgICAgIHZpejoge1xuICAgICAgICAgICAgLi4uKGl0ZW0ub3V0cHV0ID8geyB0aXRsZTogaXRlbS5vdXRwdXQgfSA6IHt9KSxcbiAgICAgICAgICAgIC4uLih0eXBlb2Ygdml6LnF1ZXJ5X2F0dGFjaG1lbnRfaWQgPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgPyB7IHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHZpei5xdWVyeV9hdHRhY2htZW50X2lkIH1cbiAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbdGV4dEF0dGFjaG1lbnQoaWQsIGl0ZW0ub3V0cHV0LCBpdGVtLm1ldGFkYXRhKV07XG4gIH1cbiAgaWYgKGl0ZW0udHlwZSA9PT0gXCJtZXNzYWdlXCIpIHtcbiAgICByZXR1cm4gKGl0ZW0uY29udGVudCA/PyBbXSkuZmxhdE1hcCgocGFydCkgPT5cbiAgICAgIHBhcnQudHlwZSA9PT0gXCJvdXRwdXRfdGV4dFwiICYmIHBhcnQudGV4dFxuICAgICAgICA/IFt0ZXh0QXR0YWNobWVudChpZCwgcGFydC50ZXh0LCBwYXJ0Lm1ldGFkYXRhKV1cbiAgICAgICAgOiBbXSxcbiAgICApO1xuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gY29udGVudFRleHQoXG4gIHZhbHVlOiB6LmluZmVyPHR5cGVvZiBHZW5pZUFnZW50Q29udGVudFNjaGVtYT5bXSB8IHVuZGVmaW5lZCxcbiAgdHlwZTogc3RyaW5nLFxuKTogc3RyaW5nW10ge1xuICBpZiAoIXZhbHVlKSByZXR1cm4gW107XG4gIHJldHVybiB2YWx1ZS5mbGF0TWFwKChwYXJ0KSA9PiAocGFydC50eXBlID09PSB0eXBlICYmIHBhcnQudGV4dCA/IFtwYXJ0LnRleHRdIDogW10pKTtcbn1cblxuZnVuY3Rpb24gdGV4dEF0dGFjaG1lbnQoXG4gIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGNvbnRlbnQ6IHN0cmluZyxcbiAgbWV0YWRhdGE/OiB1bmtub3duLFxuKTogR2VuaWVBdHRhY2htZW50IHtcbiAgcmV0dXJuIHtcbiAgICBhdHRhY2htZW50X2lkOiBpZCxcbiAgICBhdHRhY2htZW50X3R5cGU6IFwidGV4dFwiLFxuICAgIHRleHQ6IHtcbiAgICAgIGlkLFxuICAgICAgY29udGVudCxcbiAgICAgIHB1cnBvc2U6IFwiVEVYVF9BVFRBQ0hNRU5UX1BVUlBPU0VfQU5TV0VSXCIsXG4gICAgICAuLi4obWV0YWRhdGEgIT09IHVuZGVmaW5lZCA/IHsgbWV0YWRhdGEgfSA6IHt9KSxcbiAgICB9LFxuICB9O1xufVxuIl19
|
package/lib/src/genie-model.d.ts
CHANGED
|
@@ -97,11 +97,12 @@ export type GenieThought = z.infer<typeof GenieThoughtSchema>;
|
|
|
97
97
|
* `attachment_type` (vs a bare `type`) to keep the field clear of
|
|
98
98
|
* the event-union discriminator key.
|
|
99
99
|
*/
|
|
100
|
-
export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions"];
|
|
100
|
+
export declare const ATTACHMENT_TYPES: readonly ["query", "text", "suggested_questions", "viz"];
|
|
101
101
|
export declare const KnownAttachmentTypeSchema: z.ZodEnum<{
|
|
102
102
|
query: "query";
|
|
103
103
|
suggested_questions: "suggested_questions";
|
|
104
104
|
text: "text";
|
|
105
|
+
viz: "viz";
|
|
105
106
|
}>;
|
|
106
107
|
export type KnownAttachmentType = z.infer<typeof KnownAttachmentTypeSchema>;
|
|
107
108
|
export declare const AttachmentTypeSchema: z.ZodString;
|
|
@@ -160,6 +161,17 @@ export declare const GenieTextAttachmentSchema: z.ZodObject<{
|
|
|
160
161
|
}, z.core.$strip>;
|
|
161
162
|
/** Narrative text attachment, including its optional semantic purpose. */
|
|
162
163
|
export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
|
|
164
|
+
/**
|
|
165
|
+
* Visualization Genie requested for one of its query results. Genie stores only
|
|
166
|
+
* the title and the query attachment it charts; the client draws the chart from
|
|
167
|
+
* that query's statement rows.
|
|
168
|
+
*/
|
|
169
|
+
export declare const GenieVizAttachmentSchema: z.ZodObject<{
|
|
170
|
+
title: z.ZodOptional<z.ZodString>;
|
|
171
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
172
|
+
}, z.core.$strip>;
|
|
173
|
+
/** Genie visualization request over one query attachment. */
|
|
174
|
+
export type GenieVizAttachment = z.infer<typeof GenieVizAttachmentSchema>;
|
|
163
175
|
/**
|
|
164
176
|
* `GenieAttachment` with:
|
|
165
177
|
*
|
|
@@ -212,6 +224,10 @@ export declare const GenieAttachmentSchema: z.ZodObject<{
|
|
|
212
224
|
purpose: z.ZodOptional<z.ZodString>;
|
|
213
225
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
214
226
|
}, z.core.$strip>>;
|
|
227
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
228
|
+
title: z.ZodOptional<z.ZodString>;
|
|
229
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
230
|
+
}, z.core.$strip>>;
|
|
215
231
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
216
232
|
}, z.core.$strip>;
|
|
217
233
|
/** Genie message attachment with an optional computed discriminator. */
|
|
@@ -287,6 +303,10 @@ export declare const GenieMessageSchema: z.ZodObject<{
|
|
|
287
303
|
purpose: z.ZodOptional<z.ZodString>;
|
|
288
304
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
289
305
|
}, z.core.$strip>>;
|
|
306
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
307
|
+
title: z.ZodOptional<z.ZodString>;
|
|
308
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
309
|
+
}, z.core.$strip>>;
|
|
290
310
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
291
311
|
}, z.core.$strip>>>;
|
|
292
312
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
@@ -359,6 +379,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
359
379
|
purpose: z.ZodOptional<z.ZodString>;
|
|
360
380
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
361
381
|
}, z.core.$strip>>;
|
|
382
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
383
|
+
title: z.ZodOptional<z.ZodString>;
|
|
384
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
385
|
+
}, z.core.$strip>>;
|
|
362
386
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
363
387
|
}, z.core.$strip>>>;
|
|
364
388
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
@@ -394,6 +418,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
394
418
|
purpose?: string | undefined;
|
|
395
419
|
metadata?: unknown;
|
|
396
420
|
} | undefined;
|
|
421
|
+
viz?: {
|
|
422
|
+
title?: string | undefined;
|
|
423
|
+
query_attachment_id?: string | undefined;
|
|
424
|
+
} | undefined;
|
|
397
425
|
attachment_type?: string | undefined;
|
|
398
426
|
}[], {
|
|
399
427
|
content: string;
|
|
@@ -450,6 +478,10 @@ export declare const GenieResponseSchema: z.ZodPipe<z.ZodObject<{
|
|
|
450
478
|
purpose?: string | undefined;
|
|
451
479
|
metadata?: unknown;
|
|
452
480
|
} | undefined;
|
|
481
|
+
viz?: {
|
|
482
|
+
title?: string | undefined;
|
|
483
|
+
query_attachment_id?: string | undefined;
|
|
484
|
+
} | undefined;
|
|
453
485
|
attachment_type?: string | undefined;
|
|
454
486
|
}[] | undefined;
|
|
455
487
|
auto_regenerate_count?: number | undefined;
|
|
@@ -631,6 +663,10 @@ export declare const MessageEventSchema: z.ZodObject<{
|
|
|
631
663
|
purpose: z.ZodOptional<z.ZodString>;
|
|
632
664
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
633
665
|
}, z.core.$strip>>;
|
|
666
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
667
|
+
title: z.ZodOptional<z.ZodString>;
|
|
668
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
669
|
+
}, z.core.$strip>>;
|
|
634
670
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
635
671
|
}, z.core.$strip>>>;
|
|
636
672
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
@@ -847,6 +883,10 @@ export declare const ResultEventSchema: z.ZodObject<{
|
|
|
847
883
|
purpose: z.ZodOptional<z.ZodString>;
|
|
848
884
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
849
885
|
}, z.core.$strip>>;
|
|
886
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
887
|
+
title: z.ZodOptional<z.ZodString>;
|
|
888
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
889
|
+
}, z.core.$strip>>;
|
|
850
890
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
851
891
|
}, z.core.$strip>>>;
|
|
852
892
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
@@ -954,6 +994,10 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
954
994
|
purpose: z.ZodOptional<z.ZodString>;
|
|
955
995
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
956
996
|
}, z.core.$strip>>;
|
|
997
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
998
|
+
title: z.ZodOptional<z.ZodString>;
|
|
999
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
1000
|
+
}, z.core.$strip>>;
|
|
957
1001
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
958
1002
|
}, z.core.$strip>>>;
|
|
959
1003
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
|
@@ -1085,6 +1129,10 @@ export declare const GenieChatEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<
|
|
|
1085
1129
|
purpose: z.ZodOptional<z.ZodString>;
|
|
1086
1130
|
metadata: z.ZodOptional<z.ZodUnknown>;
|
|
1087
1131
|
}, z.core.$strip>>;
|
|
1132
|
+
viz: z.ZodOptional<z.ZodObject<{
|
|
1133
|
+
title: z.ZodOptional<z.ZodString>;
|
|
1134
|
+
query_attachment_id: z.ZodOptional<z.ZodString>;
|
|
1135
|
+
}, z.core.$strip>>;
|
|
1088
1136
|
attachment_type: z.ZodOptional<z.ZodString>;
|
|
1089
1137
|
}, z.core.$strip>>>;
|
|
1090
1138
|
auto_regenerate_count: z.ZodOptional<z.ZodNumber>;
|
package/lib/src/genie-model.js
CHANGED
|
@@ -100,6 +100,7 @@ export const ATTACHMENT_TYPES = [
|
|
|
100
100
|
"query",
|
|
101
101
|
"text",
|
|
102
102
|
"suggested_questions",
|
|
103
|
+
"viz",
|
|
103
104
|
];
|
|
104
105
|
export const KnownAttachmentTypeSchema = z
|
|
105
106
|
.enum(ATTACHMENT_TYPES)
|
|
@@ -139,6 +140,20 @@ export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend(
|
|
|
139
140
|
purpose: GenieTextAttachmentPurposeSchema.optional(),
|
|
140
141
|
metadata: z.unknown().optional().describe("Agent Mode metadata attached to this text response."),
|
|
141
142
|
});
|
|
143
|
+
/**
|
|
144
|
+
* Visualization Genie requested for one of its query results. Genie stores only
|
|
145
|
+
* the title and the query attachment it charts; the client draws the chart from
|
|
146
|
+
* that query's statement rows.
|
|
147
|
+
*/
|
|
148
|
+
export const GenieVizAttachmentSchema = z
|
|
149
|
+
.object({
|
|
150
|
+
title: z.string().optional().describe("Display title Genie chose for the chart."),
|
|
151
|
+
query_attachment_id: z
|
|
152
|
+
.string()
|
|
153
|
+
.optional()
|
|
154
|
+
.describe("`attachment_id` of the query attachment whose rows the chart plots."),
|
|
155
|
+
})
|
|
156
|
+
.describe("Genie visualization request over one query attachment.");
|
|
142
157
|
/**
|
|
143
158
|
* `GenieAttachment` with:
|
|
144
159
|
*
|
|
@@ -162,6 +177,7 @@ export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend(
|
|
|
162
177
|
export const GenieAttachmentSchema = SDKGenieAttachmentSchema.extend({
|
|
163
178
|
query: GenieQueryAttachmentSchema.optional(),
|
|
164
179
|
text: GenieTextAttachmentSchema.optional(),
|
|
180
|
+
viz: GenieVizAttachmentSchema.optional(),
|
|
165
181
|
attachment_type: AttachmentTypeSchema.optional(),
|
|
166
182
|
});
|
|
167
183
|
/**
|
|
@@ -283,6 +299,8 @@ export function detectAttachmentType(att) {
|
|
|
283
299
|
return "text";
|
|
284
300
|
if (att.suggested_questions)
|
|
285
301
|
return "suggested_questions";
|
|
302
|
+
if (att.viz)
|
|
303
|
+
return "viz";
|
|
286
304
|
for (const k of Object.keys(att)) {
|
|
287
305
|
if (k !== "attachment_id" && k !== "attachment_type")
|
|
288
306
|
return k;
|
|
@@ -501,4 +519,4 @@ export const GenieChatEventSchema = z.discriminatedUnion("type", [
|
|
|
501
519
|
SuggestedQuestionsEventSchema,
|
|
502
520
|
ResultEventSchema,
|
|
503
521
|
]);
|
|
504
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDZEQUE2RDtBQUM3RCxNQUFNLEVBQ0oscUJBQXFCLEVBQUUsd0JBQXdCLEVBQy9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUN6QywwQkFBMEIsRUFBRSw2QkFBNkIsRUFDekQsZ0JBQWdCLEVBQUUsbUJBQW1CLEdBQ3RDLEdBQUcsVUFBVSxDQUFDO0FBVWYsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztBQUVsRSx5RUFBeUU7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUM7S0FDcEMsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFJaEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxDQUFDO0lBQzdGLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDO0NBQ3pFLENBQUMsQ0FBQztBQUlILDZFQUE2RTtBQUU3RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFN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Ozs7Ozs7O0dBaUNHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLE1BQU0sRUFBRTtJQUMvRCxtQkFBbUI7SUFDbkIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsbUJBQW1CO0lBQ25CLGVBQWU7SUFDZixnQkFBZ0I7SUFDaEIsb0JBQW9CO0lBQ3BCLGVBQWU7SUFDZiw2QkFBNkI7SUFDN0IsaUJBQWlCO0NBQ2xCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogV2lyZS1mb3JtYXQgem9kIHNjaGVtYXMgKyB0eXBlcyBhbmQgaGlnaC1sZXZlbCBldmVudCB2b2NhYnVsYXJ5XG4gKiBmb3IgdGhlIEdlbmllIGNoYXQgZHJpdmVyLlxuICpcbiAqIFR3byByZWxhdGVkIGxheWVycyBsaXZlIGhlcmU6XG4gKlxuICogICAxLiBHZW5pZSB3aXJlIHNoYXBlcyBkZXJpdmVkIGZyb20gdGhpcyBwYWNrYWdlJ3Mgb3duIGdlbmVyYXRlZFxuICogICAgICBgZGFzaGJvYXJkc2Agc2NoZW1hcyAocmVnZW5lcmF0ZWQgZnJvbSB0aGUgdXBzdHJlYW1cbiAqICAgICAgYEBkYXRhYnJpY2tzL3Nkay1leHBlcmltZW50YWxgIGBhcGlzL2Rhc2hib2FyZHMvbW9kZWwuZC50c2BcbiAqICAgICAgYnkgdGhlIGVuZ2luZSdzIGNvZGVnZW4gb24gc3ludGgpLiBXZSBleHRlbmQgdGhlIFNESyBzY2hlbWFzIHdoZXJlIEdlbmllXG4gKiAgICAgIHNoaXBzIGZpZWxkcyBvbiB0aGUgd2lyZSB0aGF0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZTpcbiAqXG4gKiAgICAgICAgLSBgR2VuaWVNZXNzYWdlLmF1dG9fcmVnZW5lcmF0ZV9jb3VudDogbnVtYmVyYCAoc3RhbXBlZFxuICogICAgICAgICAgb24gZXZlcnkgd2lyZSBtZXNzYWdlLCBvbWl0dGVkIGZyb20gdGhlIFNESyBzaGFwZSkuXG4gKiAgICAgICAgLSBgR2VuaWVRdWVyeUF0dGFjaG1lbnQudGhvdWdodHM6IEdlbmllVGhvdWdodFtdYCAodGhlXG4gKiAgICAgICAgICBzdHJlYW1lZCByZWFzb25pbmcgcGF5bG9hZCB3aXRoIGBERVNDUklQVElPTmAsXG4gKiAgICAgICAgICBgREFUQV9TT1VSQ0lOR2AsIGBTVEVQU2AsIGFuZCBgVU5ERVJTVEFORElOR2AgdGhvdWdodFxuICogICAgICAgICAga2luZHMpLlxuICogICAgICAgIC0gYEdlbmllQXR0YWNobWVudC5hdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlYFxuICogICAgICAgICAgKGFuIG9wdGlvbmFsIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbCBzbyBjYWxsZXJzIGNhblxuICogICAgICAgICAgYHN3aXRjaCAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIGluc3RlYWQgb2YgcHJvYmluZ1xuICogICAgICAgICAgd2hpY2ggc3ViLWtleSBpcyBwb3B1bGF0ZWQ7IGNvbXB1dGUgaXQgd2l0aFxuICogICAgICAgICAge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkuXG4gKlxuICogICAyLiBFdmVudCB2b2NhYnVsYXJ5IGZvciB0aGUgaGlnaC1sZXZlbCBgZ2VuaWVFdmVudENoYXRgXG4gKiAgICAgIGRyaXZlci4gRWFjaCBldmVudCBpcyBhIGZsYXQgYHoub2JqZWN0YCB3aXRoIGEgYHR5cGVgXG4gKiAgICAgIGxpdGVyYWwgZGlzY3JpbWluYXRvciBhbmQgc25ha2VfY2FzZSBwYXlsb2FkIGZpZWxkcyBob2lzdGVkXG4gKiAgICAgIHRvIHRoZSB0b3AgbGV2ZWwgKG5vIGBwYXlsb2FkYCB3cmFwcGVyKS4gRXZlbnRzIHRoYXQgc2hhcmVcbiAqICAgICAgdGhlIGF0dGFjaG1lbnQtc2NvcGVkIGxvY2F0aW9uIHVzZVxuICogICAgICB7QGxpbmsgR2VuaWVDaGF0TG9jYXRpb25TY2hlbWF9IGFzIGEgYmFzZTsgZXZlbnRzIHRoYXRcbiAqICAgICAgZG9uJ3QgY2FycnkgYW4gYGF0dGFjaG1lbnRfaWRgIChzdGF0dXMsIHJlc3VsdCkgb21pdCBpdC5cbiAqICAgICAge0BsaW5rIEdlbmllQ2hhdEV2ZW50U2NoZW1hfSBidW5kbGVzIHRoZSB2YXJpYW50cyBpbnRvIG9uZVxuICogICAgICBkaXNjcmltaW5hdGVkIHVuaW9uLlxuICpcbiAqIFB1cmUgdHlwZXM6IG5vIHJ1bnRpbWUgaW1wb3J0cyBiZXlvbmQgem9kICsgdGhlIGdlbmVyYXRlZFxuICogYGRhc2hib2FyZHNgIHNjaGVtYXMsIG5vIE5vZGUtb25seSBjb2RlLCBzYWZlIGZvciBicm93c2VyIGJ1bmRsZXMuXG4gKlxuICogQG1vZHVsZVxuICovXG5cbmltcG9ydCB7IHN0cmluZ1V0aWxzIH0gZnJvbSBcIkBkYngtdG9vbHMvc2hhcmVkLWNvcmVcIjtcbmltcG9ydCB7IHogfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgKiBhcyBkYXNoYm9hcmRzIGZyb20gXCIuL2Rhc2hib2FyZHMudHNcIjtcblxuLy8gVGhlIGdlbmVyYXRlZCBTREsgc2NoZW1hcyBsaXZlIGluIHRoZSBzaWJsaW5nIGAuL2Rhc2hib2FyZHMudHNgLCB3cml0dGVuIGJ5IHRoZVxuLy8gZW5naW5lJ3MgY29kZWdlbiBmcm9tIHRoZSB1cHN0cmVhbSBgLmQudHNgLiBBbGlhcyB0aGUgaGFuZGZ1bCBHZW5pZSBleHRlbmRzIHNvXG4vLyB0aGUgd2lkZW5lZCBzY2hlbWFzIGJlbG93IHJlYWQgYWdhaW5zdCBzaG9ydCwgbG9jYWwgbmFtZXMuXG5jb25zdCB7XG4gIGdlbmllQXR0YWNobWVudFNjaGVtYTogU0RLR2VuaWVBdHRhY2htZW50U2NoZW1hLFxuICBnZW5pZU1lc3NhZ2VTY2hlbWE6IFNES0dlbmllTWVzc2FnZVNjaGVtYSxcbiAgZ2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLFxuICBnZW5pZVNwYWNlU2NoZW1hOiBTREtHZW5pZVNwYWNlU2NoZW1hLFxufSA9IGRhc2hib2FyZHM7XG5cbi8qKlxuICogVGhlIFNESydzIGBNZXNzYWdlU3RhdHVzYCB0eXBlLCByZS1leHBvcnRlZCBzbyBjb25zdW1lcnMgb2YgdGhlXG4gKiBHZW5pZSBjb250cmFjdCBnZXQgdGhlIGZ1bGwgd2lyZSB2b2NhYnVsYXJ5IGZyb20gYSBzaW5nbGUgaW1wb3J0XG4gKiBwYXRoIC0gbWlycm9ycyB0aGUgcmUtZXhwb3J0cyBvZiB0aGUgb3RoZXIgU0RLLWRlcml2ZWQgc2NoZW1hc1xuICogYmVsb3cuXG4gKi9cbmV4cG9ydCB0eXBlIE1lc3NhZ2VTdGF0dXMgPSBkYXNoYm9hcmRzLk1lc3NhZ2VTdGF0dXM7XG5cbi8qKiBSdW50aW1lIHZhbGlkYXRvciBmb3IgYSByYXcgR2VuaWUgbWVzc2FnZSBzdGF0dXMgZnJvbSB0aGUgZ2VuZXJhdGVkIFNESyBjb250cmFjdC4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlU3RhdHVzU2NoZW1hID0gZGFzaGJvYXJkcy5tZXNzYWdlU3RhdHVzU2NoZW1hO1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0aG91Z2h0cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogR2VuaWUncyBwZXItcXVlcnkgXCJ0aG91Z2h0c1wiIHN1cmZhY2UuIFRoZXNlIGFwcGVhciBvbiB0aGVcbiAqIGAvbWVzc2FnZXMve2lkfWAgd2lyZSB1bmRlciBgYXR0YWNobWVudHNbaV0ucXVlcnkudGhvdWdodHNbXWAgYnV0XG4gKiBhcmUgbm90IHR5cGVkIG9uIHRoZSBTREsncyBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIGF0IHYwLjE3LlxuICpcbiAqIEtub3duIHRob3VnaHQgdHlwZXMgb2JzZXJ2ZWQgaW4gcHJvZHVjdGlvbiBwb2xsczpcbiAqXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9ERVNDUklQVElPTmA6IGEgb25lLXBhcmFncmFwaCByZXN0YXRlbWVudCBvZlxuICogICAgIHdoYXQgdGhlIHVzZXIgYXNrZWQuIFRoZSBmaW5hbCBgcXVlcnkuZGVzY3JpcHRpb25gIGZpZWxkIG9uXG4gKiAgICAgdGhlIGF0dGFjaG1lbnQgY2FycmllcyB0aGUgc2FtZSB0ZXh0LlxuICogICAtIGBUSE9VR0hUX1RZUEVfREFUQV9TT1VSQ0lOR2A6IG1hcmtkb3duIGJ1bGxldHMgb2YgdGhlXG4gKiAgICAgZnVsbHktcXVhbGlmaWVkIGBjYXRhbG9nLnNjaGVtYS50YWJsZWAgc291cmNlcyBHZW5pZSBjaG9zZS5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX1NURVBTYDogdGhlIGhpZ2gtbGV2ZWwgcGxhbiBHZW5pZSB3cm90ZSBiZWZvcmVcbiAqICAgICBydW5uaW5nIFNRTCAob25lIGJ1bGxldCBwZXIgc3RlcCkuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9VTkRFUlNUQU5ESU5HYDogYW1iaWd1aXR5IC8gaW50ZXJwcmV0YXRpb25cbiAqICAgICBub3RlcyAoZS5nLiBcIidyZXZlbnVlJyBjb3VsZCBiZSBpbnRlcnByZXRlZCBhcyBncm9zcyxcbiAqICAgICBuZXQsIG9yIHJlY29nbml6ZWQgcmV2ZW51ZS4uLlwiKS5cbiAqXG4gKiBPcGVuIGF0IHRoZSB0eXBlIGxldmVsIChgfCAoc3RyaW5nICYge30pYCkgc28gYSBuZXcgc2VydmVyLXNpZGVcbiAqIHRob3VnaHQgdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgZm91ciBrbm93biB0eXBlc1xuICogc3RpbGwgbmFycm93IGNvcnJlY3RseSB1bmRlciBgc3dpdGNoYC5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGhvdWdodFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgcmVhc29uaW5nIHRob3VnaHQgdHlwZS5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodFR5cGUgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hPjtcblxuLyoqXG4gKiBPbmUgcmVhc29uaW5nIHN0ZXAgb24gYSBxdWVyeSBhdHRhY2htZW50LiBTZWVcbiAqIHtAbGluayBHZW5pZVRob3VnaHRUeXBlfSBmb3IgdGhlIGtub3duIGB0aG91Z2h0X3R5cGVgIHZhbHVlcy5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGhvdWdodFNjaGVtYSA9IHoub2JqZWN0KHtcbiAgdGhvdWdodF90eXBlOiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLmRlc2NyaWJlKFwiS2luZCBvZiByZWFzb25pbmcgcmVwcmVzZW50ZWQgYnkgdGhpcyBlbnRyeS5cIiksXG4gIGNvbnRlbnQ6IHouc3RyaW5nKCkuZGVzY3JpYmUoXCJSZWFzb25pbmcgdGV4dCBlbWl0dGVkIGZvciB0aGlzIHRob3VnaHQuXCIpLFxufSk7XG4vKiogT25lIHR5cGVkIHJlYXNvbmluZyBlbnRyeSBhdHRhY2hlZCB0byBhIEdlbmllIHF1ZXJ5LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVUaG91Z2h0ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0U2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCBkaXNjcmltaW5hdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBEaXNjcmltaW5hdG9yIGZvciB3aGF0J3MgaW5zaWRlIGEgYEdlbmllQXR0YWNobWVudGAuIEdlbmllIG9ubHlcbiAqIGV2ZXIgcG9wdWxhdGVzIG9uZSBvZiBgcXVlcnlgIC8gYHRleHRgIC8gYHN1Z2dlc3RlZF9xdWVzdGlvbnNgXG4gKiBwZXIgYXR0YWNobWVudC4gT3BlbiB2aWEgYChzdHJpbmcgJiB7fSlgIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0eXBlIGRvZXNuJ3QgYnJlYWsgY29tcGlsYXRpb247IHRoZSB0aHJlZSBrbm93biB0eXBlcyBzdGlsbFxuICogbmFycm93IGNvcnJlY3RseSB1bmRlciBgc3dpdGNoYC5cbiAqXG4gKiBMaWZ0ZWQgaW50byB0aGUgc2NoZW1hIGFzIHRoZSBvcHRpb25hbFxuICoge0BsaW5rIEdlbmllQXR0YWNobWVudFNjaGVtYX0uYGF0dGFjaG1lbnRfdHlwZWAgZmllbGQgKGNvbXB1dGVcbiAqIGl0IHdpdGgge0BsaW5rIGRldGVjdEF0dGFjaG1lbnRUeXBlfSkgc28gY29uc3VtZXJzIGNhbiBicmFuY2hcbiAqIG9uIGEgbGl0ZXJhbCBpbnN0ZWFkIG9mIHByb2Jpbmcgd2hpY2ggc3ViLW9iamVjdCBrZXkgaXNcbiAqIHByZXNlbnQuIEFsc28gc3VyZmFjZWQgb24ge0BsaW5rIEF0dGFjaG1lbnRFdmVudH0ncyBwYXlsb2FkIGFzXG4gKiBgYXR0YWNobWVudF90eXBlYCAodnMgYSBiYXJlIGB0eXBlYCkgdG8ga2VlcCB0aGUgZmllbGQgY2xlYXIgb2ZcbiAqIHRoZSBldmVudC11bmlvbiBkaXNjcmltaW5hdG9yIGtleS5cbiAqL1xuZXhwb3J0IGNvbnN0IEFUVEFDSE1FTlRfVFlQRVMgPSBbXG4gIFwicXVlcnlcIixcbiAgXCJ0ZXh0XCIsXG4gIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiLFxuXSBhcyBjb25zdCBzYXRpc2ZpZXMgcmVhZG9ubHkgc3RyaW5nW107XG5cbmV4cG9ydCBjb25zdCBLbm93bkF0dGFjaG1lbnRUeXBlU2NoZW1hID0gelxuICAuZW51bShBVFRBQ0hNRU5UX1RZUEVTKVxuICAuZGVzY3JpYmUoXCJBdHRhY2htZW50IGRpc2NyaW1pbmF0b3IgdmFsdWVzIHVuZGVyc3Rvb2QgYnkgdGhpcyBwYWNrYWdlIHZlcnNpb24uXCIpO1xuXG5leHBvcnQgdHlwZSBLbm93bkF0dGFjaG1lbnRUeXBlID0gei5pbmZlcjx0eXBlb2YgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBHZW5pZSBhdHRhY2htZW50IGRpc2NyaW1pbmF0b3IuXCIpO1xuXG5leHBvcnQgdHlwZSBBdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEF0dGFjaG1lbnRUeXBlU2NoZW1hPjtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLSB3aWRlbmVkIHdpcmUgc2NoZW1hcyArIHR5cGVzIC0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIGBHZW5pZVF1ZXJ5QXR0YWNobWVudGAgd2lkZW5lZCB3aXRoIHRoZSBgdGhvdWdodHNbXWAgZmllbGQgdGhlXG4gKiBHZW5pZSB3aXJlIGV4cG9zZXMgYnV0IHRoZSBTREsgZG9lc24ndCBjdXJyZW50bHkgdHlwZS4gRXZlcnlcbiAqIG90aGVyIGZpZWxkIChgZGVzY3JpcHRpb25gLCBgcXVlcnlgLCBgc3RhdGVtZW50X2lkYCxcbiAqIGBxdWVyeV9yZXN1bHRfbWV0YWRhdGFgLCBgdGl0bGVgLCBgcGFyYW1ldGVyc2AsXG4gKiBgbGFzdF91cGRhdGVkX3RpbWVzdGFtcGAsIGBpZGApIGZsb3dzIHRocm91Z2ggdmVyYmF0aW0gZnJvbVxuICogdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHRob3VnaHRzOiB6LmFycmF5KEdlbmllVGhvdWdodFNjaGVtYSkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFF1ZXJ5IGF0dGFjaG1lbnQgd2lkZW5lZCB3aXRoIEdlbmllJ3Mgc3RyZWFtZWQgcmVhc29uaW5nIHRob3VnaHRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVRdWVyeUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogUHVycG9zZSBhdHRhY2hlZCB0byBhIEdlbmllIHRleHQgcmVzcG9uc2UuXG4gKlxuICogVGhlIGdlbmVyYXRlZCBEYXRhYnJpY2tzIFNESyBzY2hlbWEgY3VycmVudGx5IGtub3dzIG9ubHlcbiAqIGBGT0xMT1dfVVBfUVVFU1RJT05gLCB3aGlsZSB0aGUgbGl2ZSBHZW5pZSBBUEkgYWxzbyBlbWl0c1xuICogYFRFWFRfQVRUQUNITUVOVF9QVVJQT1NFX0FOU1dFUmAgZm9yIHRoZSBwcmltYXJ5IGFuc3dlciB0ZXh0LiBLZWVwIHRoZVxuICoga25vd24gdmFsdWVzIGRpc2NvdmVyYWJsZSBhbmQgYWNjZXB0IGZ1dHVyZSBzdHJpbmcgdmFsdWVzIHNvIGFuIGFkZGl0aXZlXG4gKiBzZXJ2ZXItc2lkZSBlbnVtIGNoYW5nZSBjYW5ub3QgaW52YWxpZGF0ZSBhbiBvdGhlcndpc2UgY29tcGxldGUgbWVzc2FnZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIHNlbWFudGljIHB1cnBvc2UgZm9yIGEgR2VuaWUgdGV4dCBhdHRhY2htZW50LlwiKTtcblxuZXhwb3J0IHR5cGUgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYT47XG5cbi8qKlxuICogVGV4dCBhdHRhY2htZW50IHdpZGVuZWQgZm9yIGZvcndhcmQtY29tcGF0aWJsZSBwdXJwb3NlIHZhbHVlcyBhbmQgb3B0aW9uYWxcbiAqIEFnZW50IE1vZGUgdGFibGUgbWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hID0gZGFzaGJvYXJkcy50ZXh0QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICBwdXJwb3NlOiBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYS5vcHRpb25hbCgpLFxuICBtZXRhZGF0YTogei51bmtub3duKCkub3B0aW9uYWwoKS5kZXNjcmliZShcIkFnZW50IE1vZGUgbWV0YWRhdGEgYXR0YWNoZWQgdG8gdGhpcyB0ZXh0IHJlc3BvbnNlLlwiKSxcbn0pO1xuLyoqIE5hcnJhdGl2ZSB0ZXh0IGF0dGFjaG1lbnQsIGluY2x1ZGluZyBpdHMgb3B0aW9uYWwgc2VtYW50aWMgcHVycG9zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVBdHRhY2htZW50YCB3aXRoOlxuICpcbiAqICAgLSBgcXVlcnlgIHJlLXR5cGVkIHRvIHRoZSB0aG91Z2h0cy1hd2FyZVxuICogICAgIHtAbGluayBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYX0uXG4gKiAgIC0gYGF0dGFjaG1lbnRfdHlwZWAgZGlzY3JpbWluYXRvciBsaXRlcmFsXG4gKiAgICAgKHtAbGluayBBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYHN3aXRjaFxuICogICAgIChhdHQuYXR0YWNobWVudF90eXBlKWAgdG8gbmFycm93IHdoaWNoIHN1Yi1vYmplY3QgaXNcbiAqICAgICBwb3B1bGF0ZWQuIE9wdGlvbmFsIG9uIHRoZSB3aXJlIChHZW5pZSBkb2Vzbid0IHNlbmQgaXQpO1xuICogICAgIGNhbGxlcnMgY29tcHV0ZSBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0gd2hlblxuICogICAgIHRoZXkgd2FudCB0aGUgbGl0ZXJhbCB1cC1mcm9udC5cbiAqXG4gKiBgdGV4dGAgaXMgcmUtdHlwZWQgdG8gdGhlIGZvcndhcmQtY29tcGF0aWJsZVxuICoge0BsaW5rIEdlbmllVGV4dEF0dGFjaG1lbnRTY2hlbWF9LiBgYXR0YWNobWVudF9pZGAgYW5kXG4gKiBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2AgcGFzcyB0aHJvdWdoIHVuY2hhbmdlZC4gYGF0dGFjaG1lbnRfaWRgIGlzIGdlbnVpbmVseVxuICogb3B0aW9uYWwgb24gdGhlIHdpcmU6XG4gKiB0aGUgZmlyc3QgdGV4dCBhdHRhY2htZW50IEdlbmllIGVtaXRzIHBlciB0dXJuICh0aGUgXCJtYWluXG4gKiBhbnN3ZXIgdGV4dFwiKSBhcnJpdmVzIHdpdGggbm8gaWQsIG9ubHkgdGhlIGZvbGxvdy11cCB0ZXh0XG4gKiBhdHRhY2htZW50IGdldHMgb25lLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVBdHRhY2htZW50U2NoZW1hID0gU0RLR2VuaWVBdHRhY2htZW50U2NoZW1hLmV4dGVuZCh7XG4gIHF1ZXJ5OiBHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB0ZXh0OiBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfdHlwZTogQXR0YWNobWVudFR5cGVTY2hlbWEub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2UgYXR0YWNobWVudCB3aXRoIGFuIG9wdGlvbmFsIGNvbXB1dGVkIGRpc2NyaW1pbmF0b3IuICovXG5leHBvcnQgdHlwZSBHZW5pZUF0dGFjaG1lbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZU1lc3NhZ2VgIHdpZGVuZWQgd2l0aDpcbiAqXG4gKiAgIC0gYGF1dG9fcmVnZW5lcmF0ZV9jb3VudGA6IG51bWJlciBzdGFtcGVkIG9uIGV2ZXJ5IHdpcmVcbiAqICAgICBtZXNzYWdlIHRoYXQgdGhlIFNESyB0eXBlIG9taXRzIGF0IHYwLjE3LlxuICogICAtIGBhdHRhY2htZW50c2A6IHJlLXR5cGVkIHRvIHRoZSBsb2NhbFxuICogICAgIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9IHNvXG4gKiAgICAgYGF0dGFjaG1lbnQucXVlcnk/LnRob3VnaHRzYCAoYW5kIHRoZVxuICogICAgIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IpIGlzIHJlYWNoYWJsZSB3aXRob3V0IGFcbiAqICAgICBjYXN0LlxuICpcbiAqIEV2ZXJ5IG90aGVyIGZpZWxkIChgaWRgLCBgc3BhY2VfaWRgLCBgY29udmVyc2F0aW9uX2lkYCxcbiAqIGB1c2VyX2lkYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCwgYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLFxuICogYHN0YXR1c2AsIGBjb250ZW50YCwgYG1lc3NhZ2VfaWRgLCBgcXVlcnlfcmVzdWx0YCwgYGVycm9yYCxcbiAqIGBmZWVkYmFja2ApIHBhc3NlcyB0aHJvdWdoIGZyb20gdGhlIFNESyBzY2hlbWEuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZU1lc3NhZ2VTY2hlbWEgPSBTREtHZW5pZU1lc3NhZ2VTY2hlbWEuZXh0ZW5kKHtcbiAgYXR0YWNobWVudHM6IHouYXJyYXkoR2VuaWVBdHRhY2htZW50U2NoZW1hKS5vcHRpb25hbCgpLFxuICBhdXRvX3JlZ2VuZXJhdGVfY291bnQ6IHoubnVtYmVyKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEdlbmllIG1lc3NhZ2Ugc25hcHNob3Qgd2lkZW5lZCB3aXRoIHR5cGVkIGF0dGFjaG1lbnRzIGFuZCByZWdlbmVyYXRpb24gY291bnQuICovXG5leHBvcnQgdHlwZSBHZW5pZU1lc3NhZ2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZU1lc3NhZ2VTY2hlbWE+O1xuXG4vKipcbiAqIERvbWFpbiBwcm9qZWN0aW9uIG9mIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9IHRoYXQgZHJvcHMgZXZlcnlcbiAqIHR1cm4tbGV2ZWwgZmllbGQgKGBpZGAsIGBzdGF0dXNgLCBgY3JlYXRlZF90aW1lc3RhbXBgLFxuICogYHF1ZXJ5X3Jlc3VsdGAsIC4uLikgYW5kIHlpZWxkcyBqdXN0IHRoZSByZXNwb25zZSBwYXlsb2FkIGFzIGFcbiAqIGZsYXQgYEdlbmllQXR0YWNobWVudFtdYC4gUGFyc2VzIHRoZSBzYW1lIHdpcmUgc2hhcGUgYXNcbiAqIHtAbGluayBHZW5pZU1lc3NhZ2VTY2hlbWF9OyBtaXNzaW5nIGBhdHRhY2htZW50c2AgZGVmYXVsdHMgdG9cbiAqIGBbXWAgc28gdGhlIG91dHB1dCBpcyBhbHdheXMgYW4gYXJyYXkuXG4gKlxuICogVXNlIHdoZW4gY29uc3VtZXJzIG9ubHkgY2FyZSBhYm91dCB0aGUgbW9kZWwncyByZXNwb25zZVxuICogYXR0YWNobWVudHMgYW5kIG5vdCB0aGUgc3Vycm91bmRpbmcgbWVzc2FnZSBlbnZlbG9wZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllUmVzcG9uc2VTY2hlbWEgPSBHZW5pZU1lc3NhZ2VTY2hlbWEudHJhbnNmb3JtKChtKSA9PiBtLmF0dGFjaG1lbnRzID8/IFtdKTtcbi8qKiBOb3JtYWxpemVkIGF0dGFjaG1lbnQgYXJyYXkgZXh0cmFjdGVkIGZyb20gYSBHZW5pZSBtZXNzYWdlIHJlc3BvbnNlLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVSZXNwb25zZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllUmVzcG9uc2VTY2hlbWE+O1xuXG4vKipcbiAqIGBHZW5pZVNwYWNlYCB3aWRlbmVkIHdpdGggYW4gb3B0aW9uYWwgYHNlcmlhbGl6ZWRfc3BhY2VgIGZpZWxkXG4gKiBjYXJyeWluZyBhIEpTT04tc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBzcGFjZSdzIGZ1bGxcbiAqIGRlZmluaXRpb24gKGNhdGFsb2dzLCBzY2hlbWFzLCB0YWJsZXMsIHNhbXBsZSBxdWVzdGlvbnMsIHByb21wdHMsXG4gKiBldGMuKSBhcyBleHBvcnRlZCBieSB0aGUgd29ya3NwYWNlIGV4cG9ydCBlbmRwb2ludC5cbiAqXG4gKiBUaGUgYmFzZSBTREsgc2hhcGUgKGBkZXNjcmlwdGlvbmAsIGBzcGFjZV9pZGAsIGB0aXRsZWAsXG4gKiBgd2FyZWhvdXNlX2lkYCkgY292ZXJzIHRoZSBkaXJlY3RvcnktbGlzdGluZyBzdXJmYWNlIC0gZW5vdWdoIHRvXG4gKiByb3V0ZSBhIGNoYXQuIGBzZXJpYWxpemVkX3NwYWNlYCBpcyBvcHQtaW4gc28gY2FsbGVycyB0aGF0IG5lZWRcbiAqIHRoZSBmdWxsIHNwYWNlIHNjaGVtYSAoZS5nLiB0byBzZWVkIGEgc3lzdGVtIHByb21wdCBvciB0byBzaGlwXG4gKiB0aGUgZGVmaW5pdGlvbiB0byBhbiBhZ2VudCkgY2FuIGF0dGFjaCBpdCB3aXRob3V0IGEgc2Vjb25kIHR5cGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVNwYWNlU2NoZW1hID0gU0RLR2VuaWVTcGFjZVNjaGVtYS5leHRlbmQoe1xuICBzZXJpYWxpemVkX3NwYWNlOiB6XG4gICAgLnN0cmluZygpXG4gICAgLm9wdGlvbmFsKClcbiAgICAuZGVzY3JpYmUoXG4gICAgICBcIlRoZSBjb250ZW50cyBvZiB0aGUgR2VuaWUgU3BhY2UgaW4gc2VyaWFsaXplZCBzdHJpbmcgZm9ybS4gVGhpcyBmaWVsZCBpcyBleGNsdWRlZCBpbiBMaXN0IEdlbmllIHNwYWNlcyByZXNwb25zZXMuIFRoaXMgZmllbGQgcHJvdmlkZXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgSlNPTiBzdHJpbmcgdGhhdCByZXByZXNlbnRzIHRoZSBzcGFjZSdzIGxheW91dCBhbmQgY29tcG9uZW50cy5cIixcbiAgICApLFxufSk7XG4vKiogR2VuaWUgc3BhY2UgbWV0YWRhdGEgd2l0aCB0aGUgaWRlbnRpZmllcnMgcmVxdWlyZWQgYnkgY2hhdCBjb25zdW1lcnMuICovXG5leHBvcnQgdHlwZSBHZW5pZVNwYWNlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVTcGFjZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSB0ZXJtaW5hbCBoZWxwZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBUZXJtaW5hbCBHZW5pZSBtZXNzYWdlIHN0YXR1c2VzLiBUaGUgcG9sbGluZyBsb29wIGluIHRoZSBjaGF0XG4gKiBkcml2ZXIgc3RvcHMgYXMgc29vbiBhcyB0aGUgbGF0ZXN0IG1lc3NhZ2UgaGFzIG9uZSBvZiB0aGVzZVxuICogc3RhdHVzZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBURVJNSU5BTF9TVEFUVVNFUyA9IFtcIkNPTVBMRVRFRFwiLCBcIkZBSUxFRFwiLCBcIkNBTkNFTExFRFwiXSBhcyBjb25zdDtcblxuZXhwb3J0IGNvbnN0IFRlcm1pbmFsU3RhdHVzU2NoZW1hID0gelxuICAuZW51bShURVJNSU5BTF9TVEFUVVNFUylcbiAgLmRlc2NyaWJlKFwiTWVzc2FnZSBzdGF0dXMgdGhhdCBlbmRzIGEgR2VuaWUgdHVybiBhbmQgcHJvZHVjZXMgYSBmaW5hbCByZXN1bHQgZXZlbnQuXCIpO1xuXG5leHBvcnQgdHlwZSBUZXJtaW5hbFN0YXR1cyA9IHouaW5mZXI8dHlwZW9mIFRlcm1pbmFsU3RhdHVzU2NoZW1hPjtcblxuLyoqIE5hcnJvdyBgTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZGAgdG8gYSB7QGxpbmsgVGVybWluYWxTdGF0dXN9LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVGVybWluYWxTdGF0dXMoczogTWVzc2FnZVN0YXR1cyB8IHVuZGVmaW5lZCk6IHMgaXMgVGVybWluYWxTdGF0dXMge1xuICByZXR1cm4gcyAhPT0gdW5kZWZpbmVkICYmIChURVJNSU5BTF9TVEFUVVNFUyBhcyByZWFkb25seSBzdHJpbmdbXSkuaW5jbHVkZXMocyk7XG59XG5cbi8qKlxuICogQ29udmVydCBhIHJhdyBHZW5pZSB3aXJlIHN0YXR1cyAoYEZFVENISU5HX01FVEFEQVRBYCxcbiAqIGBBU0tJTkdfQUlgLCBgRVhFQ1VUSU5HX1FVRVJZYCwgLi4uKSBpbnRvIGEgc2hvcnQsIHNlbnRlbmNlLWNhc2VkXG4gKiBsYWJlbCBzYWZlIHRvIGRyb3AgaW50byBhIFVJIHBpbGwuIEtub3duIHN0YXRlcyBnZXQgYSBjdXJhdGVkXG4gKiBsYWJlbDsgdW5rbm93biBzdGF0ZXMgZmFsbCBiYWNrIHRvIGBzdHJpbmdVdGlscy50b2tlbml6ZVdpdGhPcHRpb25zYFxuICogc28gbmV3IHN0YXRlcyBzdGlsbCByZW5kZXIgY2xlYW5seSB3aXRob3V0IGNvZGUgY2hhbmdlcy5cbiAqXG4gKiBQdXJlIChubyBOb2RlLW9ubHkgZGVwcyksIHNhZmUgZm9yIGJyb3dzZXIgYnVuZGxlcy4gQm90aCB0aGVcbiAqIEdlbmllIGFnZW50IChzZXJ2ZXIpIGFuZCBhbnkgVUkgdGhhdCBzdWJzY3JpYmVzIHRvIHN0YXR1cyBldmVudHNcbiAqIGNhbGwgdGhpcyBzbyBsYWJlbHMgc3RheSBpbiBsb2NrLXN0ZXAgYWNyb3NzIHRoZSB3aXJlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gaHVtYW5pemVTdGF0dXMoc3RhdHVzOiBNZXNzYWdlU3RhdHVzKTogc3RyaW5nIHtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFwiRkVUQ0hJTkdfTUVUQURBVEFcIjpcbiAgICAgIHJldHVybiBcIkZldGNoaW5nIG1ldGFkYXRhXCI7XG4gICAgY2FzZSBcIkFTS0lOR19BSVwiOlxuICAgICAgcmV0dXJuIFwiQXNraW5nIEdlbmllXCI7XG4gICAgY2FzZSBcIkVYRUNVVElOR19RVUVSWVwiOlxuICAgICAgcmV0dXJuIFwiUnVubmluZyBTUUwgcXVlcnlcIjtcbiAgICBjYXNlIFwiRklMVEVSSU5HX0NPTlRFWFRcIjpcbiAgICAgIHJldHVybiBcIkZpbHRlcmluZyBjb250ZXh0XCI7XG4gICAgY2FzZSBcIlBFTkRJTkdfV0FSRUhPVVNFXCI6XG4gICAgICByZXR1cm4gXCJXYWl0aW5nIGZvciB3YXJlaG91c2VcIjtcbiAgICBjYXNlIFwiQ09NUExFVEVEXCI6XG4gICAgICByZXR1cm4gXCJDb21wbGV0ZWRcIjtcbiAgICBjYXNlIFwiRkFJTEVEXCI6XG4gICAgICByZXR1cm4gXCJGYWlsZWRcIjtcbiAgICBjYXNlIFwiQ0FOQ0VMTEVEXCI6XG4gICAgICByZXR1cm4gXCJDYW5jZWxsZWRcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAgLi4uc3RyaW5nVXRpbHMudG9rZW5pemVXaXRoT3B0aW9ucyh7IGNhcGl0YWxpemU6IHRydWUsIGxvd2VyQ2FzZTogdHJ1ZSB9LCBzdGF0dXMpLFxuICAgICAgXS5qb2luKFwiIFwiKTtcbiAgfVxufVxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBhdHRhY2htZW50IHR5cGUgaGVscGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBJbnNwZWN0IGEge0BsaW5rIEdlbmllQXR0YWNobWVudH0gYW5kIHJldHVybiB0aGVcbiAqIHtAbGluayBBdHRhY2htZW50VHlwZX0gb2YgcGF5bG9hZCBpdCBjYXJyaWVzLiBSZXR1cm5zIHRoZSBmaXJzdFxuICoga25vd24gc3ViLW9iamVjdCB0aGF0J3MgcHJlc2VudDsgaWYgbm9uZSBvZiB0aGUga25vd24gb25lcyBhcmVcbiAqIHBvcHVsYXRlZCwgZmFsbHMgYmFjayB0byB0aGUgZmlyc3Qgbm9uLWJvb2trZWVwaW5nIGtleVxuICogKGZvcndhcmQtY29tcGF0IGZvciB0eXBlcyB3ZSBkb24ndCBtb2RlbCB5ZXQpLCBlbHNlIGBcInVua25vd25cImAuXG4gKlxuICogSG9ub3JzIGEgcHJlLXNldCBgYXR0YWNobWVudF90eXBlYCBpZiBvbmUgaXMgYWxyZWFkeSBvbiB0aGVcbiAqIHZhbHVlLCBzbyB0aGlzIGlzIGlkZW1wb3RlbnQgYWNyb3NzIHJlLWRldGVjdGlvbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRlY3RBdHRhY2htZW50VHlwZShhdHQ6IEdlbmllQXR0YWNobWVudCk6IEF0dGFjaG1lbnRUeXBlIHtcbiAgaWYgKGF0dC5hdHRhY2htZW50X3R5cGUpIHJldHVybiBhdHQuYXR0YWNobWVudF90eXBlO1xuICBpZiAoYXR0LnF1ZXJ5KSByZXR1cm4gXCJxdWVyeVwiO1xuICBpZiAoYXR0LnRleHQpIHJldHVybiBcInRleHRcIjtcbiAgaWYgKGF0dC5zdWdnZXN0ZWRfcXVlc3Rpb25zKSByZXR1cm4gXCJzdWdnZXN0ZWRfcXVlc3Rpb25zXCI7XG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhhdHQpKSB7XG4gICAgaWYgKGsgIT09IFwiYXR0YWNobWVudF9pZFwiICYmIGsgIT09IFwiYXR0YWNobWVudF90eXBlXCIpIHJldHVybiBrO1xuICB9XG4gIHJldHVybiBcInVua25vd25cIjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHZW5pZUNoYXQgZXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdoZXJlIG9uIHRoZSB3aXJlIGFuIGV2ZW50IHdhcyBvYnNlcnZlZC4gU3ByZWFkIGludG8gZXZlcnlcbiAqIGF0dGFjaG1lbnQtc2NvcGVkIGV2ZW50IHBheWxvYWQgc28gc3Vic2NyaWJlcnMgY2FuIHJvdXRlLCBsb2csXG4gKiBvciBjb3JyZWxhdGUgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgc3BhY2VfaWRgOiB0aGUgR2VuaWUgc3BhY2UgdGhlIGNvbnZlcnNhdGlvbiBsaXZlcyBpbi5cbiAqICAgLSBgY29udmVyc2F0aW9uX2lkYDogY29udmVyc2F0aW9uIGlkIG9uY2UgR2VuaWUgaGFzIGFzc2lnbmVkIG9uZS5cbiAqICAgLSBgbWVzc2FnZV9pZGA6IEdlbmllIG1lc3NhZ2UgaWQgZm9yIHRoZSBhY3RpdmUgdHVybi5cbiAqICAgLSBgYXR0YWNobWVudF9pZGA6IGF0dGFjaG1lbnQgdGhlIGV2ZW50IGNhbWUgZnJvbS4gT3B0aW9uYWxcbiAqICAgICBiZWNhdXNlIEdlbmllIHNvbWV0aW1lcyBlbWl0cyBhbiBhbm9ueW1vdXMgbWFpbi1hbnN3ZXJcbiAqICAgICBhdHRhY2htZW50IHdpdGhvdXQgYW4gaWQ7IHRob3NlIHN0aWxsIGdldCBldmVudHMsIGp1c3Qgd2l0aFxuICogICAgIGBhdHRhY2htZW50X2lkYCB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VfaWQ6IHouc3RyaW5nKCksXG4gIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIENvbnZlcnNhdGlvbiwgbWVzc2FnZSwgYW5kIGF0dGFjaG1lbnQgY29vcmRpbmF0ZXMgc2hhcmVkIGJ5IGF0dGFjaG1lbnQgZXZlbnRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0TG9jYXRpb24gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYT47XG5cbi8qKlxuICogTGlmZWN5Y2xlIGV2ZW50OiB0aGUgcXVlc3Rpb24gdGhpcyB0dXJuIGlzIGFza2luZyBHZW5pZS4gRmlyZXNcbiAqIG9uY2UgcGVyIGBnZW5pZUV2ZW50Q2hhdGAgY2FsbCwgdGhlIGZpcnN0IHRpbWUgdGhlIHVuZGVybHlpbmdcbiAqIGBnZW5pZUNoYXRgIGxvb3AgeWllbGRzIGEgYEdlbmllTWVzc2FnZWAuIENhcnJpZXMgdGhlIHByb21wdFxuICogdGV4dCBHZW5pZSBlY2hvZWQgYmFjayBvbiBgbWVzc2FnZS5jb250ZW50YCBhbmQgdGhlIGFzc2lnbmVkXG4gKiBgbWVzc2FnZV9pZGAgc28gc3Vic2NyaWJlcnMgY2FuIGdyb3VwIGV2ZXJ5IHN1YnNlcXVlbnQgZXZlbnRcbiAqIGZvciB0aGlzIHR1cm4gdW5kZXIgb25lIHN0YWJsZSBrZXkuIGBjb252ZXJzYXRpb25faWRgIGlzXG4gKiBwb3B1bGF0ZWQgZm9yIGJvdGggb3BlbmluZyBhbmQgZm9sbG93LXVwIHR1cm5zIChHZW5pZSBhc3NpZ25zXG4gKiBpdCBvbiBgc3RhcnRDb252ZXJzYXRpb25gKS5cbiAqXG4gKiBEZWZlcnJlZCAoaW5zdGVhZCBvZiBmaXJlZCBzeW5jaHJvbm91c2x5IG9uIGVudHJ5KSBzbyB0aGVcbiAqIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUgd2hlbiB0aGUgZXZlbnQgbGFuZHMgLSB0aGF0IG9uZSByb3VuZFxuICogdHJpcCBjb3N0cyB+MjAwbXMgYnV0IGxldHMgVUlzIHJlbmRlciBxdWVzdGlvbiAvIHRoaW5raW5nIC9cbiAqIHF1ZXJ5IC8gdGV4dCBhcyBhIHNpbmdsZSBncm91cGVkIGJsb2NrIHBlciBHZW5pZSBjYWxsIGluc3RlYWRcbiAqIG9mIGEgZmxhdCBzdHJlYW0uXG4gKlxuICogYGF0dGFjaG1lbnRfaWRgIGlzIGludGVudGlvbmFsbHkgYWJzZW50IC0gcXVlc3Rpb25zIGFyZSB0dXJuXG4gKiBzY29wZWQsIG5vdCBhdHRhY2htZW50IHNjb3BlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXN0aW9uXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLFxufSk7XG4vKiogSW5pdGlhbCBldmVudCBjYXJyeWluZyB0aGUgdXNlcidzIHF1ZXN0aW9uIGFmdGVyIEdlbmllIGFzc2lnbnMgYSBtZXNzYWdlIGlkLiAqL1xuZXhwb3J0IHR5cGUgUXVlc3Rpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXN0aW9uRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogcmF3IGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90IGZvciB0aGUgYWN0aXZlXG4gKiB0dXJuLiBGaXJlcyBvbmNlIHBlciBwb2xsIHlpZWxkLiBUaGUgZnVsbCBtZXNzYWdlIHNoYXBlXG4gKiAoaW5jbHVkaW5nIHRoZSB3aWRlbmVkIHRob3VnaHQgLyByZWdlbiAvIGF0dGFjaG1lbnQtdHlwZVxuICogZmllbGRzKSBpcyBleHBvc2VkIGlubGluZSBhcyBgbWVzc2FnZWA7IGNvbnN1bWVycyBuYXJyb3cgb25cbiAqIGBldmVudC50eXBlID09PSBcIm1lc3NhZ2VcImAgYW5kIHJlYWNoIGZvciBgZXZlbnQubWVzc2FnZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm1lc3NhZ2VcIiksXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIFJhdyBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IGVtaXR0ZWQgb24gZXZlcnkgcG9sbCBpdGVyYXRpb24uICovXG5leHBvcnQgdHlwZSBNZXNzYWdlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBNZXNzYWdlRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRvcC1sZXZlbCBgbWVzc2FnZS5zdGF0dXNgIHRyYW5zaXRpb25lZC4gRmlyZXMgZm9yIGV2ZXJ5XG4gKiBkaXN0aW5jdCBzdGF0dXMgc2VlbiBvbiB0aGUgd2lyZSAoZS5nLiBgU1VCTUlUVEVEYCAtPlxuICogYEZJTFRFUklOR19DT05URVhUYCAtPiBgQVNLSU5HX0FJYCAtPiBgUEVORElOR19XQVJFSE9VU0VgIC0+XG4gKiBgQVNLSU5HX0FJYCAtPiBgQ09NUExFVEVEYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0dXNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLm9taXQoe1xuICBhdHRhY2htZW50X2lkOiB0cnVlLFxufSkuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdHVzXCIpLFxuICBzdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEsXG4gIHByZXZpb3VzX3N0YXR1czogTWVzc2FnZVN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogTWVzc2FnZS1zdGF0dXMgdHJhbnNpdGlvbiwgaW5jbHVkaW5nIHRoZSBwcmV2aW91cyBzdGF0dXMgd2hlbiBhdmFpbGFibGUuICovXG5leHBvcnQgdHlwZSBTdGF0dXNFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXR1c0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyBhdHRhY2htZW50IHNsb3QgYXBwZWFyZWQgaW4gYG1lc3NhZ2UuYXR0YWNobWVudHNbXWAuXG4gKiBGaXJlcyBleGFjdGx5IG9uY2UgcGVyIGF0dGFjaG1lbnQgKG1hdGNoZWQgYnkgYGF0dGFjaG1lbnRfaWRgLFxuICogcG9zaXRpb25hbGx5IGZvciBhbm9ueW1vdXMgYXR0YWNobWVudHMpIHRoZSBmaXJzdCB0aW1lIHdlIHNlZVxuICogaXQuIFRoZSBzbG90J3MgcGF5bG9hZCBraW5kIGxhbmRzIGluIGBhdHRhY2htZW50X3R5cGVgIHNvIHRoZVxuICogb3V0ZXIgYHR5cGVgIGRpc2NyaW1pbmF0b3Igc3RheXMgdW5hbWJpZ3VvdXMuXG4gKi9cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhdHRhY2htZW50XCIpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgYXR0YWNobWVudF90eXBlOiBBdHRhY2htZW50VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5ldyB0eXBlZCBhdHRhY2htZW50IGFwcGVhcnMgb24gdGhlIG1lc3NhZ2UuICovXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEEgbmV3IHJlYXNvbmluZyBzdGVwIGFwcGVhcmVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS50aG91Z2h0c1tpXWApLiBEZWR1cGxpY2F0ZWQgcGVyXG4gKiBgKHRob3VnaHRfdHlwZSwgY29udGVudClgIHR1cGxlIHdpdGhpbiBhbiBhdHRhY2htZW50IHNvXG4gKiBzdWJzY3JpYmVycyBkb24ndCBzZWUgdGhlIHNhbWUgdGhvdWdodCBtdWx0aXBsZSB0aW1lcyAtIEdlbmllXG4gKiBzb21ldGltZXMgbXV0YXRlcyBleGlzdGluZyB0aG91Z2h0IHNsb3RzIGluIHBsYWNlLCBzbyB0aGUgZGlmZlxuICogaXMgdmFsdWUtYmFzZWQgcmF0aGVyIHRoYW4gcG9zaXRpb25hbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRoaW5raW5nRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0aGlua2luZ1wiKSxcbiAgdGV4dDogei5zdHJpbmcoKSxcbiAgdGhvdWdodF90eXBlOiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLFxufSk7XG4vKiogSW5jcmVtZW50YWwgR2VuaWUgcmVhc29uaW5nIGV2ZW50IGRlcml2ZWQgZnJvbSBxdWVyeSB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIFRoaW5raW5nRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUaGlua2luZ0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIHRleHQtYXR0YWNobWVudCBgY29udGVudGAgZmllbGQgYXBwZWFyZWQgb3IgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS50ZXh0LmNvbnRlbnRgKS4gRmlyZXMgd2hlbmV2ZXIgdGhlIHNuYXBzaG90XG4gKiB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIG9uZSBmb3IgdGhlIHNhbWUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBOYXJyYXRpdmUgYW5zd2VyIGZyYWdtZW50IGVtaXR0ZWQgZnJvbSBhIEdlbmllIHRleHQgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFRleHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRleHRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBmaW5hbGl6ZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5YCkuIEZpcmVzIG9uY2Ugd2hlbiB0aGUgU1FMIHN0cmluZ1xuICogdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCwgYW5kIGFnYWluIGlmIEdlbmllIGV2ZXJcbiAqIHJld3JpdGVzIGl0LiBgdGl0bGVgIGFuZCBgZGVzY3JpcHRpb25gIGFyZSBkZW5vcm1hbGlzZWQgb2ZmIHRoZVxuICogYXR0YWNobWVudCdzIGBxdWVyeS50aXRsZWAgLyBgcXVlcnkuZGVzY3JpcHRpb25gIHNvIGNvbnN1bWVyc1xuICogY2FuIGxhYmVsIHRoZSBTUUwgcGlsbCB3aXRob3V0IHJlLXdhbGtpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicXVlcnlcIiksXG4gIHNxbDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsaXplZCBvciByZXdyaXR0ZW4gU1FMIGVtaXR0ZWQgZm9yIGEgR2VuaWUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBTUUwgd2FzIHN1Ym1pdHRlZCB0byBhIFNRTCB3YXJlaG91c2UgYW5kIGEgc3RhdGVtZW50IGlkIHdhc1xuICogYXNzaWduZWQgKGBhdHRhY2htZW50c1tpXS5xdWVyeS5zdGF0ZW1lbnRfaWRgKS4gRmlyZXMgd2hlbiB0aGVcbiAqIHN0YXRlbWVudCBpZCB0cmFuc2l0aW9ucyBmcm9tIHVuZGVmaW5lZCB0byBkZWZpbmVkIC0gdGhpcyBpcyB0aGVcbiAqIHBvaW50IGF0IHdoaWNoIGBjbGllbnQuc3RhdGVtZW50RXhlY3V0aW9uLmdldFN0YXRlbWVudCh7IHN0YXRlbWVudF9pZCB9KWBcbiAqIGJlY29tZXMgYSB2YWxpZCBjYWxsLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdGF0ZW1lbnRcIiksXG4gIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEV2ZW50IGluZGljYXRpbmcgdGhhdCBhIHF1ZXJ5IHJlY2VpdmVkIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IGlkLiAqL1xuZXhwb3J0IHR5cGUgU3RhdGVtZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogUm93IGNvdW50IGZvciBhIHF1ZXJ5IGF0dGFjaG1lbnQncyByZXN1bHQgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeV9yZXN1bHRfbWV0YWRhdGEucm93X2NvdW50YCkuIEZpcmVzXG4gKiBvbiBldmVyeSBjaGFuZ2UsIGluY2x1ZGluZyB0aGUgaW5pdGlhbCBgdW5kZWZpbmVkIC0+IDBgIGFuZCB0aGVcbiAqIGxhdGVyIGAwIC0+IE5gIG9uY2UgdGhlIHdhcmVob3VzZSBmaW5pc2hlcyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBSb3dzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyb3dzXCIpLFxuICByb3dfY291bnQ6IHoubnVtYmVyKCksXG4gIHByZXZpb3VzX3Jvd19jb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFJvdy1jb3VudCB0cmFuc2l0aW9uIGZvciBhIEdlbmllIHF1ZXJ5IHJlc3VsdC4gKi9cbmV4cG9ydCB0eXBlIFJvd3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJvd3NFdmVudFNjaGVtYT47XG5cbi8qKlxuICogR2VuaWUgcHJvZHVjZWQgYSBmb2xsb3ctdXAgc3VnZ2VzdGVkLXF1ZXN0aW9ucyBsaXN0XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnN1Z2dlc3RlZF9xdWVzdGlvbnMucXVlc3Rpb25zW11gKS4gRmlyZXMgb25jZVxuICogd2hlbiB0aGUgbGlzdCBhcHBlYXJzLCBhbmQgYWdhaW4gaWYgR2VuaWUgcmV3cml0ZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIiksXG4gIHF1ZXN0aW9uczogei5hcnJheSh6LnN0cmluZygpKSxcbn0pO1xuLyoqIEZvbGxvdy11cCBxdWVzdGlvbiBsaXN0IGVtaXR0ZWQgd2hlbiBHZW5pZSBhZGRzIG9yIHJld3JpdGVzIHN1Z2dlc3Rpb25zLiAqL1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB0dXJuIHJlYWNoZWQgYSB0ZXJtaW5hbCBzdGF0dXMuIEFsd2F5cyBmaXJlcyBvbmNlXG4gKiBwZXIgdHVybiAoaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRlcm1pbmFsIGBtZXNzYWdlYCBldmVudCkuXG4gKiBDYXJyaWVzIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBpbmxpbmUgc28gc3Vic2NyaWJlcnNcbiAqIGRvbid0IG5lZWQgdG8ga2VlcCB0aGVpciBvd24gY29weSBvZiB0aGUgbGFzdCBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUmVzdWx0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJlc3VsdFwiKSxcbiAgc3RhdHVzOiBUZXJtaW5hbFN0YXR1c1NjaGVtYSxcbiAgbWVzc2FnZTogR2VuaWVNZXNzYWdlU2NoZW1hLFxufSk7XG4vKiogRmluYWwgZXZlbnQgZm9yIGEgR2VuaWUgdHVybiwgY2FycnlpbmcgaXRzIHRlcm1pbmFsIHN0YXR1cyBhbmQgbWVzc2FnZSBzbmFwc2hvdC4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUmVzdWx0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgLiBFYWNoIHZhcmlhbnRcbiAqIGlzIGEgc2luZ2xlIGZsYXQgb2JqZWN0IHdpdGggYHR5cGVgIGFzIHRoZSBkaXNjcmltaW5hdG9yIGFuZFxuICogdGhlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWQgZGlyZWN0bHkgdG8gdGhlIHRvcCBsZXZlbCAtIG5vXG4gKiBgcGF5bG9hZGAgd3JhcHBlci4gQ29uc3VtZXJzIG5hcnJvdyBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzXG4gKiBpbmxpbmU6XG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZlbnQgb2YgZ2VuaWVFdmVudENoYXQoc3BhY2VJZCwgXCJUb3Agc3RvcmVzP1wiKSkge1xuICogICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAqICAgICBjYXNlIFwidGhpbmtpbmdcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKGV2ZW50LnRob3VnaHRfdHlwZSwgZXZlbnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcImRvbmU6XCIsIGV2ZW50LnN0YXR1cyk7XG4gKiAgICAgICBicmVhaztcbiAqICAgfVxuICogfVxuICpcbiAqIFN0cmVhbSBvcmRlciBwZXIgdHVybjpcbiAqXG4gKiAgIDEuIGBxdWVzdGlvbmAsIGVtaXR0ZWQgd2l0aCB0aGUgZmlyc3QgYG1lc3NhZ2VgIHlpZWxkIChkZWZlcnJlZCBzb1xuICogICAgICB0aGUgYXNzaWduZWQgYG1lc3NhZ2VfaWRgIGlzIGF2YWlsYWJsZSksIGNhcnJ5aW5nIHRoZSBwcm9tcHRcbiAqICAgICAgdGhpcyB0dXJuIHNlbnQgdG8gR2VuaWUuXG4gKiAgIDIuIGBtZXNzYWdlYCBmb3IgZXZlcnkgcG9sbCB5aWVsZCAocmF3IGBHZW5pZU1lc3NhZ2VgIG9uXG4gKiAgICAgIGBldmVudC5tZXNzYWdlYCkuXG4gKiAgIDMuIEFueSBkZXJpdmVkIGV2ZW50cyB0aGUgc25hcHNob3QgZGlmZiBwcm9kdWNlZCAoYHN0YXR1c2AsXG4gKiAgICAgIGBhdHRhY2htZW50YCwgYHRoaW5raW5nYCwgYHRleHRgLCBgcXVlcnlgLCBgc3RhdGVtZW50YCxcbiAqICAgICAgYHJvd3NgLCBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2ApIGluIHRoYXQgZml4ZWQgb3JkZXIuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYSBmaW5hbCBgcmVzdWx0YCBldmVudC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIHZpYSB0aGUgZ2VuZXJhdG9yIHRocm93aW5nIChgdHJ5YC9gY2F0Y2hgIHRoZVxuICogYGZvciBhd2FpdGApLCBub3QgdmlhIGFuIGBlcnJvcmAgdmFyaWFudCBvbiB0aGlzIHVuaW9uLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0RXZlbnRTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBRdWVzdGlvbkV2ZW50U2NoZW1hLFxuICBNZXNzYWdlRXZlbnRTY2hlbWEsXG4gIFN0YXR1c0V2ZW50U2NoZW1hLFxuICBBdHRhY2htZW50RXZlbnRTY2hlbWEsXG4gIFRoaW5raW5nRXZlbnRTY2hlbWEsXG4gIFRleHRFdmVudFNjaGVtYSxcbiAgUXVlcnlFdmVudFNjaGVtYSxcbiAgU3RhdGVtZW50RXZlbnRTY2hlbWEsXG4gIFJvd3NFdmVudFNjaGVtYSxcbiAgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsXG4gIFJlc3VsdEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogT3JkZXJlZCBldmVudCB1bmlvbiB5aWVsZGVkIGJ5IGBnZW5pZUV2ZW50Q2hhdGA7IGZhaWx1cmVzIGFyZSB0aHJvd24sIG5vdCBlbWl0dGVkLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZUNoYXRFdmVudH0uICovXG5leHBvcnQgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUgPSBHZW5pZUNoYXRFdmVudFtcInR5cGVcIl07XG5cbi8qKlxuICogRmllbGQgc2V0IGZvciBhIGdpdmVuIHtAbGluayBHZW5pZUNoYXRFdmVudFR5cGV9IC0gdGhlIHZhcmlhbnRcbiAqIHdpdGggdGhlIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0cmlwcGVkLiBVc2VkIGJ5IGRldGVjdG9ycyBpblxuICogYGV2ZW50LnRzYCBzbyBlYWNoIGRldGVjdG9yIHJldHVybnMganVzdCB0aGUgcGF5bG9hZCBmaWVsZHMgYW5kXG4gKiB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgYXQgeWllbGQgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBPbWl0PFxuICBFeHRyYWN0PEdlbmllQ2hhdEV2ZW50LCB7IHR5cGU6IFQgfT4sXG4gIFwidHlwZVwiXG4+O1xuIl19
|
|
522
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuaWUtbW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZ2VuaWUtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0NHO0FBRUgsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFDeEIsT0FBTyxLQUFLLFVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUU5QyxrRkFBa0Y7QUFDbEYsaUZBQWlGO0FBQ2pGLDZEQUE2RDtBQUM3RCxNQUFNLEVBQ0oscUJBQXFCLEVBQUUsd0JBQXdCLEVBQy9DLGtCQUFrQixFQUFFLHFCQUFxQixFQUN6QywwQkFBMEIsRUFBRSw2QkFBNkIsRUFDekQsZ0JBQWdCLEVBQUUsbUJBQW1CLEdBQ3RDLEdBQUcsVUFBVSxDQUFDO0FBVWYsd0ZBQXdGO0FBQ3hGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQztBQUVsRSx5RUFBeUU7QUFFekU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUFHLENBQUM7S0FDcEMsTUFBTSxFQUFFO0tBQ1IsUUFBUSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFJaEU7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUN6QyxZQUFZLEVBQUUsc0JBQXNCLENBQUMsUUFBUSxDQUFDLDhDQUE4QyxDQUFDO0lBQzdGLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLDBDQUEwQyxDQUFDO0NBQ3pFLENBQUMsQ0FBQztBQUlILDZFQUE2RTtBQUU3RTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE1BQU0sQ0FBQyxNQUFN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QUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsQ0FBQztJQUN0QyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7Q0FDL0IsQ0FBQyxDQUFDO0FBSUg7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyx1QkFBdUIsQ0FBQyxJQUFJLENBQUM7SUFDNUQsYUFBYSxFQUFFLElBQUk7Q0FDcEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQztJQUNSLElBQUksRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQztJQUN6QixNQUFNLEVBQUUsb0JBQW9CO0lBQzVCLE9BQU8sRUFBRSxrQkFBa0I7Q0FDNUIsQ0FBQyxDQUFDO0FBSUg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQWlDRztBQUNILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEVBQUU7SUFDL0QsbUJBQW1CO0lBQ25CLGtCQUFrQjtJQUNsQixpQkFBaUI7SUFDakIscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixlQUFlO0lBQ2YsZ0JBQWdCO0lBQ2hCLG9CQUFvQjtJQUNwQixlQUFlO0lBQ2YsNkJBQTZCO0lBQzdCLGlCQUFpQjtDQUNsQixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFdpcmUtZm9ybWF0IHpvZCBzY2hlbWFzICsgdHlwZXMgYW5kIGhpZ2gtbGV2ZWwgZXZlbnQgdm9jYWJ1bGFyeVxuICogZm9yIHRoZSBHZW5pZSBjaGF0IGRyaXZlci5cbiAqXG4gKiBUd28gcmVsYXRlZCBsYXllcnMgbGl2ZSBoZXJlOlxuICpcbiAqICAgMS4gR2VuaWUgd2lyZSBzaGFwZXMgZGVyaXZlZCBmcm9tIHRoaXMgcGFja2FnZSdzIG93biBnZW5lcmF0ZWRcbiAqICAgICAgYGRhc2hib2FyZHNgIHNjaGVtYXMgKHJlZ2VuZXJhdGVkIGZyb20gdGhlIHVwc3RyZWFtXG4gKiAgICAgIGBAZGF0YWJyaWNrcy9zZGstZXhwZXJpbWVudGFsYCBgYXBpcy9kYXNoYm9hcmRzL21vZGVsLmQudHNgXG4gKiAgICAgIGJ5IHRoZSBlbmdpbmUncyBjb2RlZ2VuIG9uIHN5bnRoKS4gV2UgZXh0ZW5kIHRoZSBTREsgc2NoZW1hcyB3aGVyZSBHZW5pZVxuICogICAgICBzaGlwcyBmaWVsZHMgb24gdGhlIHdpcmUgdGhhdCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGU6XG4gKlxuICogICAgICAgIC0gYEdlbmllTWVzc2FnZS5hdXRvX3JlZ2VuZXJhdGVfY291bnQ6IG51bWJlcmAgKHN0YW1wZWRcbiAqICAgICAgICAgIG9uIGV2ZXJ5IHdpcmUgbWVzc2FnZSwgb21pdHRlZCBmcm9tIHRoZSBTREsgc2hhcGUpLlxuICogICAgICAgIC0gYEdlbmllUXVlcnlBdHRhY2htZW50LnRob3VnaHRzOiBHZW5pZVRob3VnaHRbXWAgKHRoZVxuICogICAgICAgICAgc3RyZWFtZWQgcmVhc29uaW5nIHBheWxvYWQgd2l0aCBgREVTQ1JJUFRJT05gLFxuICogICAgICAgICAgYERBVEFfU09VUkNJTkdgLCBgU1RFUFNgLCBhbmQgYFVOREVSU1RBTkRJTkdgIHRob3VnaHRcbiAqICAgICAgICAgIGtpbmRzKS5cbiAqICAgICAgICAtIGBHZW5pZUF0dGFjaG1lbnQuYXR0YWNobWVudF90eXBlOiBBdHRhY2htZW50VHlwZWBcbiAqICAgICAgICAgIChhbiBvcHRpb25hbCBkaXNjcmltaW5hdG9yIGxpdGVyYWwgc28gY2FsbGVycyBjYW5cbiAqICAgICAgICAgIGBzd2l0Y2ggKGF0dC5hdHRhY2htZW50X3R5cGUpYCBpbnN0ZWFkIG9mIHByb2JpbmdcbiAqICAgICAgICAgIHdoaWNoIHN1Yi1rZXkgaXMgcG9wdWxhdGVkOyBjb21wdXRlIGl0IHdpdGhcbiAqICAgICAgICAgIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pLlxuICpcbiAqICAgMi4gRXZlbnQgdm9jYWJ1bGFyeSBmb3IgdGhlIGhpZ2gtbGV2ZWwgYGdlbmllRXZlbnRDaGF0YFxuICogICAgICBkcml2ZXIuIEVhY2ggZXZlbnQgaXMgYSBmbGF0IGB6Lm9iamVjdGAgd2l0aCBhIGB0eXBlYFxuICogICAgICBsaXRlcmFsIGRpc2NyaW1pbmF0b3IgYW5kIHNuYWtlX2Nhc2UgcGF5bG9hZCBmaWVsZHMgaG9pc3RlZFxuICogICAgICB0byB0aGUgdG9wIGxldmVsIChubyBgcGF5bG9hZGAgd3JhcHBlcikuIEV2ZW50cyB0aGF0IHNoYXJlXG4gKiAgICAgIHRoZSBhdHRhY2htZW50LXNjb3BlZCBsb2NhdGlvbiB1c2VcbiAqICAgICAge0BsaW5rIEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hfSBhcyBhIGJhc2U7IGV2ZW50cyB0aGF0XG4gKiAgICAgIGRvbid0IGNhcnJ5IGFuIGBhdHRhY2htZW50X2lkYCAoc3RhdHVzLCByZXN1bHQpIG9taXQgaXQuXG4gKiAgICAgIHtAbGluayBHZW5pZUNoYXRFdmVudFNjaGVtYX0gYnVuZGxlcyB0aGUgdmFyaWFudHMgaW50byBvbmVcbiAqICAgICAgZGlzY3JpbWluYXRlZCB1bmlvbi5cbiAqXG4gKiBQdXJlIHR5cGVzOiBubyBydW50aW1lIGltcG9ydHMgYmV5b25kIHpvZCArIHRoZSBnZW5lcmF0ZWRcbiAqIGBkYXNoYm9hcmRzYCBzY2hlbWFzLCBubyBOb2RlLW9ubHkgY29kZSwgc2FmZSBmb3IgYnJvd3NlciBidW5kbGVzLlxuICpcbiAqIEBtb2R1bGVcbiAqL1xuXG5pbXBvcnQgeyBzdHJpbmdVdGlscyB9IGZyb20gXCJAZGJ4LXRvb2xzL3NoYXJlZC1jb3JlXCI7XG5pbXBvcnQgeyB6IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0ICogYXMgZGFzaGJvYXJkcyBmcm9tIFwiLi9kYXNoYm9hcmRzLnRzXCI7XG5cbi8vIFRoZSBnZW5lcmF0ZWQgU0RLIHNjaGVtYXMgbGl2ZSBpbiB0aGUgc2libGluZyBgLi9kYXNoYm9hcmRzLnRzYCwgd3JpdHRlbiBieSB0aGVcbi8vIGVuZ2luZSdzIGNvZGVnZW4gZnJvbSB0aGUgdXBzdHJlYW0gYC5kLnRzYC4gQWxpYXMgdGhlIGhhbmRmdWwgR2VuaWUgZXh0ZW5kcyBzb1xuLy8gdGhlIHdpZGVuZWQgc2NoZW1hcyBiZWxvdyByZWFkIGFnYWluc3Qgc2hvcnQsIGxvY2FsIG5hbWVzLlxuY29uc3Qge1xuICBnZW5pZUF0dGFjaG1lbnRTY2hlbWE6IFNES0dlbmllQXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVNZXNzYWdlU2NoZW1hOiBTREtHZW5pZU1lc3NhZ2VTY2hlbWEsXG4gIGdlbmllUXVlcnlBdHRhY2htZW50U2NoZW1hOiBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYSxcbiAgZ2VuaWVTcGFjZVNjaGVtYTogU0RLR2VuaWVTcGFjZVNjaGVtYSxcbn0gPSBkYXNoYm9hcmRzO1xuXG4vKipcbiAqIFRoZSBTREsncyBgTWVzc2FnZVN0YXR1c2AgdHlwZSwgcmUtZXhwb3J0ZWQgc28gY29uc3VtZXJzIG9mIHRoZVxuICogR2VuaWUgY29udHJhY3QgZ2V0IHRoZSBmdWxsIHdpcmUgdm9jYWJ1bGFyeSBmcm9tIGEgc2luZ2xlIGltcG9ydFxuICogcGF0aCAtIG1pcnJvcnMgdGhlIHJlLWV4cG9ydHMgb2YgdGhlIG90aGVyIFNESy1kZXJpdmVkIHNjaGVtYXNcbiAqIGJlbG93LlxuICovXG5leHBvcnQgdHlwZSBNZXNzYWdlU3RhdHVzID0gZGFzaGJvYXJkcy5NZXNzYWdlU3RhdHVzO1xuXG4vKiogUnVudGltZSB2YWxpZGF0b3IgZm9yIGEgcmF3IEdlbmllIG1lc3NhZ2Ugc3RhdHVzIGZyb20gdGhlIGdlbmVyYXRlZCBTREsgY29udHJhY3QuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZVN0YXR1c1NjaGVtYSA9IGRhc2hib2FyZHMubWVzc2FnZVN0YXR1c1NjaGVtYTtcblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGhvdWdodHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIEdlbmllJ3MgcGVyLXF1ZXJ5IFwidGhvdWdodHNcIiBzdXJmYWNlLiBUaGVzZSBhcHBlYXIgb24gdGhlXG4gKiBgL21lc3NhZ2VzL3tpZH1gIHdpcmUgdW5kZXIgYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnRob3VnaHRzW11gIGJ1dFxuICogYXJlIG5vdCB0eXBlZCBvbiB0aGUgU0RLJ3MgYEdlbmllUXVlcnlBdHRhY2htZW50YCBhdCB2MC4xNy5cbiAqXG4gKiBLbm93biB0aG91Z2h0IHR5cGVzIG9ic2VydmVkIGluIHByb2R1Y3Rpb24gcG9sbHM6XG4gKlxuICogICAtIGBUSE9VR0hUX1RZUEVfREVTQ1JJUFRJT05gOiBhIG9uZS1wYXJhZ3JhcGggcmVzdGF0ZW1lbnQgb2ZcbiAqICAgICB3aGF0IHRoZSB1c2VyIGFza2VkLiBUaGUgZmluYWwgYHF1ZXJ5LmRlc2NyaXB0aW9uYCBmaWVsZCBvblxuICogICAgIHRoZSBhdHRhY2htZW50IGNhcnJpZXMgdGhlIHNhbWUgdGV4dC5cbiAqICAgLSBgVEhPVUdIVF9UWVBFX0RBVEFfU09VUkNJTkdgOiBtYXJrZG93biBidWxsZXRzIG9mIHRoZVxuICogICAgIGZ1bGx5LXF1YWxpZmllZCBgY2F0YWxvZy5zY2hlbWEudGFibGVgIHNvdXJjZXMgR2VuaWUgY2hvc2UuXG4gKiAgIC0gYFRIT1VHSFRfVFlQRV9TVEVQU2A6IHRoZSBoaWdoLWxldmVsIHBsYW4gR2VuaWUgd3JvdGUgYmVmb3JlXG4gKiAgICAgcnVubmluZyBTUUwgKG9uZSBidWxsZXQgcGVyIHN0ZXApLlxuICogICAtIGBUSE9VR0hUX1RZUEVfVU5ERVJTVEFORElOR2A6IGFtYmlndWl0eSAvIGludGVycHJldGF0aW9uXG4gKiAgICAgbm90ZXMgKGUuZy4gXCIncmV2ZW51ZScgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgZ3Jvc3MsXG4gKiAgICAgbmV0LCBvciByZWNvZ25pemVkIHJldmVudWUuLi5cIikuXG4gKlxuICogT3BlbiBhdCB0aGUgdHlwZSBsZXZlbCAoYHwgKHN0cmluZyAmIHt9KWApIHNvIGEgbmV3IHNlcnZlci1zaWRlXG4gKiB0aG91Z2h0IHR5cGUgZG9lc24ndCBicmVhayBjb21waWxhdGlvbjsgdGhlIGZvdXIga25vd24gdHlwZXNcbiAqIHN0aWxsIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRUeXBlU2NoZW1hID0gelxuICAuc3RyaW5nKClcbiAgLmRlc2NyaWJlKFwiRm9yd2FyZC1jb21wYXRpYmxlIEdlbmllIHJlYXNvbmluZyB0aG91Z2h0IHR5cGUuXCIpO1xuXG5leHBvcnQgdHlwZSBHZW5pZVRob3VnaHRUeXBlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUaG91Z2h0VHlwZVNjaGVtYT47XG5cbi8qKlxuICogT25lIHJlYXNvbmluZyBzdGVwIG9uIGEgcXVlcnkgYXR0YWNobWVudC4gU2VlXG4gKiB7QGxpbmsgR2VuaWVUaG91Z2h0VHlwZX0gZm9yIHRoZSBrbm93biBgdGhvdWdodF90eXBlYCB2YWx1ZXMuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRob3VnaHRTY2hlbWEgPSB6Lm9iamVjdCh7XG4gIHRob3VnaHRfdHlwZTogR2VuaWVUaG91Z2h0VHlwZVNjaGVtYS5kZXNjcmliZShcIktpbmQgb2YgcmVhc29uaW5nIHJlcHJlc2VudGVkIGJ5IHRoaXMgZW50cnkuXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLmRlc2NyaWJlKFwiUmVhc29uaW5nIHRleHQgZW1pdHRlZCBmb3IgdGhpcyB0aG91Z2h0LlwiKSxcbn0pO1xuLyoqIE9uZSB0eXBlZCByZWFzb25pbmcgZW50cnkgYXR0YWNoZWQgdG8gYSBHZW5pZSBxdWVyeS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVGhvdWdodCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVGhvdWdodFNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIGF0dGFjaG1lbnQgZGlzY3JpbWluYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogRGlzY3JpbWluYXRvciBmb3Igd2hhdCdzIGluc2lkZSBhIGBHZW5pZUF0dGFjaG1lbnRgLiBHZW5pZSBvbmx5XG4gKiBldmVyIHBvcHVsYXRlcyBvbmUgb2YgYHF1ZXJ5YCAvIGB0ZXh0YCAvIGBzdWdnZXN0ZWRfcXVlc3Rpb25zYFxuICogcGVyIGF0dGFjaG1lbnQuIE9wZW4gdmlhIGAoc3RyaW5nICYge30pYCBzbyBhIG5ldyBzZXJ2ZXItc2lkZVxuICogdHlwZSBkb2Vzbid0IGJyZWFrIGNvbXBpbGF0aW9uOyB0aGUgdGhyZWUga25vd24gdHlwZXMgc3RpbGxcbiAqIG5hcnJvdyBjb3JyZWN0bHkgdW5kZXIgYHN3aXRjaGAuXG4gKlxuICogTGlmdGVkIGludG8gdGhlIHNjaGVtYSBhcyB0aGUgb3B0aW9uYWxcbiAqIHtAbGluayBHZW5pZUF0dGFjaG1lbnRTY2hlbWF9LmBhdHRhY2htZW50X3R5cGVgIGZpZWxkIChjb21wdXRlXG4gKiBpdCB3aXRoIHtAbGluayBkZXRlY3RBdHRhY2htZW50VHlwZX0pIHNvIGNvbnN1bWVycyBjYW4gYnJhbmNoXG4gKiBvbiBhIGxpdGVyYWwgaW5zdGVhZCBvZiBwcm9iaW5nIHdoaWNoIHN1Yi1vYmplY3Qga2V5IGlzXG4gKiBwcmVzZW50LiBBbHNvIHN1cmZhY2VkIG9uIHtAbGluayBBdHRhY2htZW50RXZlbnR9J3MgcGF5bG9hZCBhc1xuICogYGF0dGFjaG1lbnRfdHlwZWAgKHZzIGEgYmFyZSBgdHlwZWApIHRvIGtlZXAgdGhlIGZpZWxkIGNsZWFyIG9mXG4gKiB0aGUgZXZlbnQtdW5pb24gZGlzY3JpbWluYXRvciBrZXkuXG4gKi9cbmV4cG9ydCBjb25zdCBBVFRBQ0hNRU5UX1RZUEVTID0gW1xuICBcInF1ZXJ5XCIsXG4gIFwidGV4dFwiLFxuICBcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIixcbiAgXCJ2aXpcIixcbl0gYXMgY29uc3Qgc2F0aXNmaWVzIHJlYWRvbmx5IHN0cmluZ1tdO1xuXG5leHBvcnQgY29uc3QgS25vd25BdHRhY2htZW50VHlwZVNjaGVtYSA9IHpcbiAgLmVudW0oQVRUQUNITUVOVF9UWVBFUylcbiAgLmRlc2NyaWJlKFwiQXR0YWNobWVudCBkaXNjcmltaW5hdG9yIHZhbHVlcyB1bmRlcnN0b29kIGJ5IHRoaXMgcGFja2FnZSB2ZXJzaW9uLlwiKTtcblxuZXhwb3J0IHR5cGUgS25vd25BdHRhY2htZW50VHlwZSA9IHouaW5mZXI8dHlwZW9mIEtub3duQXR0YWNobWVudFR5cGVTY2hlbWE+O1xuXG5leHBvcnQgY29uc3QgQXR0YWNobWVudFR5cGVTY2hlbWEgPSB6XG4gIC5zdHJpbmcoKVxuICAuZGVzY3JpYmUoXCJGb3J3YXJkLWNvbXBhdGlibGUgR2VuaWUgYXR0YWNobWVudCBkaXNjcmltaW5hdG9yLlwiKTtcblxuZXhwb3J0IHR5cGUgQXR0YWNobWVudFR5cGUgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50VHlwZVNjaGVtYT47XG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0gd2lkZW5lZCB3aXJlIHNjaGVtYXMgKyB0eXBlcyAtLS0tLS0tLS0tLS0tLS0tLS0gKi9cblxuLyoqXG4gKiBgR2VuaWVRdWVyeUF0dGFjaG1lbnRgIHdpZGVuZWQgd2l0aCB0aGUgYHRob3VnaHRzW11gIGZpZWxkIHRoZVxuICogR2VuaWUgd2lyZSBleHBvc2VzIGJ1dCB0aGUgU0RLIGRvZXNuJ3QgY3VycmVudGx5IHR5cGUuIEV2ZXJ5XG4gKiBvdGhlciBmaWVsZCAoYGRlc2NyaXB0aW9uYCwgYHF1ZXJ5YCwgYHN0YXRlbWVudF9pZGAsXG4gKiBgcXVlcnlfcmVzdWx0X21ldGFkYXRhYCwgYHRpdGxlYCwgYHBhcmFtZXRlcnNgLFxuICogYGxhc3RfdXBkYXRlZF90aW1lc3RhbXBgLCBgaWRgKSBmbG93cyB0aHJvdWdoIHZlcmJhdGltIGZyb21cbiAqIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEgPSBTREtHZW5pZVF1ZXJ5QXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICB0aG91Z2h0czogei5hcnJheShHZW5pZVRob3VnaHRTY2hlbWEpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBRdWVyeSBhdHRhY2htZW50IHdpZGVuZWQgd2l0aCBHZW5pZSdzIHN0cmVhbWVkIHJlYXNvbmluZyB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUXVlcnlBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWE+O1xuXG4vKipcbiAqIFB1cnBvc2UgYXR0YWNoZWQgdG8gYSBHZW5pZSB0ZXh0IHJlc3BvbnNlLlxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgRGF0YWJyaWNrcyBTREsgc2NoZW1hIGN1cnJlbnRseSBrbm93cyBvbmx5XG4gKiBgRk9MTE9XX1VQX1FVRVNUSU9OYCwgd2hpbGUgdGhlIGxpdmUgR2VuaWUgQVBJIGFsc28gZW1pdHNcbiAqIGBURVhUX0FUVEFDSE1FTlRfUFVSUE9TRV9BTlNXRVJgIGZvciB0aGUgcHJpbWFyeSBhbnN3ZXIgdGV4dC4gS2VlcCB0aGVcbiAqIGtub3duIHZhbHVlcyBkaXNjb3ZlcmFibGUgYW5kIGFjY2VwdCBmdXR1cmUgc3RyaW5nIHZhbHVlcyBzbyBhbiBhZGRpdGl2ZVxuICogc2VydmVyLXNpZGUgZW51bSBjaGFuZ2UgY2Fubm90IGludmFsaWRhdGUgYW4gb3RoZXJ3aXNlIGNvbXBsZXRlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVRleHRBdHRhY2htZW50UHVycG9zZVNjaGVtYSA9IHpcbiAgLnN0cmluZygpXG4gIC5kZXNjcmliZShcIkZvcndhcmQtY29tcGF0aWJsZSBzZW1hbnRpYyBwdXJwb3NlIGZvciBhIEdlbmllIHRleHQgYXR0YWNobWVudC5cIik7XG5cbmV4cG9ydCB0eXBlIEdlbmllVGV4dEF0dGFjaG1lbnRQdXJwb3NlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWE+O1xuXG4vKipcbiAqIFRleHQgYXR0YWNobWVudCB3aWRlbmVkIGZvciBmb3J3YXJkLWNvbXBhdGlibGUgcHVycG9zZSB2YWx1ZXMgYW5kIG9wdGlvbmFsXG4gKiBBZ2VudCBNb2RlIHRhYmxlIG1ldGFkYXRhLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYSA9IGRhc2hib2FyZHMudGV4dEF0dGFjaG1lbnRTY2hlbWEuZXh0ZW5kKHtcbiAgcHVycG9zZTogR2VuaWVUZXh0QXR0YWNobWVudFB1cnBvc2VTY2hlbWEub3B0aW9uYWwoKSxcbiAgbWV0YWRhdGE6IHoudW5rbm93bigpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJBZ2VudCBNb2RlIG1ldGFkYXRhIGF0dGFjaGVkIHRvIHRoaXMgdGV4dCByZXNwb25zZS5cIiksXG59KTtcbi8qKiBOYXJyYXRpdmUgdGV4dCBhdHRhY2htZW50LCBpbmNsdWRpbmcgaXRzIG9wdGlvbmFsIHNlbWFudGljIHB1cnBvc2UuICovXG5leHBvcnQgdHlwZSBHZW5pZVRleHRBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogVmlzdWFsaXphdGlvbiBHZW5pZSByZXF1ZXN0ZWQgZm9yIG9uZSBvZiBpdHMgcXVlcnkgcmVzdWx0cy4gR2VuaWUgc3RvcmVzIG9ubHlcbiAqIHRoZSB0aXRsZSBhbmQgdGhlIHF1ZXJ5IGF0dGFjaG1lbnQgaXQgY2hhcnRzOyB0aGUgY2xpZW50IGRyYXdzIHRoZSBjaGFydCBmcm9tXG4gKiB0aGF0IHF1ZXJ5J3Mgc3RhdGVtZW50IHJvd3MuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVZpekF0dGFjaG1lbnRTY2hlbWEgPSB6XG4gIC5vYmplY3Qoe1xuICAgIHRpdGxlOiB6LnN0cmluZygpLm9wdGlvbmFsKCkuZGVzY3JpYmUoXCJEaXNwbGF5IHRpdGxlIEdlbmllIGNob3NlIGZvciB0aGUgY2hhcnQuXCIpLFxuICAgIHF1ZXJ5X2F0dGFjaG1lbnRfaWQ6IHpcbiAgICAgIC5zdHJpbmcoKVxuICAgICAgLm9wdGlvbmFsKClcbiAgICAgIC5kZXNjcmliZShcImBhdHRhY2htZW50X2lkYCBvZiB0aGUgcXVlcnkgYXR0YWNobWVudCB3aG9zZSByb3dzIHRoZSBjaGFydCBwbG90cy5cIiksXG4gIH0pXG4gIC5kZXNjcmliZShcIkdlbmllIHZpc3VhbGl6YXRpb24gcmVxdWVzdCBvdmVyIG9uZSBxdWVyeSBhdHRhY2htZW50LlwiKTtcbi8qKiBHZW5pZSB2aXN1YWxpemF0aW9uIHJlcXVlc3Qgb3ZlciBvbmUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIEdlbmllVml6QXR0YWNobWVudCA9IHouaW5mZXI8dHlwZW9mIEdlbmllVml6QXR0YWNobWVudFNjaGVtYT47XG5cbi8qKlxuICogYEdlbmllQXR0YWNobWVudGAgd2l0aDpcbiAqXG4gKiAgIC0gYHF1ZXJ5YCByZS10eXBlZCB0byB0aGUgdGhvdWdodHMtYXdhcmVcbiAqICAgICB7QGxpbmsgR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWF9LlxuICogICAtIGBhdHRhY2htZW50X3R5cGVgIGRpc2NyaW1pbmF0b3IgbGl0ZXJhbFxuICogICAgICh7QGxpbmsgQXR0YWNobWVudFR5cGV9KSBzbyBjb25zdW1lcnMgY2FuIGBzd2l0Y2hcbiAqICAgICAoYXR0LmF0dGFjaG1lbnRfdHlwZSlgIHRvIG5hcnJvdyB3aGljaCBzdWItb2JqZWN0IGlzXG4gKiAgICAgcG9wdWxhdGVkLiBPcHRpb25hbCBvbiB0aGUgd2lyZSAoR2VuaWUgZG9lc24ndCBzZW5kIGl0KTtcbiAqICAgICBjYWxsZXJzIGNvbXB1dGUgaXQgd2l0aCB7QGxpbmsgZGV0ZWN0QXR0YWNobWVudFR5cGV9IHdoZW5cbiAqICAgICB0aGV5IHdhbnQgdGhlIGxpdGVyYWwgdXAtZnJvbnQuXG4gKlxuICogYHRleHRgIGlzIHJlLXR5cGVkIHRvIHRoZSBmb3J3YXJkLWNvbXBhdGlibGVcbiAqIHtAbGluayBHZW5pZVRleHRBdHRhY2htZW50U2NoZW1hfS4gYGF0dGFjaG1lbnRfaWRgIGFuZFxuICogYHN1Z2dlc3RlZF9xdWVzdGlvbnNgIHBhc3MgdGhyb3VnaCB1bmNoYW5nZWQuIGBhdHRhY2htZW50X2lkYCBpcyBnZW51aW5lbHlcbiAqIG9wdGlvbmFsIG9uIHRoZSB3aXJlOlxuICogdGhlIGZpcnN0IHRleHQgYXR0YWNobWVudCBHZW5pZSBlbWl0cyBwZXIgdHVybiAodGhlIFwibWFpblxuICogYW5zd2VyIHRleHRcIikgYXJyaXZlcyB3aXRoIG5vIGlkLCBvbmx5IHRoZSBmb2xsb3ctdXAgdGV4dFxuICogYXR0YWNobWVudCBnZXRzIG9uZS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmllQXR0YWNobWVudFNjaGVtYSA9IFNES0dlbmllQXR0YWNobWVudFNjaGVtYS5leHRlbmQoe1xuICBxdWVyeTogR2VuaWVRdWVyeUF0dGFjaG1lbnRTY2hlbWEub3B0aW9uYWwoKSxcbiAgdGV4dDogR2VuaWVUZXh0QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICB2aXo6IEdlbmllVml6QXR0YWNobWVudFNjaGVtYS5vcHRpb25hbCgpLFxuICBhdHRhY2htZW50X3R5cGU6IEF0dGFjaG1lbnRUeXBlU2NoZW1hLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIGF0dGFjaG1lbnQgd2l0aCBhbiBvcHRpb25hbCBjb21wdXRlZCBkaXNjcmltaW5hdG9yLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVBdHRhY2htZW50ID0gei5pbmZlcjx0eXBlb2YgR2VuaWVBdHRhY2htZW50U2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVNZXNzYWdlYCB3aWRlbmVkIHdpdGg6XG4gKlxuICogICAtIGBhdXRvX3JlZ2VuZXJhdGVfY291bnRgOiBudW1iZXIgc3RhbXBlZCBvbiBldmVyeSB3aXJlXG4gKiAgICAgbWVzc2FnZSB0aGF0IHRoZSBTREsgdHlwZSBvbWl0cyBhdCB2MC4xNy5cbiAqICAgLSBgYXR0YWNobWVudHNgOiByZS10eXBlZCB0byB0aGUgbG9jYWxcbiAqICAgICB7QGxpbmsgR2VuaWVBdHRhY2htZW50U2NoZW1hfSBzb1xuICogICAgIGBhdHRhY2htZW50LnF1ZXJ5Py50aG91Z2h0c2AgKGFuZCB0aGVcbiAqICAgICBgYXR0YWNobWVudF90eXBlYCBkaXNjcmltaW5hdG9yKSBpcyByZWFjaGFibGUgd2l0aG91dCBhXG4gKiAgICAgY2FzdC5cbiAqXG4gKiBFdmVyeSBvdGhlciBmaWVsZCAoYGlkYCwgYHNwYWNlX2lkYCwgYGNvbnZlcnNhdGlvbl9pZGAsXG4gKiBgdXNlcl9pZGAsIGBjcmVhdGVkX3RpbWVzdGFtcGAsIGBsYXN0X3VwZGF0ZWRfdGltZXN0YW1wYCxcbiAqIGBzdGF0dXNgLCBgY29udGVudGAsIGBtZXNzYWdlX2lkYCwgYHF1ZXJ5X3Jlc3VsdGAsIGBlcnJvcmAsXG4gKiBgZmVlZGJhY2tgKSBwYXNzZXMgdGhyb3VnaCBmcm9tIHRoZSBTREsgc2NoZW1hLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVNZXNzYWdlU2NoZW1hID0gU0RLR2VuaWVNZXNzYWdlU2NoZW1hLmV4dGVuZCh7XG4gIGF0dGFjaG1lbnRzOiB6LmFycmF5KEdlbmllQXR0YWNobWVudFNjaGVtYSkub3B0aW9uYWwoKSxcbiAgYXV0b19yZWdlbmVyYXRlX2NvdW50OiB6Lm51bWJlcigpLm9wdGlvbmFsKCksXG59KTtcbi8qKiBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IHdpZGVuZWQgd2l0aCB0eXBlZCBhdHRhY2htZW50cyBhbmQgcmVnZW5lcmF0aW9uIGNvdW50LiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVNZXNzYWdlID0gei5pbmZlcjx0eXBlb2YgR2VuaWVNZXNzYWdlU2NoZW1hPjtcblxuLyoqXG4gKiBEb21haW4gcHJvamVjdGlvbiBvZiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfSB0aGF0IGRyb3BzIGV2ZXJ5XG4gKiB0dXJuLWxldmVsIGZpZWxkIChgaWRgLCBgc3RhdHVzYCwgYGNyZWF0ZWRfdGltZXN0YW1wYCxcbiAqIGBxdWVyeV9yZXN1bHRgLCAuLi4pIGFuZCB5aWVsZHMganVzdCB0aGUgcmVzcG9uc2UgcGF5bG9hZCBhcyBhXG4gKiBmbGF0IGBHZW5pZUF0dGFjaG1lbnRbXWAuIFBhcnNlcyB0aGUgc2FtZSB3aXJlIHNoYXBlIGFzXG4gKiB7QGxpbmsgR2VuaWVNZXNzYWdlU2NoZW1hfTsgbWlzc2luZyBgYXR0YWNobWVudHNgIGRlZmF1bHRzIHRvXG4gKiBgW11gIHNvIHRoZSBvdXRwdXQgaXMgYWx3YXlzIGFuIGFycmF5LlxuICpcbiAqIFVzZSB3aGVuIGNvbnN1bWVycyBvbmx5IGNhcmUgYWJvdXQgdGhlIG1vZGVsJ3MgcmVzcG9uc2VcbiAqIGF0dGFjaG1lbnRzIGFuZCBub3QgdGhlIHN1cnJvdW5kaW5nIG1lc3NhZ2UgZW52ZWxvcGUuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZVJlc3BvbnNlU2NoZW1hID0gR2VuaWVNZXNzYWdlU2NoZW1hLnRyYW5zZm9ybSgobSkgPT4gbS5hdHRhY2htZW50cyA/PyBbXSk7XG4vKiogTm9ybWFsaXplZCBhdHRhY2htZW50IGFycmF5IGV4dHJhY3RlZCBmcm9tIGEgR2VuaWUgbWVzc2FnZSByZXNwb25zZS4gKi9cbmV4cG9ydCB0eXBlIEdlbmllUmVzcG9uc2UgPSB6LmluZmVyPHR5cGVvZiBHZW5pZVJlc3BvbnNlU2NoZW1hPjtcblxuLyoqXG4gKiBgR2VuaWVTcGFjZWAgd2lkZW5lZCB3aXRoIGFuIG9wdGlvbmFsIGBzZXJpYWxpemVkX3NwYWNlYCBmaWVsZFxuICogY2FycnlpbmcgYSBKU09OLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgc3BhY2UncyBmdWxsXG4gKiBkZWZpbml0aW9uIChjYXRhbG9ncywgc2NoZW1hcywgdGFibGVzLCBzYW1wbGUgcXVlc3Rpb25zLCBwcm9tcHRzLFxuICogZXRjLikgYXMgZXhwb3J0ZWQgYnkgdGhlIHdvcmtzcGFjZSBleHBvcnQgZW5kcG9pbnQuXG4gKlxuICogVGhlIGJhc2UgU0RLIHNoYXBlIChgZGVzY3JpcHRpb25gLCBgc3BhY2VfaWRgLCBgdGl0bGVgLFxuICogYHdhcmVob3VzZV9pZGApIGNvdmVycyB0aGUgZGlyZWN0b3J5LWxpc3Rpbmcgc3VyZmFjZSAtIGVub3VnaCB0b1xuICogcm91dGUgYSBjaGF0LiBgc2VyaWFsaXplZF9zcGFjZWAgaXMgb3B0LWluIHNvIGNhbGxlcnMgdGhhdCBuZWVkXG4gKiB0aGUgZnVsbCBzcGFjZSBzY2hlbWEgKGUuZy4gdG8gc2VlZCBhIHN5c3RlbSBwcm9tcHQgb3IgdG8gc2hpcFxuICogdGhlIGRlZmluaXRpb24gdG8gYW4gYWdlbnQpIGNhbiBhdHRhY2ggaXQgd2l0aG91dCBhIHNlY29uZCB0eXBlLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVTcGFjZVNjaGVtYSA9IFNES0dlbmllU3BhY2VTY2hlbWEuZXh0ZW5kKHtcbiAgc2VyaWFsaXplZF9zcGFjZTogelxuICAgIC5zdHJpbmcoKVxuICAgIC5vcHRpb25hbCgpXG4gICAgLmRlc2NyaWJlKFxuICAgICAgXCJUaGUgY29udGVudHMgb2YgdGhlIEdlbmllIFNwYWNlIGluIHNlcmlhbGl6ZWQgc3RyaW5nIGZvcm0uIFRoaXMgZmllbGQgaXMgZXhjbHVkZWQgaW4gTGlzdCBHZW5pZSBzcGFjZXMgcmVzcG9uc2VzLiBUaGlzIGZpZWxkIHByb3ZpZGVzIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEpTT04gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgc3BhY2UncyBsYXlvdXQgYW5kIGNvbXBvbmVudHMuXCIsXG4gICAgKSxcbn0pO1xuLyoqIEdlbmllIHNwYWNlIG1ldGFkYXRhIHdpdGggdGhlIGlkZW50aWZpZXJzIHJlcXVpcmVkIGJ5IGNoYXQgY29uc3VtZXJzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVTcGFjZSA9IHouaW5mZXI8dHlwZW9mIEdlbmllU3BhY2VTY2hlbWE+O1xuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gdGVybWluYWwgaGVscGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogVGVybWluYWwgR2VuaWUgbWVzc2FnZSBzdGF0dXNlcy4gVGhlIHBvbGxpbmcgbG9vcCBpbiB0aGUgY2hhdFxuICogZHJpdmVyIHN0b3BzIGFzIHNvb24gYXMgdGhlIGxhdGVzdCBtZXNzYWdlIGhhcyBvbmUgb2YgdGhlc2VcbiAqIHN0YXR1c2VzLlxuICovXG5leHBvcnQgY29uc3QgVEVSTUlOQUxfU1RBVFVTRVMgPSBbXCJDT01QTEVURURcIiwgXCJGQUlMRURcIiwgXCJDQU5DRUxMRURcIl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBUZXJtaW5hbFN0YXR1c1NjaGVtYSA9IHpcbiAgLmVudW0oVEVSTUlOQUxfU1RBVFVTRVMpXG4gIC5kZXNjcmliZShcIk1lc3NhZ2Ugc3RhdHVzIHRoYXQgZW5kcyBhIEdlbmllIHR1cm4gYW5kIHByb2R1Y2VzIGEgZmluYWwgcmVzdWx0IGV2ZW50LlwiKTtcblxuZXhwb3J0IHR5cGUgVGVybWluYWxTdGF0dXMgPSB6LmluZmVyPHR5cGVvZiBUZXJtaW5hbFN0YXR1c1NjaGVtYT47XG5cbi8qKiBOYXJyb3cgYE1lc3NhZ2VTdGF0dXMgfCB1bmRlZmluZWRgIHRvIGEge0BsaW5rIFRlcm1pbmFsU3RhdHVzfS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1Rlcm1pbmFsU3RhdHVzKHM6IE1lc3NhZ2VTdGF0dXMgfCB1bmRlZmluZWQpOiBzIGlzIFRlcm1pbmFsU3RhdHVzIHtcbiAgcmV0dXJuIHMgIT09IHVuZGVmaW5lZCAmJiAoVEVSTUlOQUxfU1RBVFVTRVMgYXMgcmVhZG9ubHkgc3RyaW5nW10pLmluY2x1ZGVzKHMpO1xufVxuXG4vKipcbiAqIENvbnZlcnQgYSByYXcgR2VuaWUgd2lyZSBzdGF0dXMgKGBGRVRDSElOR19NRVRBREFUQWAsXG4gKiBgQVNLSU5HX0FJYCwgYEVYRUNVVElOR19RVUVSWWAsIC4uLikgaW50byBhIHNob3J0LCBzZW50ZW5jZS1jYXNlZFxuICogbGFiZWwgc2FmZSB0byBkcm9wIGludG8gYSBVSSBwaWxsLiBLbm93biBzdGF0ZXMgZ2V0IGEgY3VyYXRlZFxuICogbGFiZWw7IHVua25vd24gc3RhdGVzIGZhbGwgYmFjayB0byBgc3RyaW5nVXRpbHMudG9rZW5pemVXaXRoT3B0aW9uc2BcbiAqIHNvIG5ldyBzdGF0ZXMgc3RpbGwgcmVuZGVyIGNsZWFubHkgd2l0aG91dCBjb2RlIGNoYW5nZXMuXG4gKlxuICogUHVyZSAobm8gTm9kZS1vbmx5IGRlcHMpLCBzYWZlIGZvciBicm93c2VyIGJ1bmRsZXMuIEJvdGggdGhlXG4gKiBHZW5pZSBhZ2VudCAoc2VydmVyKSBhbmQgYW55IFVJIHRoYXQgc3Vic2NyaWJlcyB0byBzdGF0dXMgZXZlbnRzXG4gKiBjYWxsIHRoaXMgc28gbGFiZWxzIHN0YXkgaW4gbG9jay1zdGVwIGFjcm9zcyB0aGUgd2lyZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGh1bWFuaXplU3RhdHVzKHN0YXR1czogTWVzc2FnZVN0YXR1cyk6IHN0cmluZyB7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBcIkZFVENISU5HX01FVEFEQVRBXCI6XG4gICAgICByZXR1cm4gXCJGZXRjaGluZyBtZXRhZGF0YVwiO1xuICAgIGNhc2UgXCJBU0tJTkdfQUlcIjpcbiAgICAgIHJldHVybiBcIkFza2luZyBHZW5pZVwiO1xuICAgIGNhc2UgXCJFWEVDVVRJTkdfUVVFUllcIjpcbiAgICAgIHJldHVybiBcIlJ1bm5pbmcgU1FMIHF1ZXJ5XCI7XG4gICAgY2FzZSBcIkZJTFRFUklOR19DT05URVhUXCI6XG4gICAgICByZXR1cm4gXCJGaWx0ZXJpbmcgY29udGV4dFwiO1xuICAgIGNhc2UgXCJQRU5ESU5HX1dBUkVIT1VTRVwiOlxuICAgICAgcmV0dXJuIFwiV2FpdGluZyBmb3Igd2FyZWhvdXNlXCI7XG4gICAgY2FzZSBcIkNPTVBMRVRFRFwiOlxuICAgICAgcmV0dXJuIFwiQ29tcGxldGVkXCI7XG4gICAgY2FzZSBcIkZBSUxFRFwiOlxuICAgICAgcmV0dXJuIFwiRmFpbGVkXCI7XG4gICAgY2FzZSBcIkNBTkNFTExFRFwiOlxuICAgICAgcmV0dXJuIFwiQ2FuY2VsbGVkXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnN0cmluZ1V0aWxzLnRva2VuaXplV2l0aE9wdGlvbnMoeyBjYXBpdGFsaXplOiB0cnVlLCBsb3dlckNhc2U6IHRydWUgfSwgc3RhdHVzKSxcbiAgICAgIF0uam9pbihcIiBcIik7XG4gIH1cbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gYXR0YWNobWVudCB0eXBlIGhlbHBlciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovXG5cbi8qKlxuICogSW5zcGVjdCBhIHtAbGluayBHZW5pZUF0dGFjaG1lbnR9IGFuZCByZXR1cm4gdGhlXG4gKiB7QGxpbmsgQXR0YWNobWVudFR5cGV9IG9mIHBheWxvYWQgaXQgY2Fycmllcy4gUmV0dXJucyB0aGUgZmlyc3RcbiAqIGtub3duIHN1Yi1vYmplY3QgdGhhdCdzIHByZXNlbnQ7IGlmIG5vbmUgb2YgdGhlIGtub3duIG9uZXMgYXJlXG4gKiBwb3B1bGF0ZWQsIGZhbGxzIGJhY2sgdG8gdGhlIGZpcnN0IG5vbi1ib29ra2VlcGluZyBrZXlcbiAqIChmb3J3YXJkLWNvbXBhdCBmb3IgdHlwZXMgd2UgZG9uJ3QgbW9kZWwgeWV0KSwgZWxzZSBgXCJ1bmtub3duXCJgLlxuICpcbiAqIEhvbm9ycyBhIHByZS1zZXQgYGF0dGFjaG1lbnRfdHlwZWAgaWYgb25lIGlzIGFscmVhZHkgb24gdGhlXG4gKiB2YWx1ZSwgc28gdGhpcyBpcyBpZGVtcG90ZW50IGFjcm9zcyByZS1kZXRlY3Rpb25zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGV0ZWN0QXR0YWNobWVudFR5cGUoYXR0OiBHZW5pZUF0dGFjaG1lbnQpOiBBdHRhY2htZW50VHlwZSB7XG4gIGlmIChhdHQuYXR0YWNobWVudF90eXBlKSByZXR1cm4gYXR0LmF0dGFjaG1lbnRfdHlwZTtcbiAgaWYgKGF0dC5xdWVyeSkgcmV0dXJuIFwicXVlcnlcIjtcbiAgaWYgKGF0dC50ZXh0KSByZXR1cm4gXCJ0ZXh0XCI7XG4gIGlmIChhdHQuc3VnZ2VzdGVkX3F1ZXN0aW9ucykgcmV0dXJuIFwic3VnZ2VzdGVkX3F1ZXN0aW9uc1wiO1xuICBpZiAoYXR0LnZpeikgcmV0dXJuIFwidml6XCI7XG4gIGZvciAoY29uc3QgayBvZiBPYmplY3Qua2V5cyhhdHQpKSB7XG4gICAgaWYgKGsgIT09IFwiYXR0YWNobWVudF9pZFwiICYmIGsgIT09IFwiYXR0YWNobWVudF90eXBlXCIpIHJldHVybiBrO1xuICB9XG4gIHJldHVybiBcInVua25vd25cIjtcbn1cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBHZW5pZUNoYXQgZXZlbnRzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqL1xuXG4vKipcbiAqIFdoZXJlIG9uIHRoZSB3aXJlIGFuIGV2ZW50IHdhcyBvYnNlcnZlZC4gU3ByZWFkIGludG8gZXZlcnlcbiAqIGF0dGFjaG1lbnQtc2NvcGVkIGV2ZW50IHBheWxvYWQgc28gc3Vic2NyaWJlcnMgY2FuIHJvdXRlLCBsb2csXG4gKiBvciBjb3JyZWxhdGUgd2l0aG91dCByZS13YWxraW5nIHRoZSBtZXNzYWdlLlxuICpcbiAqIEZpZWxkczpcbiAqICAgLSBgc3BhY2VfaWRgOiB0aGUgR2VuaWUgc3BhY2UgdGhlIGNvbnZlcnNhdGlvbiBsaXZlcyBpbi5cbiAqICAgLSBgY29udmVyc2F0aW9uX2lkYDogY29udmVyc2F0aW9uIGlkIG9uY2UgR2VuaWUgaGFzIGFzc2lnbmVkIG9uZS5cbiAqICAgLSBgbWVzc2FnZV9pZGA6IEdlbmllIG1lc3NhZ2UgaWQgZm9yIHRoZSBhY3RpdmUgdHVybi5cbiAqICAgLSBgYXR0YWNobWVudF9pZGA6IGF0dGFjaG1lbnQgdGhlIGV2ZW50IGNhbWUgZnJvbS4gT3B0aW9uYWxcbiAqICAgICBiZWNhdXNlIEdlbmllIHNvbWV0aW1lcyBlbWl0cyBhbiBhbm9ueW1vdXMgbWFpbi1hbnN3ZXJcbiAqICAgICBhdHRhY2htZW50IHdpdGhvdXQgYW4gaWQ7IHRob3NlIHN0aWxsIGdldCBldmVudHMsIGp1c3Qgd2l0aFxuICogICAgIGBhdHRhY2htZW50X2lkYCB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYSA9IHoub2JqZWN0KHtcbiAgc3BhY2VfaWQ6IHouc3RyaW5nKCksXG4gIGNvbnZlcnNhdGlvbl9pZDogei5zdHJpbmcoKS5vcHRpb25hbCgpLFxuICBtZXNzYWdlX2lkOiB6LnN0cmluZygpLm9wdGlvbmFsKCksXG4gIGF0dGFjaG1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIENvbnZlcnNhdGlvbiwgbWVzc2FnZSwgYW5kIGF0dGFjaG1lbnQgY29vcmRpbmF0ZXMgc2hhcmVkIGJ5IGF0dGFjaG1lbnQgZXZlbnRzLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0TG9jYXRpb24gPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYT47XG5cbi8qKlxuICogTGlmZWN5Y2xlIGV2ZW50OiB0aGUgcXVlc3Rpb24gdGhpcyB0dXJuIGlzIGFza2luZyBHZW5pZS4gRmlyZXNcbiAqIG9uY2UgcGVyIGBnZW5pZUV2ZW50Q2hhdGAgY2FsbCwgdGhlIGZpcnN0IHRpbWUgdGhlIHVuZGVybHlpbmdcbiAqIGBnZW5pZUNoYXRgIGxvb3AgeWllbGRzIGEgYEdlbmllTWVzc2FnZWAuIENhcnJpZXMgdGhlIHByb21wdFxuICogdGV4dCBHZW5pZSBlY2hvZWQgYmFjayBvbiBgbWVzc2FnZS5jb250ZW50YCBhbmQgdGhlIGFzc2lnbmVkXG4gKiBgbWVzc2FnZV9pZGAgc28gc3Vic2NyaWJlcnMgY2FuIGdyb3VwIGV2ZXJ5IHN1YnNlcXVlbnQgZXZlbnRcbiAqIGZvciB0aGlzIHR1cm4gdW5kZXIgb25lIHN0YWJsZSBrZXkuIGBjb252ZXJzYXRpb25faWRgIGlzXG4gKiBwb3B1bGF0ZWQgZm9yIGJvdGggb3BlbmluZyBhbmQgZm9sbG93LXVwIHR1cm5zIChHZW5pZSBhc3NpZ25zXG4gKiBpdCBvbiBgc3RhcnRDb252ZXJzYXRpb25gKS5cbiAqXG4gKiBEZWZlcnJlZCAoaW5zdGVhZCBvZiBmaXJlZCBzeW5jaHJvbm91c2x5IG9uIGVudHJ5KSBzbyB0aGVcbiAqIGBtZXNzYWdlX2lkYCBpcyBhdmFpbGFibGUgd2hlbiB0aGUgZXZlbnQgbGFuZHMgLSB0aGF0IG9uZSByb3VuZFxuICogdHJpcCBjb3N0cyB+MjAwbXMgYnV0IGxldHMgVUlzIHJlbmRlciBxdWVzdGlvbiAvIHRoaW5raW5nIC9cbiAqIHF1ZXJ5IC8gdGV4dCBhcyBhIHNpbmdsZSBncm91cGVkIGJsb2NrIHBlciBHZW5pZSBjYWxsIGluc3RlYWRcbiAqIG9mIGEgZmxhdCBzdHJlYW0uXG4gKlxuICogYGF0dGFjaG1lbnRfaWRgIGlzIGludGVudGlvbmFsbHkgYWJzZW50IC0gcXVlc3Rpb25zIGFyZSB0dXJuXG4gKiBzY29wZWQsIG5vdCBhdHRhY2htZW50IHNjb3BlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInF1ZXN0aW9uXCIpLFxuICBjb250ZW50OiB6LnN0cmluZygpLFxufSk7XG4vKiogSW5pdGlhbCBldmVudCBjYXJyeWluZyB0aGUgdXNlcidzIHF1ZXN0aW9uIGFmdGVyIEdlbmllIGFzc2lnbnMgYSBtZXNzYWdlIGlkLiAqL1xuZXhwb3J0IHR5cGUgUXVlc3Rpb25FdmVudCA9IHouaW5mZXI8dHlwZW9mIFF1ZXN0aW9uRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIExpZmVjeWNsZSBldmVudDogcmF3IGBHZW5pZU1lc3NhZ2VgIHNuYXBzaG90IGZvciB0aGUgYWN0aXZlXG4gKiB0dXJuLiBGaXJlcyBvbmNlIHBlciBwb2xsIHlpZWxkLiBUaGUgZnVsbCBtZXNzYWdlIHNoYXBlXG4gKiAoaW5jbHVkaW5nIHRoZSB3aWRlbmVkIHRob3VnaHQgLyByZWdlbiAvIGF0dGFjaG1lbnQtdHlwZVxuICogZmllbGRzKSBpcyBleHBvc2VkIGlubGluZSBhcyBgbWVzc2FnZWA7IGNvbnN1bWVycyBuYXJyb3cgb25cbiAqIGBldmVudC50eXBlID09PSBcIm1lc3NhZ2VcImAgYW5kIHJlYWNoIGZvciBgZXZlbnQubWVzc2FnZWAuXG4gKi9cbmV4cG9ydCBjb25zdCBNZXNzYWdlRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcIm1lc3NhZ2VcIiksXG4gIG1lc3NhZ2U6IEdlbmllTWVzc2FnZVNjaGVtYSxcbn0pO1xuLyoqIFJhdyBHZW5pZSBtZXNzYWdlIHNuYXBzaG90IGVtaXR0ZWQgb24gZXZlcnkgcG9sbCBpdGVyYXRpb24uICovXG5leHBvcnQgdHlwZSBNZXNzYWdlRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBNZXNzYWdlRXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIFRvcC1sZXZlbCBgbWVzc2FnZS5zdGF0dXNgIHRyYW5zaXRpb25lZC4gRmlyZXMgZm9yIGV2ZXJ5XG4gKiBkaXN0aW5jdCBzdGF0dXMgc2VlbiBvbiB0aGUgd2lyZSAoZS5nLiBgU1VCTUlUVEVEYCAtPlxuICogYEZJTFRFUklOR19DT05URVhUYCAtPiBgQVNLSU5HX0FJYCAtPiBgUEVORElOR19XQVJFSE9VU0VgIC0+XG4gKiBgQVNLSU5HX0FJYCAtPiBgQ09NUExFVEVEYCkuXG4gKi9cbmV4cG9ydCBjb25zdCBTdGF0dXNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLm9taXQoe1xuICBhdHRhY2htZW50X2lkOiB0cnVlLFxufSkuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwic3RhdHVzXCIpLFxuICBzdGF0dXM6IE1lc3NhZ2VTdGF0dXNTY2hlbWEsXG4gIHByZXZpb3VzX3N0YXR1czogTWVzc2FnZVN0YXR1c1NjaGVtYS5vcHRpb25hbCgpLFxufSk7XG4vKiogTWVzc2FnZS1zdGF0dXMgdHJhbnNpdGlvbiwgaW5jbHVkaW5nIHRoZSBwcmV2aW91cyBzdGF0dXMgd2hlbiBhdmFpbGFibGUuICovXG5leHBvcnQgdHlwZSBTdGF0dXNFdmVudCA9IHouaW5mZXI8dHlwZW9mIFN0YXR1c0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIG5ldyBhdHRhY2htZW50IHNsb3QgYXBwZWFyZWQgaW4gYG1lc3NhZ2UuYXR0YWNobWVudHNbXWAuXG4gKiBGaXJlcyBleGFjdGx5IG9uY2UgcGVyIGF0dGFjaG1lbnQgKG1hdGNoZWQgYnkgYGF0dGFjaG1lbnRfaWRgLFxuICogcG9zaXRpb25hbGx5IGZvciBhbm9ueW1vdXMgYXR0YWNobWVudHMpIHRoZSBmaXJzdCB0aW1lIHdlIHNlZVxuICogaXQuIFRoZSBzbG90J3MgcGF5bG9hZCBraW5kIGxhbmRzIGluIGBhdHRhY2htZW50X3R5cGVgIHNvIHRoZVxuICogb3V0ZXIgYHR5cGVgIGRpc2NyaW1pbmF0b3Igc3RheXMgdW5hbWJpZ3VvdXMuXG4gKi9cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJhdHRhY2htZW50XCIpLFxuICBpbmRleDogei5udW1iZXIoKSxcbiAgYXR0YWNobWVudF90eXBlOiBBdHRhY2htZW50VHlwZVNjaGVtYSxcbn0pO1xuLyoqIEV2ZW50IGVtaXR0ZWQgd2hlbiBhIG5ldyB0eXBlZCBhdHRhY2htZW50IGFwcGVhcnMgb24gdGhlIG1lc3NhZ2UuICovXG5leHBvcnQgdHlwZSBBdHRhY2htZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBBdHRhY2htZW50RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIEEgbmV3IHJlYXNvbmluZyBzdGVwIGFwcGVhcmVkIG9uIGEgcXVlcnkgYXR0YWNobWVudFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS50aG91Z2h0c1tpXWApLiBEZWR1cGxpY2F0ZWQgcGVyXG4gKiBgKHRob3VnaHRfdHlwZSwgY29udGVudClgIHR1cGxlIHdpdGhpbiBhbiBhdHRhY2htZW50IHNvXG4gKiBzdWJzY3JpYmVycyBkb24ndCBzZWUgdGhlIHNhbWUgdGhvdWdodCBtdWx0aXBsZSB0aW1lcyAtIEdlbmllXG4gKiBzb21ldGltZXMgbXV0YXRlcyBleGlzdGluZyB0aG91Z2h0IHNsb3RzIGluIHBsYWNlLCBzbyB0aGUgZGlmZlxuICogaXMgdmFsdWUtYmFzZWQgcmF0aGVyIHRoYW4gcG9zaXRpb25hbC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRoaW5raW5nRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJ0aGlua2luZ1wiKSxcbiAgdGV4dDogei5zdHJpbmcoKSxcbiAgdGhvdWdodF90eXBlOiBHZW5pZVRob3VnaHRUeXBlU2NoZW1hLFxufSk7XG4vKiogSW5jcmVtZW50YWwgR2VuaWUgcmVhc29uaW5nIGV2ZW50IGRlcml2ZWQgZnJvbSBxdWVyeSB0aG91Z2h0cy4gKi9cbmV4cG9ydCB0eXBlIFRoaW5raW5nRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBUaGlua2luZ0V2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBBIHRleHQtYXR0YWNobWVudCBgY29udGVudGAgZmllbGQgYXBwZWFyZWQgb3IgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS50ZXh0LmNvbnRlbnRgKS4gRmlyZXMgd2hlbmV2ZXIgdGhlIHNuYXBzaG90XG4gKiB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIHByZXZpb3VzIG9uZSBmb3IgdGhlIHNhbWUgYXR0YWNobWVudC5cbiAqL1xuZXhwb3J0IGNvbnN0IFRleHRFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInRleHRcIiksXG4gIHRleHQ6IHouc3RyaW5nKCksXG59KTtcbi8qKiBOYXJyYXRpdmUgYW5zd2VyIGZyYWdtZW50IGVtaXR0ZWQgZnJvbSBhIEdlbmllIHRleHQgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFRleHRFdmVudCA9IHouaW5mZXI8dHlwZW9mIFRleHRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogU1FMIHdhcyBmaW5hbGl6ZWQgb24gYSBxdWVyeSBhdHRhY2htZW50XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnF1ZXJ5LnF1ZXJ5YCkuIEZpcmVzIG9uY2Ugd2hlbiB0aGUgU1FMIHN0cmluZ1xuICogdHJhbnNpdGlvbnMgZnJvbSB1bmRlZmluZWQgdG8gZGVmaW5lZCwgYW5kIGFnYWluIGlmIEdlbmllIGV2ZXJcbiAqIHJld3JpdGVzIGl0LiBgdGl0bGVgIGFuZCBgZGVzY3JpcHRpb25gIGFyZSBkZW5vcm1hbGlzZWQgb2ZmIHRoZVxuICogYXR0YWNobWVudCdzIGBxdWVyeS50aXRsZWAgLyBgcXVlcnkuZGVzY3JpcHRpb25gIHNvIGNvbnN1bWVyc1xuICogY2FuIGxhYmVsIHRoZSBTUUwgcGlsbCB3aXRob3V0IHJlLXdhbGtpbmcgdGhlIG1lc3NhZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBRdWVyeUV2ZW50U2NoZW1hID0gR2VuaWVDaGF0TG9jYXRpb25TY2hlbWEuZXh0ZW5kKHtcbiAgdHlwZTogei5saXRlcmFsKFwicXVlcnlcIiksXG4gIHNxbDogei5zdHJpbmcoKSxcbiAgdGl0bGU6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbiAgZGVzY3JpcHRpb246IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIEZpbmFsaXplZCBvciByZXdyaXR0ZW4gU1FMIGVtaXR0ZWQgZm9yIGEgR2VuaWUgcXVlcnkgYXR0YWNobWVudC4gKi9cbmV4cG9ydCB0eXBlIFF1ZXJ5RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBRdWVyeUV2ZW50U2NoZW1hPjtcblxuLyoqXG4gKiBTUUwgd2FzIHN1Ym1pdHRlZCB0byBhIFNRTCB3YXJlaG91c2UgYW5kIGEgc3RhdGVtZW50IGlkIHdhc1xuICogYXNzaWduZWQgKGBhdHRhY2htZW50c1tpXS5xdWVyeS5zdGF0ZW1lbnRfaWRgKS4gRmlyZXMgd2hlbiB0aGVcbiAqIHN0YXRlbWVudCBpZCB0cmFuc2l0aW9ucyBmcm9tIHVuZGVmaW5lZCB0byBkZWZpbmVkIC0gdGhpcyBpcyB0aGVcbiAqIHBvaW50IGF0IHdoaWNoIGBjbGllbnQuc3RhdGVtZW50RXhlY3V0aW9uLmdldFN0YXRlbWVudCh7IHN0YXRlbWVudF9pZCB9KWBcbiAqIGJlY29tZXMgYSB2YWxpZCBjYWxsLlxuICovXG5leHBvcnQgY29uc3QgU3RhdGVtZW50RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJzdGF0ZW1lbnRcIiksXG4gIHN0YXRlbWVudF9pZDogei5zdHJpbmcoKSxcbn0pO1xuLyoqIEV2ZW50IGluZGljYXRpbmcgdGhhdCBhIHF1ZXJ5IHJlY2VpdmVkIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IGlkLiAqL1xuZXhwb3J0IHR5cGUgU3RhdGVtZW50RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdGF0ZW1lbnRFdmVudFNjaGVtYT47XG5cbi8qKlxuICogUm93IGNvdW50IGZvciBhIHF1ZXJ5IGF0dGFjaG1lbnQncyByZXN1bHQgY2hhbmdlZFxuICogKGBhdHRhY2htZW50c1tpXS5xdWVyeS5xdWVyeV9yZXN1bHRfbWV0YWRhdGEucm93X2NvdW50YCkuIEZpcmVzXG4gKiBvbiBldmVyeSBjaGFuZ2UsIGluY2x1ZGluZyB0aGUgaW5pdGlhbCBgdW5kZWZpbmVkIC0+IDBgIGFuZCB0aGVcbiAqIGxhdGVyIGAwIC0+IE5gIG9uY2UgdGhlIHdhcmVob3VzZSBmaW5pc2hlcyBleGVjdXRpb24uXG4gKi9cbmV4cG9ydCBjb25zdCBSb3dzRXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5leHRlbmQoe1xuICB0eXBlOiB6LmxpdGVyYWwoXCJyb3dzXCIpLFxuICByb3dfY291bnQ6IHoubnVtYmVyKCksXG4gIHByZXZpb3VzX3Jvd19jb3VudDogei5udW1iZXIoKS5vcHRpb25hbCgpLFxuICBzdGF0ZW1lbnRfaWQ6IHouc3RyaW5nKCkub3B0aW9uYWwoKSxcbn0pO1xuLyoqIFJvdy1jb3VudCB0cmFuc2l0aW9uIGZvciBhIEdlbmllIHF1ZXJ5IHJlc3VsdC4gKi9cbmV4cG9ydCB0eXBlIFJvd3NFdmVudCA9IHouaW5mZXI8dHlwZW9mIFJvd3NFdmVudFNjaGVtYT47XG5cbi8qKlxuICogR2VuaWUgcHJvZHVjZWQgYSBmb2xsb3ctdXAgc3VnZ2VzdGVkLXF1ZXN0aW9ucyBsaXN0XG4gKiAoYGF0dGFjaG1lbnRzW2ldLnN1Z2dlc3RlZF9xdWVzdGlvbnMucXVlc3Rpb25zW11gKS4gRmlyZXMgb25jZVxuICogd2hlbiB0aGUgbGlzdCBhcHBlYXJzLCBhbmQgYWdhaW4gaWYgR2VuaWUgcmV3cml0ZXMgaXQuXG4gKi9cbmV4cG9ydCBjb25zdCBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYSA9IEdlbmllQ2hhdExvY2F0aW9uU2NoZW1hLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInN1Z2dlc3RlZF9xdWVzdGlvbnNcIiksXG4gIHF1ZXN0aW9uczogei5hcnJheSh6LnN0cmluZygpKSxcbn0pO1xuLyoqIEZvbGxvdy11cCBxdWVzdGlvbiBsaXN0IGVtaXR0ZWQgd2hlbiBHZW5pZSBhZGRzIG9yIHJld3JpdGVzIHN1Z2dlc3Rpb25zLiAqL1xuZXhwb3J0IHR5cGUgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnQgPSB6LmluZmVyPHR5cGVvZiBTdWdnZXN0ZWRRdWVzdGlvbnNFdmVudFNjaGVtYT47XG5cbi8qKlxuICogVGhlIGFjdGl2ZSB0dXJuIHJlYWNoZWQgYSB0ZXJtaW5hbCBzdGF0dXMuIEFsd2F5cyBmaXJlcyBvbmNlXG4gKiBwZXIgdHVybiAoaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRlcm1pbmFsIGBtZXNzYWdlYCBldmVudCkuXG4gKiBDYXJyaWVzIHRoZSBmaW5hbCBgR2VuaWVNZXNzYWdlYCBzbmFwc2hvdCBpbmxpbmUgc28gc3Vic2NyaWJlcnNcbiAqIGRvbid0IG5lZWQgdG8ga2VlcCB0aGVpciBvd24gY29weSBvZiB0aGUgbGFzdCBtZXNzYWdlLlxuICovXG5leHBvcnQgY29uc3QgUmVzdWx0RXZlbnRTY2hlbWEgPSBHZW5pZUNoYXRMb2NhdGlvblNjaGVtYS5vbWl0KHtcbiAgYXR0YWNobWVudF9pZDogdHJ1ZSxcbn0pLmV4dGVuZCh7XG4gIHR5cGU6IHoubGl0ZXJhbChcInJlc3VsdFwiKSxcbiAgc3RhdHVzOiBUZXJtaW5hbFN0YXR1c1NjaGVtYSxcbiAgbWVzc2FnZTogR2VuaWVNZXNzYWdlU2NoZW1hLFxufSk7XG4vKiogRmluYWwgZXZlbnQgZm9yIGEgR2VuaWUgdHVybiwgY2FycnlpbmcgaXRzIHRlcm1pbmFsIHN0YXR1cyBhbmQgbWVzc2FnZSBzbmFwc2hvdC4gKi9cbmV4cG9ydCB0eXBlIFJlc3VsdEV2ZW50ID0gei5pbmZlcjx0eXBlb2YgUmVzdWx0RXZlbnRTY2hlbWE+O1xuXG4vKipcbiAqIERpc2NyaW1pbmF0ZWQgdW5pb24geWllbGRlZCBieSBgZ2VuaWVFdmVudENoYXRgLiBFYWNoIHZhcmlhbnRcbiAqIGlzIGEgc2luZ2xlIGZsYXQgb2JqZWN0IHdpdGggYHR5cGVgIGFzIHRoZSBkaXNjcmltaW5hdG9yIGFuZFxuICogdGhlIHBheWxvYWQgZmllbGRzIGhvaXN0ZWQgZGlyZWN0bHkgdG8gdGhlIHRvcCBsZXZlbCAtIG5vXG4gKiBgcGF5bG9hZGAgd3JhcHBlci4gQ29uc3VtZXJzIG5hcnJvdyBvbiBgdHlwZWAgYW5kIHJlYWQgZmllbGRzXG4gKiBpbmxpbmU6XG4gKlxuICogQGV4YW1wbGVcbiAqIGZvciBhd2FpdCAoY29uc3QgZXZlbnQgb2YgZ2VuaWVFdmVudENoYXQoc3BhY2VJZCwgXCJUb3Agc3RvcmVzP1wiKSkge1xuICogICBzd2l0Y2ggKGV2ZW50LnR5cGUpIHtcbiAqICAgICBjYXNlIFwidGhpbmtpbmdcIjpcbiAqICAgICAgIGNvbnNvbGUubG9nKGV2ZW50LnRob3VnaHRfdHlwZSwgZXZlbnQudGV4dCk7XG4gKiAgICAgICBicmVhaztcbiAqICAgICBjYXNlIFwicmVzdWx0XCI6XG4gKiAgICAgICBjb25zb2xlLmxvZyhcImRvbmU6XCIsIGV2ZW50LnN0YXR1cyk7XG4gKiAgICAgICBicmVhaztcbiAqICAgfVxuICogfVxuICpcbiAqIFN0cmVhbSBvcmRlciBwZXIgdHVybjpcbiAqXG4gKiAgIDEuIGBxdWVzdGlvbmAsIGVtaXR0ZWQgd2l0aCB0aGUgZmlyc3QgYG1lc3NhZ2VgIHlpZWxkIChkZWZlcnJlZCBzb1xuICogICAgICB0aGUgYXNzaWduZWQgYG1lc3NhZ2VfaWRgIGlzIGF2YWlsYWJsZSksIGNhcnJ5aW5nIHRoZSBwcm9tcHRcbiAqICAgICAgdGhpcyB0dXJuIHNlbnQgdG8gR2VuaWUuXG4gKiAgIDIuIGBtZXNzYWdlYCBmb3IgZXZlcnkgcG9sbCB5aWVsZCAocmF3IGBHZW5pZU1lc3NhZ2VgIG9uXG4gKiAgICAgIGBldmVudC5tZXNzYWdlYCkuXG4gKiAgIDMuIEFueSBkZXJpdmVkIGV2ZW50cyB0aGUgc25hcHNob3QgZGlmZiBwcm9kdWNlZCAoYHN0YXR1c2AsXG4gKiAgICAgIGBhdHRhY2htZW50YCwgYHRoaW5raW5nYCwgYHRleHRgLCBgcXVlcnlgLCBgc3RhdGVtZW50YCxcbiAqICAgICAgYHJvd3NgLCBgc3VnZ2VzdGVkX3F1ZXN0aW9uc2ApIGluIHRoYXQgZml4ZWQgb3JkZXIuXG4gKiAgIDQuIE9uIHRoZSB0ZXJtaW5hbCBzbmFwc2hvdCwgYSBmaW5hbCBgcmVzdWx0YCBldmVudC5cbiAqXG4gKiBFcnJvcnMgcHJvcGFnYXRlIHZpYSB0aGUgZ2VuZXJhdG9yIHRocm93aW5nIChgdHJ5YC9gY2F0Y2hgIHRoZVxuICogYGZvciBhd2FpdGApLCBub3QgdmlhIGFuIGBlcnJvcmAgdmFyaWFudCBvbiB0aGlzIHVuaW9uLlxuICovXG5leHBvcnQgY29uc3QgR2VuaWVDaGF0RXZlbnRTY2hlbWEgPSB6LmRpc2NyaW1pbmF0ZWRVbmlvbihcInR5cGVcIiwgW1xuICBRdWVzdGlvbkV2ZW50U2NoZW1hLFxuICBNZXNzYWdlRXZlbnRTY2hlbWEsXG4gIFN0YXR1c0V2ZW50U2NoZW1hLFxuICBBdHRhY2htZW50RXZlbnRTY2hlbWEsXG4gIFRoaW5raW5nRXZlbnRTY2hlbWEsXG4gIFRleHRFdmVudFNjaGVtYSxcbiAgUXVlcnlFdmVudFNjaGVtYSxcbiAgU3RhdGVtZW50RXZlbnRTY2hlbWEsXG4gIFJvd3NFdmVudFNjaGVtYSxcbiAgU3VnZ2VzdGVkUXVlc3Rpb25zRXZlbnRTY2hlbWEsXG4gIFJlc3VsdEV2ZW50U2NoZW1hLFxuXSk7XG4vKiogT3JkZXJlZCBldmVudCB1bmlvbiB5aWVsZGVkIGJ5IGBnZW5pZUV2ZW50Q2hhdGA7IGZhaWx1cmVzIGFyZSB0aHJvd24sIG5vdCBlbWl0dGVkLiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnQgPSB6LmluZmVyPHR5cGVvZiBHZW5pZUNoYXRFdmVudFNjaGVtYT47XG5cbi8qKiBEaXNjcmltaW5hdG9yIHR5cGUgZm9yIHtAbGluayBHZW5pZUNoYXRFdmVudH0uICovXG5leHBvcnQgdHlwZSBHZW5pZUNoYXRFdmVudFR5cGUgPSBHZW5pZUNoYXRFdmVudFtcInR5cGVcIl07XG5cbi8qKlxuICogRmllbGQgc2V0IGZvciBhIGdpdmVuIHtAbGluayBHZW5pZUNoYXRFdmVudFR5cGV9IC0gdGhlIHZhcmlhbnRcbiAqIHdpdGggdGhlIGB0eXBlYCBkaXNjcmltaW5hdG9yIHN0cmlwcGVkLiBVc2VkIGJ5IGRldGVjdG9ycyBpblxuICogYGV2ZW50LnRzYCBzbyBlYWNoIGRldGVjdG9yIHJldHVybnMganVzdCB0aGUgcGF5bG9hZCBmaWVsZHMgYW5kXG4gKiB0aGUgb3JjaGVzdHJhdG9yIHN0YW1wcyBgdHlwZWAgYXQgeWllbGQgdGltZS5cbiAqL1xuZXhwb3J0IHR5cGUgR2VuaWVDaGF0RXZlbnRGaWVsZHM8VCBleHRlbmRzIEdlbmllQ2hhdEV2ZW50VHlwZT4gPSBPbWl0PFxuICBFeHRyYWN0PEdlbmllQ2hhdEV2ZW50LCB7IHR5cGU6IFQgfT4sXG4gIFwidHlwZVwiXG4+O1xuIl19
|
package/package.json
CHANGED
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
"typescript": "^5.9.3"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@dbx-tools/shared-core": "^0.9.
|
|
26
|
+
"@dbx-tools/shared-core": "^0.9.131",
|
|
27
27
|
"zod": "4.3.6"
|
|
28
28
|
},
|
|
29
29
|
"main": "./lib/index.js",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"./package.json": "./package.json"
|
|
61
61
|
}
|
|
62
62
|
},
|
|
63
|
-
"version": "0.9.
|
|
63
|
+
"version": "0.9.131",
|
|
64
64
|
"types": "./lib/index.d.ts",
|
|
65
65
|
"dbxToolsConfig": {
|
|
66
66
|
"tags": [
|
package/src/agent-mode.ts
CHANGED
|
@@ -36,10 +36,27 @@ export const GenieAgentOutputItemSchema = z
|
|
|
36
36
|
arguments: z.string().optional(),
|
|
37
37
|
output: z.string().optional(),
|
|
38
38
|
status: z.string().optional(),
|
|
39
|
+
role: z.string().optional(),
|
|
39
40
|
content: z.array(GenieAgentContentSchema).optional(),
|
|
41
|
+
metadata: z.unknown().optional(),
|
|
42
|
+
created_at: z.number().optional(),
|
|
40
43
|
})
|
|
41
44
|
.loose();
|
|
42
45
|
|
|
46
|
+
/** One page of an Agent Mode conversation's item history. */
|
|
47
|
+
export const GenieAgentConversationItemsSchema = z
|
|
48
|
+
.object({
|
|
49
|
+
data: z.array(GenieAgentOutputItemSchema).describe("Conversation items, oldest first."),
|
|
50
|
+
has_more: z.boolean().optional().describe("Whether another page follows `last_id`."),
|
|
51
|
+
last_id: z.string().optional().describe("Item id that the next page starts after."),
|
|
52
|
+
status: z.string().optional().describe("Current status of the conversation's latest response."),
|
|
53
|
+
})
|
|
54
|
+
.loose()
|
|
55
|
+
.describe("Page of Agent Mode conversation items.");
|
|
56
|
+
|
|
57
|
+
/** Validated Agent Mode conversation item page. */
|
|
58
|
+
export type GenieAgentConversationItems = z.infer<typeof GenieAgentConversationItemsSchema>;
|
|
59
|
+
|
|
43
60
|
/** Genie Agent Mode response carried by lifecycle events. */
|
|
44
61
|
export const GenieAgentResponseSchema = z
|
|
45
62
|
.object({
|
|
@@ -142,19 +159,95 @@ export function projectAgentModeMessage(
|
|
|
142
159
|
: typeof response.error === "string"
|
|
143
160
|
? response.error
|
|
144
161
|
: undefined;
|
|
162
|
+
const messageId = items.map(itemMessageId).find((id) => id !== undefined) ?? response.id;
|
|
145
163
|
return GenieMessageSchema.parse({
|
|
146
|
-
id:
|
|
147
|
-
message_id:
|
|
164
|
+
id: messageId,
|
|
165
|
+
message_id: messageId,
|
|
148
166
|
space_id: spaceId,
|
|
149
167
|
conversation_id: response.conversation_id ?? "",
|
|
150
168
|
content,
|
|
151
169
|
status: agentModeStatus(response.status, items),
|
|
152
|
-
attachments: items.flatMap(itemAttachments),
|
|
170
|
+
attachments: withStatementIds(items.flatMap(itemAttachments), items),
|
|
153
171
|
...(response.created_at !== undefined ? { created_timestamp: response.created_at } : {}),
|
|
154
172
|
...(errorMessage ? { error: { error: errorMessage } } : {}),
|
|
155
173
|
});
|
|
156
174
|
}
|
|
157
175
|
|
|
176
|
+
/**
|
|
177
|
+
* Project an Agent Mode conversation's item history onto one Genie message per
|
|
178
|
+
* turn. Items are grouped by their `metadata.message_id`; each turn's user
|
|
179
|
+
* `message` item supplies the question.
|
|
180
|
+
*/
|
|
181
|
+
export function projectAgentModeConversation(
|
|
182
|
+
spaceId: string,
|
|
183
|
+
conversationId: string,
|
|
184
|
+
items: GenieAgentOutputItem[],
|
|
185
|
+
status = "completed",
|
|
186
|
+
): GenieMessage[] {
|
|
187
|
+
const turns: Array<{
|
|
188
|
+
messageId: string;
|
|
189
|
+
question: GenieAgentOutputItem;
|
|
190
|
+
items: GenieAgentOutputItem[];
|
|
191
|
+
}> = [];
|
|
192
|
+
let current: (typeof turns)[number] | undefined;
|
|
193
|
+
for (const item of items) {
|
|
194
|
+
if (item.type === "message" && item.role === "user") {
|
|
195
|
+
const messageId =
|
|
196
|
+
itemMessageId(item) ??
|
|
197
|
+
(item.id?.endsWith("_input") ? item.id.slice(0, -"_input".length) : item.id);
|
|
198
|
+
if (!messageId) continue;
|
|
199
|
+
current = { messageId, question: item, items: [] };
|
|
200
|
+
turns.push(current);
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
current?.items.push(item);
|
|
204
|
+
}
|
|
205
|
+
return turns.map((turn, index) => {
|
|
206
|
+
const failed = turn.items.some((item) => item.status === "failed");
|
|
207
|
+
const turnStatus = failed ? "failed" : index === turns.length - 1 ? status : "completed";
|
|
208
|
+
return projectAgentModeMessage(
|
|
209
|
+
spaceId,
|
|
210
|
+
contentText(turn.question.content, "input_text").join("\n"),
|
|
211
|
+
{
|
|
212
|
+
id: turn.messageId,
|
|
213
|
+
status: turnStatus,
|
|
214
|
+
conversation_id: conversationId,
|
|
215
|
+
...(turn.question.created_at !== undefined ? { created_at: turn.question.created_at } : {}),
|
|
216
|
+
},
|
|
217
|
+
turn.items,
|
|
218
|
+
);
|
|
219
|
+
});
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
function itemMetadata(item: GenieAgentOutputItem): Record<string, unknown> | undefined {
|
|
223
|
+
return object.isRecord(item.metadata) ? item.metadata : undefined;
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function itemMessageId(item: GenieAgentOutputItem): string | undefined {
|
|
227
|
+
const messageId = itemMetadata(item)?.message_id;
|
|
228
|
+
return typeof messageId === "string" ? messageId : undefined;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/** Copy each query output's `statement_id` onto the query attachment it answers. */
|
|
232
|
+
function withStatementIds(
|
|
233
|
+
attachments: GenieAttachment[],
|
|
234
|
+
items: GenieAgentOutputItem[],
|
|
235
|
+
): GenieAttachment[] {
|
|
236
|
+
const statements = new Map<string, string>();
|
|
237
|
+
for (const item of items) {
|
|
238
|
+
const statementId = itemMetadata(item)?.statement_id;
|
|
239
|
+
if (item.type === "function_call_output" && item.call_id && typeof statementId === "string") {
|
|
240
|
+
statements.set(item.call_id, statementId);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return attachments.map((attachment) => {
|
|
244
|
+
const statementId = attachment.query && statements.get(attachment.attachment_id ?? "");
|
|
245
|
+
return statementId && attachment.query
|
|
246
|
+
? { ...attachment, query: { ...attachment.query, statement_id: statementId } }
|
|
247
|
+
: attachment;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
|
|
158
251
|
function agentModeStatus(value: string, items: GenieAgentOutputItem[]): GenieMessage["status"] {
|
|
159
252
|
if (value === "completed") return "COMPLETED";
|
|
160
253
|
if (value === "failed") return "FAILED";
|
|
@@ -177,6 +270,7 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
177
270
|
: [{ attachment_id: id, attachment_type: "query", query: { id, thoughts } }];
|
|
178
271
|
}
|
|
179
272
|
if (item.type === "function_call") {
|
|
273
|
+
const callId = item.call_id ?? item.id;
|
|
180
274
|
const argumentsValue = json.parseRecord(item.arguments);
|
|
181
275
|
const query =
|
|
182
276
|
typeof argumentsValue?.sql === "string"
|
|
@@ -188,10 +282,10 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
188
282
|
return query
|
|
189
283
|
? [
|
|
190
284
|
{
|
|
191
|
-
attachment_id:
|
|
285
|
+
attachment_id: callId,
|
|
192
286
|
attachment_type: "query",
|
|
193
287
|
query: {
|
|
194
|
-
id,
|
|
288
|
+
id: callId,
|
|
195
289
|
query,
|
|
196
290
|
...(title ? { title } : {}),
|
|
197
291
|
},
|
|
@@ -200,7 +294,22 @@ function itemAttachments(item: GenieAgentOutputItem): GenieAttachment[] {
|
|
|
200
294
|
: [];
|
|
201
295
|
}
|
|
202
296
|
if (item.type === "function_call_output" && item.output !== undefined) {
|
|
203
|
-
|
|
297
|
+
const viz = itemMetadata(item)?.viz;
|
|
298
|
+
if (object.isRecord(viz) && typeof viz.attachment_id === "string") {
|
|
299
|
+
return [
|
|
300
|
+
{
|
|
301
|
+
attachment_id: viz.attachment_id,
|
|
302
|
+
attachment_type: "viz",
|
|
303
|
+
viz: {
|
|
304
|
+
...(item.output ? { title: item.output } : {}),
|
|
305
|
+
...(typeof viz.query_attachment_id === "string"
|
|
306
|
+
? { query_attachment_id: viz.query_attachment_id }
|
|
307
|
+
: {}),
|
|
308
|
+
},
|
|
309
|
+
},
|
|
310
|
+
];
|
|
311
|
+
}
|
|
312
|
+
return [textAttachment(id, item.output, item.metadata)];
|
|
204
313
|
}
|
|
205
314
|
if (item.type === "message") {
|
|
206
315
|
return (item.content ?? []).flatMap((part) =>
|
package/src/genie-model.ts
CHANGED
|
@@ -125,6 +125,7 @@ export const ATTACHMENT_TYPES = [
|
|
|
125
125
|
"query",
|
|
126
126
|
"text",
|
|
127
127
|
"suggested_questions",
|
|
128
|
+
"viz",
|
|
128
129
|
] as const satisfies readonly string[];
|
|
129
130
|
|
|
130
131
|
export const KnownAttachmentTypeSchema = z
|
|
@@ -181,6 +182,23 @@ export const GenieTextAttachmentSchema = dashboards.textAttachmentSchema.extend(
|
|
|
181
182
|
/** Narrative text attachment, including its optional semantic purpose. */
|
|
182
183
|
export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
|
|
183
184
|
|
|
185
|
+
/**
|
|
186
|
+
* Visualization Genie requested for one of its query results. Genie stores only
|
|
187
|
+
* the title and the query attachment it charts; the client draws the chart from
|
|
188
|
+
* that query's statement rows.
|
|
189
|
+
*/
|
|
190
|
+
export const GenieVizAttachmentSchema = z
|
|
191
|
+
.object({
|
|
192
|
+
title: z.string().optional().describe("Display title Genie chose for the chart."),
|
|
193
|
+
query_attachment_id: z
|
|
194
|
+
.string()
|
|
195
|
+
.optional()
|
|
196
|
+
.describe("`attachment_id` of the query attachment whose rows the chart plots."),
|
|
197
|
+
})
|
|
198
|
+
.describe("Genie visualization request over one query attachment.");
|
|
199
|
+
/** Genie visualization request over one query attachment. */
|
|
200
|
+
export type GenieVizAttachment = z.infer<typeof GenieVizAttachmentSchema>;
|
|
201
|
+
|
|
184
202
|
/**
|
|
185
203
|
* `GenieAttachment` with:
|
|
186
204
|
*
|
|
@@ -204,6 +222,7 @@ export type GenieTextAttachment = z.infer<typeof GenieTextAttachmentSchema>;
|
|
|
204
222
|
export const GenieAttachmentSchema = SDKGenieAttachmentSchema.extend({
|
|
205
223
|
query: GenieQueryAttachmentSchema.optional(),
|
|
206
224
|
text: GenieTextAttachmentSchema.optional(),
|
|
225
|
+
viz: GenieVizAttachmentSchema.optional(),
|
|
207
226
|
attachment_type: AttachmentTypeSchema.optional(),
|
|
208
227
|
});
|
|
209
228
|
/** Genie message attachment with an optional computed discriminator. */
|
|
@@ -343,6 +362,7 @@ export function detectAttachmentType(att: GenieAttachment): AttachmentType {
|
|
|
343
362
|
if (att.query) return "query";
|
|
344
363
|
if (att.text) return "text";
|
|
345
364
|
if (att.suggested_questions) return "suggested_questions";
|
|
365
|
+
if (att.viz) return "viz";
|
|
346
366
|
for (const k of Object.keys(att)) {
|
|
347
367
|
if (k !== "attachment_id" && k !== "attachment_type") return k;
|
|
348
368
|
}
|