@vendasta/ai-assistants 0.37.0 → 0.38.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.
@@ -13,8 +13,8 @@ export { Assistant, AssistantKey, Config, ConfigurableGoal, DeepgramConfig, Conf
13
13
  export { Connection, ConnectionKey, } from './connection';
14
14
  export { ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatMessage, ChatUserInfo, ContextInfo, } from './answer';
15
15
  export { PagedRequestOptions, PagedResponseMetadata, } from './paging';
16
- export { DeleteTestCasesRequest, GetTestRunRequest, GetTestRunResponse, ListTestCasesByAssistantRequest, ListTestCasesByAssistantResponse, ListTestRunsByAssistantRequest, ListTestRunsByAssistantResponse, RunTestsRequest, RunTestsResponse, TestCase, TestResult, TestRun, UpsertTestCasesRequest, } from './integration-tests';
16
+ export { CancelTestRunRequest, DeleteTestCasesRequest, GetTestRunRequest, GetTestRunResponse, ListTestCasesByAssistantRequest, ListTestCasesByAssistantResponse, ListTestRunsByAssistantRequest, ListTestRunsByAssistantResponse, RunTestsRequest, RunTestsResponse, SortOptions, TestCase, TestResult, TestRun, UpsertTestCasesRequest, } from './integration-tests';
17
17
  export { Access, } from './annotations';
18
18
  export { FieldMask, } from './field-mask';
19
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';
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixpQkFBaUI7QUFDakIsb0NBQW9DO0FBQ3BDLE9BQU8sRUFDSCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCx5QkFBeUIsRUFDekIsd0JBQXdCLEdBQzNCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHVEQUF1RCxFQUN2RCxtREFBbUQsR0FDdEQsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUNILE1BQU0sRUFDTixZQUFZLEVBQ1osZUFBZSxFQUNmLG1CQUFtQixFQUNuQixhQUFhLEdBQ2hCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxJQUFJLEVBQ0osT0FBTyxHQUNWLE1BQU0sUUFBUSxDQUFDO0FBRWhCLE9BQU8sRUFDSCxZQUFZLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUNBQWlDLEVBQ2pDLGlCQUFpQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0gsVUFBVSxFQUNWLGFBQWEsR0FDaEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILDhCQUE4QixFQUM5QixvQ0FBb0MsRUFDcEMsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEdBQ2QsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsR0FDeEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsOEJBQThCLEVBQzlCLCtCQUErQixFQUMvQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLFFBQVEsRUFDUixVQUFVLEVBQ1YsT0FBTyxFQUNQLHNCQUFzQixHQUN6QixNQUFNLHFCQUFxQixDQUFDO0FBRTdCLE9BQU8sRUFDSCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNILFNBQVMsR0FDWixNQUFNLGNBQWMsQ0FBQztBQUV0QixPQUFPLEVBQ0gsNEJBQTRCLEVBQzVCLDZCQUE2QixFQUM3Qiw2Q0FBNkMsRUFDN0Msc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsZ0NBQWdDLEVBQ2hDLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsOEJBQThCLEVBQzlCLDZCQUE2QixFQUM3Qix1QkFBdUIsRUFDdkIscURBQXFELEVBQ3JELDJCQUEyQixFQUMzQiwwQkFBMEIsRUFDMUIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLHdDQUF3QyxFQUN4Qyx5Q0FBeUMsRUFDekMsb0JBQW9CLEVBQ3BCLHFCQUFxQixFQUNyQixxQ0FBcUMsRUFDckMsc0NBQXNDLEVBQ3RDLCtCQUErQixFQUMvQixnQ0FBZ0MsRUFDaEMsa0JBQWtCLEVBQ2xCLG1CQUFtQixFQUNuQixjQUFjLEVBQ2QsZUFBZSxFQUNmLDZDQUE2QyxFQUM3Qyw4Q0FBOEMsRUFDOUMsb0NBQW9DLEVBQ3BDLHFDQUFxQyxFQUNyQyx1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsa0RBQWtELEVBQ2xELG1EQUFtRCxFQUNuRCxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLDZCQUE2QixFQUM3Qiw4QkFBOEIsRUFDOUIsZ0JBQWdCLEVBQ2hCLGlCQUFpQixFQUNqQix1QkFBdUIsRUFDdkIsd0JBQXdCLEVBQ3hCLG1DQUFtQyxFQUNuQyxvQ0FBb0MsRUFDcEMsOENBQThDLEVBQzlDLCtDQUErQyxFQUMvQyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxpQkFBaUIsRUFDakIsa0JBQWtCLEVBQ2xCLHlCQUF5QixFQUN6QiwwQkFBMEIsRUFDMUIsdUNBQXVDLEVBQ3ZDLGdDQUFnQyxFQUNoQyw2QkFBNkIsRUFDN0IsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGlCQUFpQixHQUNwQixNQUFNLE9BQU8sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cyBJbmRleC5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuZXhwb3J0IHtcbiAgICBOYW1lc3BhY2VBY2NvdW50R3JvdXBOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlR2xvYmFsTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZSxcbiAgICBOYW1lc3BhY2VQYXJ0bmVyTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZVN5c3RlbU5hbWVzcGFjZSxcbn0gZnJvbSAnLi9uYW1lc3BhY2UnO1xuXG5leHBvcnQge1xuICAgIEZ1bmN0aW9uLFxuICAgIEZ1bmN0aW9uQXV0aFN0cmF0ZWd5LFxuICAgIEZ1bmN0aW9uSGVhZGVyLFxuICAgIEZ1bmN0aW9uS2V5LFxuICAgIEZ1bmN0aW9uUGFyYW1ldGVyLFxuICAgIEZ1bmN0aW9uQXV0aFN0cmF0ZWd5UGxhdGZvcm1NYW5hZ2VkRnVuY3Rpb25BdXRoU3RyYXRlZ3ksXG4gICAgRnVuY3Rpb25BdXRoU3RyYXRlZ3lVbnNwZWNpZmllZEZ1bmN0aW9uQXV0aFN0cmF0ZWd5LFxufSBmcm9tICcuL2Z1bmN0aW9uJztcblxuZXhwb3J0IHtcbiAgICBQcm9tcHQsXG4gICAgUHJvbXB0TW9kdWxlLFxuICAgIFByb21wdE1vZHVsZUtleSxcbiAgICBQcm9tcHRNb2R1bGVWZXJzaW9uLFxuICAgIFByb21wdFZlcnNpb24sXG59IGZyb20gJy4vcHJvbXB0JztcblxuZXhwb3J0IHtcbiAgICBHb2FsLFxuICAgIEdvYWxLZXksXG59IGZyb20gJy4vZ29hbCc7XG5cbmV4cG9ydCB7XG4gICAgS2V5VmFsdWVQYWlyLFxufSBmcm9tICcuL2NvbW1vbic7XG5cbmV4cG9ydCB7XG4gICAgQXNzaXN0YW50LFxuICAgIEFzc2lzdGFudEtleSxcbiAgICBDb25maWcsXG4gICAgQ29uZmlndXJhYmxlR29hbCxcbiAgICBEZWVwZ3JhbUNvbmZpZyxcbiAgICBDb25maWdJbmJveENvbmZpZyxcbiAgICBNb2RlbENvbmZpZyxcbiAgICBPcGVuQUlSZWFsdGltZUNvbmZpZyxcbiAgICBPcGVuQUlSZWFsdGltZUNvbmZpZ1R1cm5EZXRlY3Rpb24sXG4gICAgQ29uZmlnVm9pY2VDb25maWcsXG59IGZyb20gJy4vYXNzaXN0YW50JztcblxuZXhwb3J0IHtcbiAgICBDb25uZWN0aW9uLFxuICAgIENvbm5lY3Rpb25LZXksXG59IGZyb20gJy4vY29ubmVjdGlvbic7XG5cbmV4cG9ydCB7XG4gICAgQ2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iLFxuICAgIENoYXRBbnN3ZXJGdW5jdGlvbkV4ZWN1dGlvbkpvYlJlc3VsdCxcbiAgICBDaGF0TWVzc2FnZSxcbiAgICBDaGF0VXNlckluZm8sXG4gICAgQ29udGV4dEluZm8sXG59IGZyb20gJy4vYW5zd2VyJztcblxuZXhwb3J0IHtcbiAgICBQYWdlZFJlcXVlc3RPcHRpb25zLFxuICAgIFBhZ2VkUmVzcG9uc2VNZXRhZGF0YSxcbn0gZnJvbSAnLi9wYWdpbmcnO1xuXG5leHBvcnQge1xuICAgIERlbGV0ZVRlc3RDYXNlc1JlcXVlc3QsXG4gICAgR2V0VGVzdFJ1blJlcXVlc3QsXG4gICAgR2V0VGVzdFJ1blJlc3BvbnNlLFxuICAgIExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlcXVlc3QsXG4gICAgTGlzdFRlc3RDYXNlc0J5QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgTGlzdFRlc3RSdW5zQnlBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIExpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgUnVuVGVzdHNSZXF1ZXN0LFxuICAgIFJ1blRlc3RzUmVzcG9uc2UsXG4gICAgVGVzdENhc2UsXG4gICAgVGVzdFJlc3VsdCxcbiAgICBUZXN0UnVuLFxuICAgIFVwc2VydFRlc3RDYXNlc1JlcXVlc3QsXG59IGZyb20gJy4vaW50ZWdyYXRpb24tdGVzdHMnO1xuXG5leHBvcnQge1xuICAgIEFjY2Vzcyxcbn0gZnJvbSAnLi9hbm5vdGF0aW9ucyc7XG5cbmV4cG9ydCB7XG4gICAgRmllbGRNYXNrLFxufSBmcm9tICcuL2ZpZWxkLW1hc2snO1xuXG5leHBvcnQge1xuICAgIEJ1aWxkRGVmYXVsdEFzc2lzdGFudFJlcXVlc3QsXG4gICAgQnVpbGREZWZhdWx0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgU2V0QXNzaXN0YW50Q29ubmVjdGlvbnNSZXF1ZXN0Q29ubmVjdGlvblN0YXRlLFxuICAgIENyZWF0ZUFzc2lzdGFudFJlcXVlc3QsXG4gICAgQ3JlYXRlQXNzaXN0YW50UmVzcG9uc2UsXG4gICAgQ3JlYXRlR29hbFJlcXVlc3QsXG4gICAgQ3JlYXRlR29hbFJlc3BvbnNlLFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlUmVzcG9uc2UsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgQ3JlYXRlUHJvbXB0UmVxdWVzdCxcbiAgICBEZWxldGVBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIERlbGV0ZUNvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIERlbGV0ZUZ1bmN0aW9uUmVxdWVzdCxcbiAgICBEZWxldGVHb2FsUmVxdWVzdCxcbiAgICBEZWxldGVQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIERlbGV0ZVByb21wdFJlcXVlc3QsXG4gICAgRGVwbG95UHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBEZXBsb3lQcm9tcHRSZXF1ZXN0LFxuICAgIEV4ZWN1dGVGdW5jdGlvblJlcXVlc3QsXG4gICAgRXhlY3V0ZUZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgTGlzdFByb21wdE1vZHVsZVJlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RDb25uZWN0aW9uc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RHb2Fsc1JlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBbGxBc3Npc3RhbnRzQXNzb2NpYXRlZFRvQ29ubmVjdGlvblJlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RBc3Npc3RhbnRSZXF1ZXN0RmlsdGVycyxcbiAgICBMaXN0RnVuY3Rpb25SZXF1ZXN0RmlsdGVycyxcbiAgICBHZW5lcmF0ZUNoYXRBbnN3ZXJSZXF1ZXN0LFxuICAgIEdlbmVyYXRlQ2hhdEFuc3dlclJlc3BvbnNlLFxuICAgIEdldEFzc2lzdGFudFJlcXVlc3QsXG4gICAgR2V0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgR2V0Q2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iUmVxdWVzdCxcbiAgICBHZXRDaGF0QW5zd2VyRnVuY3Rpb25FeGVjdXRpb25Kb2JSZXNwb25zZSxcbiAgICBHZXRDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBHZXRDb25uZWN0aW9uUmVzcG9uc2UsXG4gICAgR2V0RGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXREZXBsb3llZFByb21wdFZlcnNpb25SZXF1ZXN0LFxuICAgIEdldERlcGxveWVkUHJvbXB0VmVyc2lvblJlc3BvbnNlLFxuICAgIEdldEZ1bmN0aW9uUmVxdWVzdCxcbiAgICBHZXRGdW5jdGlvblJlc3BvbnNlLFxuICAgIEdldEdvYWxSZXF1ZXN0LFxuICAgIEdldEdvYWxSZXNwb25zZSxcbiAgICBHZXRIeWRyYXRlZERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3QsXG4gICAgR2V0SHlkcmF0ZWREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRNdWx0aURlcGxveWVkUHJvbXB0VmVyc2lvblJlcXVlc3QsXG4gICAgR2V0TXVsdGlEZXBsb3llZFByb21wdFZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRNdWx0aUZ1bmN0aW9uUmVxdWVzdCxcbiAgICBHZXRNdWx0aUZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgR2V0TXVsdGlHb2FsUmVxdWVzdCxcbiAgICBHZXRNdWx0aUdvYWxSZXNwb25zZSxcbiAgICBHZXRNdWx0aUh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRNdWx0aUh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRNb2R1bGVSZXNwb25zZSxcbiAgICBHZXRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRNb2R1bGVWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0UHJvbXB0UmVxdWVzdCxcbiAgICBHZXRQcm9tcHRSZXNwb25zZSxcbiAgICBHZXRQcm9tcHRWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRQcm9tcHRWZXJzaW9uUmVzcG9uc2UsXG4gICAgR29hbHNEaXNhYmxlZEZvckFjY291bnRHcm91cFJlcXVlc3QsXG4gICAgR29hbHNEaXNhYmxlZEZvckFjY291bnRHcm91cFJlc3BvbnNlLFxuICAgIExpc3RBbGxBc3Npc3RhbnRzQXNzb2NpYXRlZFRvQ29ubmVjdGlvblJlcXVlc3QsXG4gICAgTGlzdEFsbEFzc2lzdGFudHNBc3NvY2lhdGVkVG9Db25uZWN0aW9uUmVzcG9uc2UsXG4gICAgTGlzdEFzc2lzdGFudFJlcXVlc3QsXG4gICAgTGlzdEFzc2lzdGFudFJlc3BvbnNlLFxuICAgIExpc3RDb25uZWN0aW9uc1JlcXVlc3QsXG4gICAgTGlzdENvbm5lY3Rpb25zUmVzcG9uc2UsXG4gICAgTGlzdEZ1bmN0aW9uUmVxdWVzdCxcbiAgICBMaXN0RnVuY3Rpb25SZXNwb25zZSxcbiAgICBMaXN0R29hbHNSZXF1ZXN0LFxuICAgIExpc3RHb2Fsc1Jlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRNb2R1bGVSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0TW9kdWxlVmVyc2lvbnNSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRNb2R1bGVWZXJzaW9uc1Jlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRSZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0VmVyc2lvbnNSZXF1ZXN0LFxuICAgIExpc3RQcm9tcHRWZXJzaW9uc1Jlc3BvbnNlLFxuICAgIENyZWF0ZVByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0T3B0aW9ucyxcbiAgICBHZW5lcmF0ZUNoYXRBbnN3ZXJSZXF1ZXN0T3B0aW9ucyxcbiAgICBDcmVhdGVBc3Npc3RhbnRSZXF1ZXN0T3B0aW9ucyxcbiAgICBVcHNlcnRBc3Npc3RhbnRSZXF1ZXN0T3B0aW9ucyxcbiAgICBTZXRBc3Npc3RhbnRDb25uZWN0aW9uc1JlcXVlc3QsXG4gICAgVXBkYXRlQXNzaXN0YW50UmVxdWVzdCxcbiAgICBVcGRhdGVHb2FsUmVxdWVzdCxcbiAgICBVcGRhdGVQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIFVwZGF0ZVByb21wdFJlcXVlc3QsXG4gICAgVXBzZXJ0QXNzaXN0YW50UmVxdWVzdCxcbiAgICBVcHNlcnRBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBVcHNlcnRDb25uZWN0aW9uUmVxdWVzdCxcbiAgICBVcHNlcnRGdW5jdGlvblJlcXVlc3QsXG4gICAgVXBzZXJ0R29hbFJlcXVlc3QsXG59IGZyb20gJy4vYXBpJztcblxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9DQUFvQztBQUNwQywyQkFBMkI7QUFDM0IsZ0JBQWdCO0FBQ2hCLEVBQUU7QUFDRixpQkFBaUI7QUFDakIsb0NBQW9DO0FBQ3BDLE9BQU8sRUFDSCw4QkFBOEIsRUFDOUIsd0JBQXdCLEVBQ3hCLFNBQVMsRUFDVCx5QkFBeUIsRUFDekIsd0JBQXdCLEdBQzNCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDSCxRQUFRLEVBQ1Isb0JBQW9CLEVBQ3BCLGNBQWMsRUFDZCxXQUFXLEVBQ1gsaUJBQWlCLEVBQ2pCLHVEQUF1RCxFQUN2RCxtREFBbUQsR0FDdEQsTUFBTSxZQUFZLENBQUM7QUFFcEIsT0FBTyxFQUNILE1BQU0sRUFDTixZQUFZLEVBQ1osZUFBZSxFQUNmLG1CQUFtQixFQUNuQixhQUFhLEdBQ2hCLE1BQU0sVUFBVSxDQUFDO0FBRWxCLE9BQU8sRUFDSCxJQUFJLEVBQ0osT0FBTyxHQUNWLE1BQU0sUUFBUSxDQUFDO0FBRWhCLE9BQU8sRUFDSCxZQUFZLEdBQ2YsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLGdCQUFnQixFQUNoQixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsaUNBQWlDLEVBQ2pDLGlCQUFpQixHQUNwQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0gsVUFBVSxFQUNWLGFBQWEsR0FDaEIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNILDhCQUE4QixFQUM5QixvQ0FBb0MsRUFDcEMsV0FBVyxFQUNYLFlBQVksRUFDWixXQUFXLEdBQ2QsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILG1CQUFtQixFQUNuQixxQkFBcUIsR0FDeEIsTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILG9CQUFvQixFQUNwQixzQkFBc0IsRUFDdEIsaUJBQWlCLEVBQ2pCLGtCQUFrQixFQUNsQiwrQkFBK0IsRUFDL0IsZ0NBQWdDLEVBQ2hDLDhCQUE4QixFQUM5QiwrQkFBK0IsRUFDL0IsZUFBZSxFQUNmLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsUUFBUSxFQUNSLFVBQVUsRUFDVixPQUFPLEVBQ1Asc0JBQXNCLEdBQ3pCLE1BQU0scUJBQXFCLENBQUM7QUFFN0IsT0FBTyxFQUNILE1BQU0sR0FDVCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0gsU0FBUyxHQUNaLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDSCw0QkFBNEIsRUFDNUIsNkJBQTZCLEVBQzdCLDZDQUE2QyxFQUM3QyxzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQixnQ0FBZ0MsRUFDaEMsbUJBQW1CLEVBQ25CLHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3JCLGlCQUFpQixFQUNqQix5QkFBeUIsRUFDekIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixtQkFBbUIsRUFDbkIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2Qiw4QkFBOEIsRUFDOUIsNkJBQTZCLEVBQzdCLHVCQUF1QixFQUN2QixxREFBcUQsRUFDckQsMkJBQTJCLEVBQzNCLDBCQUEwQixFQUMxQix5QkFBeUIsRUFDekIsMEJBQTBCLEVBQzFCLG1CQUFtQixFQUNuQixvQkFBb0IsRUFDcEIsd0NBQXdDLEVBQ3hDLHlDQUF5QyxFQUN6QyxvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLHFDQUFxQyxFQUNyQyxzQ0FBc0MsRUFDdEMsK0JBQStCLEVBQy9CLGdDQUFnQyxFQUNoQyxrQkFBa0IsRUFDbEIsbUJBQW1CLEVBQ25CLGNBQWMsRUFDZCxlQUFlLEVBQ2YsNkNBQTZDLEVBQzdDLDhDQUE4QyxFQUM5QyxvQ0FBb0MsRUFDcEMscUNBQXFDLEVBQ3JDLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsbUJBQW1CLEVBQ25CLG9CQUFvQixFQUNwQixrREFBa0QsRUFDbEQsbURBQW1ELEVBQ25ELHNCQUFzQixFQUN0Qix1QkFBdUIsRUFDdkIsNkJBQTZCLEVBQzdCLDhCQUE4QixFQUM5QixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLHVCQUF1QixFQUN2Qix3QkFBd0IsRUFDeEIsbUNBQW1DLEVBQ25DLG9DQUFvQyxFQUNwQyw4Q0FBOEMsRUFDOUMsK0NBQStDLEVBQy9DLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsc0JBQXNCLEVBQ3RCLHVCQUF1QixFQUN2QixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixpQkFBaUIsRUFDakIsdUJBQXVCLEVBQ3ZCLHdCQUF3QixFQUN4QiwrQkFBK0IsRUFDL0IsZ0NBQWdDLEVBQ2hDLGlCQUFpQixFQUNqQixrQkFBa0IsRUFDbEIseUJBQXlCLEVBQ3pCLDBCQUEwQixFQUMxQix1Q0FBdUMsRUFDdkMsZ0NBQWdDLEVBQ2hDLDZCQUE2QixFQUM3Qiw2QkFBNkIsRUFDN0IsOEJBQThCLEVBQzlCLHNCQUFzQixFQUN0QixpQkFBaUIsRUFDakIseUJBQXlCLEVBQ3pCLG1CQUFtQixFQUNuQixzQkFBc0IsRUFDdEIsdUJBQXVCLEVBQ3ZCLHVCQUF1QixFQUN2QixxQkFBcUIsRUFDckIsaUJBQWlCLEdBQ3BCLE1BQU0sT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzIEluZGV4LlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5leHBvcnQge1xuICAgIE5hbWVzcGFjZUFjY291bnRHcm91cE5hbWVzcGFjZSxcbiAgICBOYW1lc3BhY2VHbG9iYWxOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlLFxuICAgIE5hbWVzcGFjZVBhcnRuZXJOYW1lc3BhY2UsXG4gICAgTmFtZXNwYWNlU3lzdGVtTmFtZXNwYWNlLFxufSBmcm9tICcuL25hbWVzcGFjZSc7XG5cbmV4cG9ydCB7XG4gICAgRnVuY3Rpb24sXG4gICAgRnVuY3Rpb25BdXRoU3RyYXRlZ3ksXG4gICAgRnVuY3Rpb25IZWFkZXIsXG4gICAgRnVuY3Rpb25LZXksXG4gICAgRnVuY3Rpb25QYXJhbWV0ZXIsXG4gICAgRnVuY3Rpb25BdXRoU3RyYXRlZ3lQbGF0Zm9ybU1hbmFnZWRGdW5jdGlvbkF1dGhTdHJhdGVneSxcbiAgICBGdW5jdGlvbkF1dGhTdHJhdGVneVVuc3BlY2lmaWVkRnVuY3Rpb25BdXRoU3RyYXRlZ3ksXG59IGZyb20gJy4vZnVuY3Rpb24nO1xuXG5leHBvcnQge1xuICAgIFByb21wdCxcbiAgICBQcm9tcHRNb2R1bGUsXG4gICAgUHJvbXB0TW9kdWxlS2V5LFxuICAgIFByb21wdE1vZHVsZVZlcnNpb24sXG4gICAgUHJvbXB0VmVyc2lvbixcbn0gZnJvbSAnLi9wcm9tcHQnO1xuXG5leHBvcnQge1xuICAgIEdvYWwsXG4gICAgR29hbEtleSxcbn0gZnJvbSAnLi9nb2FsJztcblxuZXhwb3J0IHtcbiAgICBLZXlWYWx1ZVBhaXIsXG59IGZyb20gJy4vY29tbW9uJztcblxuZXhwb3J0IHtcbiAgICBBc3Npc3RhbnQsXG4gICAgQXNzaXN0YW50S2V5LFxuICAgIENvbmZpZyxcbiAgICBDb25maWd1cmFibGVHb2FsLFxuICAgIERlZXBncmFtQ29uZmlnLFxuICAgIENvbmZpZ0luYm94Q29uZmlnLFxuICAgIE1vZGVsQ29uZmlnLFxuICAgIE9wZW5BSVJlYWx0aW1lQ29uZmlnLFxuICAgIE9wZW5BSVJlYWx0aW1lQ29uZmlnVHVybkRldGVjdGlvbixcbiAgICBDb25maWdWb2ljZUNvbmZpZyxcbn0gZnJvbSAnLi9hc3Npc3RhbnQnO1xuXG5leHBvcnQge1xuICAgIENvbm5lY3Rpb24sXG4gICAgQ29ubmVjdGlvbktleSxcbn0gZnJvbSAnLi9jb25uZWN0aW9uJztcblxuZXhwb3J0IHtcbiAgICBDaGF0QW5zd2VyRnVuY3Rpb25FeGVjdXRpb25Kb2IsXG4gICAgQ2hhdEFuc3dlckZ1bmN0aW9uRXhlY3V0aW9uSm9iUmVzdWx0LFxuICAgIENoYXRNZXNzYWdlLFxuICAgIENoYXRVc2VySW5mbyxcbiAgICBDb250ZXh0SW5mbyxcbn0gZnJvbSAnLi9hbnN3ZXInO1xuXG5leHBvcnQge1xuICAgIFBhZ2VkUmVxdWVzdE9wdGlvbnMsXG4gICAgUGFnZWRSZXNwb25zZU1ldGFkYXRhLFxufSBmcm9tICcuL3BhZ2luZyc7XG5cbmV4cG9ydCB7XG4gICAgQ2FuY2VsVGVzdFJ1blJlcXVlc3QsXG4gICAgRGVsZXRlVGVzdENhc2VzUmVxdWVzdCxcbiAgICBHZXRUZXN0UnVuUmVxdWVzdCxcbiAgICBHZXRUZXN0UnVuUmVzcG9uc2UsXG4gICAgTGlzdFRlc3RDYXNlc0J5QXNzaXN0YW50UmVxdWVzdCxcbiAgICBMaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlcXVlc3QsXG4gICAgTGlzdFRlc3RSdW5zQnlBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBSdW5UZXN0c1JlcXVlc3QsXG4gICAgUnVuVGVzdHNSZXNwb25zZSxcbiAgICBTb3J0T3B0aW9ucyxcbiAgICBUZXN0Q2FzZSxcbiAgICBUZXN0UmVzdWx0LFxuICAgIFRlc3RSdW4sXG4gICAgVXBzZXJ0VGVzdENhc2VzUmVxdWVzdCxcbn0gZnJvbSAnLi9pbnRlZ3JhdGlvbi10ZXN0cyc7XG5cbmV4cG9ydCB7XG4gICAgQWNjZXNzLFxufSBmcm9tICcuL2Fubm90YXRpb25zJztcblxuZXhwb3J0IHtcbiAgICBGaWVsZE1hc2ssXG59IGZyb20gJy4vZmllbGQtbWFzayc7XG5cbmV4cG9ydCB7XG4gICAgQnVpbGREZWZhdWx0QXNzaXN0YW50UmVxdWVzdCxcbiAgICBCdWlsZERlZmF1bHRBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBTZXRBc3Npc3RhbnRDb25uZWN0aW9uc1JlcXVlc3RDb25uZWN0aW9uU3RhdGUsXG4gICAgQ3JlYXRlQXNzaXN0YW50UmVxdWVzdCxcbiAgICBDcmVhdGVBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBDcmVhdGVHb2FsUmVxdWVzdCxcbiAgICBDcmVhdGVHb2FsUmVzcG9uc2UsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlUmVxdWVzdCxcbiAgICBDcmVhdGVQcm9tcHRNb2R1bGVSZXNwb25zZSxcbiAgICBDcmVhdGVQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBDcmVhdGVQcm9tcHRSZXF1ZXN0LFxuICAgIERlbGV0ZUFzc2lzdGFudFJlcXVlc3QsXG4gICAgRGVsZXRlQ29ubmVjdGlvblJlcXVlc3QsXG4gICAgRGVsZXRlRnVuY3Rpb25SZXF1ZXN0LFxuICAgIERlbGV0ZUdvYWxSZXF1ZXN0LFxuICAgIERlbGV0ZVByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgRGVsZXRlUHJvbXB0UmVxdWVzdCxcbiAgICBEZXBsb3lQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIERlcGxveVByb21wdFJlcXVlc3QsXG4gICAgRXhlY3V0ZUZ1bmN0aW9uUmVxdWVzdCxcbiAgICBFeGVjdXRlRnVuY3Rpb25SZXNwb25zZSxcbiAgICBMaXN0UHJvbXB0TW9kdWxlUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdENvbm5lY3Rpb25zUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEdvYWxzUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEFsbEFzc2lzdGFudHNBc3NvY2lhdGVkVG9Db25uZWN0aW9uUmVxdWVzdEZpbHRlcnMsXG4gICAgTGlzdEFzc2lzdGFudFJlcXVlc3RGaWx0ZXJzLFxuICAgIExpc3RGdW5jdGlvblJlcXVlc3RGaWx0ZXJzLFxuICAgIEdlbmVyYXRlQ2hhdEFuc3dlclJlcXVlc3QsXG4gICAgR2VuZXJhdGVDaGF0QW5zd2VyUmVzcG9uc2UsXG4gICAgR2V0QXNzaXN0YW50UmVxdWVzdCxcbiAgICBHZXRBc3Npc3RhbnRSZXNwb25zZSxcbiAgICBHZXRDaGF0QW5zd2VyRnVuY3Rpb25FeGVjdXRpb25Kb2JSZXF1ZXN0LFxuICAgIEdldENoYXRBbnN3ZXJGdW5jdGlvbkV4ZWN1dGlvbkpvYlJlc3BvbnNlLFxuICAgIEdldENvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIEdldENvbm5lY3Rpb25SZXNwb25zZSxcbiAgICBHZXREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0LFxuICAgIEdldERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlc3BvbnNlLFxuICAgIEdldERlcGxveWVkUHJvbXB0VmVyc2lvblJlcXVlc3QsXG4gICAgR2V0RGVwbG95ZWRQcm9tcHRWZXJzaW9uUmVzcG9uc2UsXG4gICAgR2V0RnVuY3Rpb25SZXF1ZXN0LFxuICAgIEdldEZ1bmN0aW9uUmVzcG9uc2UsXG4gICAgR2V0R29hbFJlcXVlc3QsXG4gICAgR2V0R29hbFJlc3BvbnNlLFxuICAgIEdldEh5ZHJhdGVkRGVwbG95ZWRQcm9tcHRNb2R1bGVWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRIeWRyYXRlZERlcGxveWVkUHJvbXB0TW9kdWxlVmVyc2lvblJlc3BvbnNlLFxuICAgIEdldE11bHRpRGVwbG95ZWRQcm9tcHRWZXJzaW9uUmVxdWVzdCxcbiAgICBHZXRNdWx0aURlcGxveWVkUHJvbXB0VmVyc2lvblJlc3BvbnNlLFxuICAgIEdldE11bHRpRnVuY3Rpb25SZXF1ZXN0LFxuICAgIEdldE11bHRpRnVuY3Rpb25SZXNwb25zZSxcbiAgICBHZXRNdWx0aUdvYWxSZXF1ZXN0LFxuICAgIEdldE11bHRpR29hbFJlc3BvbnNlLFxuICAgIEdldE11bHRpSHlkcmF0ZWREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0LFxuICAgIEdldE11bHRpSHlkcmF0ZWREZXBsb3llZFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRQcm9tcHRNb2R1bGVSZXF1ZXN0LFxuICAgIEdldFByb21wdE1vZHVsZVJlc3BvbnNlLFxuICAgIEdldFByb21wdE1vZHVsZVZlcnNpb25SZXF1ZXN0LFxuICAgIEdldFByb21wdE1vZHVsZVZlcnNpb25SZXNwb25zZSxcbiAgICBHZXRQcm9tcHRSZXF1ZXN0LFxuICAgIEdldFByb21wdFJlc3BvbnNlLFxuICAgIEdldFByb21wdFZlcnNpb25SZXF1ZXN0LFxuICAgIEdldFByb21wdFZlcnNpb25SZXNwb25zZSxcbiAgICBHb2Fsc0Rpc2FibGVkRm9yQWNjb3VudEdyb3VwUmVxdWVzdCxcbiAgICBHb2Fsc0Rpc2FibGVkRm9yQWNjb3VudEdyb3VwUmVzcG9uc2UsXG4gICAgTGlzdEFsbEFzc2lzdGFudHNBc3NvY2lhdGVkVG9Db25uZWN0aW9uUmVxdWVzdCxcbiAgICBMaXN0QWxsQXNzaXN0YW50c0Fzc29jaWF0ZWRUb0Nvbm5lY3Rpb25SZXNwb25zZSxcbiAgICBMaXN0QXNzaXN0YW50UmVxdWVzdCxcbiAgICBMaXN0QXNzaXN0YW50UmVzcG9uc2UsXG4gICAgTGlzdENvbm5lY3Rpb25zUmVxdWVzdCxcbiAgICBMaXN0Q29ubmVjdGlvbnNSZXNwb25zZSxcbiAgICBMaXN0RnVuY3Rpb25SZXF1ZXN0LFxuICAgIExpc3RGdW5jdGlvblJlc3BvbnNlLFxuICAgIExpc3RHb2Fsc1JlcXVlc3QsXG4gICAgTGlzdEdvYWxzUmVzcG9uc2UsXG4gICAgTGlzdFByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgTGlzdFByb21wdE1vZHVsZVJlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRNb2R1bGVWZXJzaW9uc1JlcXVlc3QsXG4gICAgTGlzdFByb21wdE1vZHVsZVZlcnNpb25zUmVzcG9uc2UsXG4gICAgTGlzdFByb21wdFJlcXVlc3QsXG4gICAgTGlzdFByb21wdFJlc3BvbnNlLFxuICAgIExpc3RQcm9tcHRWZXJzaW9uc1JlcXVlc3QsXG4gICAgTGlzdFByb21wdFZlcnNpb25zUmVzcG9uc2UsXG4gICAgQ3JlYXRlUHJvbXB0TW9kdWxlVmVyc2lvblJlcXVlc3RPcHRpb25zLFxuICAgIEdlbmVyYXRlQ2hhdEFuc3dlclJlcXVlc3RPcHRpb25zLFxuICAgIENyZWF0ZUFzc2lzdGFudFJlcXVlc3RPcHRpb25zLFxuICAgIFVwc2VydEFzc2lzdGFudFJlcXVlc3RPcHRpb25zLFxuICAgIFNldEFzc2lzdGFudENvbm5lY3Rpb25zUmVxdWVzdCxcbiAgICBVcGRhdGVBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIFVwZGF0ZUdvYWxSZXF1ZXN0LFxuICAgIFVwZGF0ZVByb21wdE1vZHVsZVJlcXVlc3QsXG4gICAgVXBkYXRlUHJvbXB0UmVxdWVzdCxcbiAgICBVcHNlcnRBc3Npc3RhbnRSZXF1ZXN0LFxuICAgIFVwc2VydEFzc2lzdGFudFJlc3BvbnNlLFxuICAgIFVwc2VydENvbm5lY3Rpb25SZXF1ZXN0LFxuICAgIFVwc2VydEZ1bmN0aW9uUmVxdWVzdCxcbiAgICBVcHNlcnRHb2FsUmVxdWVzdCxcbn0gZnJvbSAnLi9hcGknO1xuXG4iXX0=
@@ -1,12 +1,39 @@
1
1
  import { AssistantKey } from './assistant';
2
2
  import { ChatMessage } from './answer';
3
3
  import { PagedRequestOptions, PagedResponseMetadata } from './paging';
4
+ import * as e from '../enums';
4
5
  export function enumStringToValue(enumRef, value) {
5
6
  if (typeof value === 'number') {
6
7
  return value;
7
8
  }
8
9
  return enumRef[value];
9
10
  }
11
+ export class CancelTestRunRequest {
12
+ static fromProto(proto) {
13
+ let m = new CancelTestRunRequest();
14
+ m = Object.assign(m, proto);
15
+ if (proto.assistant) {
16
+ m.assistant = AssistantKey.fromProto(proto.assistant);
17
+ }
18
+ return m;
19
+ }
20
+ constructor(kwargs) {
21
+ if (!kwargs) {
22
+ return;
23
+ }
24
+ Object.assign(this, kwargs);
25
+ }
26
+ toApiJson() {
27
+ const toReturn = {};
28
+ if (typeof this.assistant !== 'undefined' && this.assistant !== null) {
29
+ toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;
30
+ }
31
+ if (typeof this.id !== 'undefined') {
32
+ toReturn['id'] = this.id;
33
+ }
34
+ return toReturn;
35
+ }
36
+ }
10
37
  export class DeleteTestCasesRequest {
11
38
  static fromProto(proto) {
12
39
  let m = new DeleteTestCasesRequest();
@@ -92,6 +119,9 @@ export class ListTestCasesByAssistantRequest {
92
119
  if (proto.pagingOptions) {
93
120
  m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
94
121
  }
122
+ if (proto.sortOptions) {
123
+ m.sortOptions = SortOptions.fromProto(proto.sortOptions);
124
+ }
95
125
  return m;
96
126
  }
97
127
  constructor(kwargs) {
@@ -108,6 +138,12 @@ export class ListTestCasesByAssistantRequest {
108
138
  if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
109
139
  toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
110
140
  }
141
+ if (typeof this.searchTerm !== 'undefined') {
142
+ toReturn['searchTerm'] = this.searchTerm;
143
+ }
144
+ if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {
145
+ toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? this.sortOptions.toApiJson() : this.sortOptions;
146
+ }
111
147
  return toReturn;
112
148
  }
113
149
  }
@@ -244,6 +280,32 @@ export class RunTestsResponse {
244
280
  return toReturn;
245
281
  }
246
282
  }
283
+ export class SortOptions {
284
+ static fromProto(proto) {
285
+ let m = new SortOptions();
286
+ m = Object.assign(m, proto);
287
+ if (proto.direction) {
288
+ m.direction = enumStringToValue(e.SortDirection, proto.direction);
289
+ }
290
+ return m;
291
+ }
292
+ constructor(kwargs) {
293
+ if (!kwargs) {
294
+ return;
295
+ }
296
+ Object.assign(this, kwargs);
297
+ }
298
+ toApiJson() {
299
+ const toReturn = {};
300
+ if (typeof this.direction !== 'undefined') {
301
+ toReturn['direction'] = this.direction;
302
+ }
303
+ if (typeof this.field !== 'undefined') {
304
+ toReturn['field'] = this.field;
305
+ }
306
+ return toReturn;
307
+ }
308
+ }
247
309
  export class TestCase {
248
310
  static fromProto(proto) {
249
311
  let m = new TestCase();
@@ -384,4 +446,4 @@ export class UpsertTestCasesRequest {
384
446
  return toReturn;
385
447
  }
386
448
  }
387
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2ludGVncmF0aW9uLXRlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFHdEUsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLHNCQUFzQjtJQUkvQixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO1FBQ3JDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDN0UsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUEwQztRQUNsRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELFNBQVM7UUFDTCxNQUFNLFFB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QixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDckwsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3JMLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFzc2lzdGFudEtleSB9IGZyb20gJy4vYXNzaXN0YW50JztcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi9hbnN3ZXInO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9wYWdpbmcnO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgRGVsZXRlVGVzdENhc2VzUmVxdWVzdCBpbXBsZW1lbnRzIGkuRGVsZXRlVGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYXNzaXN0YW50OiBBc3Npc3RhbnRLZXk7XG4gICAgdGVzdENhc2VJZHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogRGVsZXRlVGVzdENhc2VzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IERlbGV0ZVRlc3RDYXNlc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXNzaXN0YW50KSB7bS5hc3Npc3RhbnQgPSBBc3Npc3RhbnRLZXkuZnJvbVByb3RvKHByb3RvLmFzc2lzdGFudCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkRlbGV0ZVRlc3RDYXNlc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hc3Npc3RhbnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXNzaXN0YW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Fzc2lzdGFudCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hc3Npc3RhbnQgPyAodGhpcy5hc3Npc3RhbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXNzaXN0YW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RDYXNlSWRzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0ZXN0Q2FzZUlkcyddID0gdGhpcy50ZXN0Q2FzZUlkczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRUZXN0UnVuUmVxdWVzdCBpbXBsZW1lbnRzIGkuR2V0VGVzdFJ1blJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFzc2lzdGFudDogQXNzaXN0YW50S2V5O1xuICAgIGlkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRUZXN0UnVuUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldFRlc3RSdW5SZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFzc2lzdGFudCkge20uYXNzaXN0YW50ID0gQXNzaXN0YW50S2V5LmZyb21Qcm90byhwcm90by5hc3Npc3RhbnQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRUZXN0UnVuUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFRlc3RSdW5SZXNwb25zZSBpbXBsZW1lbnRzIGkuR2V0VGVzdFJ1blJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0ZXN0UnVuOiBUZXN0UnVuO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0VGVzdFJ1blJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VGVzdFJ1blJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRlc3RSdW4pIHttLnRlc3RSdW4gPSBUZXN0UnVuLmZyb21Qcm90byhwcm90by50ZXN0UnVuKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuR2V0VGVzdFJ1blJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdFJ1biAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50ZXN0UnVuICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rlc3RSdW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdFJ1biA/ICh0aGlzLnRlc3RSdW4gYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGVzdFJ1bjt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICBwYWdpbmdPcHRpb25zOiBQYWdlZFJlcXVlc3RPcHRpb25zO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTGlzdFRlc3RDYXNlc0J5QXNzaXN0YW50UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXNzaXN0YW50KSB7bS5hc3Npc3RhbnQgPSBBc3Npc3RhbnRLZXkuZnJvbVByb3RvKHByb3RvLmFzc2lzdGFudCk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXNzaXN0YW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFzc2lzdGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydhc3Npc3RhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXNzaXN0YW50ID8gKHRoaXMuYXNzaXN0YW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFzc2lzdGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nT3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdPcHRpb25zID8gKHRoaXMucGFnaW5nT3B0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdPcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdGVzdENhc2VzOiBUZXN0Q2FzZVtdO1xuICAgIHBhZ2luZ01ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRlc3RDYXNlcykge20udGVzdENhc2VzID0gcHJvdG8udGVzdENhc2VzLm1hcChUZXN0Q2FzZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RDYXNlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50ZXN0Q2FzZXMgIT09IG51bGwpIHt0b1JldHVyblsndGVzdENhc2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRlc3RDYXNlcyA/ICh0aGlzLnRlc3RDYXNlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50ZXN0Q2FzZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdEludGVyZmFjZSB7XG4gICAgYXNzaXN0YW50OiBBc3Npc3RhbnRLZXk7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIGlmIChwcm90by5wYWdpbmdPcHRpb25zKSB7bS5wYWdpbmdPcHRpb25zID0gUGFnZWRSZXF1ZXN0T3B0aW9ucy5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nT3B0aW9ucyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ09wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nT3B0aW9ucyA/ICh0aGlzLnBhZ2luZ09wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nT3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0ZXN0UnVuczogVGVzdFJ1bltdO1xuICAgIHBhZ2luZ01ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlc3RSdW5zQnlBc3Npc3RhbnRSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50ZXN0UnVucykge20udGVzdFJ1bnMgPSBwcm90by50ZXN0UnVucy5tYXAoVGVzdFJ1bi5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdFJ1bnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGVzdFJ1bnMgIT09IG51bGwpIHt0b1JldHVyblsndGVzdFJ1bnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdFJ1bnMgPyAodGhpcy50ZXN0UnVucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50ZXN0UnVuczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdNZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdNZXRhZGF0YSA/ICh0aGlzLnBhZ2luZ01ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ01ldGFkYXRhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1blRlc3RzUmVxdWVzdCBpbXBsZW1lbnRzIGkuUnVuVGVzdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICB0ZXN0Q2FzZUlkczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSdW5UZXN0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSdW5UZXN0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXNzaXN0YW50KSB7bS5hc3Npc3RhbnQgPSBBc3Npc3RhbnRLZXkuZnJvbVByb3RvKHByb3RvLmFzc2lzdGFudCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJ1blRlc3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Rlc3RDYXNlSWRzJ10gPSB0aGlzLnRlc3RDYXNlSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1blRlc3RzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJ1blRlc3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGJ1aWxkVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSdW5UZXN0c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUnVuVGVzdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUnVuVGVzdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1aWxkVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidWlsZFVybCddID0gdGhpcy5idWlsZFVybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZSBpbXBsZW1lbnRzIGkuVGVzdENhc2VJbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNoYXRIaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xuICAgIGV4cGVjdGF0aW9uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUZXN0Q2FzZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFRlc3RDYXNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNoYXRIaXN0b3J5KSB7bS5jaGF0SGlzdG9yeSA9IHByb3RvLmNoYXRIaXN0b3J5Lm1hcChDaGF0TWVzc2FnZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UZXN0Q2FzZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2hhdEhpc3RvcnkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY2hhdEhpc3RvcnkgIT09IG51bGwpIHt0b1JldHVyblsnY2hhdEhpc3RvcnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY2hhdEhpc3RvcnkgPyAodGhpcy5jaGF0SGlzdG9yeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jaGF0SGlzdG9yeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5leHBlY3RhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXhwZWN0YXRpb24nXSA9IHRoaXMuZXhwZWN0YXRpb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVzdFJlc3VsdCBpbXBsZW1lbnRzIGkuVGVzdFJlc3VsdEludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY2hhdEhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG4gICAgZXhwZWN0ZWQ6IHN0cmluZztcbiAgICBldmFsdWF0aW9uOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgc2NvcmU6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRlc3RSZXN1bHQge1xuICAgICAgICBsZXQgbSA9IG5ldyBUZXN0UmVzdWx0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNoYXRIaXN0b3J5KSB7bS5jaGF0SGlzdG9yeSA9IHByb3RvLmNoYXRIaXN0b3J5Lm1hcChDaGF0TWVzc2FnZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UZXN0UmVzdWx0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGF0SGlzdG9yeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jaGF0SGlzdG9yeSAhPT0gbnVsbCkge3RvUmV0dXJuWydjaGF0SGlzdG9yeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jaGF0SGlzdG9yeSA/ICh0aGlzLmNoYXRIaXN0b3J5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNoYXRIaXN0b3J5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cGVjdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydleHBlY3RlZCddID0gdGhpcy5leHBlY3RlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmFsdWF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldmFsdWF0aW9uJ10gPSB0aGlzLmV2YWx1YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXMnXSA9IHRoaXMuc3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzY29yZSddID0gdGhpcy5zY29yZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0UnVuIGltcGxlbWVudHMgaS5UZXN0UnVuSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHRlc3RGcmFtZXdvcms6IHN0cmluZztcbiAgICB0ZXN0UmVzdWx0czogVGVzdFJlc3VsdFtdO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUZXN0UnVuIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVGVzdFJ1bigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50ZXN0UmVzdWx0cykge20udGVzdFJlc3VsdHMgPSBwcm90by50ZXN0UmVzdWx0cy5tYXAoVGVzdFJlc3VsdC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVGVzdFJ1bkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gdGhpcy5zdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdEZyYW1ld29yayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGVzdEZyYW1ld29yayddID0gdGhpcy50ZXN0RnJhbWV3b3JrO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RSZXN1bHRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RSZXN1bHRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rlc3RSZXN1bHRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRlc3RSZXN1bHRzID8gKHRoaXMudGVzdFJlc3VsdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGVzdFJlc3VsdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlZCA/ICh0aGlzLmNyZWF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5VcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICB0ZXN0Q2FzZXM6IFRlc3RDYXNlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXBzZXJ0VGVzdENhc2VzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIGlmIChwcm90by50ZXN0Q2FzZXMpIHttLnRlc3RDYXNlcyA9IHByb3RvLnRlc3RDYXNlcy5tYXAoVGVzdENhc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXBzZXJ0VGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RDYXNlcyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0ZXN0Q2FzZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdENhc2VzID8gKHRoaXMudGVzdENhc2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRlc3RDYXNlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
449
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24tdGVzdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9haV9hc3Npc3RhbnRzX3Nkay9zcmMvbGliL19pbnRlcm5hbC9vYmplY3RzL2ludGVncmF0aW9uLXRlc3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDM0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUN2QyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLG9CQUFvQjtJQUk3QixNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxvQkFBb0IsRUFBRSxDQUFDO1FBQ25DLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFBQyxDQUFDLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDN0UsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBRUQsWUFBWSxNQUF3QztRQUNoRCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENB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LENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLEVBQUU7WUFBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxTQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQUM7UUFDckwsSUFBSSxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsU0FBaUIsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztTQUFDO1FBQ3JMLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEFzc2lzdGFudEtleSB9IGZyb20gJy4vYXNzaXN0YW50JztcbmltcG9ydCB7IENoYXRNZXNzYWdlIH0gZnJvbSAnLi9hbnN3ZXInO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9wYWdpbmcnO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgQ2FuY2VsVGVzdFJ1blJlcXVlc3QgaW1wbGVtZW50cyBpLkNhbmNlbFRlc3RSdW5SZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICBpZDogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ2FuY2VsVGVzdFJ1blJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBDYW5jZWxUZXN0UnVuUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ2FuY2VsVGVzdFJ1blJlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hc3Npc3RhbnQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYXNzaXN0YW50ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2Fzc2lzdGFudCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hc3Npc3RhbnQgPyAodGhpcy5hc3Npc3RhbnQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXNzaXN0YW50O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVUZXN0Q2FzZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5EZWxldGVUZXN0Q2FzZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICB0ZXN0Q2FzZUlkczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBEZWxldGVUZXN0Q2FzZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgRGVsZXRlVGVzdENhc2VzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuRGVsZXRlVGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Rlc3RDYXNlSWRzJ10gPSB0aGlzLnRlc3RDYXNlSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEdldFRlc3RSdW5SZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRUZXN0UnVuUmVxdWVzdEludGVyZmFjZSB7XG4gICAgYXNzaXN0YW50OiBBc3Npc3RhbnRLZXk7XG4gICAgaWQ6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldFRlc3RSdW5SZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0VGVzdFJ1blJlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXNzaXN0YW50KSB7bS5hc3Npc3RhbnQgPSBBc3Npc3RhbnRLZXkuZnJvbVByb3RvKHByb3RvLmFzc2lzdGFudCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldFRlc3RSdW5SZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXNzaXN0YW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFzc2lzdGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydhc3Npc3RhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXNzaXN0YW50ID8gKHRoaXMuYXNzaXN0YW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFzc2lzdGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5pZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnaWQnXSA9IHRoaXMuaWQ7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0VGVzdFJ1blJlc3BvbnNlIGltcGxlbWVudHMgaS5HZXRUZXN0UnVuUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIHRlc3RSdW46IFRlc3RSdW47XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBHZXRUZXN0UnVuUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBHZXRUZXN0UnVuUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8udGVzdFJ1bikge20udGVzdFJ1biA9IFRlc3RSdW4uZnJvbVByb3RvKHByb3RvLnRlc3RSdW4pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRUZXN0UnVuUmVzcG9uc2VJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50ZXN0UnVuICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RSdW4gIT09IG51bGwpIHt0b1JldHVyblsndGVzdFJ1biddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy50ZXN0UnVuID8gKHRoaXMudGVzdFJ1biBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50ZXN0UnVuO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGFzc2lzdGFudDogQXNzaXN0YW50S2V5O1xuICAgIHBhZ2luZ09wdGlvbnM6IFBhZ2VkUmVxdWVzdE9wdGlvbnM7XG4gICAgc2VhcmNoVGVybTogc3RyaW5nO1xuICAgIHNvcnRPcHRpb25zOiBTb3J0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXF1ZXN0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmFzc2lzdGFudCkge20uYXNzaXN0YW50ID0gQXNzaXN0YW50S2V5LmZyb21Qcm90byhwcm90by5hc3Npc3RhbnQpO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ09wdGlvbnMpIHttLnBhZ2luZ09wdGlvbnMgPSBQYWdlZFJlcXVlc3RPcHRpb25zLmZyb21Qcm90byhwcm90by5wYWdpbmdPcHRpb25zKTt9XG4gICAgICAgIGlmIChwcm90by5zb3J0T3B0aW9ucykge20uc29ydE9wdGlvbnMgPSBTb3J0T3B0aW9ucy5mcm9tUHJvdG8ocHJvdG8uc29ydE9wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXF1ZXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXNzaXN0YW50ICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFzc2lzdGFudCAhPT0gbnVsbCkge3RvUmV0dXJuWydhc3Npc3RhbnQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXNzaXN0YW50ID8gKHRoaXMuYXNzaXN0YW50IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmFzc2lzdGFudDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdPcHRpb25zICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nT3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdPcHRpb25zID8gKHRoaXMucGFnaW5nT3B0aW9ucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdPcHRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlYXJjaFRlcm0gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlYXJjaFRlcm0nXSA9IHRoaXMuc2VhcmNoVGVybTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zb3J0T3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5zb3J0T3B0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydzb3J0T3B0aW9ucyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5zb3J0T3B0aW9ucyA/ICh0aGlzLnNvcnRPcHRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnNvcnRPcHRpb25zO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZUludGVyZmFjZSB7XG4gICAgdGVzdENhc2VzOiBUZXN0Q2FzZVtdO1xuICAgIHBhZ2luZ01ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZSB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RUZXN0Q2FzZXNCeUFzc2lzdGFudFJlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnRlc3RDYXNlcykge20udGVzdENhc2VzID0gcHJvdG8udGVzdENhc2VzLm1hcChUZXN0Q2FzZS5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdENhc2VzQnlBc3Npc3RhbnRSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RDYXNlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy50ZXN0Q2FzZXMgIT09IG51bGwpIHt0b1JldHVyblsndGVzdENhc2VzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRlc3RDYXNlcyA/ICh0aGlzLnRlc3RDYXNlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50ZXN0Q2FzZXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlcXVlc3QgaW1wbGVtZW50cyBpLkxpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdEludGVyZmFjZSB7XG4gICAgYXNzaXN0YW50OiBBc3Npc3RhbnRLZXk7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIGlmIChwcm90by5wYWdpbmdPcHRpb25zKSB7bS5wYWdpbmdPcHRpb25zID0gUGFnZWRSZXF1ZXN0T3B0aW9ucy5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nT3B0aW9ucyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkxpc3RUZXN0UnVuc0J5QXNzaXN0YW50UmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdPcHRpb25zICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BhZ2luZ09wdGlvbnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nT3B0aW9ucyA/ICh0aGlzLnBhZ2luZ09wdGlvbnMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucGFnaW5nT3B0aW9uczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlIGltcGxlbWVudHMgaS5MaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICB0ZXN0UnVuczogVGVzdFJ1bltdO1xuICAgIHBhZ2luZ01ldGFkYXRhOiBQYWdlZFJlc3BvbnNlTWV0YWRhdGE7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFRlc3RSdW5zQnlBc3Npc3RhbnRSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50ZXN0UnVucykge20udGVzdFJ1bnMgPSBwcm90by50ZXN0UnVucy5tYXAoVGVzdFJ1bi5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLnBhZ2luZ01ldGFkYXRhKSB7bS5wYWdpbmdNZXRhZGF0YSA9IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YS5mcm9tUHJvdG8ocHJvdG8ucGFnaW5nTWV0YWRhdGEpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0VGVzdFJ1bnNCeUFzc2lzdGFudFJlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdFJ1bnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudGVzdFJ1bnMgIT09IG51bGwpIHt0b1JldHVyblsndGVzdFJ1bnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdFJ1bnMgPyAodGhpcy50ZXN0UnVucyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50ZXN0UnVuczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5wYWdpbmdNZXRhZGF0YSAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdNZXRhZGF0YSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wYWdpbmdNZXRhZGF0YSA/ICh0aGlzLnBhZ2luZ01ldGFkYXRhIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ01ldGFkYXRhO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1blRlc3RzUmVxdWVzdCBpbXBsZW1lbnRzIGkuUnVuVGVzdHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICB0ZXN0Q2FzZUlkczogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSdW5UZXN0c1JlcXVlc3Qge1xuICAgICAgICBsZXQgbSA9IG5ldyBSdW5UZXN0c1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXNzaXN0YW50KSB7bS5hc3Npc3RhbnQgPSBBc3Npc3RhbnRLZXkuZnJvbVByb3RvKHByb3RvLmFzc2lzdGFudCk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJ1blRlc3RzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3Rlc3RDYXNlSWRzJ10gPSB0aGlzLnRlc3RDYXNlSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJ1blRlc3RzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJ1blRlc3RzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGJ1aWxkVXJsOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSdW5UZXN0c1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUnVuVGVzdHNSZXNwb25zZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUnVuVGVzdHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmJ1aWxkVXJsICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydidWlsZFVybCddID0gdGhpcy5idWlsZFVybDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTb3J0T3B0aW9ucyBpbXBsZW1lbnRzIGkuU29ydE9wdGlvbnNJbnRlcmZhY2Uge1xuICAgIGRpcmVjdGlvbjogZS5Tb3J0RGlyZWN0aW9uO1xuICAgIGZpZWxkOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTb3J0T3B0aW9ucyB7XG4gICAgICAgIGxldCBtID0gbmV3IFNvcnRPcHRpb25zKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmRpcmVjdGlvbikge20uZGlyZWN0aW9uID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5Tb3J0RGlyZWN0aW9uPihlLlNvcnREaXJlY3Rpb24sIHByb3RvLmRpcmVjdGlvbik7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlNvcnRPcHRpb25zSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZGlyZWN0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkaXJlY3Rpb24nXSA9IHRoaXMuZGlyZWN0aW9uO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydmaWVsZCddID0gdGhpcy5maWVsZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0Q2FzZSBpbXBsZW1lbnRzIGkuVGVzdENhc2VJbnRlcmZhY2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGNoYXRIaXN0b3J5OiBDaGF0TWVzc2FnZVtdO1xuICAgIGV4cGVjdGF0aW9uOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUZXN0Q2FzZSB7XG4gICAgICAgIGxldCBtID0gbmV3IFRlc3RDYXNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNoYXRIaXN0b3J5KSB7bS5jaGF0SGlzdG9yeSA9IHByb3RvLmNoYXRIaXN0b3J5Lm1hcChDaGF0TWVzc2FnZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UZXN0Q2FzZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5uYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyduYW1lJ10gPSB0aGlzLm5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY2hhdEhpc3RvcnkgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY2hhdEhpc3RvcnkgIT09IG51bGwpIHt0b1JldHVyblsnY2hhdEhpc3RvcnknXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY2hhdEhpc3RvcnkgPyAodGhpcy5jaGF0SGlzdG9yeSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jaGF0SGlzdG9yeTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5leHBlY3RhdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZXhwZWN0YXRpb24nXSA9IHRoaXMuZXhwZWN0YXRpb247fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVGVzdFJlc3VsdCBpbXBsZW1lbnRzIGkuVGVzdFJlc3VsdEludGVyZmFjZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgY2hhdEhpc3Rvcnk6IENoYXRNZXNzYWdlW107XG4gICAgZXhwZWN0ZWQ6IHN0cmluZztcbiAgICBldmFsdWF0aW9uOiBzdHJpbmc7XG4gICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgc2NvcmU6IG51bWJlcjtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFRlc3RSZXN1bHQge1xuICAgICAgICBsZXQgbSA9IG5ldyBUZXN0UmVzdWx0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNoYXRIaXN0b3J5KSB7bS5jaGF0SGlzdG9yeSA9IHByb3RvLmNoYXRIaXN0b3J5Lm1hcChDaGF0TWVzc2FnZS5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5UZXN0UmVzdWx0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2lkJ10gPSB0aGlzLmlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ25hbWUnXSA9IHRoaXMubmFtZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jaGF0SGlzdG9yeSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jaGF0SGlzdG9yeSAhPT0gbnVsbCkge3RvUmV0dXJuWydjaGF0SGlzdG9yeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jaGF0SGlzdG9yeSA/ICh0aGlzLmNoYXRIaXN0b3J5IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNoYXRIaXN0b3J5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmV4cGVjdGVkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydleHBlY3RlZCddID0gdGhpcy5leHBlY3RlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5ldmFsdWF0aW9uICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydldmFsdWF0aW9uJ10gPSB0aGlzLmV2YWx1YXRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuc3RhdHVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzdGF0dXMnXSA9IHRoaXMuc3RhdHVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNjb3JlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydzY29yZSddID0gdGhpcy5zY29yZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUZXN0UnVuIGltcGxlbWVudHMgaS5UZXN0UnVuSW50ZXJmYWNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHRlc3RGcmFtZXdvcms6IHN0cmluZztcbiAgICB0ZXN0UmVzdWx0czogVGVzdFJlc3VsdFtdO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBUZXN0UnVuIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVGVzdFJ1bigpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50ZXN0UmVzdWx0cykge20udGVzdFJlc3VsdHMgPSBwcm90by50ZXN0UmVzdWx0cy5tYXAoVGVzdFJlc3VsdC5mcm9tUHJvdG8pO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVGVzdFJ1bkludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdGF0dXMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N0YXR1cyddID0gdGhpcy5zdGF0dXM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdEZyYW1ld29yayAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGVzdEZyYW1ld29yayddID0gdGhpcy50ZXN0RnJhbWV3b3JrO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRlc3RSZXN1bHRzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RSZXN1bHRzICE9PSBudWxsKSB7dG9SZXR1cm5bJ3Rlc3RSZXN1bHRzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRlc3RSZXN1bHRzID8gKHRoaXMudGVzdFJlc3VsdHMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudGVzdFJlc3VsdHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlZCA/ICh0aGlzLmNyZWF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0IGltcGxlbWVudHMgaS5VcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBhc3Npc3RhbnQ6IEFzc2lzdGFudEtleTtcbiAgICB0ZXN0Q2FzZXM6IFRlc3RDYXNlW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBVcHNlcnRUZXN0Q2FzZXNSZXF1ZXN0IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgVXBzZXJ0VGVzdENhc2VzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5hc3Npc3RhbnQpIHttLmFzc2lzdGFudCA9IEFzc2lzdGFudEtleS5mcm9tUHJvdG8ocHJvdG8uYXNzaXN0YW50KTt9XG4gICAgICAgIGlmIChwcm90by50ZXN0Q2FzZXMpIHttLnRlc3RDYXNlcyA9IHByb3RvLnRlc3RDYXNlcy5tYXAoVGVzdENhc2UuZnJvbVByb3RvKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVXBzZXJ0VGVzdENhc2VzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFzc2lzdGFudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hc3Npc3RhbnQgIT09IG51bGwpIHt0b1JldHVyblsnYXNzaXN0YW50J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmFzc2lzdGFudCA/ICh0aGlzLmFzc2lzdGFudCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hc3Npc3RhbnQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGVzdENhc2VzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRlc3RDYXNlcyAhPT0gbnVsbCkge3RvUmV0dXJuWyd0ZXN0Q2FzZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudGVzdENhc2VzID8gKHRoaXMudGVzdENhc2VzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnRlc3RDYXNlczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
@@ -125,6 +125,37 @@ var ChatMessageRole;
125
125
  ChatMessageRole[ChatMessageRole["CHAT_MESSAGE_ROLE_ASSISTANT"] = 2] = "CHAT_MESSAGE_ROLE_ASSISTANT";
126
126
  })(ChatMessageRole || (ChatMessageRole = {}));
127
127
 
128
+ // *********************************
129
+ // Code generated by sdkgen
130
+ // DO NOT EDIT!.
131
+ //
132
+ // Enums.
133
+ // *********************************
134
+ var SortDirection;
135
+ (function (SortDirection) {
136
+ SortDirection[SortDirection["SORT_DIRECTION_INVALID"] = 0] = "SORT_DIRECTION_INVALID";
137
+ SortDirection[SortDirection["SORT_DIRECTION_ASCENDING"] = 1] = "SORT_DIRECTION_ASCENDING";
138
+ SortDirection[SortDirection["SORT_DIRECTION_DESCENDING"] = 2] = "SORT_DIRECTION_DESCENDING";
139
+ })(SortDirection || (SortDirection = {}));
140
+
141
+ // *********************************
142
+ // Code generated by sdkgen
143
+ // DO NOT EDIT!.
144
+ //
145
+ // Enums.
146
+ // *********************************
147
+ var GenerateChatAnswerRequestModel;
148
+ (function (GenerateChatAnswerRequestModel) {
149
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_NOT_SET"] = 0] = "MODEL_NOT_SET";
150
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_OPENAI_GPT_4OMNI"] = 1] = "MODEL_OPENAI_GPT_4OMNI";
151
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_OPENAI_GPT_4OMNI_MINI"] = 2] = "MODEL_OPENAI_GPT_4OMNI_MINI";
152
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_OPENAI_GPT_4DOT1"] = 3] = "MODEL_OPENAI_GPT_4DOT1";
153
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_OPENAI_GPT_4DOT1_MINI"] = 4] = "MODEL_OPENAI_GPT_4DOT1_MINI";
154
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_OPENAI_GPT_4DOT1_NANO"] = 5] = "MODEL_OPENAI_GPT_4DOT1_NANO";
155
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_GOOGLE_GEMINI_2DOT5_PRO_PREVIEW"] = 6] = "MODEL_GOOGLE_GEMINI_2DOT5_PRO_PREVIEW";
156
+ GenerateChatAnswerRequestModel[GenerateChatAnswerRequestModel["MODEL_GOOGLE_GEMINI_2DOT5_FLASH_PREVIEW"] = 7] = "MODEL_GOOGLE_GEMINI_2DOT5_FLASH_PREVIEW";
157
+ })(GenerateChatAnswerRequestModel || (GenerateChatAnswerRequestModel = {}));
158
+
128
159
  // *********************************
129
160
  // Code generated by sdkgen
130
161
  // DO NOT EDIT!.
@@ -1443,6 +1474,32 @@ function enumStringToValue$3(enumRef, value) {
1443
1474
  }
1444
1475
  return enumRef[value];
1445
1476
  }
1477
+ class CancelTestRunRequest {
1478
+ static fromProto(proto) {
1479
+ let m = new CancelTestRunRequest();
1480
+ m = Object.assign(m, proto);
1481
+ if (proto.assistant) {
1482
+ m.assistant = AssistantKey.fromProto(proto.assistant);
1483
+ }
1484
+ return m;
1485
+ }
1486
+ constructor(kwargs) {
1487
+ if (!kwargs) {
1488
+ return;
1489
+ }
1490
+ Object.assign(this, kwargs);
1491
+ }
1492
+ toApiJson() {
1493
+ const toReturn = {};
1494
+ if (typeof this.assistant !== 'undefined' && this.assistant !== null) {
1495
+ toReturn['assistant'] = 'toApiJson' in this.assistant ? this.assistant.toApiJson() : this.assistant;
1496
+ }
1497
+ if (typeof this.id !== 'undefined') {
1498
+ toReturn['id'] = this.id;
1499
+ }
1500
+ return toReturn;
1501
+ }
1502
+ }
1446
1503
  class DeleteTestCasesRequest {
1447
1504
  static fromProto(proto) {
1448
1505
  let m = new DeleteTestCasesRequest();
@@ -1528,6 +1585,9 @@ class ListTestCasesByAssistantRequest {
1528
1585
  if (proto.pagingOptions) {
1529
1586
  m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
1530
1587
  }
1588
+ if (proto.sortOptions) {
1589
+ m.sortOptions = SortOptions.fromProto(proto.sortOptions);
1590
+ }
1531
1591
  return m;
1532
1592
  }
1533
1593
  constructor(kwargs) {
@@ -1544,6 +1604,12 @@ class ListTestCasesByAssistantRequest {
1544
1604
  if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
1545
1605
  toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
1546
1606
  }
1607
+ if (typeof this.searchTerm !== 'undefined') {
1608
+ toReturn['searchTerm'] = this.searchTerm;
1609
+ }
1610
+ if (typeof this.sortOptions !== 'undefined' && this.sortOptions !== null) {
1611
+ toReturn['sortOptions'] = 'toApiJson' in this.sortOptions ? this.sortOptions.toApiJson() : this.sortOptions;
1612
+ }
1547
1613
  return toReturn;
1548
1614
  }
1549
1615
  }
@@ -1680,6 +1746,32 @@ class RunTestsResponse {
1680
1746
  return toReturn;
1681
1747
  }
1682
1748
  }
1749
+ class SortOptions {
1750
+ static fromProto(proto) {
1751
+ let m = new SortOptions();
1752
+ m = Object.assign(m, proto);
1753
+ if (proto.direction) {
1754
+ m.direction = enumStringToValue$3(SortDirection, proto.direction);
1755
+ }
1756
+ return m;
1757
+ }
1758
+ constructor(kwargs) {
1759
+ if (!kwargs) {
1760
+ return;
1761
+ }
1762
+ Object.assign(this, kwargs);
1763
+ }
1764
+ toApiJson() {
1765
+ const toReturn = {};
1766
+ if (typeof this.direction !== 'undefined') {
1767
+ toReturn['direction'] = this.direction;
1768
+ }
1769
+ if (typeof this.field !== 'undefined') {
1770
+ toReturn['field'] = this.field;
1771
+ }
1772
+ return toReturn;
1773
+ }
1774
+ }
1683
1775
  class TestCase {
1684
1776
  static fromProto(proto) {
1685
1777
  let m = new TestCase();
@@ -4057,6 +4149,9 @@ class GenerateChatAnswerRequestOptions {
4057
4149
  if (proto.maxTokens) {
4058
4150
  m.maxTokens = parseInt(proto.maxTokens, 10);
4059
4151
  }
4152
+ if (proto.model) {
4153
+ m.model = enumStringToValue(GenerateChatAnswerRequestModel, proto.model);
4154
+ }
4060
4155
  return m;
4061
4156
  }
4062
4157
  constructor(kwargs) {
@@ -4076,6 +4171,9 @@ class GenerateChatAnswerRequestOptions {
4076
4171
  if (typeof this.maxTokens !== 'undefined') {
4077
4172
  toReturn['maxTokens'] = this.maxTokens;
4078
4173
  }
4174
+ if (typeof this.model !== 'undefined') {
4175
+ toReturn['model'] = this.model;
4176
+ }
4079
4177
  return toReturn;
4080
4178
  }
4081
4179
  }
@@ -4702,6 +4800,10 @@ class IntegrationTestApiService {
4702
4800
  return this.http.post(this._host + "/ai_assistants.v1alpha1.IntegrationTestService/GetTestRun", request.toApiJson(), this.apiOptions())
4703
4801
  .pipe(map(resp => GetTestRunResponse.fromProto(resp)));
4704
4802
  }
4803
+ cancelTestRun(r) {
4804
+ const request = (r.toApiJson) ? r : new CancelTestRunRequest(r);
4805
+ return this.http.post(this._host + "/ai_assistants.v1alpha1.IntegrationTestService/CancelTestRun", request.toApiJson(), Object.assign(Object.assign({}, this.apiOptions()), { observe: 'response' }));
4806
+ }
4705
4807
  }
4706
4808
  IntegrationTestApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IntegrationTestApiService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
4707
4809
  IntegrationTestApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: IntegrationTestApiService, providedIn: 'root' });
@@ -4879,5 +4981,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
4879
4981
  * Generated bundle index. Do not edit.
4880
4982
  */
4881
4983
 
4882
- export { Access, Assistant, AssistantApiService, AssistantKey, AssistantType, BuildDefaultAssistantRequest, BuildDefaultAssistantResponse, ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatAnswerFunctionExecutionJobStatus, ChatChannel, ChatMessage, ChatMessageRole, ChatUserInfo, Config, ConfigInboxConfig, ConfigVoiceConfig, ConfigurableGoal, Connection, ConnectionApiService, ConnectionKey, ContextInfo, CreateAssistantRequest, CreateAssistantRequestOptions, CreateAssistantResponse, CreateGoalRequest, CreateGoalResponse, CreatePromptModuleRequest, CreatePromptModuleResponse, CreatePromptModuleVersionRequest, CreatePromptModuleVersionRequestOptions, CreatePromptRequest, DeepgramConfig, DeleteAssistantRequest, DeleteConnectionRequest, DeleteFunctionRequest, DeleteGoalRequest, DeletePromptModuleRequest, DeletePromptRequest, DeleteTestCasesRequest, DeployPromptModuleRequest, DeployPromptRequest, ExecuteFunctionRequest, ExecuteFunctionResponse, FieldMask, Function, FunctionApiService, FunctionAuthStrategy, FunctionAuthStrategyPlatformManagedFunctionAuthStrategy, FunctionAuthStrategyUnspecifiedFunctionAuthStrategy, FunctionHeader, FunctionKey, FunctionParameter, FunctionParameterParameterLocation, GenerateChatAnswerRequest, GenerateChatAnswerRequestOptions, 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, GetTestRunRequest, GetTestRunResponse, Goal, GoalApiService, GoalChannel, GoalKey, GoalType, GoalsDisabledForAccountGroupRequest, GoalsDisabledForAccountGroupResponse, HostService, IntegrationTestApiService, KeyValuePair, ListAllAssistantsAssociatedToConnectionRequest, ListAllAssistantsAssociatedToConnectionRequestFilters, ListAllAssistantsAssociatedToConnectionResponse, ListAssistantRequest, ListAssistantRequestFilters, ListAssistantResponse, ListConnectionsRequest, ListConnectionsRequestFilters, ListConnectionsResponse, ListFunctionRequest, ListFunctionRequestFilters, ListFunctionResponse, ListGoalsRequest, ListGoalsRequestFilters, ListGoalsResponse, ListPromptModuleRequest, ListPromptModuleRequestFilters, ListPromptModuleResponse, ListPromptModuleVersionsRequest, ListPromptModuleVersionsResponse, ListPromptRequest, ListPromptResponse, ListPromptVersionsRequest, ListPromptVersionsResponse, ListTestCasesByAssistantRequest, ListTestCasesByAssistantResponse, ListTestRunsByAssistantRequest, ListTestRunsByAssistantResponse, ModelConfig, Namespace, NamespaceAccountGroupNamespace, NamespaceGlobalNamespace, NamespacePartnerNamespace, NamespaceSystemNamespace, OpenAIRealtimeConfig, OpenAIRealtimeConfigTurnDetection, PagedRequestOptions, PagedResponseMetadata, Prompt, PromptApiService, PromptModule, PromptModuleApiService, PromptModuleKey, PromptModuleVersion, PromptVersion, RunTestsRequest, RunTestsResponse, SetAssistantConnectionsRequest, SetAssistantConnectionsRequestConnectionState, TestCase, TestResult, TestRun, UpdateAssistantRequest, UpdateGoalRequest, UpdatePromptModuleRequest, UpdatePromptRequest, UpsertAssistantRequest, UpsertAssistantRequestOptions, UpsertAssistantResponse, UpsertConnectionRequest, UpsertFunctionRequest, UpsertGoalRequest, UpsertTestCasesRequest, VendorModel };
4984
+ export { Access, Assistant, AssistantApiService, AssistantKey, AssistantType, BuildDefaultAssistantRequest, BuildDefaultAssistantResponse, CancelTestRunRequest, ChatAnswerFunctionExecutionJob, ChatAnswerFunctionExecutionJobResult, ChatAnswerFunctionExecutionJobStatus, ChatChannel, ChatMessage, ChatMessageRole, ChatUserInfo, Config, ConfigInboxConfig, ConfigVoiceConfig, ConfigurableGoal, Connection, ConnectionApiService, ConnectionKey, ContextInfo, CreateAssistantRequest, CreateAssistantRequestOptions, CreateAssistantResponse, CreateGoalRequest, CreateGoalResponse, CreatePromptModuleRequest, CreatePromptModuleResponse, CreatePromptModuleVersionRequest, CreatePromptModuleVersionRequestOptions, CreatePromptRequest, DeepgramConfig, DeleteAssistantRequest, DeleteConnectionRequest, DeleteFunctionRequest, DeleteGoalRequest, DeletePromptModuleRequest, DeletePromptRequest, DeleteTestCasesRequest, DeployPromptModuleRequest, DeployPromptRequest, ExecuteFunctionRequest, ExecuteFunctionResponse, FieldMask, Function, FunctionApiService, FunctionAuthStrategy, FunctionAuthStrategyPlatformManagedFunctionAuthStrategy, FunctionAuthStrategyUnspecifiedFunctionAuthStrategy, FunctionHeader, FunctionKey, FunctionParameter, FunctionParameterParameterLocation, GenerateChatAnswerRequest, GenerateChatAnswerRequestModel, GenerateChatAnswerRequestOptions, 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, GetTestRunRequest, GetTestRunResponse, Goal, GoalApiService, GoalChannel, GoalKey, GoalType, GoalsDisabledForAccountGroupRequest, GoalsDisabledForAccountGroupResponse, HostService, IntegrationTestApiService, KeyValuePair, ListAllAssistantsAssociatedToConnectionRequest, ListAllAssistantsAssociatedToConnectionRequestFilters, ListAllAssistantsAssociatedToConnectionResponse, ListAssistantRequest, ListAssistantRequestFilters, ListAssistantResponse, ListConnectionsRequest, ListConnectionsRequestFilters, ListConnectionsResponse, ListFunctionRequest, ListFunctionRequestFilters, ListFunctionResponse, ListGoalsRequest, ListGoalsRequestFilters, ListGoalsResponse, ListPromptModuleRequest, ListPromptModuleRequestFilters, ListPromptModuleResponse, ListPromptModuleVersionsRequest, ListPromptModuleVersionsResponse, ListPromptRequest, ListPromptResponse, ListPromptVersionsRequest, ListPromptVersionsResponse, ListTestCasesByAssistantRequest, ListTestCasesByAssistantResponse, ListTestRunsByAssistantRequest, ListTestRunsByAssistantResponse, ModelConfig, Namespace, NamespaceAccountGroupNamespace, NamespaceGlobalNamespace, NamespacePartnerNamespace, NamespaceSystemNamespace, OpenAIRealtimeConfig, OpenAIRealtimeConfigTurnDetection, PagedRequestOptions, PagedResponseMetadata, Prompt, PromptApiService, PromptModule, PromptModuleApiService, PromptModuleKey, PromptModuleVersion, PromptVersion, RunTestsRequest, RunTestsResponse, SetAssistantConnectionsRequest, SetAssistantConnectionsRequestConnectionState, SortDirection, SortOptions, TestCase, TestResult, TestRun, UpdateAssistantRequest, UpdateGoalRequest, UpdatePromptModuleRequest, UpdatePromptRequest, UpsertAssistantRequest, UpsertAssistantRequestOptions, UpsertAssistantResponse, UpsertConnectionRequest, UpsertFunctionRequest, UpsertGoalRequest, UpsertTestCasesRequest, VendorModel };
4883
4985
  //# sourceMappingURL=vendasta-ai-assistants.mjs.map