@vendasta/ai-assistants 0.30.0 → 0.32.0

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.
Files changed (31) hide show
  1. package/esm2020/lib/_internal/enums/assistant.enum.mjs +3 -1
  2. package/esm2020/lib/_internal/index.mjs +2 -1
  3. package/esm2020/lib/_internal/integration-test.api.service.mjs +53 -0
  4. package/esm2020/lib/_internal/interfaces/answer.interface.mjs +1 -1
  5. package/esm2020/lib/_internal/interfaces/api.interface.mjs +1 -1
  6. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  7. package/esm2020/lib/_internal/interfaces/integration-tests.interface.mjs +2 -0
  8. package/esm2020/lib/_internal/interfaces/namespace.interface.mjs +1 -1
  9. package/esm2020/lib/_internal/objects/answer.mjs +24 -1
  10. package/esm2020/lib/_internal/objects/api.mjs +14 -2
  11. package/esm2020/lib/_internal/objects/index.mjs +5 -4
  12. package/esm2020/lib/_internal/objects/integration-tests.mjs +201 -0
  13. package/esm2020/lib/_internal/objects/namespace.mjs +1 -53
  14. package/fesm2015/vendasta-ai-assistants.mjs +313 -84
  15. package/fesm2015/vendasta-ai-assistants.mjs.map +1 -1
  16. package/fesm2020/vendasta-ai-assistants.mjs +313 -84
  17. package/fesm2020/vendasta-ai-assistants.mjs.map +1 -1
  18. package/lib/_internal/enums/assistant.enum.d.ts +3 -1
  19. package/lib/_internal/index.d.ts +1 -0
  20. package/lib/_internal/integration-test.api.service.d.ts +17 -0
  21. package/lib/_internal/interfaces/answer.interface.d.ts +3 -0
  22. package/lib/_internal/interfaces/api.interface.d.ts +3 -1
  23. package/lib/_internal/interfaces/index.d.ts +4 -3
  24. package/lib/_internal/interfaces/integration-tests.interface.d.ts +32 -0
  25. package/lib/_internal/interfaces/namespace.interface.d.ts +0 -8
  26. package/lib/_internal/objects/answer.d.ts +6 -0
  27. package/lib/_internal/objects/api.d.ts +3 -1
  28. package/lib/_internal/objects/index.d.ts +4 -3
  29. package/lib/_internal/objects/integration-tests.d.ts +55 -0
  30. package/lib/_internal/objects/namespace.d.ts +0 -14
  31. package/package.json +1 -1
@@ -4,16 +4,17 @@
4
4
  //
5
5
  // Objects Index.
6
6
  // *********************************
7
- export { NamespaceAccountGroupNamespace, NamespaceAccountGroupsForGroupNamespace, NamespaceAccountGroupsForPartnerNamespace, NamespaceGlobalNamespace, Namespace, NamespacePartnerNamespace, NamespaceSystemNamespace, } from './namespace';
7
+ export { NamespaceAccountGroupNamespace, NamespaceGlobalNamespace, Namespace, NamespacePartnerNamespace, NamespaceSystemNamespace, } from './namespace';
8
8
  export { Function, FunctionAuthStrategy, FunctionHeader, FunctionKey, FunctionParameter, FunctionAuthStrategyPlatformManagedFunctionAuthStrategy, FunctionAuthStrategyUnspecifiedFunctionAuthStrategy, } from './function';
9
9
  export { Prompt, PromptModule, PromptModuleKey, PromptModuleVersion, PromptVersion, } from './prompt';
10
10
  export { Goal, GoalKey, } from './goal';
11
11
  export { KeyValuePair, } from './common';
12
12
  export { Assistant, AssistantKey, Config, ConfigurableGoal, DeepgramConfig, ConfigInboxConfig, ModelConfig, OpenAIRealtimeConfig, OpenAIRealtimeConfigTurnDetection, ConfigVoiceConfig, } from './assistant';
13
13
  export { Connection, ConnectionKey, } from './connection';
14
- export { ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatMessage, ChatUserInfo, } from './answer';
15
- export { Access, } from './annotations';
14
+ export { ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatMessage, ChatUserInfo, ContextInfo, } from './answer';
16
15
  export { PagedRequestOptions, PagedResponseMetadata, } from './paging';
16
+ export { DeleteTestCasesRequest, ListTestCasesByConnectionRequest, ListTestCasesByConnectionResponse, RunTestsRequest, RunTestsResponse, TestCase, UpsertTestCasesRequest, } from './integration-tests';
17
+ export { Access, } from './annotations';
17
18
  export { FieldMask, } from './field-mask';
18
19
  export { BuildDefaultAssistantRequest, BuildDefaultAssistantResponse, SetAssistantConnectionsRequestConnectionState, CreateAssistantRequest, CreateAssistantResponse, CreateGoalRequest, CreateGoalResponse, CreatePromptModuleRequest, CreatePromptModuleResponse, CreatePromptModuleVersionRequest, CreatePromptRequest, DeleteAssistantRequest, DeleteConnectionRequest, DeleteFunctionRequest, DeleteGoalRequest, DeletePromptModuleRequest, DeletePromptRequest, DeployPromptModuleRequest, DeployPromptRequest, ExecuteFunctionRequest, ExecuteFunctionResponse, ListPromptModuleRequestFilters, ListConnectionsRequestFilters, ListGoalsRequestFilters, ListAllAssistantsAssociatedToConnectionRequestFilters, ListAssistantRequestFilters, ListFunctionRequestFilters, GenerateChatAnswerRequest, GenerateChatAnswerResponse, GetAssistantRequest, GetAssistantResponse, GetChatAnswerFunctionExecutionJobRequest, GetChatAnswerFunctionExecutionJobResponse, GetConnectionRequest, GetConnectionResponse, GetDeployedPromptModuleVersionRequest, GetDeployedPromptModuleVersionResponse, GetDeployedPromptVersionRequest, GetDeployedPromptVersionResponse, GetFunctionRequest, GetFunctionResponse, GetGoalRequest, GetGoalResponse, GetHydratedDeployedPromptModuleVersionRequest, GetHydratedDeployedPromptModuleVersionResponse, GetMultiDeployedPromptVersionRequest, GetMultiDeployedPromptVersionResponse, GetMultiFunctionRequest, GetMultiFunctionResponse, GetMultiGoalRequest, GetMultiGoalResponse, GetMultiHydratedDeployedPromptModuleVersionRequest, GetMultiHydratedDeployedPromptModuleVersionResponse, GetPromptModuleRequest, GetPromptModuleResponse, GetPromptModuleVersionRequest, GetPromptModuleVersionResponse, GetPromptRequest, GetPromptResponse, GetPromptVersionRequest, GetPromptVersionResponse, GoalsDisabledForAccountGroupRequest, GoalsDisabledForAccountGroupResponse, ListAllAssistantsAssociatedToConnectionRequest, ListAllAssistantsAssociatedToConnectionResponse, ListAssistantRequest, ListAssistantResponse, ListConnectionsRequest, ListConnectionsResponse, ListFunctionRequest, ListFunctionResponse, ListGoalsRequest, ListGoalsResponse, ListPromptModuleRequest, ListPromptModuleResponse, ListPromptModuleVersionsRequest, ListPromptModuleVersionsResponse, ListPromptRequest, ListPromptResponse, ListPromptVersionsRequest, ListPromptVersionsResponse, CreatePromptModuleVersionRequestOptions, GenerateChatAnswerRequestOptions, CreateAssistantRequestOptions, UpsertAssistantRequestOptions, SetAssistantConnectionsRequest, UpdateAssistantRequest, UpdateGoalRequest, UpdatePromptModuleRequest, UpdatePromptRequest, UpsertAssistantRequest, UpsertAssistantResponse, UpsertConnectionRequest, UpsertFunctionRequest, UpsertGoalRequest, } from './api';
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixpQkFBaUI7QUFDakIsb0NBQW9DO0FBQ3BDLE9BQU8sRUFDSCw4QkFBOEIsRUFDOUIsdUNBQXVDLEVBQ3ZDLHlDQUF5QyxFQUN6Qyx3QkFBd0IsRUFDeEIsU0FBUyxFQUNULHlCQUF5QixFQUN6Qix3QkFBd0IsR0FDM0IsTUFBTSxhQUFhLENBQUM7QUFFckIsT0FBTyxFQUNILFFBQVEsRUFDUixvQkFBb0IsRUFDcEIsY0FBYyxFQUNkLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsdURBQXVELEVBQ3ZELG1EQUFtRCxHQUN0RCxNQUFNLFlBQVksQ0FBQztBQUVwQixPQUFPLEVBQ0gsTUFBTSxFQUNOLFlBQVksRUFDWixlQUFlLEVBQ2YsbUJBQW1CLEVBQ25CLGFBQWEsR0FDaEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILElBQUksRUFDSixPQUFPLEdBQ1YsTUFBTSxRQUFRLENBQUM7QUFFaEIsT0FBTyxFQUNILFlBQVksR0FDZixNQUFNLFVBQVUsQ0FBQztBQUVsQixPQUFPLEVBQ0gsU0FBUyxFQUNULFlBQVksRUFDWixNQUFNLEVBQ04sZ0JBQWdCLEVBQ2hCLGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixpQ0FBaUMsRUFDakMsaUJBQWlCLEdBQ3BCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxVQUFVLEVBQ1YsYUFBYSxHQUNoQixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsOEJBQThCLEVBQzlCLG9DQUFvQyxFQUNwQyxXQUFXLEVBQ1gsWUFBWSxHQUNmLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsR0FDeEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFNBQVMsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2Q0FBNkMsRUFDN0Msc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2hDLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIscURBQXFELEVBQ3JELDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHdDQUF3QyxFQUN4Qyx5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsZUFBZSxFQUNmLDZDQUE2QyxFQUM3Qyw4Q0FBOEMsRUFDOUMsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQyx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0RBQWtELEVBQ2xELG1EQUFtRCxFQUNuRCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsOENBQThDLEVBQzlDLCtDQUErQyxFQUMvQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsdUNBQXVDLEVBQ3ZDLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNwQixNQUFNLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlQWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZUFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZUdsb2JhbE5hbWVzcGFjZSxcbiAgICBOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlUGFydG5lck5hbWVzcGFjZSxcbiAgICBOYW1lc3BhY2VTeXN0ZW1OYW1lc3BhY2UsXG59IGZyb20gJy4vbmFtZXNwYWNlJztcblxuZXhwb3J0IHtcbiAgICBGdW5jdGlvbixcbiAgICBGdW5jdGlvbkF1dGhTdHJhdGVneSxcbiAgICBGdW5jdGlvbkhlYWRlcixcbiAgICBGdW5jdGlvbktleSxcbiAgICBGdW5jdGlvblBhcmFtZXRlcixcbiAgICBGdW5jdGlvbkF1dGhTdHJhdGVneVBsYXRmb3JtTWFuYWdlZEZ1bmN0aW9uQXV0aFN0cmF0ZWd5LFxuICAgIEZ1bmN0aW9uQXV0aFN0cmF0ZWd5VW5zcGVjaWZpZWRGdW5jdGlvbkF1dGhTdHJhdGVneSxcbn0gZnJvbSAnLi9mdW5jdGlvbic7XG5cbmV4cG9ydCB7XG4gICAgUHJvbXB0LFxuICAgIFByb21wdE1vZHVsZSxcbiAgICBQcm9tcHRNb2R1bGVLZXksXG4gICAgUHJvbXB0TW9kdWxlVmVyc2lvbixcbiAgICBQcm9tcHRWZXJzaW9uLFxufSBmcm9tICcuL3Byb21wdCc7XG5cbmV4cG9ydCB7XG4gICAgR29hbCxcbiAgICBHb2FsS2V5LFxufSBmcm9tICcuL2dvYWwnO1xuXG5leHBvcnQge1xuICAgIEtleVZhbHVlUGFpcixcbn0gZnJvbSAnLi9jb21tb24nO1xuXG5leHBvcnQge1xuICAgIEFzc2lzdGFudCxcbiAgICBBc3Npc3RhbnRLZXksXG4gICAgQ29uZmlnLFxuICAgIENvbmZpZ3VyYWJsZUdvYWwsXG4gICAgRGVlcGdyYW1Db25maWcsXG4gICAgQ29uZmlnSW5ib3hDb25maWcsXG4gICAgTW9kZWxDb25maWcsXG4gICAgT3BlbkFJUmVhbHRpbWVDb25maWcsXG4gICAgT3BlbkFJUmVhbHRpbWVDb25maWdUdXJuRGV0ZWN0aW9uLFxuICAgIENvbmZpZ1ZvaWNlQ29uZmlnLFxufSBmcm9tICcuL2Fzc2lzdGFudCc7XG5cbmV4cG9ydCB7XG4gICAgQ29ubmVjdGlvbixcbiAgICBDb25uZWN0aW9uS2V5LFxufSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuXG5leHBvcnQge1xuICAgIENoYXRBbnN3ZXJGdW5jdGlvbkV4ZWN1dGlvbkpvYixcbiAgICBDaGF0QW5zd2VyRnVuY3Rpb25FeGVjdXRpb25Kb2JSZXN1bHQsXG4gICAgQ2hhdE1lc3NhZ2UsXG4gICAgQ2hhdFVzZXJJbmZvLFxufSBmcm9tICcuL2Fuc3dlcic7XG5cbmV4cG9ydCB7XG4gICAgQWNjZXNzLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcblxuZXhwb3J0IHtcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIFBhZ2VkUmVzcG9uc2VNZXRhZGF0YSxcbn0gZnJvbSAnLi9wYWdpbmcnO1xuXG5leHBvcnQge1xuICAgIEZpZWxkTWFzayxcbn0gZnJvbSAnLi9maWVsZC1tYXNrJztcblxuZXhwb3J0IHtcbiAgICBCdWlsZERlZmF1bHRBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIEJ1aWxkRGVmYXVsdEFzc2lzdGFudFJlc3BvbnNlLFxuICAgIFNldEFzc2lzdGFudENvbm5lY3Rpb25zUmVxdWVzdENvbm5lY3Rpb25TdGF0ZSxcbiAgICBDcmVhdGVBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIENyZWF0ZUFzc2lzdGFudFJlc3BvbnNlLFxuICAgIENyZWF0ZUdvYWxSZXF1ZXN0LFxuICAgIENyZWF0ZUdvYWxSZXNwb25zZSxcbiAgICBDcmVhdGVQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVJlc3BvbnNlLFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0LFxuICAgIENyZWF0ZVByb21wdFJlcXVlc3QsXG4gICAgRGVsZXRlQXNzaXN0YW50UmVxdWVzdCxcbiAgICBEZWxldGVDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBEZWxldGVGdW5jdGlvblJlcXVlc3QsXG4gICAgRGVsZXRlR29hbFJlcXVlc3QsXG4gICAgRGVsZXRlUHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBEZWxldGVQcm9tcHRSZXF1ZXN0LFxuICAgIERlcGxveVByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgRGVwbG95UHJvbXB0UmVxdWVzdCxcbiAgICBFeGVjdXRlRnVuY3Rpb25SZXF1ZXN0LFxuICAgIEV4ZWN1dGVGdW5jdGlvblJlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRNb2R1bGVSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0Q29ubmVjdGlvbnNSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0R29hbHNSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0QWxsQXNzaXN0YW50c0Fzc29jaWF0ZWRUb0Nvbm5lY3Rpb25SZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0QXNzaXN0YW50UmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEZ1bmN0aW9uUmVxdWVzdEZpbHRlcnMsXG4gICAgR2VuZXJhdGVDaGF0QW5zd2VyUmVxdWVzdCxcbiAgICBHZW5lcmF0ZUNoYXRBbnN3ZXJSZXNwb25zZSxcbiAgICBHZXRBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIEdldEFzc2lzdGFudFJlc3BvbnNlLFxuICAgIEdldENoYXRBbnN3ZXJGdW5jdGlvbkV4ZWN1dGlvbkpvYlJlcXVlc3QsXG4gICAgR2V0Q2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iUmVzcG9uc2UsXG4gICAgR2V0Q29ubmVjdGlvblJlcXVlc3QsXG4gICAgR2V0Q29ubmVjdGlvblJlc3BvbnNlLFxuICAgIEdldERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgR2V0RGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0RGVwbG95ZWRQcm9tcHRWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXREZXBsb3llZFByb21wdFZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRGdW5jdGlvblJlcXVlc3QsXG4gICAgR2V0RnVuY3Rpb25SZXNwb25zZSxcbiAgICBHZXRHb2FsUmVxdWVzdCxcbiAgICBHZXRHb2FsUmVzcG9uc2UsXG4gICAgR2V0SHlkcmF0ZWREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0LFxuICAgIEdldEh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlEZXBsb3llZFByb21wdFZlcnNpb25SZXF1ZXN0LFxuICAgIEdldE11bHRpRGVwbG95ZWRQcm9tcHRWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlGdW5jdGlvblJlcXVlc3QsXG4gICAgR2V0TXVsdGlGdW5jdGlvblJlc3BvbnNlLFxuICAgIEdldE11bHRpR29hbFJlcXVlc3QsXG4gICAgR2V0TXVsdGlHb2FsUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlIeWRyYXRlZERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgR2V0TXVsdGlIeWRyYXRlZERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlc3BvbnNlLFxuICAgIEdldFByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgR2V0UHJvbXB0TW9kdWxlUmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgR2V0UHJvbXB0TW9kdWxlVmVyc2lvblJlc3BvbnNlLFxuICAgIEdldFByb21wdFJlcXVlc3QsXG4gICAgR2V0UHJvbXB0UmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0VmVyc2lvblJlcXVlc3QsXG4gICAgR2V0UHJvbXB0VmVyc2lvblJlc3BvbnNlLFxuICAgIEdvYWxzRGlzYWJsZWRGb3JBY2NvdW50R3JvdXBSZXF1ZXN0LFxuICAgIEdvYWxzRGlzYWJsZWRGb3JBY2NvdW50R3JvdXBSZXNwb25zZSxcbiAgICBMaXN0QWxsQXNzaXN0YW50c0Fzc29jaWF0ZWRUb0Nvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIExpc3RBbGxBc3Npc3RhbnRzQXNzb2NpYXRlZFRvQ29ubmVjdGlvblJlc3BvbnNlLFxuICAgIExpc3RBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIExpc3RBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBMaXN0Q29ubmVjdGlvbnNSZXF1ZXN0LFxuICAgIExpc3RDb25uZWN0aW9uc1Jlc3BvbnNlLFxuICAgIExpc3RGdW5jdGlvblJlcXVlc3QsXG4gICAgTGlzdEZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgTGlzdEdvYWxzUmVxdWVzdCxcbiAgICBMaXN0R29hbHNSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBMaXN0UHJvbXB0TW9kdWxlUmVzcG9uc2UsXG4gICAgTGlzdFByb21wdE1vZHVsZVZlcnNpb25zUmVxdWVzdCxcbiAgICBMaXN0UHJvbXB0TW9kdWxlVmVyc2lvbnNSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0UmVxdWVzdCxcbiAgICBMaXN0UHJvbXB0UmVzcG9uc2UsXG4gICAgTGlzdFByb21wdFZlcnNpb25zUmVxdWVzdCxcbiAgICBMaXN0UHJvbXB0VmVyc2lvbnNSZXNwb25zZSxcbiAgICBDcmVhdGVQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdE9wdGlvbnMsXG4gICAgR2VuZXJhdGVDaGF0QW5zd2VyUmVxdWVzdE9wdGlvbnMsXG4gICAgQ3JlYXRlQXNzaXN0YW50UmVxdWVzdE9wdGlvbnMsXG4gICAgVXBzZXJ0QXNzaXN0YW50UmVxdWVzdE9wdGlvbnMsXG4gICAgU2V0QXNzaXN0YW50Q29ubmVjdGlvbnNSZXF1ZXN0LFxuICAgIFVwZGF0ZUFzc2lzdGFudFJlcXVlc3QsXG4gICAgVXBkYXRlR29hbFJlcXVlc3QsXG4gICAgVXBkYXRlUHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBVcGRhdGVQcm9tcHRSZXF1ZXN0LFxuICAgIFVwc2VydEFzc2lzdGFudFJlcXVlc3QsXG4gICAgVXBzZXJ0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgVXBzZXJ0Q29ubmVjdGlvblJlcXVlc3QsXG4gICAgVXBzZXJ0RnVuY3Rpb25SZXF1ZXN0LFxuICAgIFVwc2VydEdvYWxSZXF1ZXN0LFxufSBmcm9tICcuL2FwaSc7XG5cbiJdfQ==
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixpQkFBaUI7QUFDakIsb0NBQW9DO0FBQ3BDLE9BQU8sRUFDSCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCx5QkFBeUIsRUFDekIsd0JBQXdCLEdBQzNCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHVEQUF1RCxFQUN2RCxtREFBbUQsR0FDdEQsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUNILE1BQU0sRUFDTixZQUFZLEVBQ1osZUFBZSxFQUNmLG1CQUFtQixFQUNuQixhQUFhLEdBQ2hCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxJQUFJLEVBQ0osT0FBTyxHQUNWLE1BQU0sUUFBUSxDQUFDO0FBRWhCLE9BQU8sRUFDSCxZQUFZLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUNBQWlDLEVBQ2pDLGlCQUFpQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0gsVUFBVSxFQUNWLGFBQWEsR0FDaEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILDhCQUE4QixFQUM5QixvQ0FBb0MsRUFDcEMsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEdBQ2QsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsR0FDeEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILHNCQUFzQixFQUN0QixnQ0FBZ0MsRUFDaEMsaUNBQWlDLEVBQ2pDLGVBQWUsRUFDZixnQkFBZ0IsRUFDaEIsUUFBUSxFQUNSLHNCQUFzQixHQUN6QixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDSCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2Q0FBNkMsRUFDN0Msc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2hDLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIscURBQXFELEVBQ3JELDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHdDQUF3QyxFQUN4Qyx5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsZUFBZSxFQUNmLDZDQUE2QyxFQUM3Qyw4Q0FBOEMsRUFDOUMsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQyx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0RBQWtELEVBQ2xELG1EQUFtRCxFQUNuRCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsOENBQThDLEVBQzlDLCtDQUErQyxFQUMvQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsdUNBQXVDLEVBQ3ZDLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNwQixNQUFNLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZSxcbiAgICBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZSxcbn0gZnJvbSAnLi9uYW1lc3BhY2UnO1xuXG5leHBvcnQge1xuICAgIEZ1bmN0aW9uLFxuICAgIEZ1bmN0aW9uQXV0aFN0cmF0ZWd5LFxuICAgIEZ1bmN0aW9uSGVhZGVyLFxuICAgIEZ1bmN0aW9uS2V5LFxuICAgIEZ1bmN0aW9uUGFyYW1ldGVyLFxuICAgIEZ1bmN0aW9uQXV0aFN0cmF0ZWd5UGxhdGZvcm1NYW5hZ2VkRnVuY3Rpb25BdXRoU3RyYXRlZ3ksXG4gICAgRnVuY3Rpb25BdXRoU3RyYXRlZ3lVbnNwZWNpZmllZEZ1bmN0aW9uQXV0aFN0cmF0ZWd5LFxufSBmcm9tICcuL2Z1bmN0aW9uJztcblxuZXhwb3J0IHtcbiAgICBQcm9tcHQsXG4gICAgUHJvbXB0TW9kdWxlLFxuICAgIFByb21wdE1vZHVsZUtleSxcbiAgICBQcm9tcHRNb2R1bGVWZXJzaW9uLFxuICAgIFByb21wdFZlcnNpb24sXG59IGZyb20gJy4vcHJvbXB0JztcblxuZXhwb3J0IHtcbiAgICBHb2FsLFxuICAgIEdvYWxLZXksXG59IGZyb20gJy4vZ29hbCc7XG5cbmV4cG9ydCB7XG4gICAgS2V5VmFsdWVQYWlyLFxufSBmcm9tICcuL2NvbW1vbic7XG5cbmV4cG9ydCB7XG4gICAgQXNzaXN0YW50LFxuICAgIEFzc2lzdGFudEtleSxcbiAgICBDb25maWcsXG4gICAgQ29uZmlndXJhYmxlR29hbCxcbiAgICBEZWVwZ3JhbUNvbmZpZyxcbiAgICBDb25maWdJbmJveENvbmZpZyxcbiAgICBNb2RlbENvbmZpZyxcbiAgICBPcGVuQUlSZWFsdGltZUNvbmZpZyxcbiAgICBPcGVuQUlSZWFsdGltZUNvbmZpZ1R1cm5EZXRlY3Rpb24sXG4gICAgQ29uZmlnVm9pY2VDb25maWcsXG59IGZyb20gJy4vYXNzaXN0YW50JztcblxuZXhwb3J0IHtcbiAgICBDb25uZWN0aW9uLFxuICAgIENvbm5lY3Rpb25LZXksXG59IGZyb20gJy4vY29ubmVjdGlvbic7XG5cbmV4cG9ydCB7XG4gICAgQ2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iLFxuICAgIENoYXRBbnN3ZXJGdW5jdGlvbkV4ZWN1dGlvbkpvYlJlc3VsdCxcbiAgICBDaGF0TWVzc2FnZSxcbiAgICBDaGF0VXNlckluZm8sXG4gICAgQ29udGV4dEluZm8sXG59IGZyb20gJy4vYW5zd2VyJztcblxuZXhwb3J0IHtcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIFBhZ2VkUmVzcG9uc2VNZXRhZGF0YSxcbn0gZnJvbSAnLi9wYWdpbmcnO1xuXG5leHBvcnQge1xuICAgIERlbGV0ZVRlc3RDYXNlc1JlcXVlc3QsXG4gICAgTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlcXVlc3QsXG4gICAgTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlc3BvbnNlLFxuICAgIFJ1blRlc3RzUmVxdWVzdCxcbiAgICBSdW5UZXN0c1Jlc3BvbnNlLFxuICAgIFRlc3RDYXNlLFxuICAgIFVwc2VydFRlc3RDYXNlc1JlcXVlc3QsXG59IGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdHMnO1xuXG5leHBvcnQge1xuICAgIEFjY2Vzcyxcbn0gZnJvbSAnLi9hbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCB7XG4gICAgRmllbGRNYXNrLFxufSBmcm9tICcuL2ZpZWxkLW1hc2snO1xuXG5leHBvcnQge1xuICAgIEJ1aWxkRGVmYXVsdEFzc2lzdGFudFJlcXVlc3QsXG4gICAgQnVpbGREZWZhdWx0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgU2V0QXNzaXN0YW50Q29ubmVjdGlvbnNSZXF1ZXN0Q29ubmVjdGlvblN0YXRlLFxuICAgIENyZWF0ZUFzc2lzdGFudFJlcXVlc3QsXG4gICAgQ3JlYXRlQXNzaXN0YW50UmVzcG9uc2UsXG4gICAgQ3JlYXRlR29hbFJlcXVlc3QsXG4gICAgQ3JlYXRlR29hbFJlc3BvbnNlLFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlUmVzcG9uc2UsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgQ3JlYXRlUHJvbXB0UmVxdWVzdCxcbiAgICBEZWxldGVBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIERlbGV0ZUNvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIERlbGV0ZUZ1bmN0aW9uUmVxdWVzdCxcbiAgICBEZWxldGVHb2FsUmVxdWVzdCxcbiAgICBEZWxldGVQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIERlbGV0ZVByb21wdFJlcXVlc3QsXG4gICAgRGVwbG95UHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBEZXBsb3lQcm9tcHRSZXF1ZXN0LFxuICAgIEV4ZWN1dGVGdW5jdGlvblJlcXVlc3QsXG4gICAgRXhlY3V0ZUZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgTGlzdFByb21wdE1vZHVsZVJlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RDb25uZWN0aW9uc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RHb2Fsc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBbGxBc3Npc3RhbnRzQXNzb2NpYXRlZFRvQ29ubmVjdGlvblJlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBc3Npc3RhbnRSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0RnVuY3Rpb25SZXF1ZXN0RmlsdGVycyxcbiAgICBHZW5lcmF0ZUNoYXRBbnN3ZXJSZXF1ZXN0LFxuICAgIEdlbmVyYXRlQ2hhdEFuc3dlclJlc3BvbnNlLFxuICAgIEdldEFzc2lzdGFudFJlcXVlc3QsXG4gICAgR2V0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgR2V0Q2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iUmVxdWVzdCxcbiAgICBHZXRDaGF0QW5zd2VyRnVuY3Rpb25FeGVjdXRpb25Kb2JSZXNwb25zZSxcbiAgICBHZXRDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBHZXRDb25uZWN0aW9uUmVzcG9uc2UsXG4gICAgR2V0RGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXREZXBsb3llZFByb21wdFZlcnNpb25SZXF1ZXN0LFxuICAgIEdldERlcGxveWVkUHJvbXB0VmVyc2lvblJlc3BvbnNlLFxuICAgIEdldEZ1bmN0aW9uUmVxdWVzdCxcbiAgICBHZXRGdW5jdGlvblJlc3BvbnNlLFxuICAgIEdldEdvYWxSZXF1ZXN0LFxuICAgIEdldEdvYWxSZXNwb25zZSxcbiAgICBHZXRIeWRyYXRlZERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgR2V0SHlkcmF0ZWREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRNdWx0aURlcGxveWVkUHJvbXB0VmVyc2lvblJlcXVlc3QsXG4gICAgR2V0TXVsdGlEZXBsb3llZFByb21wdFZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRNdWx0aUZ1bmN0aW9uUmVxdWVzdCxcbiAgICBHZXRNdWx0aUZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlHb2FsUmVxdWVzdCxcbiAgICBHZXRNdWx0aUdvYWxSZXNwb25zZSxcbiAgICBHZXRNdWx0aUh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRNdWx0aUh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRNb2R1bGVSZXNwb25zZSxcbiAgICBHZXRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0UmVxdWVzdCxcbiAgICBHZXRQcm9tcHRSZXNwb25zZSxcbiAgICBHZXRQcm9tcHRWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRWZXJzaW9uUmVzcG9uc2UsXG4gICAgR29hbHNEaXNhYmxlZEZvckFjY291bnRHcm91cFJlcXVlc3QsXG4gICAgR29hbHNEaXNhYmxlZEZvckFjY291bnRHcm91cFJlc3BvbnNlLFxuICAgIExpc3RBbGxBc3Npc3RhbnRzQXNzb2NpYXRlZFRvQ29ubmVjdGlvblJlcXVlc3QsXG4gICAgTGlzdEFsbEFzc2lzdGFudHNBc3NvY2lhdGVkVG9Db25uZWN0aW9uUmVzcG9uc2UsXG4gICAgTGlzdEFzc2lzdGFudFJlcXVlc3QsXG4gICAgTGlzdEFzc2lzdGFudFJlc3BvbnNlLFxuICAgIExpc3RDb25uZWN0aW9uc1JlcXVlc3QsXG4gICAgTGlzdENvbm5lY3Rpb25zUmVzcG9uc2UsXG4gICAgTGlzdEZ1bmN0aW9uUmVxdWVzdCxcbiAgICBMaXN0RnVuY3Rpb25SZXNwb25zZSxcbiAgICBMaXN0R29hbHNSZXF1ZXN0LFxuICAgIExpc3RHb2Fsc1Jlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRNb2R1bGVSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0TW9kdWxlVmVyc2lvbnNSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRNb2R1bGVWZXJzaW9uc1Jlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0VmVyc2lvbnNSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRWZXJzaW9uc1Jlc3BvbnNlLFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0T3B0aW9ucyxcbiAgICBHZW5lcmF0ZUNoYXRBbnN3ZXJSZXF1ZXN0T3B0aW9ucyxcbiAgICBDcmVhdGVBc3Npc3RhbnRSZXF1ZXN0T3B0aW9ucyxcbiAgICBVcHNlcnRBc3Npc3RhbnRSZXF1ZXN0T3B0aW9ucyxcbiAgICBTZXRBc3Npc3RhbnRDb25uZWN0aW9uc1JlcXVlc3QsXG4gICAgVXBkYXRlQXNzaXN0YW50UmVxdWVzdCxcbiAgICBVcGRhdGVHb2FsUmVxdWVzdCxcbiAgICBVcGRhdGVQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIFVwZGF0ZVByb21wdFJlcXVlc3QsXG4gICAgVXBzZXJ0QXNzaXN0YW50UmVxdWVzdCxcbiAgICBVcHNlcnRBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBVcHNlcnRDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBVcHNlcnRGdW5jdGlvblJlcXVlc3QsXG4gICAgVXBzZXJ0R29hbFJlcXVlc3QsXG59IGZyb20gJy4vYXBpJztcblxuIl19
@@ -0,0 +1,201 @@
1
+ import { ChatMessage } from './answer';
2
+ import { ConnectionKey } from './connection';
3
+ import { PagedRequestOptions, PagedResponseMetadata } from './paging';
4
+ export function enumStringToValue(enumRef, value) {
5
+ if (typeof value === 'number') {
6
+ return value;
7
+ }
8
+ return enumRef[value];
9
+ }
10
+ export class DeleteTestCasesRequest {
11
+ static fromProto(proto) {
12
+ let m = new DeleteTestCasesRequest();
13
+ m = Object.assign(m, proto);
14
+ if (proto.connection) {
15
+ m.connection = ConnectionKey.fromProto(proto.connection);
16
+ }
17
+ return m;
18
+ }
19
+ constructor(kwargs) {
20
+ if (!kwargs) {
21
+ return;
22
+ }
23
+ Object.assign(this, kwargs);
24
+ }
25
+ toApiJson() {
26
+ const toReturn = {};
27
+ if (typeof this.connection !== 'undefined' && this.connection !== null) {
28
+ toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;
29
+ }
30
+ if (typeof this.testCaseIds !== 'undefined') {
31
+ toReturn['testCaseIds'] = this.testCaseIds;
32
+ }
33
+ return toReturn;
34
+ }
35
+ }
36
+ export class ListTestCasesByConnectionRequest {
37
+ static fromProto(proto) {
38
+ let m = new ListTestCasesByConnectionRequest();
39
+ m = Object.assign(m, proto);
40
+ if (proto.connection) {
41
+ m.connection = ConnectionKey.fromProto(proto.connection);
42
+ }
43
+ if (proto.pagingOptions) {
44
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
45
+ }
46
+ return m;
47
+ }
48
+ constructor(kwargs) {
49
+ if (!kwargs) {
50
+ return;
51
+ }
52
+ Object.assign(this, kwargs);
53
+ }
54
+ toApiJson() {
55
+ const toReturn = {};
56
+ if (typeof this.connection !== 'undefined' && this.connection !== null) {
57
+ toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;
58
+ }
59
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
60
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
61
+ }
62
+ return toReturn;
63
+ }
64
+ }
65
+ export class ListTestCasesByConnectionResponse {
66
+ static fromProto(proto) {
67
+ let m = new ListTestCasesByConnectionResponse();
68
+ m = Object.assign(m, proto);
69
+ if (proto.testCases) {
70
+ m.testCases = proto.testCases.map(TestCase.fromProto);
71
+ }
72
+ if (proto.pagingMetadata) {
73
+ m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
74
+ }
75
+ return m;
76
+ }
77
+ constructor(kwargs) {
78
+ if (!kwargs) {
79
+ return;
80
+ }
81
+ Object.assign(this, kwargs);
82
+ }
83
+ toApiJson() {
84
+ const toReturn = {};
85
+ if (typeof this.testCases !== 'undefined' && this.testCases !== null) {
86
+ toReturn['testCases'] = 'toApiJson' in this.testCases ? this.testCases.toApiJson() : this.testCases;
87
+ }
88
+ if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
89
+ toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
90
+ }
91
+ return toReturn;
92
+ }
93
+ }
94
+ export class RunTestsRequest {
95
+ static fromProto(proto) {
96
+ let m = new RunTestsRequest();
97
+ m = Object.assign(m, proto);
98
+ if (proto.connection) {
99
+ m.connection = ConnectionKey.fromProto(proto.connection);
100
+ }
101
+ return m;
102
+ }
103
+ constructor(kwargs) {
104
+ if (!kwargs) {
105
+ return;
106
+ }
107
+ Object.assign(this, kwargs);
108
+ }
109
+ toApiJson() {
110
+ const toReturn = {};
111
+ if (typeof this.connection !== 'undefined' && this.connection !== null) {
112
+ toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;
113
+ }
114
+ if (typeof this.testCaseIds !== 'undefined') {
115
+ toReturn['testCaseIds'] = this.testCaseIds;
116
+ }
117
+ return toReturn;
118
+ }
119
+ }
120
+ export class RunTestsResponse {
121
+ static fromProto(proto) {
122
+ let m = new RunTestsResponse();
123
+ m = Object.assign(m, proto);
124
+ return m;
125
+ }
126
+ constructor(kwargs) {
127
+ if (!kwargs) {
128
+ return;
129
+ }
130
+ Object.assign(this, kwargs);
131
+ }
132
+ toApiJson() {
133
+ const toReturn = {};
134
+ if (typeof this.buildUrl !== 'undefined') {
135
+ toReturn['buildUrl'] = this.buildUrl;
136
+ }
137
+ return toReturn;
138
+ }
139
+ }
140
+ export class TestCase {
141
+ static fromProto(proto) {
142
+ let m = new TestCase();
143
+ m = Object.assign(m, proto);
144
+ if (proto.chatHistory) {
145
+ m.chatHistory = proto.chatHistory.map(ChatMessage.fromProto);
146
+ }
147
+ return m;
148
+ }
149
+ constructor(kwargs) {
150
+ if (!kwargs) {
151
+ return;
152
+ }
153
+ Object.assign(this, kwargs);
154
+ }
155
+ toApiJson() {
156
+ const toReturn = {};
157
+ if (typeof this.id !== 'undefined') {
158
+ toReturn['id'] = this.id;
159
+ }
160
+ if (typeof this.name !== 'undefined') {
161
+ toReturn['name'] = this.name;
162
+ }
163
+ if (typeof this.chatHistory !== 'undefined' && this.chatHistory !== null) {
164
+ toReturn['chatHistory'] = 'toApiJson' in this.chatHistory ? this.chatHistory.toApiJson() : this.chatHistory;
165
+ }
166
+ if (typeof this.expectation !== 'undefined') {
167
+ toReturn['expectation'] = this.expectation;
168
+ }
169
+ return toReturn;
170
+ }
171
+ }
172
+ export class UpsertTestCasesRequest {
173
+ static fromProto(proto) {
174
+ let m = new UpsertTestCasesRequest();
175
+ m = Object.assign(m, proto);
176
+ if (proto.connection) {
177
+ m.connection = ConnectionKey.fromProto(proto.connection);
178
+ }
179
+ if (proto.testCases) {
180
+ m.testCases = proto.testCases.map(TestCase.fromProto);
181
+ }
182
+ return m;
183
+ }
184
+ constructor(kwargs) {
185
+ if (!kwargs) {
186
+ return;
187
+ }
188
+ Object.assign(this, kwargs);
189
+ }
190
+ toApiJson() {
191
+ const toReturn = {};
192
+ if (typeof this.connection !== 'undefined' && this.connection !== null) {
193
+ toReturn['connection'] = 'toApiJson' in this.connection ? this.connection.toApiJson() : this.connection;
194
+ }
195
+ if (typeof this.testCases !== 'undefined' && this.testCases !== null) {
196
+ toReturn['testCases'] = 'toApiJson' in this.testCases ? this.testCases.toApiJson() : this.testCases;
197
+ }
198
+ return toReturn;
199
+ }
200
+ }
201
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2ludGVncmF0aW9uLXRlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdkMsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdEUsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUkvQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFBQyxDQUFDLENBQUMsVUFBVSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQUM7UUFDakYsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEwQztRQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFB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LFlBQVksQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsVUFBa0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUFDO1FBQzNMLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLFNBQWlCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FBQztRQUNyTCxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbi8vIENvZGUgZ2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBDaGF0TWVzc2FnZSB9IGZyb20gJy4vYW5zd2VyJztcbmltcG9ydCB7IENvbm5lY3Rpb25LZXkgfSBmcm9tICcuL2Nvbm5lY3Rpb24nO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9wYWdpbmcnO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgRGVsZXRlVGVzdENhc2VzUmVxdWVzdCBpbXBsZW1lbnRzIGkuRGVsZXRlVGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgY29ubmVjdGlvbjogQ29ubmVjdGlvbktleTtcbiAgICB0ZXN0Q2FzZUlkczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBEZWxldGVUZXN0Q2FzZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRGVsZXRlVGVzdENhc2VzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5jb25uZWN0aW9uKSB7bS5jb25uZWN0aW9uID0gQ29ubmVjdGlvbktleS5mcm9tUHJvdG8ocHJvdG8uY29ubmVjdGlvbik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZVRlc3RDYXNlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbm5lY3Rpb24gIT09IG51bGwpIHt0b1JldHVyblsnY29ubmVjdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25uZWN0aW9uID8gKHRoaXMuY29ubmVjdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25uZWN0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RDYXNlSWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZXN0Q2FzZUlkcyddID0gdGhpcy50ZXN0Q2FzZUlkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdENhc2VzQnlDb25uZWN0aW9uUmVxdWVzdCBpbXBsZW1lbnRzIGkuTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb25LZXk7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZXN0Q2FzZXNCeUNvbm5lY3Rpb25SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY29ubmVjdGlvbikge20uY29ubmVjdGlvbiA9IENvbm5lY3Rpb25LZXkuZnJvbVByb3RvKHByb3RvLmNvbm5lY3Rpb24pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ09wdGlvbnMpIHttLnBhZ2luZ09wdGlvbnMgPSBQYWdlZFJlcXVlc3RPcHRpb25zLmZyb21Qcm90byhwcm90by5wYWdpbmdPcHRpb25zKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jb25uZWN0aW9uICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNvbm5lY3Rpb24gIT09IG51bGwpIHt0b1JldHVyblsnY29ubmVjdGlvbiddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jb25uZWN0aW9uID8gKHRoaXMuY29ubmVjdGlvbiBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jb25uZWN0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdPcHRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2luZ09wdGlvbnMgPyAodGhpcy5wYWdpbmdPcHRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ09wdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VGVzdENhc2VzQnlDb25uZWN0aW9uUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHRlc3RDYXNlczogVGVzdENhc2VbXTtcbiAgICBwYWdpbmdNZXRhZGF0YTogUGFnZWRSZXNwb25zZU1ldGFkYXRhO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlc3RDYXNlc0J5Q29ubmVjdGlvblJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRlc3RDYXNlcykge20udGVzdENhc2VzID0gcHJvdG8udGVzdENhc2VzLm1hcChUZXN0Q2FzZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdENhc2VzQnlDb25uZWN0aW9uUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZXN0Q2FzZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGVzdENhc2VzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rlc3RDYXNlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50ZXN0Q2FzZXMgPyAodGhpcy50ZXN0Q2FzZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGVzdENhc2VzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2luZ01ldGFkYXRhICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2luZ01ldGFkYXRhICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ01ldGFkYXRhJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2luZ01ldGFkYXRhID8gKHRoaXMucGFnaW5nTWV0YWRhdGEgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nTWV0YWRhdGE7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVuVGVzdHNSZXF1ZXN0IGltcGxlbWVudHMgaS5SdW5UZXN0c1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb25LZXk7XG4gICAgdGVzdENhc2VJZHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUnVuVGVzdHNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUnVuVGVzdHNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbm5lY3Rpb24pIHttLmNvbm5lY3Rpb24gPSBDb25uZWN0aW9uS2V5LmZyb21Qcm90byhwcm90by5jb25uZWN0aW9uKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUnVuVGVzdHNSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29ubmVjdGlvbiAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb25uZWN0aW9uICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Nvbm5lY3Rpb24nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29ubmVjdGlvbiA/ICh0aGlzLmNvbm5lY3Rpb24gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29ubmVjdGlvbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZXN0Q2FzZUlkcyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGVzdENhc2VJZHMnXSA9IHRoaXMudGVzdENhc2VJZHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUnVuVGVzdHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuUnVuVGVzdHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgYnVpbGRVcmw6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJ1blRlc3RzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBSdW5UZXN0c1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SdW5UZXN0c1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYnVpbGRVcmwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2J1aWxkVXJsJ10gPSB0aGlzLmJ1aWxkVXJsO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRlc3RDYXNlIGltcGxlbWVudHMgaS5UZXN0Q2FzZUludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY2hhdEhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG4gICAgZXhwZWN0YXRpb246IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRlc3RDYXNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVGVzdENhc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uY2hhdEhpc3RvcnkpIHttLmNoYXRIaXN0b3J5ID0gcHJvdG8uY2hhdEhpc3RvcnkubWFwKENoYXRNZXNzYWdlLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlRlc3RDYXNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGF0SGlzdG9yeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jaGF0SGlzdG9yeSAhPT0gbnVsbCkge3RvUmV0dXJuWydjaGF0SGlzdG9yeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jaGF0SGlzdG9yeSA/ICh0aGlzLmNoYXRIaXN0b3J5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNoYXRIaXN0b3J5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cGVjdGF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydleHBlY3RhdGlvbiddID0gdGhpcy5leHBlY3RhdGlvbjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5VcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBjb25uZWN0aW9uOiBDb25uZWN0aW9uS2V5O1xuICAgIHRlc3RDYXNlczogVGVzdENhc2VbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFVwc2VydFRlc3RDYXNlc1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNvbm5lY3Rpb24pIHttLmNvbm5lY3Rpb24gPSBDb25uZWN0aW9uS2V5LmZyb21Qcm90byhwcm90by5jb25uZWN0aW9uKTt9XG4gICAgICAgIGlmIChwcm90by50ZXN0Q2FzZXMpIHttLnRlc3RDYXNlcyA9IHByb3RvLnRlc3RDYXNlcy5tYXAoVGVzdENhc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXBzZXJ0VGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNvbm5lY3Rpb24gIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY29ubmVjdGlvbiAhPT0gbnVsbCkge3RvUmV0dXJuWydjb25uZWN0aW9uJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNvbm5lY3Rpb24gPyAodGhpcy5jb25uZWN0aW9uIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNvbm5lY3Rpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RDYXNlcyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0ZXN0Q2FzZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdENhc2VzID8gKHRoaXMudGVzdENhc2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRlc3RDYXNlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -24,46 +24,6 @@ export class NamespaceAccountGroupNamespace {
24
24
  return toReturn;
25
25
  }
26
26
  }
27
- export class NamespaceAccountGroupsForGroupNamespace {
28
- static fromProto(proto) {
29
- let m = new NamespaceAccountGroupsForGroupNamespace();
30
- m = Object.assign(m, proto);
31
- return m;
32
- }
33
- constructor(kwargs) {
34
- if (!kwargs) {
35
- return;
36
- }
37
- Object.assign(this, kwargs);
38
- }
39
- toApiJson() {
40
- const toReturn = {};
41
- if (typeof this.groupPath !== 'undefined') {
42
- toReturn['groupPath'] = this.groupPath;
43
- }
44
- return toReturn;
45
- }
46
- }
47
- export class NamespaceAccountGroupsForPartnerNamespace {
48
- static fromProto(proto) {
49
- let m = new NamespaceAccountGroupsForPartnerNamespace();
50
- m = Object.assign(m, proto);
51
- return m;
52
- }
53
- constructor(kwargs) {
54
- if (!kwargs) {
55
- return;
56
- }
57
- Object.assign(this, kwargs);
58
- }
59
- toApiJson() {
60
- const toReturn = {};
61
- if (typeof this.partnerId !== 'undefined') {
62
- toReturn['partnerId'] = this.partnerId;
63
- }
64
- return toReturn;
65
- }
66
- }
67
27
  export class NamespaceGlobalNamespace {
68
28
  static fromProto(proto) {
69
29
  let m = new NamespaceGlobalNamespace();
@@ -94,12 +54,6 @@ export class Namespace {
94
54
  if (proto.systemNamespace) {
95
55
  m.systemNamespace = NamespaceSystemNamespace.fromProto(proto.systemNamespace);
96
56
  }
97
- if (proto.accountGroupsForPartnerNamespace) {
98
- m.accountGroupsForPartnerNamespace = NamespaceAccountGroupsForPartnerNamespace.fromProto(proto.accountGroupsForPartnerNamespace);
99
- }
100
- if (proto.accountGroupsForGroupNamespace) {
101
- m.accountGroupsForGroupNamespace = NamespaceAccountGroupsForGroupNamespace.fromProto(proto.accountGroupsForGroupNamespace);
102
- }
103
57
  if (proto.globalNamespace) {
104
58
  m.globalNamespace = NamespaceGlobalNamespace.fromProto(proto.globalNamespace);
105
59
  }
@@ -122,12 +76,6 @@ export class Namespace {
122
76
  if (typeof this.systemNamespace !== 'undefined' && this.systemNamespace !== null) {
123
77
  toReturn['systemNamespace'] = 'toApiJson' in this.systemNamespace ? this.systemNamespace.toApiJson() : this.systemNamespace;
124
78
  }
125
- if (typeof this.accountGroupsForPartnerNamespace !== 'undefined' && this.accountGroupsForPartnerNamespace !== null) {
126
- toReturn['accountGroupsForPartnerNamespace'] = 'toApiJson' in this.accountGroupsForPartnerNamespace ? this.accountGroupsForPartnerNamespace.toApiJson() : this.accountGroupsForPartnerNamespace;
127
- }
128
- if (typeof this.accountGroupsForGroupNamespace !== 'undefined' && this.accountGroupsForGroupNamespace !== null) {
129
- toReturn['accountGroupsForGroupNamespace'] = 'toApiJson' in this.accountGroupsForGroupNamespace ? this.accountGroupsForGroupNamespace.toApiJson() : this.accountGroupsForGroupNamespace;
130
- }
131
79
  if (typeof this.globalNamespace !== 'undefined' && this.globalNamespace !== null) {
132
80
  toReturn['globalNamespace'] = 'toApiJson' in this.globalNamespace ? this.globalNamespace.toApiJson() : this.globalNamespace;
133
81
  }
@@ -171,4 +119,4 @@ export class NamespaceSystemNamespace {
171
119
  return toReturn;
172
120
  }
173
121
  }
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYWlfYXNzaXN0YW50c19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9uYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUd2QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQWtEO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuRyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sdUNBQXVDO0lBR2hELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHVDQUF1QyxFQUFFLENBQUM7UUFDdEQs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LENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlQWNjb3VudEdyb3VwTmFtZXNwYWNlIGltcGxlbWVudHMgaS5OYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2VJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZUFjY291bnRHcm91cE5hbWVzcGFjZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2UgaW1wbGVtZW50cyBpLk5hbWVzcGFjZUFjY291bnRHcm91cHNGb3JHcm91cE5hbWVzcGFjZUludGVyZmFjZSB7XG4gICAgZ3JvdXBQYXRoOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZUFjY291bnRHcm91cHNGb3JHcm91cE5hbWVzcGFjZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmdyb3VwUGF0aCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZ3JvdXBQYXRoJ10gPSB0aGlzLmdyb3VwUGF0aDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yUGFydG5lck5hbWVzcGFjZSBpbXBsZW1lbnRzIGkuTmFtZXNwYWNlQWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2VJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlQWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yUGFydG5lck5hbWVzcGFjZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTmFtZXNwYWNlQWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlIGltcGxlbWVudHMgaS5OYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2VJbnRlcmZhY2Uge1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5OYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2UgaW1wbGVtZW50cyBpLk5hbWVzcGFjZUludGVyZmFjZSB7XG4gICAgYWNjb3VudEdyb3VwTmFtZXNwYWNlOiBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2U7XG4gICAgcGFydG5lck5hbWVzcGFjZTogTmFtZXNwYWNlUGFydG5lck5hbWVzcGFjZTtcbiAgICBzeXN0ZW1OYW1lc3BhY2U6IE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZTtcbiAgICBhY2NvdW50R3JvdXBzRm9yUGFydG5lck5hbWVzcGFjZTogTmFtZXNwYWNlQWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2U7XG4gICAgYWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlOiBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2U7XG4gICAgZ2xvYmFsTmFtZXNwYWNlOiBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2U7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWNjb3VudEdyb3VwTmFtZXNwYWNlKSB7bS5hY2NvdW50R3JvdXBOYW1lc3BhY2UgPSBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UuZnJvbVByb3RvKHByb3RvLmFjY291bnRHcm91cE5hbWVzcGFjZSk7fVxuICAgICAgICBpZiAocHJvdG8ucGFydG5lck5hbWVzcGFjZSkge20ucGFydG5lck5hbWVzcGFjZSA9IE5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2UuZnJvbVByb3RvKHByb3RvLnBhcnRuZXJOYW1lc3BhY2UpO31cbiAgICAgICAgaWYgKHByb3RvLnN5c3RlbU5hbWVzcGFjZSkge20uc3lzdGVtTmFtZXNwYWNlID0gTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlLmZyb21Qcm90byhwcm90by5zeXN0ZW1OYW1lc3BhY2UpO31cbiAgICAgICAgaWYgKHByb3RvLmFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlKSB7bS5hY2NvdW50R3JvdXBzRm9yUGFydG5lck5hbWVzcGFjZSA9IE5hbWVzcGFjZUFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlLmZyb21Qcm90byhwcm90by5hY2NvdW50R3JvdXBzRm9yUGFydG5lck5hbWVzcGFjZSk7fVxuICAgICAgICBpZiAocHJvdG8uYWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlKSB7bS5hY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2UgPSBOYW1lc3BhY2VBY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2UuZnJvbVByb3RvKHByb3RvLmFjY291bnRHcm91cHNGb3JHcm91cE5hbWVzcGFjZSk7fVxuICAgICAgICBpZiAocHJvdG8uZ2xvYmFsTmFtZXNwYWNlKSB7bS5nbG9iYWxOYW1lc3BhY2UgPSBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2UuZnJvbVByb3RvKHByb3RvLmdsb2JhbE5hbWVzcGFjZSk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cE5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hY2NvdW50R3JvdXBOYW1lc3BhY2UgIT09IG51bGwpIHt0b1JldHVyblsnYWNjb3VudEdyb3VwTmFtZXNwYWNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFjY291bnRHcm91cE5hbWVzcGFjZSA/ICh0aGlzLmFjY291bnRHcm91cE5hbWVzcGFjZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hY2NvdW50R3JvdXBOYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lck5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYXJ0bmVyTmFtZXNwYWNlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhcnRuZXJOYW1lc3BhY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFydG5lck5hbWVzcGFjZSA/ICh0aGlzLnBhcnRuZXJOYW1lc3BhY2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFydG5lck5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zeXN0ZW1OYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3lzdGVtTmFtZXNwYWNlICE9PSBudWxsKSB7dG9SZXR1cm5bJ3N5c3RlbU5hbWVzcGFjZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zeXN0ZW1OYW1lc3BhY2UgPyAodGhpcy5zeXN0ZW1OYW1lc3BhY2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuc3lzdGVtTmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFjY291bnRHcm91cHNGb3JQYXJ0bmVyTmFtZXNwYWNlID8gKHRoaXMuYWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYWNjb3VudEdyb3Vwc0ZvclBhcnRuZXJOYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFjY291bnRHcm91cHNGb3JHcm91cE5hbWVzcGFjZSAhPT0gbnVsbCkge3RvUmV0dXJuWydhY2NvdW50R3JvdXBzRm9yR3JvdXBOYW1lc3BhY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlID8gKHRoaXMuYWNjb3VudEdyb3Vwc0Zvckdyb3VwTmFtZXNwYWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFjY291bnRHcm91cHNGb3JHcm91cE5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5nbG9iYWxOYW1lc3BhY2UgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuZ2xvYmFsTmFtZXNwYWNlICE9PSBudWxsKSB7dG9SZXR1cm5bJ2dsb2JhbE5hbWVzcGFjZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5nbG9iYWxOYW1lc3BhY2UgPyAodGhpcy5nbG9iYWxOYW1lc3BhY2UgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuZ2xvYmFsTmFtZXNwYWNlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2UgaW1wbGVtZW50cyBpLk5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2VJbnRlcmZhY2Uge1xuICAgIHBhcnRuZXJJZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlUGFydG5lck5hbWVzcGFjZSB7XG4gICAgICAgIGxldCBtID0gbmV3IE5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlIGltcGxlbWVudHMgaS5OYW1lc3BhY2VTeXN0ZW1OYW1lc3BhY2VJbnRlcmZhY2Uge1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5OYW1lc3BhY2VTeXN0ZW1OYW1lc3BhY2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZXNwYWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vYWlfYXNzaXN0YW50c19zZGsvc3JjL2xpYi9faW50ZXJuYWwvb2JqZWN0cy9uYW1lc3BhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLDhCQUE4QjtJQUd2QyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSw4QkFBOEIsRUFBRSxDQUFDO1FBQzdDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQWtEO1FBQzFELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsY0FBYyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7U0FBQztRQUNuRyxPQUFPLFFBQVEsQ0FBQztJQUNwQixDQUFDO0NBQ0o7QUFFRCxNQUFNLE9BQU8sd0JBQXdCO0lBRWpDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLHdCQUF3QixFQUFFLENBQUM7UUFDdkMsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNEM7UUFDcEQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLFNBQVM7SUFNbEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDeEIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLHFCQUFxQixFQUFFO1lBQUMsQ0FBQyxDQUFDLHFCQUFxQixHQUFHLDhCQUE4QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztTQUFDO1FBQ25JLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUFDO1FBQy9HLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUFDO1FBQzNHLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUFDLENBQUMsQ0FBQyxlQUFlLEdBQUcsd0JBQXdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztTQUFDO1FBQzNHLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFlBQVksTUFBNkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxTQUFTO1FBQ0wsTUFBTSxRQUFRLEdBRVYsRUFBRSxDQUFDO1FBRVAsSUFBSSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyx1QkFBdUIsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxxQkFBNkIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHFCQUFxQixDQUFDO1NBQUM7UUFDN1AsSUFBSSxPQUFPLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLGdCQUFnQixLQUFLLElBQUksRUFBRTtZQUFDLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxnQkFBd0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1NBQUM7UUFDL04sSUFBSSxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxlQUF1QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQUM7UUFDek4sSUFBSSxPQUFPLElBQUksQ0FBQyxlQUFlLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxlQUF1QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1NBQUM7UUFDek4sT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHlCQUF5QjtJQUdsQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1FBQ3hDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTZDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDcEYsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKO0FBRUQsTUFBTSxPQUFPLHdCQUF3QjtJQUVqQyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSx3QkFBd0IsRUFBRSxDQUFDO1FBQ3ZDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxZQUFZLE1BQTRDO1FBQ3BELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlQWNjb3VudEdyb3VwTmFtZXNwYWNlIGltcGxlbWVudHMgaS5OYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2VJbnRlcmZhY2Uge1xuICAgIGFjY291bnRHcm91cElkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZUFjY291bnRHcm91cE5hbWVzcGFjZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjY291bnRHcm91cElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhY2NvdW50R3JvdXBJZCddID0gdGhpcy5hY2NvdW50R3JvdXBJZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2UgaW1wbGVtZW50cyBpLk5hbWVzcGFjZUdsb2JhbE5hbWVzcGFjZUludGVyZmFjZSB7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk5hbWVzcGFjZUdsb2JhbE5hbWVzcGFjZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZSBpbXBsZW1lbnRzIGkuTmFtZXNwYWNlSW50ZXJmYWNlIHtcbiAgICBhY2NvdW50R3JvdXBOYW1lc3BhY2U6IE5hbWVzcGFjZUFjY291bnRHcm91cE5hbWVzcGFjZTtcbiAgICBwYXJ0bmVyTmFtZXNwYWNlOiBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlO1xuICAgIHN5c3RlbU5hbWVzcGFjZTogTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlO1xuICAgIGdsb2JhbE5hbWVzcGFjZTogTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTmFtZXNwYWNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTmFtZXNwYWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFjY291bnRHcm91cE5hbWVzcGFjZSkge20uYWNjb3VudEdyb3VwTmFtZXNwYWNlID0gTmFtZXNwYWNlQWNjb3VudEdyb3VwTmFtZXNwYWNlLmZyb21Qcm90byhwcm90by5hY2NvdW50R3JvdXBOYW1lc3BhY2UpO31cbiAgICAgICAgaWYgKHByb3RvLnBhcnRuZXJOYW1lc3BhY2UpIHttLnBhcnRuZXJOYW1lc3BhY2UgPSBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlLmZyb21Qcm90byhwcm90by5wYXJ0bmVyTmFtZXNwYWNlKTt9XG4gICAgICAgIGlmIChwcm90by5zeXN0ZW1OYW1lc3BhY2UpIHttLnN5c3RlbU5hbWVzcGFjZSA9IE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZS5mcm9tUHJvdG8ocHJvdG8uc3lzdGVtTmFtZXNwYWNlKTt9XG4gICAgICAgIGlmIChwcm90by5nbG9iYWxOYW1lc3BhY2UpIHttLmdsb2JhbE5hbWVzcGFjZSA9IE5hbWVzcGFjZUdsb2JhbE5hbWVzcGFjZS5mcm9tUHJvdG8ocHJvdG8uZ2xvYmFsTmFtZXNwYWNlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTmFtZXNwYWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWNjb3VudEdyb3VwTmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFjY291bnRHcm91cE5hbWVzcGFjZSAhPT0gbnVsbCkge3RvUmV0dXJuWydhY2NvdW50R3JvdXBOYW1lc3BhY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYWNjb3VudEdyb3VwTmFtZXNwYWNlID8gKHRoaXMuYWNjb3VudEdyb3VwTmFtZXNwYWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFjY291bnRHcm91cE5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVyTmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhcnRuZXJOYW1lc3BhY2UgIT09IG51bGwpIHt0b1JldHVyblsncGFydG5lck5hbWVzcGFjZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYXJ0bmVyTmFtZXNwYWNlID8gKHRoaXMucGFydG5lck5hbWVzcGFjZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYXJ0bmVyTmFtZXNwYWNlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN5c3RlbU5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zeXN0ZW1OYW1lc3BhY2UgIT09IG51bGwpIHt0b1JldHVyblsnc3lzdGVtTmFtZXNwYWNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN5c3RlbU5hbWVzcGFjZSA/ICh0aGlzLnN5c3RlbU5hbWVzcGFjZSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5zeXN0ZW1OYW1lc3BhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZ2xvYmFsTmFtZXNwYWNlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmdsb2JhbE5hbWVzcGFjZSAhPT0gbnVsbCkge3RvUmV0dXJuWydnbG9iYWxOYW1lc3BhY2UnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuZ2xvYmFsTmFtZXNwYWNlID8gKHRoaXMuZ2xvYmFsTmFtZXNwYWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmdsb2JhbE5hbWVzcGFjZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlIGltcGxlbWVudHMgaS5OYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlSW50ZXJmYWNlIHtcbiAgICBwYXJ0bmVySWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5OYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFydG5lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwYXJ0bmVySWQnXSA9IHRoaXMucGFydG5lcklkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZSBpbXBsZW1lbnRzIGkuTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlSW50ZXJmYWNlIHtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZSB7XG4gICAgICAgIGxldCBtID0gbmV3IE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG4iXX0=