diff --git a/dist/index.js b/dist/index.js index 762136a..093e652 100644 --- a/dist/index.js +++ b/dist/index.js @@ -51036,14 +51036,10 @@ async function run() { client, }) - core.info(`Task definition from task ${taskDef}`) - const replacements = core.getInput('replacements') || '{}' const taskDefMerged = merge(taskDef, JSON.parse(replacements)) - core.info(`Task definition merged ${taskDefMerged}`) const newTaskDef = omit(taskDefMerged, IGNORED_TASK_DEFINITION_ATTRIBUTES) - core.info(`Task definition merged and cleaned ${newTaskDef}`) // create a a file for task def const taskDefFile = tmp.fileSync({ @@ -51062,13 +51058,9 @@ async function run() { client, }) - core.info(`Task definition from task ${taskDef}`) - const replacements = core.getInput('replacements') || '{}' const taskDefMerged = merge(taskDef, JSON.parse(replacements)) - const newTaskDef = omit(taskDefMerged, IGNORED_TASK_DEFINITION_ATTRIBUTES) - core.info(`Task definition merged and cleaned ${newTaskDef}`) console.dir(newTaskDef) @@ -51089,7 +51081,6 @@ async function run() { } run() - })(); module.exports = __webpack_exports__; diff --git a/dist/index.js.map b/dist/index.js.map index 6b1a2a0..9c05f22 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../webpack://javascript-action/./node_modules/@actions/core/lib/command.js","../webpack://javascript-action/./node_modules/@actions/core/lib/core.js","../webpack://javascript-action/./node_modules/@actions/core/lib/file-command.js","../webpack://javascript-action/./node_modules/@actions/core/lib/utils.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/ECS.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/ECSClient.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/CreateCapacityProviderCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/CreateClusterCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/CreateServiceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/CreateTaskSetCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteAccountSettingCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteAttributesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteCapacityProviderCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteClusterCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteServiceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeleteTaskSetCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeregisterContainerInstanceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DeregisterTaskDefinitionCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeCapacityProvidersCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeClustersCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeContainerInstancesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeServicesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeTaskDefinitionCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeTaskSetsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DescribeTasksCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/DiscoverPollEndpointCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ExecuteCommandCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListAccountSettingsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListAttributesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListClustersCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListContainerInstancesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListServicesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListTagsForResourceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListTaskDefinitionFamiliesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListTaskDefinitionsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/ListTasksCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/PutAccountSettingCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/PutAccountSettingDefaultCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/PutAttributesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/PutClusterCapacityProvidersCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/RegisterContainerInstanceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/RegisterTaskDefinitionCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/RunTaskCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/StartTaskCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/StopTaskCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/SubmitAttachmentStateChangesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/SubmitContainerStateChangeCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/SubmitTaskStateChangeCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/TagResourceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UntagResourceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateCapacityProviderCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateClusterCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateClusterSettingsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateContainerAgentCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateContainerInstancesStateCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateServiceCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateServicePrimaryTaskSetCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/UpdateTaskSetCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/commands/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/endpoint/EndpointParameters.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/endpoint/endpointResolver.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/endpoint/ruleset.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/models/ECSServiceException.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/models/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/models/models_0.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/Interfaces.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListAccountSettingsPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListAttributesPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListClustersPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListContainerInstancesPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListServicesPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListTaskDefinitionFamiliesPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListTaskDefinitionsPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/ListTasksPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/pagination/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/protocols/Aws_json1_1.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/runtimeConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/runtimeConfig.shared.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/waiters/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/waiters/waitForServicesInactive.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/waiters/waitForServicesStable.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/waiters/waitForTasksRunning.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-ecs/dist-cjs/waiters/waitForTasksStopped.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/SSO.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/SSOClient.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/commands/GetRoleCredentialsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountRolesCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/commands/ListAccountsCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/commands/LogoutCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/commands/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/EndpointParameters.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/models/SSOServiceException.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/models/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/models/models_0.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/pagination/Interfaces.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountRolesPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/pagination/ListAccountsPaginator.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/pagination/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/protocols/Aws_restJson1.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/STS.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithSAMLCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/AssumeRoleWithWebIdentityCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/DecodeAuthorizationMessageCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetAccessKeyInfoCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetCallerIdentityCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetFederationTokenCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/GetSessionTokenCommand.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/commands/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/defaultRoleAssumers.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/defaultStsRoleAssumers.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/models/STSServiceException.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/models/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/models/models_0.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/protocols/Aws_query.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/NodeUseDualstackEndpointConfigOptions.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/NodeUseFipsEndpointConfigOptions.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/resolveCustomEndpointsConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/resolveEndpointsConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/endpointsConfig/utils/getEndpointFromRegion.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionConfig/config.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionConfig/getRealRegion.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionConfig/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionConfig/isFipsRegion.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionConfig/resolveRegionConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/PartitionHash.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/RegionHash.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/getHostnameFromVariants.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/getRegionInfo.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/getResolvedHostname.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/getResolvedPartition.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/getResolvedSigningRegion.js","../webpack://javascript-action/./node_modules/@aws-sdk/config-resolver/dist-cjs/regionInfo/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-env/dist-cjs/fromEnv.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/config/Endpoint.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/config/EndpointConfigOptions.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/config/EndpointMode.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/config/EndpointModeConfigOptions.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/fromContainerMetadata.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/fromInstanceMetadata.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/remoteProvider/ImdsCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/remoteProvider/RemoteProviderInit.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/remoteProvider/httpRequest.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/remoteProvider/retry.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/types.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/utils/getExtendedInstanceMetadataCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/utils/getInstanceMetadataEndpoint.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-imds/dist-cjs/utils/staticStabilityProvider.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/fromIni.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveAssumeRoleCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveCredentialSource.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveProfileData.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveSsoCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveStaticCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-ini/dist-cjs/resolveWebIdentityCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-node/dist-cjs/defaultProvider.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-node/dist-cjs/remoteProvider.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-process/dist-cjs/fromProcess.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-process/dist-cjs/getValidatedProcessCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-process/dist-cjs/resolveProcessCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/fromSSO.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/isSsoProfile.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/resolveSSOCredentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/types.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-sso/dist-cjs/validateSsoProfile.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js","../webpack://javascript-action/./node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/hash-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/is-array-buffer/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-content-length/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/adaptors/createConfigValueProvider.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/adaptors/getEndpointFromInstructions.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/adaptors/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/adaptors/toEndpointV1.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/endpointMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/getEndpointPlugin.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/resolveEndpointConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/service-customizations/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/service-customizations/s3.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-endpoint/dist-cjs/types.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-logger/dist-cjs/loggerMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/AdaptiveRetryStrategy.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/DefaultRateLimiter.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/StandardRetryStrategy.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/config.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/configurations.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/defaultRetryQuota.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/delayDecider.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/omitRetryHeadersMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/retryDecider.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/retryMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-retry/dist-cjs/types.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-sdk-sts/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-serde/dist-cjs/deserializerMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-serde/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-serde/dist-cjs/serdePlugin.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-serde/dist-cjs/serializerMiddleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/configurations.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/middleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getSkewCorrectedDate.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/getUpdatedSystemClockOffset.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-signing/dist-cjs/utils/isClockSkewed.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-stack/dist-cjs/MiddlewareStack.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-stack/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-user-agent/dist-cjs/configurations.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-user-agent/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/middleware-user-agent/dist-cjs/user-agent-middleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-config-provider/dist-cjs/configLoader.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-config-provider/dist-cjs/fromEnv.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-config-provider/dist-cjs/fromSharedConfigFiles.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-config-provider/dist-cjs/fromStatic.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-config-provider/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/get-transformed-headers.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/node-http-handler.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/node-http2-handler.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/set-connection-timeout.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/set-socket-timeout.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/stream-collector/collector.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/stream-collector/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/node-http-handler/dist-cjs/write-request-body.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/CredentialsProviderError.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/ProviderError.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/TokenProviderError.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/chain.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/fromStatic.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/property-provider/dist-cjs/memoize.js","../webpack://javascript-action/./node_modules/@aws-sdk/protocol-http/dist-cjs/httpHandler.js","../webpack://javascript-action/./node_modules/@aws-sdk/protocol-http/dist-cjs/httpRequest.js","../webpack://javascript-action/./node_modules/@aws-sdk/protocol-http/dist-cjs/httpResponse.js","../webpack://javascript-action/./node_modules/@aws-sdk/protocol-http/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/protocol-http/dist-cjs/isValidHostname.js","../webpack://javascript-action/./node_modules/@aws-sdk/querystring-builder/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/querystring-parser/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/service-error-classification/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/service-error-classification/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getConfigFilepath.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getCredentialsFilepath.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getHomeDir.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getProfileData.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getProfileName.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/getSsoSessionData.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/loadSharedConfigFiles.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/loadSsoSessionData.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/parseIni.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/parseKnownFiles.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/slurpFile.js","../webpack://javascript-action/./node_modules/@aws-sdk/shared-ini-file-loader/dist-cjs/types.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/SignatureV4.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/cloneRequest.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/credentialDerivation.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/getCanonicalHeaders.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/getCanonicalQuery.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/getPayloadHash.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/headerUtil.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/moveHeadersToQuery.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/prepareRequest.js","../webpack://javascript-action/./node_modules/@aws-sdk/signature-v4/dist-cjs/utilDate.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/client.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/command.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/date-utils.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/default-error-handler.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/defaults-mode.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/emitWarningIfUnsupportedVersion.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/exceptions.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/extended-encode-uri-component.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/get-array-if-single-item.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/get-value-from-text-node.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/lazy-json.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/object-mapping.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/parse-utils.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/resolve-path.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/ser-utils.js","../webpack://javascript-action/./node_modules/@aws-sdk/smithy-client/dist-cjs/split-every.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/abort.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/auth.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/client.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/command.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/credentials.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/crypto.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/endpoint.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/eventStream.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/http.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/logger.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/middleware.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/pagination.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/profile.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/response.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/serde.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/shapes.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/signature.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/stream.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/token.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/transfer.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/util.js","../webpack://javascript-action/./node_modules/@aws-sdk/types/dist-cjs/waiter.js","../webpack://javascript-action/./node_modules/@aws-sdk/url-parser/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-base64-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-body-length-node/dist-cjs/calculateBodyLength.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-body-length-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-buffer-from/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-config-provider/dist-cjs/booleanSelector.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-config-provider/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-defaults-mode-node/dist-cjs/constants.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-defaults-mode-node/dist-cjs/defaultsModeConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-defaults-mode-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-defaults-mode-node/dist-cjs/resolveDefaultsModeConfig.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/debugId.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/debug/toDebugString.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/isVirtualHostableS3Bucket.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/parseArn.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/aws/partition.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/booleanEquals.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttr.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/getAttrPathList.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isIpAddress.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isSet.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/isValidHostLabel.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/not.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/parseURL.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/stringEquals.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/substring.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/lib/uriEncode.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/resolveEndpoint.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointError.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/EndpointRuleObject.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/ErrorRuleObject.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/RuleSetObject.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/TreeRuleObject.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/types/shared.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/callFunction.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateCondition.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateConditions.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateEndpointRule.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateErrorRule.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateExpression.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateRules.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTemplate.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/evaluateTreeRule.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointHeaders.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperties.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointProperty.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getEndpointUrl.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/getReferenceValue.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-endpoints/dist-cjs/utils/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-hex-encoding/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-middleware/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-middleware/dist-cjs/normalizeProvider.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-uri-escape/dist-cjs/escape-uri-path.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-uri-escape/dist-cjs/escape-uri.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-uri-escape/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-user-agent-node/dist-cjs/is-crt-available.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-utf8-node/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/createWaiter.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/poller.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/utils/index.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/utils/sleep.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/utils/validate.js","../webpack://javascript-action/./node_modules/@aws-sdk/util-waiter/dist-cjs/waiter.js","../webpack://javascript-action/./node_modules/balanced-match/index.js","../webpack://javascript-action/./node_modules/brace-expansion/index.js","../webpack://javascript-action/./node_modules/concat-map/index.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/fxp.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/util.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/validator.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/XMLParser.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/node2json.js","../webpack://javascript-action/./node_modules/fast-xml-parser/src/xmlparser/xmlNode.js","../webpack://javascript-action/./node_modules/fs.realpath/index.js","../webpack://javascript-action/./node_modules/fs.realpath/old.js","../webpack://javascript-action/./node_modules/glob/common.js","../webpack://javascript-action/./node_modules/glob/glob.js","../webpack://javascript-action/./node_modules/glob/sync.js","../webpack://javascript-action/./node_modules/inflight/inflight.js","../webpack://javascript-action/./node_modules/inherits/inherits.js","../webpack://javascript-action/./node_modules/inherits/inherits_browser.js","../webpack://javascript-action/./node_modules/lodash/lodash.js","../webpack://javascript-action/./node_modules/minimatch/minimatch.js","../webpack://javascript-action/./node_modules/once/once.js","../webpack://javascript-action/./node_modules/path-is-absolute/index.js","../webpack://javascript-action/./node_modules/rimraf/rimraf.js","../webpack://javascript-action/./node_modules/strnum/strnum.js","../webpack://javascript-action/./node_modules/tmp/lib/tmp.js","../webpack://javascript-action/./node_modules/tslib/tslib.js","../webpack://javascript-action/./node_modules/uuid/dist/index.js","../webpack://javascript-action/./node_modules/uuid/dist/md5.js","../webpack://javascript-action/./node_modules/uuid/dist/nil.js","../webpack://javascript-action/./node_modules/uuid/dist/parse.js","../webpack://javascript-action/./node_modules/uuid/dist/regex.js","../webpack://javascript-action/./node_modules/uuid/dist/rng.js","../webpack://javascript-action/./node_modules/uuid/dist/sha1.js","../webpack://javascript-action/./node_modules/uuid/dist/stringify.js","../webpack://javascript-action/./node_modules/uuid/dist/v1.js","../webpack://javascript-action/./node_modules/uuid/dist/v3.js","../webpack://javascript-action/./node_modules/uuid/dist/v35.js","../webpack://javascript-action/./node_modules/uuid/dist/v4.js","../webpack://javascript-action/./node_modules/uuid/dist/v5.js","../webpack://javascript-action/./node_modules/uuid/dist/validate.js","../webpack://javascript-action/./node_modules/uuid/dist/version.js","../webpack://javascript-action/./node_modules/wrappy/wrappy.js","../webpack://javascript-action/./node_modules/@vercel/ncc/dist/ncc/@@notfound.js","../webpack://javascript-action/external \"assert\"","../webpack://javascript-action/external \"buffer\"","../webpack://javascript-action/external \"child_process\"","../webpack://javascript-action/external \"crypto\"","../webpack://javascript-action/external \"events\"","../webpack://javascript-action/external \"fs\"","../webpack://javascript-action/external \"http\"","../webpack://javascript-action/external \"http2\"","../webpack://javascript-action/external \"https\"","../webpack://javascript-action/external \"os\"","../webpack://javascript-action/external \"path\"","../webpack://javascript-action/external \"process\"","../webpack://javascript-action/external \"stream\"","../webpack://javascript-action/external \"url\"","../webpack://javascript-action/external \"util\"","../webpack://javascript-action/webpack/bootstrap","../webpack://javascript-action/webpack/runtime/node module decorator","../webpack://javascript-action/webpack/runtime/compat","../webpack://javascript-action/./index.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n const delimiter = '_GitHubActionsFileCommandDelimeter_';\n const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`;\n file_command_1.issueCommand('ENV', commandValue);\n }\n else {\n command_1.issueCommand('set-env', { name }, convertedVal);\n }\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n return inputs;\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, value);\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n command_1.issueCommand('save-state', { name }, value);\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issueCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\nfunction issueCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueCommand = issueCommand;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECS = void 0;\nconst CreateCapacityProviderCommand_1 = require(\"./commands/CreateCapacityProviderCommand\");\nconst CreateClusterCommand_1 = require(\"./commands/CreateClusterCommand\");\nconst CreateServiceCommand_1 = require(\"./commands/CreateServiceCommand\");\nconst CreateTaskSetCommand_1 = require(\"./commands/CreateTaskSetCommand\");\nconst DeleteAccountSettingCommand_1 = require(\"./commands/DeleteAccountSettingCommand\");\nconst DeleteAttributesCommand_1 = require(\"./commands/DeleteAttributesCommand\");\nconst DeleteCapacityProviderCommand_1 = require(\"./commands/DeleteCapacityProviderCommand\");\nconst DeleteClusterCommand_1 = require(\"./commands/DeleteClusterCommand\");\nconst DeleteServiceCommand_1 = require(\"./commands/DeleteServiceCommand\");\nconst DeleteTaskSetCommand_1 = require(\"./commands/DeleteTaskSetCommand\");\nconst DeregisterContainerInstanceCommand_1 = require(\"./commands/DeregisterContainerInstanceCommand\");\nconst DeregisterTaskDefinitionCommand_1 = require(\"./commands/DeregisterTaskDefinitionCommand\");\nconst DescribeCapacityProvidersCommand_1 = require(\"./commands/DescribeCapacityProvidersCommand\");\nconst DescribeClustersCommand_1 = require(\"./commands/DescribeClustersCommand\");\nconst DescribeContainerInstancesCommand_1 = require(\"./commands/DescribeContainerInstancesCommand\");\nconst DescribeServicesCommand_1 = require(\"./commands/DescribeServicesCommand\");\nconst DescribeTaskDefinitionCommand_1 = require(\"./commands/DescribeTaskDefinitionCommand\");\nconst DescribeTasksCommand_1 = require(\"./commands/DescribeTasksCommand\");\nconst DescribeTaskSetsCommand_1 = require(\"./commands/DescribeTaskSetsCommand\");\nconst DiscoverPollEndpointCommand_1 = require(\"./commands/DiscoverPollEndpointCommand\");\nconst ExecuteCommandCommand_1 = require(\"./commands/ExecuteCommandCommand\");\nconst ListAccountSettingsCommand_1 = require(\"./commands/ListAccountSettingsCommand\");\nconst ListAttributesCommand_1 = require(\"./commands/ListAttributesCommand\");\nconst ListClustersCommand_1 = require(\"./commands/ListClustersCommand\");\nconst ListContainerInstancesCommand_1 = require(\"./commands/ListContainerInstancesCommand\");\nconst ListServicesCommand_1 = require(\"./commands/ListServicesCommand\");\nconst ListTagsForResourceCommand_1 = require(\"./commands/ListTagsForResourceCommand\");\nconst ListTaskDefinitionFamiliesCommand_1 = require(\"./commands/ListTaskDefinitionFamiliesCommand\");\nconst ListTaskDefinitionsCommand_1 = require(\"./commands/ListTaskDefinitionsCommand\");\nconst ListTasksCommand_1 = require(\"./commands/ListTasksCommand\");\nconst PutAccountSettingCommand_1 = require(\"./commands/PutAccountSettingCommand\");\nconst PutAccountSettingDefaultCommand_1 = require(\"./commands/PutAccountSettingDefaultCommand\");\nconst PutAttributesCommand_1 = require(\"./commands/PutAttributesCommand\");\nconst PutClusterCapacityProvidersCommand_1 = require(\"./commands/PutClusterCapacityProvidersCommand\");\nconst RegisterContainerInstanceCommand_1 = require(\"./commands/RegisterContainerInstanceCommand\");\nconst RegisterTaskDefinitionCommand_1 = require(\"./commands/RegisterTaskDefinitionCommand\");\nconst RunTaskCommand_1 = require(\"./commands/RunTaskCommand\");\nconst StartTaskCommand_1 = require(\"./commands/StartTaskCommand\");\nconst StopTaskCommand_1 = require(\"./commands/StopTaskCommand\");\nconst SubmitAttachmentStateChangesCommand_1 = require(\"./commands/SubmitAttachmentStateChangesCommand\");\nconst SubmitContainerStateChangeCommand_1 = require(\"./commands/SubmitContainerStateChangeCommand\");\nconst SubmitTaskStateChangeCommand_1 = require(\"./commands/SubmitTaskStateChangeCommand\");\nconst TagResourceCommand_1 = require(\"./commands/TagResourceCommand\");\nconst UntagResourceCommand_1 = require(\"./commands/UntagResourceCommand\");\nconst UpdateCapacityProviderCommand_1 = require(\"./commands/UpdateCapacityProviderCommand\");\nconst UpdateClusterCommand_1 = require(\"./commands/UpdateClusterCommand\");\nconst UpdateClusterSettingsCommand_1 = require(\"./commands/UpdateClusterSettingsCommand\");\nconst UpdateContainerAgentCommand_1 = require(\"./commands/UpdateContainerAgentCommand\");\nconst UpdateContainerInstancesStateCommand_1 = require(\"./commands/UpdateContainerInstancesStateCommand\");\nconst UpdateServiceCommand_1 = require(\"./commands/UpdateServiceCommand\");\nconst UpdateServicePrimaryTaskSetCommand_1 = require(\"./commands/UpdateServicePrimaryTaskSetCommand\");\nconst UpdateTaskSetCommand_1 = require(\"./commands/UpdateTaskSetCommand\");\nconst ECSClient_1 = require(\"./ECSClient\");\nclass ECS extends ECSClient_1.ECSClient {\n createCapacityProvider(args, optionsOrCb, cb) {\n const command = new CreateCapacityProviderCommand_1.CreateCapacityProviderCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n createCluster(args, optionsOrCb, cb) {\n const command = new CreateClusterCommand_1.CreateClusterCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n createService(args, optionsOrCb, cb) {\n const command = new CreateServiceCommand_1.CreateServiceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n createTaskSet(args, optionsOrCb, cb) {\n const command = new CreateTaskSetCommand_1.CreateTaskSetCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteAccountSetting(args, optionsOrCb, cb) {\n const command = new DeleteAccountSettingCommand_1.DeleteAccountSettingCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteAttributes(args, optionsOrCb, cb) {\n const command = new DeleteAttributesCommand_1.DeleteAttributesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteCapacityProvider(args, optionsOrCb, cb) {\n const command = new DeleteCapacityProviderCommand_1.DeleteCapacityProviderCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteCluster(args, optionsOrCb, cb) {\n const command = new DeleteClusterCommand_1.DeleteClusterCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteService(args, optionsOrCb, cb) {\n const command = new DeleteServiceCommand_1.DeleteServiceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deleteTaskSet(args, optionsOrCb, cb) {\n const command = new DeleteTaskSetCommand_1.DeleteTaskSetCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deregisterContainerInstance(args, optionsOrCb, cb) {\n const command = new DeregisterContainerInstanceCommand_1.DeregisterContainerInstanceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n deregisterTaskDefinition(args, optionsOrCb, cb) {\n const command = new DeregisterTaskDefinitionCommand_1.DeregisterTaskDefinitionCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeCapacityProviders(args, optionsOrCb, cb) {\n const command = new DescribeCapacityProvidersCommand_1.DescribeCapacityProvidersCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeClusters(args, optionsOrCb, cb) {\n const command = new DescribeClustersCommand_1.DescribeClustersCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeContainerInstances(args, optionsOrCb, cb) {\n const command = new DescribeContainerInstancesCommand_1.DescribeContainerInstancesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeServices(args, optionsOrCb, cb) {\n const command = new DescribeServicesCommand_1.DescribeServicesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeTaskDefinition(args, optionsOrCb, cb) {\n const command = new DescribeTaskDefinitionCommand_1.DescribeTaskDefinitionCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeTasks(args, optionsOrCb, cb) {\n const command = new DescribeTasksCommand_1.DescribeTasksCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n describeTaskSets(args, optionsOrCb, cb) {\n const command = new DescribeTaskSetsCommand_1.DescribeTaskSetsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n discoverPollEndpoint(args, optionsOrCb, cb) {\n const command = new DiscoverPollEndpointCommand_1.DiscoverPollEndpointCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n executeCommand(args, optionsOrCb, cb) {\n const command = new ExecuteCommandCommand_1.ExecuteCommandCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listAccountSettings(args, optionsOrCb, cb) {\n const command = new ListAccountSettingsCommand_1.ListAccountSettingsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listAttributes(args, optionsOrCb, cb) {\n const command = new ListAttributesCommand_1.ListAttributesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listClusters(args, optionsOrCb, cb) {\n const command = new ListClustersCommand_1.ListClustersCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listContainerInstances(args, optionsOrCb, cb) {\n const command = new ListContainerInstancesCommand_1.ListContainerInstancesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listServices(args, optionsOrCb, cb) {\n const command = new ListServicesCommand_1.ListServicesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listTagsForResource(args, optionsOrCb, cb) {\n const command = new ListTagsForResourceCommand_1.ListTagsForResourceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listTaskDefinitionFamilies(args, optionsOrCb, cb) {\n const command = new ListTaskDefinitionFamiliesCommand_1.ListTaskDefinitionFamiliesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listTaskDefinitions(args, optionsOrCb, cb) {\n const command = new ListTaskDefinitionsCommand_1.ListTaskDefinitionsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listTasks(args, optionsOrCb, cb) {\n const command = new ListTasksCommand_1.ListTasksCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n putAccountSetting(args, optionsOrCb, cb) {\n const command = new PutAccountSettingCommand_1.PutAccountSettingCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n putAccountSettingDefault(args, optionsOrCb, cb) {\n const command = new PutAccountSettingDefaultCommand_1.PutAccountSettingDefaultCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n putAttributes(args, optionsOrCb, cb) {\n const command = new PutAttributesCommand_1.PutAttributesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n putClusterCapacityProviders(args, optionsOrCb, cb) {\n const command = new PutClusterCapacityProvidersCommand_1.PutClusterCapacityProvidersCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n registerContainerInstance(args, optionsOrCb, cb) {\n const command = new RegisterContainerInstanceCommand_1.RegisterContainerInstanceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n registerTaskDefinition(args, optionsOrCb, cb) {\n const command = new RegisterTaskDefinitionCommand_1.RegisterTaskDefinitionCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n runTask(args, optionsOrCb, cb) {\n const command = new RunTaskCommand_1.RunTaskCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n startTask(args, optionsOrCb, cb) {\n const command = new StartTaskCommand_1.StartTaskCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n stopTask(args, optionsOrCb, cb) {\n const command = new StopTaskCommand_1.StopTaskCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n submitAttachmentStateChanges(args, optionsOrCb, cb) {\n const command = new SubmitAttachmentStateChangesCommand_1.SubmitAttachmentStateChangesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n submitContainerStateChange(args, optionsOrCb, cb) {\n const command = new SubmitContainerStateChangeCommand_1.SubmitContainerStateChangeCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n submitTaskStateChange(args, optionsOrCb, cb) {\n const command = new SubmitTaskStateChangeCommand_1.SubmitTaskStateChangeCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n tagResource(args, optionsOrCb, cb) {\n const command = new TagResourceCommand_1.TagResourceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n untagResource(args, optionsOrCb, cb) {\n const command = new UntagResourceCommand_1.UntagResourceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateCapacityProvider(args, optionsOrCb, cb) {\n const command = new UpdateCapacityProviderCommand_1.UpdateCapacityProviderCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateCluster(args, optionsOrCb, cb) {\n const command = new UpdateClusterCommand_1.UpdateClusterCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateClusterSettings(args, optionsOrCb, cb) {\n const command = new UpdateClusterSettingsCommand_1.UpdateClusterSettingsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateContainerAgent(args, optionsOrCb, cb) {\n const command = new UpdateContainerAgentCommand_1.UpdateContainerAgentCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateContainerInstancesState(args, optionsOrCb, cb) {\n const command = new UpdateContainerInstancesStateCommand_1.UpdateContainerInstancesStateCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateService(args, optionsOrCb, cb) {\n const command = new UpdateServiceCommand_1.UpdateServiceCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateServicePrimaryTaskSet(args, optionsOrCb, cb) {\n const command = new UpdateServicePrimaryTaskSetCommand_1.UpdateServicePrimaryTaskSetCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n updateTaskSet(args, optionsOrCb, cb) {\n const command = new UpdateTaskSetCommand_1.UpdateTaskSetCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n}\nexports.ECS = ECS;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECSClient = void 0;\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst middleware_content_length_1 = require(\"@aws-sdk/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nclass ECSClient extends smithy_client_1.Client {\n constructor(configuration) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration);\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1);\n const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_signing_1.resolveAwsAuthConfig)(_config_5);\n const _config_7 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_6);\n super(_config_7);\n this.config = _config_7;\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\nexports.ECSClient = ECSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateCapacityProviderCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass CreateCapacityProviderCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, CreateCapacityProviderCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"CreateCapacityProviderCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.CreateCapacityProviderRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.CreateCapacityProviderResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1CreateCapacityProviderCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1CreateCapacityProviderCommand)(output, context);\n }\n}\nexports.CreateCapacityProviderCommand = CreateCapacityProviderCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateClusterCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass CreateClusterCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, CreateClusterCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"CreateClusterCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.CreateClusterRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.CreateClusterResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1CreateClusterCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1CreateClusterCommand)(output, context);\n }\n}\nexports.CreateClusterCommand = CreateClusterCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateServiceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass CreateServiceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, CreateServiceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"CreateServiceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.CreateServiceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.CreateServiceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1CreateServiceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1CreateServiceCommand)(output, context);\n }\n}\nexports.CreateServiceCommand = CreateServiceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CreateTaskSetCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass CreateTaskSetCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, CreateTaskSetCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"CreateTaskSetCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.CreateTaskSetRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.CreateTaskSetResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1CreateTaskSetCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1CreateTaskSetCommand)(output, context);\n }\n}\nexports.CreateTaskSetCommand = CreateTaskSetCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteAccountSettingCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteAccountSettingCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteAccountSettingCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteAccountSettingCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteAccountSettingRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteAccountSettingResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteAccountSettingCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteAccountSettingCommand)(output, context);\n }\n}\nexports.DeleteAccountSettingCommand = DeleteAccountSettingCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteAttributesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteAttributesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteAttributesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteAttributesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteAttributesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteAttributesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteAttributesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteAttributesCommand)(output, context);\n }\n}\nexports.DeleteAttributesCommand = DeleteAttributesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteCapacityProviderCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteCapacityProviderCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteCapacityProviderCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteCapacityProviderCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteCapacityProviderRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteCapacityProviderResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteCapacityProviderCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteCapacityProviderCommand)(output, context);\n }\n}\nexports.DeleteCapacityProviderCommand = DeleteCapacityProviderCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteClusterCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteClusterCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteClusterCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteClusterCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteClusterRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteClusterResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteClusterCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteClusterCommand)(output, context);\n }\n}\nexports.DeleteClusterCommand = DeleteClusterCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteServiceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteServiceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteServiceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteServiceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteServiceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteServiceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteServiceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteServiceCommand)(output, context);\n }\n}\nexports.DeleteServiceCommand = DeleteServiceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeleteTaskSetCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeleteTaskSetCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeleteTaskSetCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeleteTaskSetCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeleteTaskSetRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeleteTaskSetResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeleteTaskSetCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeleteTaskSetCommand)(output, context);\n }\n}\nexports.DeleteTaskSetCommand = DeleteTaskSetCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeregisterContainerInstanceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeregisterContainerInstanceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeregisterContainerInstanceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeregisterContainerInstanceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeregisterContainerInstanceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeregisterContainerInstanceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeregisterContainerInstanceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeregisterContainerInstanceCommand)(output, context);\n }\n}\nexports.DeregisterContainerInstanceCommand = DeregisterContainerInstanceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeregisterTaskDefinitionCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DeregisterTaskDefinitionCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DeregisterTaskDefinitionCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DeregisterTaskDefinitionCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DeregisterTaskDefinitionRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DeregisterTaskDefinitionResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DeregisterTaskDefinitionCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DeregisterTaskDefinitionCommand)(output, context);\n }\n}\nexports.DeregisterTaskDefinitionCommand = DeregisterTaskDefinitionCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeCapacityProvidersCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeCapacityProvidersCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeCapacityProvidersCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeCapacityProvidersCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeCapacityProvidersRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeCapacityProvidersResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeCapacityProvidersCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeCapacityProvidersCommand)(output, context);\n }\n}\nexports.DescribeCapacityProvidersCommand = DescribeCapacityProvidersCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeClustersCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeClustersCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeClustersCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeClustersCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeClustersRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeClustersResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeClustersCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeClustersCommand)(output, context);\n }\n}\nexports.DescribeClustersCommand = DescribeClustersCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeContainerInstancesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeContainerInstancesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeContainerInstancesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeContainerInstancesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeContainerInstancesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeContainerInstancesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeContainerInstancesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeContainerInstancesCommand)(output, context);\n }\n}\nexports.DescribeContainerInstancesCommand = DescribeContainerInstancesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeServicesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeServicesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeServicesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeServicesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeServicesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeServicesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeServicesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeServicesCommand)(output, context);\n }\n}\nexports.DescribeServicesCommand = DescribeServicesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeTaskDefinitionCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeTaskDefinitionCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeTaskDefinitionCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeTaskDefinitionCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeTaskDefinitionRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeTaskDefinitionResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeTaskDefinitionCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeTaskDefinitionCommand)(output, context);\n }\n}\nexports.DescribeTaskDefinitionCommand = DescribeTaskDefinitionCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeTaskSetsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeTaskSetsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeTaskSetsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeTaskSetsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeTaskSetsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeTaskSetsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeTaskSetsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeTaskSetsCommand)(output, context);\n }\n}\nexports.DescribeTaskSetsCommand = DescribeTaskSetsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DescribeTasksCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DescribeTasksCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DescribeTasksCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DescribeTasksCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DescribeTasksRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DescribeTasksResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DescribeTasksCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DescribeTasksCommand)(output, context);\n }\n}\nexports.DescribeTasksCommand = DescribeTasksCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiscoverPollEndpointCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass DiscoverPollEndpointCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DiscoverPollEndpointCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"DiscoverPollEndpointCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DiscoverPollEndpointRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DiscoverPollEndpointResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1DiscoverPollEndpointCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1DiscoverPollEndpointCommand)(output, context);\n }\n}\nexports.DiscoverPollEndpointCommand = DiscoverPollEndpointCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExecuteCommandCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ExecuteCommandCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ExecuteCommandCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ExecuteCommandCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ExecuteCommandRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ExecuteCommandResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ExecuteCommandCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ExecuteCommandCommand)(output, context);\n }\n}\nexports.ExecuteCommandCommand = ExecuteCommandCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListAccountSettingsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListAccountSettingsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListAccountSettingsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListAccountSettingsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListAccountSettingsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListAccountSettingsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListAccountSettingsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListAccountSettingsCommand)(output, context);\n }\n}\nexports.ListAccountSettingsCommand = ListAccountSettingsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListAttributesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListAttributesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListAttributesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListAttributesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListAttributesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListAttributesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListAttributesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListAttributesCommand)(output, context);\n }\n}\nexports.ListAttributesCommand = ListAttributesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListClustersCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListClustersCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListClustersCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListClustersCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListClustersRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListClustersResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListClustersCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListClustersCommand)(output, context);\n }\n}\nexports.ListClustersCommand = ListClustersCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListContainerInstancesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListContainerInstancesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListContainerInstancesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListContainerInstancesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListContainerInstancesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListContainerInstancesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListContainerInstancesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListContainerInstancesCommand)(output, context);\n }\n}\nexports.ListContainerInstancesCommand = ListContainerInstancesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListServicesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListServicesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListServicesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListServicesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListServicesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListServicesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListServicesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListServicesCommand)(output, context);\n }\n}\nexports.ListServicesCommand = ListServicesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListTagsForResourceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListTagsForResourceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListTagsForResourceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListTagsForResourceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListTagsForResourceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListTagsForResourceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListTagsForResourceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListTagsForResourceCommand)(output, context);\n }\n}\nexports.ListTagsForResourceCommand = ListTagsForResourceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListTaskDefinitionFamiliesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListTaskDefinitionFamiliesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListTaskDefinitionFamiliesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListTaskDefinitionFamiliesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListTaskDefinitionFamiliesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListTaskDefinitionFamiliesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListTaskDefinitionFamiliesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListTaskDefinitionFamiliesCommand)(output, context);\n }\n}\nexports.ListTaskDefinitionFamiliesCommand = ListTaskDefinitionFamiliesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListTaskDefinitionsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListTaskDefinitionsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListTaskDefinitionsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListTaskDefinitionsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListTaskDefinitionsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListTaskDefinitionsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListTaskDefinitionsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListTaskDefinitionsCommand)(output, context);\n }\n}\nexports.ListTaskDefinitionsCommand = ListTaskDefinitionsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListTasksCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass ListTasksCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListTasksCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"ListTasksCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListTasksRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListTasksResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1ListTasksCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1ListTasksCommand)(output, context);\n }\n}\nexports.ListTasksCommand = ListTasksCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PutAccountSettingCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass PutAccountSettingCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, PutAccountSettingCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"PutAccountSettingCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.PutAccountSettingRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.PutAccountSettingResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1PutAccountSettingCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1PutAccountSettingCommand)(output, context);\n }\n}\nexports.PutAccountSettingCommand = PutAccountSettingCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PutAccountSettingDefaultCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass PutAccountSettingDefaultCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, PutAccountSettingDefaultCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"PutAccountSettingDefaultCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.PutAccountSettingDefaultRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.PutAccountSettingDefaultResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1PutAccountSettingDefaultCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1PutAccountSettingDefaultCommand)(output, context);\n }\n}\nexports.PutAccountSettingDefaultCommand = PutAccountSettingDefaultCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PutAttributesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass PutAttributesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, PutAttributesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"PutAttributesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.PutAttributesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.PutAttributesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1PutAttributesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1PutAttributesCommand)(output, context);\n }\n}\nexports.PutAttributesCommand = PutAttributesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PutClusterCapacityProvidersCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass PutClusterCapacityProvidersCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, PutClusterCapacityProvidersCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"PutClusterCapacityProvidersCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.PutClusterCapacityProvidersRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.PutClusterCapacityProvidersResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1PutClusterCapacityProvidersCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1PutClusterCapacityProvidersCommand)(output, context);\n }\n}\nexports.PutClusterCapacityProvidersCommand = PutClusterCapacityProvidersCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegisterContainerInstanceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass RegisterContainerInstanceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, RegisterContainerInstanceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"RegisterContainerInstanceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.RegisterContainerInstanceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.RegisterContainerInstanceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1RegisterContainerInstanceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1RegisterContainerInstanceCommand)(output, context);\n }\n}\nexports.RegisterContainerInstanceCommand = RegisterContainerInstanceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegisterTaskDefinitionCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass RegisterTaskDefinitionCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, RegisterTaskDefinitionCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"RegisterTaskDefinitionCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.RegisterTaskDefinitionRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.RegisterTaskDefinitionResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1RegisterTaskDefinitionCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1RegisterTaskDefinitionCommand)(output, context);\n }\n}\nexports.RegisterTaskDefinitionCommand = RegisterTaskDefinitionCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RunTaskCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass RunTaskCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, RunTaskCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"RunTaskCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.RunTaskRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.RunTaskResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1RunTaskCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1RunTaskCommand)(output, context);\n }\n}\nexports.RunTaskCommand = RunTaskCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StartTaskCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass StartTaskCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, StartTaskCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"StartTaskCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.StartTaskRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.StartTaskResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1StartTaskCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1StartTaskCommand)(output, context);\n }\n}\nexports.StartTaskCommand = StartTaskCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StopTaskCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass StopTaskCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, StopTaskCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"StopTaskCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.StopTaskRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.StopTaskResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1StopTaskCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1StopTaskCommand)(output, context);\n }\n}\nexports.StopTaskCommand = StopTaskCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubmitAttachmentStateChangesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass SubmitAttachmentStateChangesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, SubmitAttachmentStateChangesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"SubmitAttachmentStateChangesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.SubmitAttachmentStateChangesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.SubmitAttachmentStateChangesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1SubmitAttachmentStateChangesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1SubmitAttachmentStateChangesCommand)(output, context);\n }\n}\nexports.SubmitAttachmentStateChangesCommand = SubmitAttachmentStateChangesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubmitContainerStateChangeCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass SubmitContainerStateChangeCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, SubmitContainerStateChangeCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"SubmitContainerStateChangeCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.SubmitContainerStateChangeRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.SubmitContainerStateChangeResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1SubmitContainerStateChangeCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1SubmitContainerStateChangeCommand)(output, context);\n }\n}\nexports.SubmitContainerStateChangeCommand = SubmitContainerStateChangeCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SubmitTaskStateChangeCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass SubmitTaskStateChangeCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, SubmitTaskStateChangeCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"SubmitTaskStateChangeCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.SubmitTaskStateChangeRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.SubmitTaskStateChangeResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1SubmitTaskStateChangeCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1SubmitTaskStateChangeCommand)(output, context);\n }\n}\nexports.SubmitTaskStateChangeCommand = SubmitTaskStateChangeCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TagResourceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass TagResourceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, TagResourceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"TagResourceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.TagResourceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.TagResourceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1TagResourceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1TagResourceCommand)(output, context);\n }\n}\nexports.TagResourceCommand = TagResourceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UntagResourceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UntagResourceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UntagResourceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UntagResourceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UntagResourceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UntagResourceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UntagResourceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UntagResourceCommand)(output, context);\n }\n}\nexports.UntagResourceCommand = UntagResourceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateCapacityProviderCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateCapacityProviderCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateCapacityProviderCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateCapacityProviderCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateCapacityProviderRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateCapacityProviderResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateCapacityProviderCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateCapacityProviderCommand)(output, context);\n }\n}\nexports.UpdateCapacityProviderCommand = UpdateCapacityProviderCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateClusterCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateClusterCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateClusterCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateClusterCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateClusterRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateClusterResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateClusterCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateClusterCommand)(output, context);\n }\n}\nexports.UpdateClusterCommand = UpdateClusterCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateClusterSettingsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateClusterSettingsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateClusterSettingsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateClusterSettingsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateClusterSettingsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateClusterSettingsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateClusterSettingsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateClusterSettingsCommand)(output, context);\n }\n}\nexports.UpdateClusterSettingsCommand = UpdateClusterSettingsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateContainerAgentCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateContainerAgentCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateContainerAgentCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateContainerAgentCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateContainerAgentRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateContainerAgentResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateContainerAgentCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateContainerAgentCommand)(output, context);\n }\n}\nexports.UpdateContainerAgentCommand = UpdateContainerAgentCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateContainerInstancesStateCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateContainerInstancesStateCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateContainerInstancesStateCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateContainerInstancesStateCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateContainerInstancesStateRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateContainerInstancesStateResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateContainerInstancesStateCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateContainerInstancesStateCommand)(output, context);\n }\n}\nexports.UpdateContainerInstancesStateCommand = UpdateContainerInstancesStateCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateServiceCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateServiceCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateServiceCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateServiceCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateServiceRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateServiceResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateServiceCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateServiceCommand)(output, context);\n }\n}\nexports.UpdateServiceCommand = UpdateServiceCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateServicePrimaryTaskSetCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateServicePrimaryTaskSetCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateServicePrimaryTaskSetCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateServicePrimaryTaskSetCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateServicePrimaryTaskSetRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateServicePrimaryTaskSetResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateServicePrimaryTaskSetCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateServicePrimaryTaskSetCommand)(output, context);\n }\n}\nexports.UpdateServicePrimaryTaskSetCommand = UpdateServicePrimaryTaskSetCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UpdateTaskSetCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_json1_1_1 = require(\"../protocols/Aws_json1_1\");\nclass UpdateTaskSetCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, UpdateTaskSetCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"ECSClient\";\n const commandName = \"UpdateTaskSetCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.UpdateTaskSetRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.UpdateTaskSetResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_json1_1_1.serializeAws_json1_1UpdateTaskSetCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_json1_1_1.deserializeAws_json1_1UpdateTaskSetCommand)(output, context);\n }\n}\nexports.UpdateTaskSetCommand = UpdateTaskSetCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./CreateCapacityProviderCommand\"), exports);\ntslib_1.__exportStar(require(\"./CreateClusterCommand\"), exports);\ntslib_1.__exportStar(require(\"./CreateServiceCommand\"), exports);\ntslib_1.__exportStar(require(\"./CreateTaskSetCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteAccountSettingCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteAttributesCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteCapacityProviderCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteClusterCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteServiceCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeleteTaskSetCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeregisterContainerInstanceCommand\"), exports);\ntslib_1.__exportStar(require(\"./DeregisterTaskDefinitionCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeCapacityProvidersCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeClustersCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeContainerInstancesCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeServicesCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeTaskDefinitionCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeTaskSetsCommand\"), exports);\ntslib_1.__exportStar(require(\"./DescribeTasksCommand\"), exports);\ntslib_1.__exportStar(require(\"./DiscoverPollEndpointCommand\"), exports);\ntslib_1.__exportStar(require(\"./ExecuteCommandCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountSettingsCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListAttributesCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListClustersCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListContainerInstancesCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListServicesCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListTagsForResourceCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListTaskDefinitionFamiliesCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListTaskDefinitionsCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListTasksCommand\"), exports);\ntslib_1.__exportStar(require(\"./PutAccountSettingCommand\"), exports);\ntslib_1.__exportStar(require(\"./PutAccountSettingDefaultCommand\"), exports);\ntslib_1.__exportStar(require(\"./PutAttributesCommand\"), exports);\ntslib_1.__exportStar(require(\"./PutClusterCapacityProvidersCommand\"), exports);\ntslib_1.__exportStar(require(\"./RegisterContainerInstanceCommand\"), exports);\ntslib_1.__exportStar(require(\"./RegisterTaskDefinitionCommand\"), exports);\ntslib_1.__exportStar(require(\"./RunTaskCommand\"), exports);\ntslib_1.__exportStar(require(\"./StartTaskCommand\"), exports);\ntslib_1.__exportStar(require(\"./StopTaskCommand\"), exports);\ntslib_1.__exportStar(require(\"./SubmitAttachmentStateChangesCommand\"), exports);\ntslib_1.__exportStar(require(\"./SubmitContainerStateChangeCommand\"), exports);\ntslib_1.__exportStar(require(\"./SubmitTaskStateChangeCommand\"), exports);\ntslib_1.__exportStar(require(\"./TagResourceCommand\"), exports);\ntslib_1.__exportStar(require(\"./UntagResourceCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateCapacityProviderCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateClusterCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateClusterSettingsCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateContainerAgentCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateContainerInstancesStateCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateServiceCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateServicePrimaryTaskSetCommand\"), exports);\ntslib_1.__exportStar(require(\"./UpdateTaskSetCommand\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"ecs\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nexports.ruleSet = {\n version: \"1.0\",\n parameters: {\n Region: {\n builtIn: \"AWS::Region\",\n required: false,\n documentation: \"The AWS region used to dispatch the request.\",\n type: \"String\",\n },\n UseDualStack: {\n builtIn: \"AWS::UseDualStack\",\n required: true,\n default: false,\n documentation: \"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\n type: \"Boolean\",\n },\n UseFIPS: {\n builtIn: \"AWS::UseFIPS\",\n required: true,\n default: false,\n documentation: \"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\n type: \"Boolean\",\n },\n Endpoint: {\n builtIn: \"SDK::Endpoint\",\n required: false,\n documentation: \"Override the endpoint used to send this request\",\n type: \"String\",\n },\n },\n rules: [\n {\n conditions: [\n {\n fn: \"aws.partition\",\n argv: [\n {\n ref: \"Region\",\n },\n ],\n assign: \"PartitionResult\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"isSet\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n },\n {\n fn: \"parseURL\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n assign: \"url\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: FIPS and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n endpoint: {\n url: {\n ref: \"Endpoint\",\n },\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://ecs-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS and DualStack are enabled, but this partition does not support one or both\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://ecs-fips.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS is enabled but this partition does not support FIPS\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://ecs.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"DualStack is enabled but this partition does not support DualStack\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [],\n endpoint: {\n url: \"https://ecs.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECSServiceException = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./ECS\"), exports);\ntslib_1.__exportStar(require(\"./ECSClient\"), exports);\ntslib_1.__exportStar(require(\"./commands\"), exports);\ntslib_1.__exportStar(require(\"./models\"), exports);\ntslib_1.__exportStar(require(\"./pagination\"), exports);\ntslib_1.__exportStar(require(\"./waiters\"), exports);\nvar ECSServiceException_1 = require(\"./models/ECSServiceException\");\nObject.defineProperty(exports, \"ECSServiceException\", { enumerable: true, get: function () { return ECSServiceException_1.ECSServiceException; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ECSServiceException = void 0;\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nclass ECSServiceException extends smithy_client_1.ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, ECSServiceException.prototype);\n }\n}\nexports.ECSServiceException = ECSServiceException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./models_0\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PidMode = exports.NetworkMode = exports.IpcMode = exports.UlimitName = exports.ResourceType = exports.TransportProtocol = exports.LogDriver = exports.DeviceCgroupPermission = exports.FirelensConfigurationType = exports.EnvironmentFileType = exports.ContainerCondition = exports.Compatibility = exports.InstanceHealthCheckType = exports.InstanceHealthCheckState = exports.TaskSetNotFoundException = exports.ClusterContainsTasksException = exports.ClusterContainsServicesException = exports.ClusterContainsContainerInstancesException = exports.TargetNotFoundException = exports.TargetType = exports.SettingName = exports.ServiceNotFoundException = exports.ServiceNotActiveException = exports.UnsupportedFeatureException = exports.PlatformUnknownException = exports.PlatformTaskDefinitionIncompatibilityException = exports.StabilityStatus = exports.ScaleUnit = exports.DeploymentRolloutState = exports.SchedulingStrategy = exports.PropagateTags = exports.PlacementStrategyType = exports.PlacementConstraintType = exports.AssignPublicIp = exports.LaunchType = exports.DeploymentControllerType = exports.ClusterNotFoundException = exports.ClusterSettingName = exports.ExecuteCommandLogging = exports.UpdateInProgressException = exports.ServerException = exports.LimitExceededException = exports.InvalidParameterException = exports.CapacityProviderUpdateStatus = exports.CapacityProviderStatus = exports.ManagedTerminationProtection = exports.ManagedScalingStatus = exports.ClientException = exports.AgentUpdateStatus = exports.AccessDeniedException = void 0;\nexports.DeploymentControllerFilterSensitiveLog = exports.DeploymentConfigurationFilterSensitiveLog = exports.DeploymentCircuitBreakerFilterSensitiveLog = exports.CreateClusterResponseFilterSensitiveLog = exports.ClusterFilterSensitiveLog = exports.AttachmentFilterSensitiveLog = exports.KeyValuePairFilterSensitiveLog = exports.CreateClusterRequestFilterSensitiveLog = exports.ClusterSettingFilterSensitiveLog = exports.CapacityProviderStrategyItemFilterSensitiveLog = exports.ClusterConfigurationFilterSensitiveLog = exports.ExecuteCommandConfigurationFilterSensitiveLog = exports.ExecuteCommandLogConfigurationFilterSensitiveLog = exports.CreateCapacityProviderResponseFilterSensitiveLog = exports.CapacityProviderFilterSensitiveLog = exports.CreateCapacityProviderRequestFilterSensitiveLog = exports.TagFilterSensitiveLog = exports.AutoScalingGroupProviderFilterSensitiveLog = exports.ManagedScalingFilterSensitiveLog = exports.NoUpdateAvailableException = exports.MissingVersionException = exports.ResourceNotFoundException = exports.BlockedException = exports.PlatformDeviceType = exports.ResourceInUseException = exports.AttributeLimitExceededException = exports.DesiredStatus = exports.SortOrder = exports.TaskDefinitionFamilyStatus = exports.ContainerInstanceStatus = exports.TargetNotConnectedException = exports.TaskSetField = exports.TaskStopCode = exports.ManagedAgentName = exports.HealthStatus = exports.Connectivity = exports.TaskField = exports.TaskDefinitionField = exports.ServiceField = exports.ContainerInstanceField = exports.ClusterField = exports.CapacityProviderField = exports.EFSTransitEncryption = exports.EFSAuthorizationConfigIAM = exports.Scope = exports.TaskDefinitionStatus = exports.OSFamily = exports.CPUArchitecture = exports.ProxyConfigurationType = exports.TaskDefinitionPlacementConstraintType = void 0;\nexports.PortMappingFilterSensitiveLog = exports.MountPointFilterSensitiveLog = exports.LogConfigurationFilterSensitiveLog = exports.SecretFilterSensitiveLog = exports.LinuxParametersFilterSensitiveLog = exports.TmpfsFilterSensitiveLog = exports.DeviceFilterSensitiveLog = exports.KernelCapabilitiesFilterSensitiveLog = exports.HealthCheckFilterSensitiveLog = exports.FirelensConfigurationFilterSensitiveLog = exports.HostEntryFilterSensitiveLog = exports.EnvironmentFileFilterSensitiveLog = exports.ContainerDependencyFilterSensitiveLog = exports.DeregisterTaskDefinitionRequestFilterSensitiveLog = exports.DeregisterContainerInstanceResponseFilterSensitiveLog = exports.ContainerInstanceFilterSensitiveLog = exports.VersionInfoFilterSensitiveLog = exports.ResourceFilterSensitiveLog = exports.ContainerInstanceHealthStatusFilterSensitiveLog = exports.InstanceHealthCheckResultFilterSensitiveLog = exports.DeregisterContainerInstanceRequestFilterSensitiveLog = exports.DeleteTaskSetResponseFilterSensitiveLog = exports.DeleteTaskSetRequestFilterSensitiveLog = exports.DeleteServiceResponseFilterSensitiveLog = exports.DeleteServiceRequestFilterSensitiveLog = exports.DeleteClusterResponseFilterSensitiveLog = exports.DeleteClusterRequestFilterSensitiveLog = exports.DeleteCapacityProviderResponseFilterSensitiveLog = exports.DeleteCapacityProviderRequestFilterSensitiveLog = exports.DeleteAttributesResponseFilterSensitiveLog = exports.DeleteAttributesRequestFilterSensitiveLog = exports.AttributeFilterSensitiveLog = exports.DeleteAccountSettingResponseFilterSensitiveLog = exports.SettingFilterSensitiveLog = exports.DeleteAccountSettingRequestFilterSensitiveLog = exports.CreateTaskSetResponseFilterSensitiveLog = exports.CreateTaskSetRequestFilterSensitiveLog = exports.CreateServiceResponseFilterSensitiveLog = exports.ServiceFilterSensitiveLog = exports.TaskSetFilterSensitiveLog = exports.ScaleFilterSensitiveLog = exports.ServiceEventFilterSensitiveLog = exports.DeploymentFilterSensitiveLog = exports.CreateServiceRequestFilterSensitiveLog = exports.ServiceRegistryFilterSensitiveLog = exports.PlacementStrategyFilterSensitiveLog = exports.PlacementConstraintFilterSensitiveLog = exports.NetworkConfigurationFilterSensitiveLog = exports.AwsVpcConfigurationFilterSensitiveLog = exports.LoadBalancerFilterSensitiveLog = void 0;\nexports.ListAccountSettingsResponseFilterSensitiveLog = exports.ListAccountSettingsRequestFilterSensitiveLog = exports.ExecuteCommandResponseFilterSensitiveLog = exports.SessionFilterSensitiveLog = exports.ExecuteCommandRequestFilterSensitiveLog = exports.DiscoverPollEndpointResponseFilterSensitiveLog = exports.DiscoverPollEndpointRequestFilterSensitiveLog = exports.DescribeTaskSetsResponseFilterSensitiveLog = exports.DescribeTaskSetsRequestFilterSensitiveLog = exports.DescribeTasksResponseFilterSensitiveLog = exports.TaskFilterSensitiveLog = exports.TaskOverrideFilterSensitiveLog = exports.InferenceAcceleratorOverrideFilterSensitiveLog = exports.ContainerOverrideFilterSensitiveLog = exports.ContainerFilterSensitiveLog = exports.NetworkInterfaceFilterSensitiveLog = exports.NetworkBindingFilterSensitiveLog = exports.ManagedAgentFilterSensitiveLog = exports.DescribeTasksRequestFilterSensitiveLog = exports.DescribeTaskDefinitionResponseFilterSensitiveLog = exports.DescribeTaskDefinitionRequestFilterSensitiveLog = exports.DescribeServicesResponseFilterSensitiveLog = exports.DescribeServicesRequestFilterSensitiveLog = exports.DescribeContainerInstancesResponseFilterSensitiveLog = exports.DescribeContainerInstancesRequestFilterSensitiveLog = exports.DescribeClustersResponseFilterSensitiveLog = exports.DescribeClustersRequestFilterSensitiveLog = exports.DescribeCapacityProvidersResponseFilterSensitiveLog = exports.FailureFilterSensitiveLog = exports.DescribeCapacityProvidersRequestFilterSensitiveLog = exports.DeregisterTaskDefinitionResponseFilterSensitiveLog = exports.TaskDefinitionFilterSensitiveLog = exports.VolumeFilterSensitiveLog = exports.HostVolumePropertiesFilterSensitiveLog = exports.FSxWindowsFileServerVolumeConfigurationFilterSensitiveLog = exports.FSxWindowsFileServerAuthorizationConfigFilterSensitiveLog = exports.EFSVolumeConfigurationFilterSensitiveLog = exports.EFSAuthorizationConfigFilterSensitiveLog = exports.DockerVolumeConfigurationFilterSensitiveLog = exports.RuntimePlatformFilterSensitiveLog = exports.ProxyConfigurationFilterSensitiveLog = exports.TaskDefinitionPlacementConstraintFilterSensitiveLog = exports.InferenceAcceleratorFilterSensitiveLog = exports.EphemeralStorageFilterSensitiveLog = exports.ContainerDefinitionFilterSensitiveLog = exports.VolumeFromFilterSensitiveLog = exports.UlimitFilterSensitiveLog = exports.SystemControlFilterSensitiveLog = exports.ResourceRequirementFilterSensitiveLog = exports.RepositoryCredentialsFilterSensitiveLog = void 0;\nexports.UpdateCapacityProviderRequestFilterSensitiveLog = exports.AutoScalingGroupProviderUpdateFilterSensitiveLog = exports.UntagResourceResponseFilterSensitiveLog = exports.UntagResourceRequestFilterSensitiveLog = exports.TagResourceResponseFilterSensitiveLog = exports.TagResourceRequestFilterSensitiveLog = exports.SubmitTaskStateChangeResponseFilterSensitiveLog = exports.SubmitTaskStateChangeRequestFilterSensitiveLog = exports.ManagedAgentStateChangeFilterSensitiveLog = exports.ContainerStateChangeFilterSensitiveLog = exports.SubmitContainerStateChangeResponseFilterSensitiveLog = exports.SubmitContainerStateChangeRequestFilterSensitiveLog = exports.SubmitAttachmentStateChangesResponseFilterSensitiveLog = exports.SubmitAttachmentStateChangesRequestFilterSensitiveLog = exports.AttachmentStateChangeFilterSensitiveLog = exports.StopTaskResponseFilterSensitiveLog = exports.StopTaskRequestFilterSensitiveLog = exports.StartTaskResponseFilterSensitiveLog = exports.StartTaskRequestFilterSensitiveLog = exports.RunTaskResponseFilterSensitiveLog = exports.RunTaskRequestFilterSensitiveLog = exports.RegisterTaskDefinitionResponseFilterSensitiveLog = exports.RegisterTaskDefinitionRequestFilterSensitiveLog = exports.RegisterContainerInstanceResponseFilterSensitiveLog = exports.RegisterContainerInstanceRequestFilterSensitiveLog = exports.PlatformDeviceFilterSensitiveLog = exports.PutClusterCapacityProvidersResponseFilterSensitiveLog = exports.PutClusterCapacityProvidersRequestFilterSensitiveLog = exports.PutAttributesResponseFilterSensitiveLog = exports.PutAttributesRequestFilterSensitiveLog = exports.PutAccountSettingDefaultResponseFilterSensitiveLog = exports.PutAccountSettingDefaultRequestFilterSensitiveLog = exports.PutAccountSettingResponseFilterSensitiveLog = exports.PutAccountSettingRequestFilterSensitiveLog = exports.ListTasksResponseFilterSensitiveLog = exports.ListTasksRequestFilterSensitiveLog = exports.ListTaskDefinitionsResponseFilterSensitiveLog = exports.ListTaskDefinitionsRequestFilterSensitiveLog = exports.ListTaskDefinitionFamiliesResponseFilterSensitiveLog = exports.ListTaskDefinitionFamiliesRequestFilterSensitiveLog = exports.ListTagsForResourceResponseFilterSensitiveLog = exports.ListTagsForResourceRequestFilterSensitiveLog = exports.ListServicesResponseFilterSensitiveLog = exports.ListServicesRequestFilterSensitiveLog = exports.ListContainerInstancesResponseFilterSensitiveLog = exports.ListContainerInstancesRequestFilterSensitiveLog = exports.ListClustersResponseFilterSensitiveLog = exports.ListClustersRequestFilterSensitiveLog = exports.ListAttributesResponseFilterSensitiveLog = exports.ListAttributesRequestFilterSensitiveLog = void 0;\nexports.UpdateTaskSetResponseFilterSensitiveLog = exports.UpdateTaskSetRequestFilterSensitiveLog = exports.UpdateServicePrimaryTaskSetResponseFilterSensitiveLog = exports.UpdateServicePrimaryTaskSetRequestFilterSensitiveLog = exports.UpdateServiceResponseFilterSensitiveLog = exports.UpdateServiceRequestFilterSensitiveLog = exports.UpdateContainerInstancesStateResponseFilterSensitiveLog = exports.UpdateContainerInstancesStateRequestFilterSensitiveLog = exports.UpdateContainerAgentResponseFilterSensitiveLog = exports.UpdateContainerAgentRequestFilterSensitiveLog = exports.UpdateClusterSettingsResponseFilterSensitiveLog = exports.UpdateClusterSettingsRequestFilterSensitiveLog = exports.UpdateClusterResponseFilterSensitiveLog = exports.UpdateClusterRequestFilterSensitiveLog = exports.UpdateCapacityProviderResponseFilterSensitiveLog = void 0;\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst ECSServiceException_1 = require(\"./ECSServiceException\");\nclass AccessDeniedException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"AccessDeniedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, AccessDeniedException.prototype);\n }\n}\nexports.AccessDeniedException = AccessDeniedException;\nvar AgentUpdateStatus;\n(function (AgentUpdateStatus) {\n AgentUpdateStatus[\"FAILED\"] = \"FAILED\";\n AgentUpdateStatus[\"PENDING\"] = \"PENDING\";\n AgentUpdateStatus[\"STAGED\"] = \"STAGED\";\n AgentUpdateStatus[\"STAGING\"] = \"STAGING\";\n AgentUpdateStatus[\"UPDATED\"] = \"UPDATED\";\n AgentUpdateStatus[\"UPDATING\"] = \"UPDATING\";\n})(AgentUpdateStatus = exports.AgentUpdateStatus || (exports.AgentUpdateStatus = {}));\nclass ClientException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ClientException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ClientException.prototype);\n }\n}\nexports.ClientException = ClientException;\nvar ManagedScalingStatus;\n(function (ManagedScalingStatus) {\n ManagedScalingStatus[\"DISABLED\"] = \"DISABLED\";\n ManagedScalingStatus[\"ENABLED\"] = \"ENABLED\";\n})(ManagedScalingStatus = exports.ManagedScalingStatus || (exports.ManagedScalingStatus = {}));\nvar ManagedTerminationProtection;\n(function (ManagedTerminationProtection) {\n ManagedTerminationProtection[\"DISABLED\"] = \"DISABLED\";\n ManagedTerminationProtection[\"ENABLED\"] = \"ENABLED\";\n})(ManagedTerminationProtection = exports.ManagedTerminationProtection || (exports.ManagedTerminationProtection = {}));\nvar CapacityProviderStatus;\n(function (CapacityProviderStatus) {\n CapacityProviderStatus[\"ACTIVE\"] = \"ACTIVE\";\n CapacityProviderStatus[\"INACTIVE\"] = \"INACTIVE\";\n})(CapacityProviderStatus = exports.CapacityProviderStatus || (exports.CapacityProviderStatus = {}));\nvar CapacityProviderUpdateStatus;\n(function (CapacityProviderUpdateStatus) {\n CapacityProviderUpdateStatus[\"DELETE_COMPLETE\"] = \"DELETE_COMPLETE\";\n CapacityProviderUpdateStatus[\"DELETE_FAILED\"] = \"DELETE_FAILED\";\n CapacityProviderUpdateStatus[\"DELETE_IN_PROGRESS\"] = \"DELETE_IN_PROGRESS\";\n CapacityProviderUpdateStatus[\"UPDATE_COMPLETE\"] = \"UPDATE_COMPLETE\";\n CapacityProviderUpdateStatus[\"UPDATE_FAILED\"] = \"UPDATE_FAILED\";\n CapacityProviderUpdateStatus[\"UPDATE_IN_PROGRESS\"] = \"UPDATE_IN_PROGRESS\";\n})(CapacityProviderUpdateStatus = exports.CapacityProviderUpdateStatus || (exports.CapacityProviderUpdateStatus = {}));\nclass InvalidParameterException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"InvalidParameterException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, InvalidParameterException.prototype);\n }\n}\nexports.InvalidParameterException = InvalidParameterException;\nclass LimitExceededException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, LimitExceededException.prototype);\n }\n}\nexports.LimitExceededException = LimitExceededException;\nclass ServerException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ServerException\",\n $fault: \"server\",\n ...opts,\n });\n this.name = \"ServerException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, ServerException.prototype);\n }\n}\nexports.ServerException = ServerException;\nclass UpdateInProgressException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"UpdateInProgressException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"UpdateInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, UpdateInProgressException.prototype);\n }\n}\nexports.UpdateInProgressException = UpdateInProgressException;\nvar ExecuteCommandLogging;\n(function (ExecuteCommandLogging) {\n ExecuteCommandLogging[\"DEFAULT\"] = \"DEFAULT\";\n ExecuteCommandLogging[\"NONE\"] = \"NONE\";\n ExecuteCommandLogging[\"OVERRIDE\"] = \"OVERRIDE\";\n})(ExecuteCommandLogging = exports.ExecuteCommandLogging || (exports.ExecuteCommandLogging = {}));\nvar ClusterSettingName;\n(function (ClusterSettingName) {\n ClusterSettingName[\"CONTAINER_INSIGHTS\"] = \"containerInsights\";\n})(ClusterSettingName = exports.ClusterSettingName || (exports.ClusterSettingName = {}));\nclass ClusterNotFoundException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ClusterNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ClusterNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ClusterNotFoundException.prototype);\n }\n}\nexports.ClusterNotFoundException = ClusterNotFoundException;\nvar DeploymentControllerType;\n(function (DeploymentControllerType) {\n DeploymentControllerType[\"CODE_DEPLOY\"] = \"CODE_DEPLOY\";\n DeploymentControllerType[\"ECS\"] = \"ECS\";\n DeploymentControllerType[\"EXTERNAL\"] = \"EXTERNAL\";\n})(DeploymentControllerType = exports.DeploymentControllerType || (exports.DeploymentControllerType = {}));\nvar LaunchType;\n(function (LaunchType) {\n LaunchType[\"EC2\"] = \"EC2\";\n LaunchType[\"EXTERNAL\"] = \"EXTERNAL\";\n LaunchType[\"FARGATE\"] = \"FARGATE\";\n})(LaunchType = exports.LaunchType || (exports.LaunchType = {}));\nvar AssignPublicIp;\n(function (AssignPublicIp) {\n AssignPublicIp[\"DISABLED\"] = \"DISABLED\";\n AssignPublicIp[\"ENABLED\"] = \"ENABLED\";\n})(AssignPublicIp = exports.AssignPublicIp || (exports.AssignPublicIp = {}));\nvar PlacementConstraintType;\n(function (PlacementConstraintType) {\n PlacementConstraintType[\"DISTINCT_INSTANCE\"] = \"distinctInstance\";\n PlacementConstraintType[\"MEMBER_OF\"] = \"memberOf\";\n})(PlacementConstraintType = exports.PlacementConstraintType || (exports.PlacementConstraintType = {}));\nvar PlacementStrategyType;\n(function (PlacementStrategyType) {\n PlacementStrategyType[\"BINPACK\"] = \"binpack\";\n PlacementStrategyType[\"RANDOM\"] = \"random\";\n PlacementStrategyType[\"SPREAD\"] = \"spread\";\n})(PlacementStrategyType = exports.PlacementStrategyType || (exports.PlacementStrategyType = {}));\nvar PropagateTags;\n(function (PropagateTags) {\n PropagateTags[\"NONE\"] = \"NONE\";\n PropagateTags[\"SERVICE\"] = \"SERVICE\";\n PropagateTags[\"TASK_DEFINITION\"] = \"TASK_DEFINITION\";\n})(PropagateTags = exports.PropagateTags || (exports.PropagateTags = {}));\nvar SchedulingStrategy;\n(function (SchedulingStrategy) {\n SchedulingStrategy[\"DAEMON\"] = \"DAEMON\";\n SchedulingStrategy[\"REPLICA\"] = \"REPLICA\";\n})(SchedulingStrategy = exports.SchedulingStrategy || (exports.SchedulingStrategy = {}));\nvar DeploymentRolloutState;\n(function (DeploymentRolloutState) {\n DeploymentRolloutState[\"COMPLETED\"] = \"COMPLETED\";\n DeploymentRolloutState[\"FAILED\"] = \"FAILED\";\n DeploymentRolloutState[\"IN_PROGRESS\"] = \"IN_PROGRESS\";\n})(DeploymentRolloutState = exports.DeploymentRolloutState || (exports.DeploymentRolloutState = {}));\nvar ScaleUnit;\n(function (ScaleUnit) {\n ScaleUnit[\"PERCENT\"] = \"PERCENT\";\n})(ScaleUnit = exports.ScaleUnit || (exports.ScaleUnit = {}));\nvar StabilityStatus;\n(function (StabilityStatus) {\n StabilityStatus[\"STABILIZING\"] = \"STABILIZING\";\n StabilityStatus[\"STEADY_STATE\"] = \"STEADY_STATE\";\n})(StabilityStatus = exports.StabilityStatus || (exports.StabilityStatus = {}));\nclass PlatformTaskDefinitionIncompatibilityException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"PlatformTaskDefinitionIncompatibilityException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"PlatformTaskDefinitionIncompatibilityException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, PlatformTaskDefinitionIncompatibilityException.prototype);\n }\n}\nexports.PlatformTaskDefinitionIncompatibilityException = PlatformTaskDefinitionIncompatibilityException;\nclass PlatformUnknownException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"PlatformUnknownException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"PlatformUnknownException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, PlatformUnknownException.prototype);\n }\n}\nexports.PlatformUnknownException = PlatformUnknownException;\nclass UnsupportedFeatureException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"UnsupportedFeatureException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"UnsupportedFeatureException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, UnsupportedFeatureException.prototype);\n }\n}\nexports.UnsupportedFeatureException = UnsupportedFeatureException;\nclass ServiceNotActiveException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ServiceNotActiveException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ServiceNotActiveException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ServiceNotActiveException.prototype);\n }\n}\nexports.ServiceNotActiveException = ServiceNotActiveException;\nclass ServiceNotFoundException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ServiceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ServiceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ServiceNotFoundException.prototype);\n }\n}\nexports.ServiceNotFoundException = ServiceNotFoundException;\nvar SettingName;\n(function (SettingName) {\n SettingName[\"AWSVPC_TRUNKING\"] = \"awsvpcTrunking\";\n SettingName[\"CONTAINER_INSIGHTS\"] = \"containerInsights\";\n SettingName[\"CONTAINER_INSTANCE_LONG_ARN_FORMAT\"] = \"containerInstanceLongArnFormat\";\n SettingName[\"SERVICE_LONG_ARN_FORMAT\"] = \"serviceLongArnFormat\";\n SettingName[\"TASK_LONG_ARN_FORMAT\"] = \"taskLongArnFormat\";\n})(SettingName = exports.SettingName || (exports.SettingName = {}));\nvar TargetType;\n(function (TargetType) {\n TargetType[\"CONTAINER_INSTANCE\"] = \"container-instance\";\n})(TargetType = exports.TargetType || (exports.TargetType = {}));\nclass TargetNotFoundException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"TargetNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"TargetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, TargetNotFoundException.prototype);\n }\n}\nexports.TargetNotFoundException = TargetNotFoundException;\nclass ClusterContainsContainerInstancesException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ClusterContainsContainerInstancesException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ClusterContainsContainerInstancesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ClusterContainsContainerInstancesException.prototype);\n }\n}\nexports.ClusterContainsContainerInstancesException = ClusterContainsContainerInstancesException;\nclass ClusterContainsServicesException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ClusterContainsServicesException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ClusterContainsServicesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ClusterContainsServicesException.prototype);\n }\n}\nexports.ClusterContainsServicesException = ClusterContainsServicesException;\nclass ClusterContainsTasksException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ClusterContainsTasksException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ClusterContainsTasksException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ClusterContainsTasksException.prototype);\n }\n}\nexports.ClusterContainsTasksException = ClusterContainsTasksException;\nclass TaskSetNotFoundException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"TaskSetNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"TaskSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, TaskSetNotFoundException.prototype);\n }\n}\nexports.TaskSetNotFoundException = TaskSetNotFoundException;\nvar InstanceHealthCheckState;\n(function (InstanceHealthCheckState) {\n InstanceHealthCheckState[\"IMPAIRED\"] = \"IMPAIRED\";\n InstanceHealthCheckState[\"INITIALIZING\"] = \"INITIALIZING\";\n InstanceHealthCheckState[\"INSUFFICIENT_DATA\"] = \"INSUFFICIENT_DATA\";\n InstanceHealthCheckState[\"OK\"] = \"OK\";\n})(InstanceHealthCheckState = exports.InstanceHealthCheckState || (exports.InstanceHealthCheckState = {}));\nvar InstanceHealthCheckType;\n(function (InstanceHealthCheckType) {\n InstanceHealthCheckType[\"CONTAINER_RUNTIME\"] = \"CONTAINER_RUNTIME\";\n})(InstanceHealthCheckType = exports.InstanceHealthCheckType || (exports.InstanceHealthCheckType = {}));\nvar Compatibility;\n(function (Compatibility) {\n Compatibility[\"EC2\"] = \"EC2\";\n Compatibility[\"EXTERNAL\"] = \"EXTERNAL\";\n Compatibility[\"FARGATE\"] = \"FARGATE\";\n})(Compatibility = exports.Compatibility || (exports.Compatibility = {}));\nvar ContainerCondition;\n(function (ContainerCondition) {\n ContainerCondition[\"COMPLETE\"] = \"COMPLETE\";\n ContainerCondition[\"HEALTHY\"] = \"HEALTHY\";\n ContainerCondition[\"START\"] = \"START\";\n ContainerCondition[\"SUCCESS\"] = \"SUCCESS\";\n})(ContainerCondition = exports.ContainerCondition || (exports.ContainerCondition = {}));\nvar EnvironmentFileType;\n(function (EnvironmentFileType) {\n EnvironmentFileType[\"S3\"] = \"s3\";\n})(EnvironmentFileType = exports.EnvironmentFileType || (exports.EnvironmentFileType = {}));\nvar FirelensConfigurationType;\n(function (FirelensConfigurationType) {\n FirelensConfigurationType[\"FLUENTBIT\"] = \"fluentbit\";\n FirelensConfigurationType[\"FLUENTD\"] = \"fluentd\";\n})(FirelensConfigurationType = exports.FirelensConfigurationType || (exports.FirelensConfigurationType = {}));\nvar DeviceCgroupPermission;\n(function (DeviceCgroupPermission) {\n DeviceCgroupPermission[\"MKNOD\"] = \"mknod\";\n DeviceCgroupPermission[\"READ\"] = \"read\";\n DeviceCgroupPermission[\"WRITE\"] = \"write\";\n})(DeviceCgroupPermission = exports.DeviceCgroupPermission || (exports.DeviceCgroupPermission = {}));\nvar LogDriver;\n(function (LogDriver) {\n LogDriver[\"AWSFIRELENS\"] = \"awsfirelens\";\n LogDriver[\"AWSLOGS\"] = \"awslogs\";\n LogDriver[\"FLUENTD\"] = \"fluentd\";\n LogDriver[\"GELF\"] = \"gelf\";\n LogDriver[\"JOURNALD\"] = \"journald\";\n LogDriver[\"JSON_FILE\"] = \"json-file\";\n LogDriver[\"SPLUNK\"] = \"splunk\";\n LogDriver[\"SYSLOG\"] = \"syslog\";\n})(LogDriver = exports.LogDriver || (exports.LogDriver = {}));\nvar TransportProtocol;\n(function (TransportProtocol) {\n TransportProtocol[\"TCP\"] = \"tcp\";\n TransportProtocol[\"UDP\"] = \"udp\";\n})(TransportProtocol = exports.TransportProtocol || (exports.TransportProtocol = {}));\nvar ResourceType;\n(function (ResourceType) {\n ResourceType[\"GPU\"] = \"GPU\";\n ResourceType[\"INFERENCE_ACCELERATOR\"] = \"InferenceAccelerator\";\n})(ResourceType = exports.ResourceType || (exports.ResourceType = {}));\nvar UlimitName;\n(function (UlimitName) {\n UlimitName[\"CORE\"] = \"core\";\n UlimitName[\"CPU\"] = \"cpu\";\n UlimitName[\"DATA\"] = \"data\";\n UlimitName[\"FSIZE\"] = \"fsize\";\n UlimitName[\"LOCKS\"] = \"locks\";\n UlimitName[\"MEMLOCK\"] = \"memlock\";\n UlimitName[\"MSGQUEUE\"] = \"msgqueue\";\n UlimitName[\"NICE\"] = \"nice\";\n UlimitName[\"NOFILE\"] = \"nofile\";\n UlimitName[\"NPROC\"] = \"nproc\";\n UlimitName[\"RSS\"] = \"rss\";\n UlimitName[\"RTPRIO\"] = \"rtprio\";\n UlimitName[\"RTTIME\"] = \"rttime\";\n UlimitName[\"SIGPENDING\"] = \"sigpending\";\n UlimitName[\"STACK\"] = \"stack\";\n})(UlimitName = exports.UlimitName || (exports.UlimitName = {}));\nvar IpcMode;\n(function (IpcMode) {\n IpcMode[\"HOST\"] = \"host\";\n IpcMode[\"NONE\"] = \"none\";\n IpcMode[\"TASK\"] = \"task\";\n})(IpcMode = exports.IpcMode || (exports.IpcMode = {}));\nvar NetworkMode;\n(function (NetworkMode) {\n NetworkMode[\"AWSVPC\"] = \"awsvpc\";\n NetworkMode[\"BRIDGE\"] = \"bridge\";\n NetworkMode[\"HOST\"] = \"host\";\n NetworkMode[\"NONE\"] = \"none\";\n})(NetworkMode = exports.NetworkMode || (exports.NetworkMode = {}));\nvar PidMode;\n(function (PidMode) {\n PidMode[\"HOST\"] = \"host\";\n PidMode[\"TASK\"] = \"task\";\n})(PidMode = exports.PidMode || (exports.PidMode = {}));\nvar TaskDefinitionPlacementConstraintType;\n(function (TaskDefinitionPlacementConstraintType) {\n TaskDefinitionPlacementConstraintType[\"MEMBER_OF\"] = \"memberOf\";\n})(TaskDefinitionPlacementConstraintType = exports.TaskDefinitionPlacementConstraintType || (exports.TaskDefinitionPlacementConstraintType = {}));\nvar ProxyConfigurationType;\n(function (ProxyConfigurationType) {\n ProxyConfigurationType[\"APPMESH\"] = \"APPMESH\";\n})(ProxyConfigurationType = exports.ProxyConfigurationType || (exports.ProxyConfigurationType = {}));\nvar CPUArchitecture;\n(function (CPUArchitecture) {\n CPUArchitecture[\"ARM64\"] = \"ARM64\";\n CPUArchitecture[\"X86_64\"] = \"X86_64\";\n})(CPUArchitecture = exports.CPUArchitecture || (exports.CPUArchitecture = {}));\nvar OSFamily;\n(function (OSFamily) {\n OSFamily[\"LINUX\"] = \"LINUX\";\n OSFamily[\"WINDOWS_SERVER_2004_CORE\"] = \"WINDOWS_SERVER_2004_CORE\";\n OSFamily[\"WINDOWS_SERVER_2016_FULL\"] = \"WINDOWS_SERVER_2016_FULL\";\n OSFamily[\"WINDOWS_SERVER_2019_CORE\"] = \"WINDOWS_SERVER_2019_CORE\";\n OSFamily[\"WINDOWS_SERVER_2019_FULL\"] = \"WINDOWS_SERVER_2019_FULL\";\n OSFamily[\"WINDOWS_SERVER_2022_CORE\"] = \"WINDOWS_SERVER_2022_CORE\";\n OSFamily[\"WINDOWS_SERVER_2022_FULL\"] = \"WINDOWS_SERVER_2022_FULL\";\n OSFamily[\"WINDOWS_SERVER_20H2_CORE\"] = \"WINDOWS_SERVER_20H2_CORE\";\n})(OSFamily = exports.OSFamily || (exports.OSFamily = {}));\nvar TaskDefinitionStatus;\n(function (TaskDefinitionStatus) {\n TaskDefinitionStatus[\"ACTIVE\"] = \"ACTIVE\";\n TaskDefinitionStatus[\"INACTIVE\"] = \"INACTIVE\";\n})(TaskDefinitionStatus = exports.TaskDefinitionStatus || (exports.TaskDefinitionStatus = {}));\nvar Scope;\n(function (Scope) {\n Scope[\"SHARED\"] = \"shared\";\n Scope[\"TASK\"] = \"task\";\n})(Scope = exports.Scope || (exports.Scope = {}));\nvar EFSAuthorizationConfigIAM;\n(function (EFSAuthorizationConfigIAM) {\n EFSAuthorizationConfigIAM[\"DISABLED\"] = \"DISABLED\";\n EFSAuthorizationConfigIAM[\"ENABLED\"] = \"ENABLED\";\n})(EFSAuthorizationConfigIAM = exports.EFSAuthorizationConfigIAM || (exports.EFSAuthorizationConfigIAM = {}));\nvar EFSTransitEncryption;\n(function (EFSTransitEncryption) {\n EFSTransitEncryption[\"DISABLED\"] = \"DISABLED\";\n EFSTransitEncryption[\"ENABLED\"] = \"ENABLED\";\n})(EFSTransitEncryption = exports.EFSTransitEncryption || (exports.EFSTransitEncryption = {}));\nvar CapacityProviderField;\n(function (CapacityProviderField) {\n CapacityProviderField[\"TAGS\"] = \"TAGS\";\n})(CapacityProviderField = exports.CapacityProviderField || (exports.CapacityProviderField = {}));\nvar ClusterField;\n(function (ClusterField) {\n ClusterField[\"ATTACHMENTS\"] = \"ATTACHMENTS\";\n ClusterField[\"CONFIGURATIONS\"] = \"CONFIGURATIONS\";\n ClusterField[\"SETTINGS\"] = \"SETTINGS\";\n ClusterField[\"STATISTICS\"] = \"STATISTICS\";\n ClusterField[\"TAGS\"] = \"TAGS\";\n})(ClusterField = exports.ClusterField || (exports.ClusterField = {}));\nvar ContainerInstanceField;\n(function (ContainerInstanceField) {\n ContainerInstanceField[\"CONTAINER_INSTANCE_HEALTH\"] = \"CONTAINER_INSTANCE_HEALTH\";\n ContainerInstanceField[\"TAGS\"] = \"TAGS\";\n})(ContainerInstanceField = exports.ContainerInstanceField || (exports.ContainerInstanceField = {}));\nvar ServiceField;\n(function (ServiceField) {\n ServiceField[\"TAGS\"] = \"TAGS\";\n})(ServiceField = exports.ServiceField || (exports.ServiceField = {}));\nvar TaskDefinitionField;\n(function (TaskDefinitionField) {\n TaskDefinitionField[\"TAGS\"] = \"TAGS\";\n})(TaskDefinitionField = exports.TaskDefinitionField || (exports.TaskDefinitionField = {}));\nvar TaskField;\n(function (TaskField) {\n TaskField[\"TAGS\"] = \"TAGS\";\n})(TaskField = exports.TaskField || (exports.TaskField = {}));\nvar Connectivity;\n(function (Connectivity) {\n Connectivity[\"CONNECTED\"] = \"CONNECTED\";\n Connectivity[\"DISCONNECTED\"] = \"DISCONNECTED\";\n})(Connectivity = exports.Connectivity || (exports.Connectivity = {}));\nvar HealthStatus;\n(function (HealthStatus) {\n HealthStatus[\"HEALTHY\"] = \"HEALTHY\";\n HealthStatus[\"UNHEALTHY\"] = \"UNHEALTHY\";\n HealthStatus[\"UNKNOWN\"] = \"UNKNOWN\";\n})(HealthStatus = exports.HealthStatus || (exports.HealthStatus = {}));\nvar ManagedAgentName;\n(function (ManagedAgentName) {\n ManagedAgentName[\"ExecuteCommandAgent\"] = \"ExecuteCommandAgent\";\n})(ManagedAgentName = exports.ManagedAgentName || (exports.ManagedAgentName = {}));\nvar TaskStopCode;\n(function (TaskStopCode) {\n TaskStopCode[\"ESSENTIAL_CONTAINER_EXITED\"] = \"EssentialContainerExited\";\n TaskStopCode[\"TASK_FAILED_TO_START\"] = \"TaskFailedToStart\";\n TaskStopCode[\"USER_INITIATED\"] = \"UserInitiated\";\n})(TaskStopCode = exports.TaskStopCode || (exports.TaskStopCode = {}));\nvar TaskSetField;\n(function (TaskSetField) {\n TaskSetField[\"TAGS\"] = \"TAGS\";\n})(TaskSetField = exports.TaskSetField || (exports.TaskSetField = {}));\nclass TargetNotConnectedException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"TargetNotConnectedException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"TargetNotConnectedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, TargetNotConnectedException.prototype);\n }\n}\nexports.TargetNotConnectedException = TargetNotConnectedException;\nvar ContainerInstanceStatus;\n(function (ContainerInstanceStatus) {\n ContainerInstanceStatus[\"ACTIVE\"] = \"ACTIVE\";\n ContainerInstanceStatus[\"DEREGISTERING\"] = \"DEREGISTERING\";\n ContainerInstanceStatus[\"DRAINING\"] = \"DRAINING\";\n ContainerInstanceStatus[\"REGISTERING\"] = \"REGISTERING\";\n ContainerInstanceStatus[\"REGISTRATION_FAILED\"] = \"REGISTRATION_FAILED\";\n})(ContainerInstanceStatus = exports.ContainerInstanceStatus || (exports.ContainerInstanceStatus = {}));\nvar TaskDefinitionFamilyStatus;\n(function (TaskDefinitionFamilyStatus) {\n TaskDefinitionFamilyStatus[\"ACTIVE\"] = \"ACTIVE\";\n TaskDefinitionFamilyStatus[\"ALL\"] = \"ALL\";\n TaskDefinitionFamilyStatus[\"INACTIVE\"] = \"INACTIVE\";\n})(TaskDefinitionFamilyStatus = exports.TaskDefinitionFamilyStatus || (exports.TaskDefinitionFamilyStatus = {}));\nvar SortOrder;\n(function (SortOrder) {\n SortOrder[\"ASC\"] = \"ASC\";\n SortOrder[\"DESC\"] = \"DESC\";\n})(SortOrder = exports.SortOrder || (exports.SortOrder = {}));\nvar DesiredStatus;\n(function (DesiredStatus) {\n DesiredStatus[\"PENDING\"] = \"PENDING\";\n DesiredStatus[\"RUNNING\"] = \"RUNNING\";\n DesiredStatus[\"STOPPED\"] = \"STOPPED\";\n})(DesiredStatus = exports.DesiredStatus || (exports.DesiredStatus = {}));\nclass AttributeLimitExceededException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"AttributeLimitExceededException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"AttributeLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, AttributeLimitExceededException.prototype);\n }\n}\nexports.AttributeLimitExceededException = AttributeLimitExceededException;\nclass ResourceInUseException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ResourceInUseException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ResourceInUseException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ResourceInUseException.prototype);\n }\n}\nexports.ResourceInUseException = ResourceInUseException;\nvar PlatformDeviceType;\n(function (PlatformDeviceType) {\n PlatformDeviceType[\"GPU\"] = \"GPU\";\n})(PlatformDeviceType = exports.PlatformDeviceType || (exports.PlatformDeviceType = {}));\nclass BlockedException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"BlockedException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"BlockedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, BlockedException.prototype);\n }\n}\nexports.BlockedException = BlockedException;\nclass ResourceNotFoundException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nexports.ResourceNotFoundException = ResourceNotFoundException;\nclass MissingVersionException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"MissingVersionException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"MissingVersionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, MissingVersionException.prototype);\n }\n}\nexports.MissingVersionException = MissingVersionException;\nclass NoUpdateAvailableException extends ECSServiceException_1.ECSServiceException {\n constructor(opts) {\n super({\n name: \"NoUpdateAvailableException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"NoUpdateAvailableException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, NoUpdateAvailableException.prototype);\n }\n}\nexports.NoUpdateAvailableException = NoUpdateAvailableException;\nconst ManagedScalingFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ManagedScalingFilterSensitiveLog = ManagedScalingFilterSensitiveLog;\nconst AutoScalingGroupProviderFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AutoScalingGroupProviderFilterSensitiveLog = AutoScalingGroupProviderFilterSensitiveLog;\nconst TagFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TagFilterSensitiveLog = TagFilterSensitiveLog;\nconst CreateCapacityProviderRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateCapacityProviderRequestFilterSensitiveLog = CreateCapacityProviderRequestFilterSensitiveLog;\nconst CapacityProviderFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CapacityProviderFilterSensitiveLog = CapacityProviderFilterSensitiveLog;\nconst CreateCapacityProviderResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateCapacityProviderResponseFilterSensitiveLog = CreateCapacityProviderResponseFilterSensitiveLog;\nconst ExecuteCommandLogConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ExecuteCommandLogConfigurationFilterSensitiveLog = ExecuteCommandLogConfigurationFilterSensitiveLog;\nconst ExecuteCommandConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ExecuteCommandConfigurationFilterSensitiveLog = ExecuteCommandConfigurationFilterSensitiveLog;\nconst ClusterConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ClusterConfigurationFilterSensitiveLog = ClusterConfigurationFilterSensitiveLog;\nconst CapacityProviderStrategyItemFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CapacityProviderStrategyItemFilterSensitiveLog = CapacityProviderStrategyItemFilterSensitiveLog;\nconst ClusterSettingFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ClusterSettingFilterSensitiveLog = ClusterSettingFilterSensitiveLog;\nconst CreateClusterRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateClusterRequestFilterSensitiveLog = CreateClusterRequestFilterSensitiveLog;\nconst KeyValuePairFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.KeyValuePairFilterSensitiveLog = KeyValuePairFilterSensitiveLog;\nconst AttachmentFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AttachmentFilterSensitiveLog = AttachmentFilterSensitiveLog;\nconst ClusterFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ClusterFilterSensitiveLog = ClusterFilterSensitiveLog;\nconst CreateClusterResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateClusterResponseFilterSensitiveLog = CreateClusterResponseFilterSensitiveLog;\nconst DeploymentCircuitBreakerFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeploymentCircuitBreakerFilterSensitiveLog = DeploymentCircuitBreakerFilterSensitiveLog;\nconst DeploymentConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeploymentConfigurationFilterSensitiveLog = DeploymentConfigurationFilterSensitiveLog;\nconst DeploymentControllerFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeploymentControllerFilterSensitiveLog = DeploymentControllerFilterSensitiveLog;\nconst LoadBalancerFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.LoadBalancerFilterSensitiveLog = LoadBalancerFilterSensitiveLog;\nconst AwsVpcConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AwsVpcConfigurationFilterSensitiveLog = AwsVpcConfigurationFilterSensitiveLog;\nconst NetworkConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.NetworkConfigurationFilterSensitiveLog = NetworkConfigurationFilterSensitiveLog;\nconst PlacementConstraintFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PlacementConstraintFilterSensitiveLog = PlacementConstraintFilterSensitiveLog;\nconst PlacementStrategyFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PlacementStrategyFilterSensitiveLog = PlacementStrategyFilterSensitiveLog;\nconst ServiceRegistryFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ServiceRegistryFilterSensitiveLog = ServiceRegistryFilterSensitiveLog;\nconst CreateServiceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateServiceRequestFilterSensitiveLog = CreateServiceRequestFilterSensitiveLog;\nconst DeploymentFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeploymentFilterSensitiveLog = DeploymentFilterSensitiveLog;\nconst ServiceEventFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ServiceEventFilterSensitiveLog = ServiceEventFilterSensitiveLog;\nconst ScaleFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ScaleFilterSensitiveLog = ScaleFilterSensitiveLog;\nconst TaskSetFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TaskSetFilterSensitiveLog = TaskSetFilterSensitiveLog;\nconst ServiceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ServiceFilterSensitiveLog = ServiceFilterSensitiveLog;\nconst CreateServiceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateServiceResponseFilterSensitiveLog = CreateServiceResponseFilterSensitiveLog;\nconst CreateTaskSetRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateTaskSetRequestFilterSensitiveLog = CreateTaskSetRequestFilterSensitiveLog;\nconst CreateTaskSetResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CreateTaskSetResponseFilterSensitiveLog = CreateTaskSetResponseFilterSensitiveLog;\nconst DeleteAccountSettingRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteAccountSettingRequestFilterSensitiveLog = DeleteAccountSettingRequestFilterSensitiveLog;\nconst SettingFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SettingFilterSensitiveLog = SettingFilterSensitiveLog;\nconst DeleteAccountSettingResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteAccountSettingResponseFilterSensitiveLog = DeleteAccountSettingResponseFilterSensitiveLog;\nconst AttributeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AttributeFilterSensitiveLog = AttributeFilterSensitiveLog;\nconst DeleteAttributesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteAttributesRequestFilterSensitiveLog = DeleteAttributesRequestFilterSensitiveLog;\nconst DeleteAttributesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteAttributesResponseFilterSensitiveLog = DeleteAttributesResponseFilterSensitiveLog;\nconst DeleteCapacityProviderRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteCapacityProviderRequestFilterSensitiveLog = DeleteCapacityProviderRequestFilterSensitiveLog;\nconst DeleteCapacityProviderResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteCapacityProviderResponseFilterSensitiveLog = DeleteCapacityProviderResponseFilterSensitiveLog;\nconst DeleteClusterRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteClusterRequestFilterSensitiveLog = DeleteClusterRequestFilterSensitiveLog;\nconst DeleteClusterResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteClusterResponseFilterSensitiveLog = DeleteClusterResponseFilterSensitiveLog;\nconst DeleteServiceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteServiceRequestFilterSensitiveLog = DeleteServiceRequestFilterSensitiveLog;\nconst DeleteServiceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteServiceResponseFilterSensitiveLog = DeleteServiceResponseFilterSensitiveLog;\nconst DeleteTaskSetRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteTaskSetRequestFilterSensitiveLog = DeleteTaskSetRequestFilterSensitiveLog;\nconst DeleteTaskSetResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeleteTaskSetResponseFilterSensitiveLog = DeleteTaskSetResponseFilterSensitiveLog;\nconst DeregisterContainerInstanceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeregisterContainerInstanceRequestFilterSensitiveLog = DeregisterContainerInstanceRequestFilterSensitiveLog;\nconst InstanceHealthCheckResultFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.InstanceHealthCheckResultFilterSensitiveLog = InstanceHealthCheckResultFilterSensitiveLog;\nconst ContainerInstanceHealthStatusFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerInstanceHealthStatusFilterSensitiveLog = ContainerInstanceHealthStatusFilterSensitiveLog;\nconst ResourceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ResourceFilterSensitiveLog = ResourceFilterSensitiveLog;\nconst VersionInfoFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.VersionInfoFilterSensitiveLog = VersionInfoFilterSensitiveLog;\nconst ContainerInstanceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerInstanceFilterSensitiveLog = ContainerInstanceFilterSensitiveLog;\nconst DeregisterContainerInstanceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeregisterContainerInstanceResponseFilterSensitiveLog = DeregisterContainerInstanceResponseFilterSensitiveLog;\nconst DeregisterTaskDefinitionRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeregisterTaskDefinitionRequestFilterSensitiveLog = DeregisterTaskDefinitionRequestFilterSensitiveLog;\nconst ContainerDependencyFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerDependencyFilterSensitiveLog = ContainerDependencyFilterSensitiveLog;\nconst EnvironmentFileFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.EnvironmentFileFilterSensitiveLog = EnvironmentFileFilterSensitiveLog;\nconst HostEntryFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.HostEntryFilterSensitiveLog = HostEntryFilterSensitiveLog;\nconst FirelensConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.FirelensConfigurationFilterSensitiveLog = FirelensConfigurationFilterSensitiveLog;\nconst HealthCheckFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.HealthCheckFilterSensitiveLog = HealthCheckFilterSensitiveLog;\nconst KernelCapabilitiesFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.KernelCapabilitiesFilterSensitiveLog = KernelCapabilitiesFilterSensitiveLog;\nconst DeviceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeviceFilterSensitiveLog = DeviceFilterSensitiveLog;\nconst TmpfsFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TmpfsFilterSensitiveLog = TmpfsFilterSensitiveLog;\nconst LinuxParametersFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.LinuxParametersFilterSensitiveLog = LinuxParametersFilterSensitiveLog;\nconst SecretFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SecretFilterSensitiveLog = SecretFilterSensitiveLog;\nconst LogConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.LogConfigurationFilterSensitiveLog = LogConfigurationFilterSensitiveLog;\nconst MountPointFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.MountPointFilterSensitiveLog = MountPointFilterSensitiveLog;\nconst PortMappingFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PortMappingFilterSensitiveLog = PortMappingFilterSensitiveLog;\nconst RepositoryCredentialsFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RepositoryCredentialsFilterSensitiveLog = RepositoryCredentialsFilterSensitiveLog;\nconst ResourceRequirementFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ResourceRequirementFilterSensitiveLog = ResourceRequirementFilterSensitiveLog;\nconst SystemControlFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SystemControlFilterSensitiveLog = SystemControlFilterSensitiveLog;\nconst UlimitFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UlimitFilterSensitiveLog = UlimitFilterSensitiveLog;\nconst VolumeFromFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.VolumeFromFilterSensitiveLog = VolumeFromFilterSensitiveLog;\nconst ContainerDefinitionFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerDefinitionFilterSensitiveLog = ContainerDefinitionFilterSensitiveLog;\nconst EphemeralStorageFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.EphemeralStorageFilterSensitiveLog = EphemeralStorageFilterSensitiveLog;\nconst InferenceAcceleratorFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.InferenceAcceleratorFilterSensitiveLog = InferenceAcceleratorFilterSensitiveLog;\nconst TaskDefinitionPlacementConstraintFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TaskDefinitionPlacementConstraintFilterSensitiveLog = TaskDefinitionPlacementConstraintFilterSensitiveLog;\nconst ProxyConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ProxyConfigurationFilterSensitiveLog = ProxyConfigurationFilterSensitiveLog;\nconst RuntimePlatformFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RuntimePlatformFilterSensitiveLog = RuntimePlatformFilterSensitiveLog;\nconst DockerVolumeConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DockerVolumeConfigurationFilterSensitiveLog = DockerVolumeConfigurationFilterSensitiveLog;\nconst EFSAuthorizationConfigFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.EFSAuthorizationConfigFilterSensitiveLog = EFSAuthorizationConfigFilterSensitiveLog;\nconst EFSVolumeConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.EFSVolumeConfigurationFilterSensitiveLog = EFSVolumeConfigurationFilterSensitiveLog;\nconst FSxWindowsFileServerAuthorizationConfigFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.FSxWindowsFileServerAuthorizationConfigFilterSensitiveLog = FSxWindowsFileServerAuthorizationConfigFilterSensitiveLog;\nconst FSxWindowsFileServerVolumeConfigurationFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.FSxWindowsFileServerVolumeConfigurationFilterSensitiveLog = FSxWindowsFileServerVolumeConfigurationFilterSensitiveLog;\nconst HostVolumePropertiesFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.HostVolumePropertiesFilterSensitiveLog = HostVolumePropertiesFilterSensitiveLog;\nconst VolumeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.VolumeFilterSensitiveLog = VolumeFilterSensitiveLog;\nconst TaskDefinitionFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TaskDefinitionFilterSensitiveLog = TaskDefinitionFilterSensitiveLog;\nconst DeregisterTaskDefinitionResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DeregisterTaskDefinitionResponseFilterSensitiveLog = DeregisterTaskDefinitionResponseFilterSensitiveLog;\nconst DescribeCapacityProvidersRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeCapacityProvidersRequestFilterSensitiveLog = DescribeCapacityProvidersRequestFilterSensitiveLog;\nconst FailureFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.FailureFilterSensitiveLog = FailureFilterSensitiveLog;\nconst DescribeCapacityProvidersResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeCapacityProvidersResponseFilterSensitiveLog = DescribeCapacityProvidersResponseFilterSensitiveLog;\nconst DescribeClustersRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeClustersRequestFilterSensitiveLog = DescribeClustersRequestFilterSensitiveLog;\nconst DescribeClustersResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeClustersResponseFilterSensitiveLog = DescribeClustersResponseFilterSensitiveLog;\nconst DescribeContainerInstancesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeContainerInstancesRequestFilterSensitiveLog = DescribeContainerInstancesRequestFilterSensitiveLog;\nconst DescribeContainerInstancesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeContainerInstancesResponseFilterSensitiveLog = DescribeContainerInstancesResponseFilterSensitiveLog;\nconst DescribeServicesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeServicesRequestFilterSensitiveLog = DescribeServicesRequestFilterSensitiveLog;\nconst DescribeServicesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeServicesResponseFilterSensitiveLog = DescribeServicesResponseFilterSensitiveLog;\nconst DescribeTaskDefinitionRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTaskDefinitionRequestFilterSensitiveLog = DescribeTaskDefinitionRequestFilterSensitiveLog;\nconst DescribeTaskDefinitionResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTaskDefinitionResponseFilterSensitiveLog = DescribeTaskDefinitionResponseFilterSensitiveLog;\nconst DescribeTasksRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTasksRequestFilterSensitiveLog = DescribeTasksRequestFilterSensitiveLog;\nconst ManagedAgentFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ManagedAgentFilterSensitiveLog = ManagedAgentFilterSensitiveLog;\nconst NetworkBindingFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.NetworkBindingFilterSensitiveLog = NetworkBindingFilterSensitiveLog;\nconst NetworkInterfaceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.NetworkInterfaceFilterSensitiveLog = NetworkInterfaceFilterSensitiveLog;\nconst ContainerFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerFilterSensitiveLog = ContainerFilterSensitiveLog;\nconst ContainerOverrideFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerOverrideFilterSensitiveLog = ContainerOverrideFilterSensitiveLog;\nconst InferenceAcceleratorOverrideFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.InferenceAcceleratorOverrideFilterSensitiveLog = InferenceAcceleratorOverrideFilterSensitiveLog;\nconst TaskOverrideFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TaskOverrideFilterSensitiveLog = TaskOverrideFilterSensitiveLog;\nconst TaskFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TaskFilterSensitiveLog = TaskFilterSensitiveLog;\nconst DescribeTasksResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTasksResponseFilterSensitiveLog = DescribeTasksResponseFilterSensitiveLog;\nconst DescribeTaskSetsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTaskSetsRequestFilterSensitiveLog = DescribeTaskSetsRequestFilterSensitiveLog;\nconst DescribeTaskSetsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DescribeTaskSetsResponseFilterSensitiveLog = DescribeTaskSetsResponseFilterSensitiveLog;\nconst DiscoverPollEndpointRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DiscoverPollEndpointRequestFilterSensitiveLog = DiscoverPollEndpointRequestFilterSensitiveLog;\nconst DiscoverPollEndpointResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DiscoverPollEndpointResponseFilterSensitiveLog = DiscoverPollEndpointResponseFilterSensitiveLog;\nconst ExecuteCommandRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ExecuteCommandRequestFilterSensitiveLog = ExecuteCommandRequestFilterSensitiveLog;\nconst SessionFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.tokenValue && { tokenValue: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.SessionFilterSensitiveLog = SessionFilterSensitiveLog;\nconst ExecuteCommandResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.session && { session: (0, exports.SessionFilterSensitiveLog)(obj.session) }),\n});\nexports.ExecuteCommandResponseFilterSensitiveLog = ExecuteCommandResponseFilterSensitiveLog;\nconst ListAccountSettingsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAccountSettingsRequestFilterSensitiveLog = ListAccountSettingsRequestFilterSensitiveLog;\nconst ListAccountSettingsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAccountSettingsResponseFilterSensitiveLog = ListAccountSettingsResponseFilterSensitiveLog;\nconst ListAttributesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAttributesRequestFilterSensitiveLog = ListAttributesRequestFilterSensitiveLog;\nconst ListAttributesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAttributesResponseFilterSensitiveLog = ListAttributesResponseFilterSensitiveLog;\nconst ListClustersRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListClustersRequestFilterSensitiveLog = ListClustersRequestFilterSensitiveLog;\nconst ListClustersResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListClustersResponseFilterSensitiveLog = ListClustersResponseFilterSensitiveLog;\nconst ListContainerInstancesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListContainerInstancesRequestFilterSensitiveLog = ListContainerInstancesRequestFilterSensitiveLog;\nconst ListContainerInstancesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListContainerInstancesResponseFilterSensitiveLog = ListContainerInstancesResponseFilterSensitiveLog;\nconst ListServicesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListServicesRequestFilterSensitiveLog = ListServicesRequestFilterSensitiveLog;\nconst ListServicesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListServicesResponseFilterSensitiveLog = ListServicesResponseFilterSensitiveLog;\nconst ListTagsForResourceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTagsForResourceRequestFilterSensitiveLog = ListTagsForResourceRequestFilterSensitiveLog;\nconst ListTagsForResourceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTagsForResourceResponseFilterSensitiveLog = ListTagsForResourceResponseFilterSensitiveLog;\nconst ListTaskDefinitionFamiliesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTaskDefinitionFamiliesRequestFilterSensitiveLog = ListTaskDefinitionFamiliesRequestFilterSensitiveLog;\nconst ListTaskDefinitionFamiliesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTaskDefinitionFamiliesResponseFilterSensitiveLog = ListTaskDefinitionFamiliesResponseFilterSensitiveLog;\nconst ListTaskDefinitionsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTaskDefinitionsRequestFilterSensitiveLog = ListTaskDefinitionsRequestFilterSensitiveLog;\nconst ListTaskDefinitionsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTaskDefinitionsResponseFilterSensitiveLog = ListTaskDefinitionsResponseFilterSensitiveLog;\nconst ListTasksRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTasksRequestFilterSensitiveLog = ListTasksRequestFilterSensitiveLog;\nconst ListTasksResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListTasksResponseFilterSensitiveLog = ListTasksResponseFilterSensitiveLog;\nconst PutAccountSettingRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAccountSettingRequestFilterSensitiveLog = PutAccountSettingRequestFilterSensitiveLog;\nconst PutAccountSettingResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAccountSettingResponseFilterSensitiveLog = PutAccountSettingResponseFilterSensitiveLog;\nconst PutAccountSettingDefaultRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAccountSettingDefaultRequestFilterSensitiveLog = PutAccountSettingDefaultRequestFilterSensitiveLog;\nconst PutAccountSettingDefaultResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAccountSettingDefaultResponseFilterSensitiveLog = PutAccountSettingDefaultResponseFilterSensitiveLog;\nconst PutAttributesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAttributesRequestFilterSensitiveLog = PutAttributesRequestFilterSensitiveLog;\nconst PutAttributesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutAttributesResponseFilterSensitiveLog = PutAttributesResponseFilterSensitiveLog;\nconst PutClusterCapacityProvidersRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutClusterCapacityProvidersRequestFilterSensitiveLog = PutClusterCapacityProvidersRequestFilterSensitiveLog;\nconst PutClusterCapacityProvidersResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PutClusterCapacityProvidersResponseFilterSensitiveLog = PutClusterCapacityProvidersResponseFilterSensitiveLog;\nconst PlatformDeviceFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PlatformDeviceFilterSensitiveLog = PlatformDeviceFilterSensitiveLog;\nconst RegisterContainerInstanceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RegisterContainerInstanceRequestFilterSensitiveLog = RegisterContainerInstanceRequestFilterSensitiveLog;\nconst RegisterContainerInstanceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RegisterContainerInstanceResponseFilterSensitiveLog = RegisterContainerInstanceResponseFilterSensitiveLog;\nconst RegisterTaskDefinitionRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RegisterTaskDefinitionRequestFilterSensitiveLog = RegisterTaskDefinitionRequestFilterSensitiveLog;\nconst RegisterTaskDefinitionResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RegisterTaskDefinitionResponseFilterSensitiveLog = RegisterTaskDefinitionResponseFilterSensitiveLog;\nconst RunTaskRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RunTaskRequestFilterSensitiveLog = RunTaskRequestFilterSensitiveLog;\nconst RunTaskResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RunTaskResponseFilterSensitiveLog = RunTaskResponseFilterSensitiveLog;\nconst StartTaskRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.StartTaskRequestFilterSensitiveLog = StartTaskRequestFilterSensitiveLog;\nconst StartTaskResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.StartTaskResponseFilterSensitiveLog = StartTaskResponseFilterSensitiveLog;\nconst StopTaskRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.StopTaskRequestFilterSensitiveLog = StopTaskRequestFilterSensitiveLog;\nconst StopTaskResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.StopTaskResponseFilterSensitiveLog = StopTaskResponseFilterSensitiveLog;\nconst AttachmentStateChangeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AttachmentStateChangeFilterSensitiveLog = AttachmentStateChangeFilterSensitiveLog;\nconst SubmitAttachmentStateChangesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitAttachmentStateChangesRequestFilterSensitiveLog = SubmitAttachmentStateChangesRequestFilterSensitiveLog;\nconst SubmitAttachmentStateChangesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitAttachmentStateChangesResponseFilterSensitiveLog = SubmitAttachmentStateChangesResponseFilterSensitiveLog;\nconst SubmitContainerStateChangeRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitContainerStateChangeRequestFilterSensitiveLog = SubmitContainerStateChangeRequestFilterSensitiveLog;\nconst SubmitContainerStateChangeResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitContainerStateChangeResponseFilterSensitiveLog = SubmitContainerStateChangeResponseFilterSensitiveLog;\nconst ContainerStateChangeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ContainerStateChangeFilterSensitiveLog = ContainerStateChangeFilterSensitiveLog;\nconst ManagedAgentStateChangeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ManagedAgentStateChangeFilterSensitiveLog = ManagedAgentStateChangeFilterSensitiveLog;\nconst SubmitTaskStateChangeRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitTaskStateChangeRequestFilterSensitiveLog = SubmitTaskStateChangeRequestFilterSensitiveLog;\nconst SubmitTaskStateChangeResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.SubmitTaskStateChangeResponseFilterSensitiveLog = SubmitTaskStateChangeResponseFilterSensitiveLog;\nconst TagResourceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TagResourceRequestFilterSensitiveLog = TagResourceRequestFilterSensitiveLog;\nconst TagResourceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TagResourceResponseFilterSensitiveLog = TagResourceResponseFilterSensitiveLog;\nconst UntagResourceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UntagResourceRequestFilterSensitiveLog = UntagResourceRequestFilterSensitiveLog;\nconst UntagResourceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UntagResourceResponseFilterSensitiveLog = UntagResourceResponseFilterSensitiveLog;\nconst AutoScalingGroupProviderUpdateFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AutoScalingGroupProviderUpdateFilterSensitiveLog = AutoScalingGroupProviderUpdateFilterSensitiveLog;\nconst UpdateCapacityProviderRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateCapacityProviderRequestFilterSensitiveLog = UpdateCapacityProviderRequestFilterSensitiveLog;\nconst UpdateCapacityProviderResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateCapacityProviderResponseFilterSensitiveLog = UpdateCapacityProviderResponseFilterSensitiveLog;\nconst UpdateClusterRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateClusterRequestFilterSensitiveLog = UpdateClusterRequestFilterSensitiveLog;\nconst UpdateClusterResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateClusterResponseFilterSensitiveLog = UpdateClusterResponseFilterSensitiveLog;\nconst UpdateClusterSettingsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateClusterSettingsRequestFilterSensitiveLog = UpdateClusterSettingsRequestFilterSensitiveLog;\nconst UpdateClusterSettingsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateClusterSettingsResponseFilterSensitiveLog = UpdateClusterSettingsResponseFilterSensitiveLog;\nconst UpdateContainerAgentRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateContainerAgentRequestFilterSensitiveLog = UpdateContainerAgentRequestFilterSensitiveLog;\nconst UpdateContainerAgentResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateContainerAgentResponseFilterSensitiveLog = UpdateContainerAgentResponseFilterSensitiveLog;\nconst UpdateContainerInstancesStateRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateContainerInstancesStateRequestFilterSensitiveLog = UpdateContainerInstancesStateRequestFilterSensitiveLog;\nconst UpdateContainerInstancesStateResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateContainerInstancesStateResponseFilterSensitiveLog = UpdateContainerInstancesStateResponseFilterSensitiveLog;\nconst UpdateServiceRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateServiceRequestFilterSensitiveLog = UpdateServiceRequestFilterSensitiveLog;\nconst UpdateServiceResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateServiceResponseFilterSensitiveLog = UpdateServiceResponseFilterSensitiveLog;\nconst UpdateServicePrimaryTaskSetRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateServicePrimaryTaskSetRequestFilterSensitiveLog = UpdateServicePrimaryTaskSetRequestFilterSensitiveLog;\nconst UpdateServicePrimaryTaskSetResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateServicePrimaryTaskSetResponseFilterSensitiveLog = UpdateServicePrimaryTaskSetResponseFilterSensitiveLog;\nconst UpdateTaskSetRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateTaskSetRequestFilterSensitiveLog = UpdateTaskSetRequestFilterSensitiveLog;\nconst UpdateTaskSetResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.UpdateTaskSetResponseFilterSensitiveLog = UpdateTaskSetResponseFilterSensitiveLog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListAccountSettings = void 0;\nconst ListAccountSettingsCommand_1 = require(\"../commands/ListAccountSettingsCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListAccountSettingsCommand_1.ListAccountSettingsCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listAccountSettings(input, ...args);\n};\nasync function* paginateListAccountSettings(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListAccountSettings = paginateListAccountSettings;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListAttributes = void 0;\nconst ListAttributesCommand_1 = require(\"../commands/ListAttributesCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListAttributesCommand_1.ListAttributesCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listAttributes(input, ...args);\n};\nasync function* paginateListAttributes(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListAttributes = paginateListAttributes;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListClusters = void 0;\nconst ListClustersCommand_1 = require(\"../commands/ListClustersCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListClustersCommand_1.ListClustersCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listClusters(input, ...args);\n};\nasync function* paginateListClusters(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListClusters = paginateListClusters;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListContainerInstances = void 0;\nconst ListContainerInstancesCommand_1 = require(\"../commands/ListContainerInstancesCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListContainerInstancesCommand_1.ListContainerInstancesCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listContainerInstances(input, ...args);\n};\nasync function* paginateListContainerInstances(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListContainerInstances = paginateListContainerInstances;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListServices = void 0;\nconst ListServicesCommand_1 = require(\"../commands/ListServicesCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListServicesCommand_1.ListServicesCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listServices(input, ...args);\n};\nasync function* paginateListServices(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListServices = paginateListServices;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListTaskDefinitionFamilies = void 0;\nconst ListTaskDefinitionFamiliesCommand_1 = require(\"../commands/ListTaskDefinitionFamiliesCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListTaskDefinitionFamiliesCommand_1.ListTaskDefinitionFamiliesCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listTaskDefinitionFamilies(input, ...args);\n};\nasync function* paginateListTaskDefinitionFamilies(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListTaskDefinitionFamilies = paginateListTaskDefinitionFamilies;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListTaskDefinitions = void 0;\nconst ListTaskDefinitionsCommand_1 = require(\"../commands/ListTaskDefinitionsCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListTaskDefinitionsCommand_1.ListTaskDefinitionsCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listTaskDefinitions(input, ...args);\n};\nasync function* paginateListTaskDefinitions(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListTaskDefinitions = paginateListTaskDefinitions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListTasks = void 0;\nconst ListTasksCommand_1 = require(\"../commands/ListTasksCommand\");\nconst ECS_1 = require(\"../ECS\");\nconst ECSClient_1 = require(\"../ECSClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListTasksCommand_1.ListTasksCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listTasks(input, ...args);\n};\nasync function* paginateListTasks(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof ECS_1.ECS) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof ECSClient_1.ECSClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected ECS | ECSClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListTasks = paginateListTasks;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./Interfaces\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountSettingsPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListAttributesPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListClustersPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListContainerInstancesPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListServicesPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListTaskDefinitionFamiliesPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListTaskDefinitionsPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListTasksPaginator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeAws_json1_1UpdateServiceCommand = exports.serializeAws_json1_1UpdateContainerInstancesStateCommand = exports.serializeAws_json1_1UpdateContainerAgentCommand = exports.serializeAws_json1_1UpdateClusterSettingsCommand = exports.serializeAws_json1_1UpdateClusterCommand = exports.serializeAws_json1_1UpdateCapacityProviderCommand = exports.serializeAws_json1_1UntagResourceCommand = exports.serializeAws_json1_1TagResourceCommand = exports.serializeAws_json1_1SubmitTaskStateChangeCommand = exports.serializeAws_json1_1SubmitContainerStateChangeCommand = exports.serializeAws_json1_1SubmitAttachmentStateChangesCommand = exports.serializeAws_json1_1StopTaskCommand = exports.serializeAws_json1_1StartTaskCommand = exports.serializeAws_json1_1RunTaskCommand = exports.serializeAws_json1_1RegisterTaskDefinitionCommand = exports.serializeAws_json1_1RegisterContainerInstanceCommand = exports.serializeAws_json1_1PutClusterCapacityProvidersCommand = exports.serializeAws_json1_1PutAttributesCommand = exports.serializeAws_json1_1PutAccountSettingDefaultCommand = exports.serializeAws_json1_1PutAccountSettingCommand = exports.serializeAws_json1_1ListTasksCommand = exports.serializeAws_json1_1ListTaskDefinitionsCommand = exports.serializeAws_json1_1ListTaskDefinitionFamiliesCommand = exports.serializeAws_json1_1ListTagsForResourceCommand = exports.serializeAws_json1_1ListServicesCommand = exports.serializeAws_json1_1ListContainerInstancesCommand = exports.serializeAws_json1_1ListClustersCommand = exports.serializeAws_json1_1ListAttributesCommand = exports.serializeAws_json1_1ListAccountSettingsCommand = exports.serializeAws_json1_1ExecuteCommandCommand = exports.serializeAws_json1_1DiscoverPollEndpointCommand = exports.serializeAws_json1_1DescribeTaskSetsCommand = exports.serializeAws_json1_1DescribeTasksCommand = exports.serializeAws_json1_1DescribeTaskDefinitionCommand = exports.serializeAws_json1_1DescribeServicesCommand = exports.serializeAws_json1_1DescribeContainerInstancesCommand = exports.serializeAws_json1_1DescribeClustersCommand = exports.serializeAws_json1_1DescribeCapacityProvidersCommand = exports.serializeAws_json1_1DeregisterTaskDefinitionCommand = exports.serializeAws_json1_1DeregisterContainerInstanceCommand = exports.serializeAws_json1_1DeleteTaskSetCommand = exports.serializeAws_json1_1DeleteServiceCommand = exports.serializeAws_json1_1DeleteClusterCommand = exports.serializeAws_json1_1DeleteCapacityProviderCommand = exports.serializeAws_json1_1DeleteAttributesCommand = exports.serializeAws_json1_1DeleteAccountSettingCommand = exports.serializeAws_json1_1CreateTaskSetCommand = exports.serializeAws_json1_1CreateServiceCommand = exports.serializeAws_json1_1CreateClusterCommand = exports.serializeAws_json1_1CreateCapacityProviderCommand = void 0;\nexports.deserializeAws_json1_1UpdateContainerAgentCommand = exports.deserializeAws_json1_1UpdateClusterSettingsCommand = exports.deserializeAws_json1_1UpdateClusterCommand = exports.deserializeAws_json1_1UpdateCapacityProviderCommand = exports.deserializeAws_json1_1UntagResourceCommand = exports.deserializeAws_json1_1TagResourceCommand = exports.deserializeAws_json1_1SubmitTaskStateChangeCommand = exports.deserializeAws_json1_1SubmitContainerStateChangeCommand = exports.deserializeAws_json1_1SubmitAttachmentStateChangesCommand = exports.deserializeAws_json1_1StopTaskCommand = exports.deserializeAws_json1_1StartTaskCommand = exports.deserializeAws_json1_1RunTaskCommand = exports.deserializeAws_json1_1RegisterTaskDefinitionCommand = exports.deserializeAws_json1_1RegisterContainerInstanceCommand = exports.deserializeAws_json1_1PutClusterCapacityProvidersCommand = exports.deserializeAws_json1_1PutAttributesCommand = exports.deserializeAws_json1_1PutAccountSettingDefaultCommand = exports.deserializeAws_json1_1PutAccountSettingCommand = exports.deserializeAws_json1_1ListTasksCommand = exports.deserializeAws_json1_1ListTaskDefinitionsCommand = exports.deserializeAws_json1_1ListTaskDefinitionFamiliesCommand = exports.deserializeAws_json1_1ListTagsForResourceCommand = exports.deserializeAws_json1_1ListServicesCommand = exports.deserializeAws_json1_1ListContainerInstancesCommand = exports.deserializeAws_json1_1ListClustersCommand = exports.deserializeAws_json1_1ListAttributesCommand = exports.deserializeAws_json1_1ListAccountSettingsCommand = exports.deserializeAws_json1_1ExecuteCommandCommand = exports.deserializeAws_json1_1DiscoverPollEndpointCommand = exports.deserializeAws_json1_1DescribeTaskSetsCommand = exports.deserializeAws_json1_1DescribeTasksCommand = exports.deserializeAws_json1_1DescribeTaskDefinitionCommand = exports.deserializeAws_json1_1DescribeServicesCommand = exports.deserializeAws_json1_1DescribeContainerInstancesCommand = exports.deserializeAws_json1_1DescribeClustersCommand = exports.deserializeAws_json1_1DescribeCapacityProvidersCommand = exports.deserializeAws_json1_1DeregisterTaskDefinitionCommand = exports.deserializeAws_json1_1DeregisterContainerInstanceCommand = exports.deserializeAws_json1_1DeleteTaskSetCommand = exports.deserializeAws_json1_1DeleteServiceCommand = exports.deserializeAws_json1_1DeleteClusterCommand = exports.deserializeAws_json1_1DeleteCapacityProviderCommand = exports.deserializeAws_json1_1DeleteAttributesCommand = exports.deserializeAws_json1_1DeleteAccountSettingCommand = exports.deserializeAws_json1_1CreateTaskSetCommand = exports.deserializeAws_json1_1CreateServiceCommand = exports.deserializeAws_json1_1CreateClusterCommand = exports.deserializeAws_json1_1CreateCapacityProviderCommand = exports.serializeAws_json1_1UpdateTaskSetCommand = exports.serializeAws_json1_1UpdateServicePrimaryTaskSetCommand = void 0;\nexports.deserializeAws_json1_1UpdateTaskSetCommand = exports.deserializeAws_json1_1UpdateServicePrimaryTaskSetCommand = exports.deserializeAws_json1_1UpdateServiceCommand = exports.deserializeAws_json1_1UpdateContainerInstancesStateCommand = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst ECSServiceException_1 = require(\"../models/ECSServiceException\");\nconst models_0_1 = require(\"../models/models_0\");\nconst serializeAws_json1_1CreateCapacityProviderCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.CreateCapacityProvider\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1CreateCapacityProviderRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1CreateCapacityProviderCommand = serializeAws_json1_1CreateCapacityProviderCommand;\nconst serializeAws_json1_1CreateClusterCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.CreateCluster\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1CreateClusterRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1CreateClusterCommand = serializeAws_json1_1CreateClusterCommand;\nconst serializeAws_json1_1CreateServiceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.CreateService\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1CreateServiceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1CreateServiceCommand = serializeAws_json1_1CreateServiceCommand;\nconst serializeAws_json1_1CreateTaskSetCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.CreateTaskSet\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1CreateTaskSetRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1CreateTaskSetCommand = serializeAws_json1_1CreateTaskSetCommand;\nconst serializeAws_json1_1DeleteAccountSettingCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteAccountSetting\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteAccountSettingRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteAccountSettingCommand = serializeAws_json1_1DeleteAccountSettingCommand;\nconst serializeAws_json1_1DeleteAttributesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteAttributes\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteAttributesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteAttributesCommand = serializeAws_json1_1DeleteAttributesCommand;\nconst serializeAws_json1_1DeleteCapacityProviderCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteCapacityProvider\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteCapacityProviderRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteCapacityProviderCommand = serializeAws_json1_1DeleteCapacityProviderCommand;\nconst serializeAws_json1_1DeleteClusterCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteCluster\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteClusterRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteClusterCommand = serializeAws_json1_1DeleteClusterCommand;\nconst serializeAws_json1_1DeleteServiceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteService\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteServiceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteServiceCommand = serializeAws_json1_1DeleteServiceCommand;\nconst serializeAws_json1_1DeleteTaskSetCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeleteTaskSet\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeleteTaskSetRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeleteTaskSetCommand = serializeAws_json1_1DeleteTaskSetCommand;\nconst serializeAws_json1_1DeregisterContainerInstanceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeregisterContainerInstance\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeregisterContainerInstanceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeregisterContainerInstanceCommand = serializeAws_json1_1DeregisterContainerInstanceCommand;\nconst serializeAws_json1_1DeregisterTaskDefinitionCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DeregisterTaskDefinition\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DeregisterTaskDefinitionRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DeregisterTaskDefinitionCommand = serializeAws_json1_1DeregisterTaskDefinitionCommand;\nconst serializeAws_json1_1DescribeCapacityProvidersCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeCapacityProviders\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeCapacityProvidersRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeCapacityProvidersCommand = serializeAws_json1_1DescribeCapacityProvidersCommand;\nconst serializeAws_json1_1DescribeClustersCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeClusters\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeClustersRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeClustersCommand = serializeAws_json1_1DescribeClustersCommand;\nconst serializeAws_json1_1DescribeContainerInstancesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeContainerInstances\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeContainerInstancesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeContainerInstancesCommand = serializeAws_json1_1DescribeContainerInstancesCommand;\nconst serializeAws_json1_1DescribeServicesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeServices\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeServicesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeServicesCommand = serializeAws_json1_1DescribeServicesCommand;\nconst serializeAws_json1_1DescribeTaskDefinitionCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeTaskDefinition\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeTaskDefinitionRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeTaskDefinitionCommand = serializeAws_json1_1DescribeTaskDefinitionCommand;\nconst serializeAws_json1_1DescribeTasksCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeTasks\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeTasksRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeTasksCommand = serializeAws_json1_1DescribeTasksCommand;\nconst serializeAws_json1_1DescribeTaskSetsCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DescribeTaskSets\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DescribeTaskSetsRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DescribeTaskSetsCommand = serializeAws_json1_1DescribeTaskSetsCommand;\nconst serializeAws_json1_1DiscoverPollEndpointCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.DiscoverPollEndpoint\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1DiscoverPollEndpointRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1DiscoverPollEndpointCommand = serializeAws_json1_1DiscoverPollEndpointCommand;\nconst serializeAws_json1_1ExecuteCommandCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ExecuteCommand\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ExecuteCommandRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ExecuteCommandCommand = serializeAws_json1_1ExecuteCommandCommand;\nconst serializeAws_json1_1ListAccountSettingsCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListAccountSettings\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListAccountSettingsRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListAccountSettingsCommand = serializeAws_json1_1ListAccountSettingsCommand;\nconst serializeAws_json1_1ListAttributesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListAttributes\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListAttributesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListAttributesCommand = serializeAws_json1_1ListAttributesCommand;\nconst serializeAws_json1_1ListClustersCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListClusters\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListClustersRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListClustersCommand = serializeAws_json1_1ListClustersCommand;\nconst serializeAws_json1_1ListContainerInstancesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListContainerInstances\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListContainerInstancesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListContainerInstancesCommand = serializeAws_json1_1ListContainerInstancesCommand;\nconst serializeAws_json1_1ListServicesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListServices\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListServicesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListServicesCommand = serializeAws_json1_1ListServicesCommand;\nconst serializeAws_json1_1ListTagsForResourceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListTagsForResource\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListTagsForResourceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListTagsForResourceCommand = serializeAws_json1_1ListTagsForResourceCommand;\nconst serializeAws_json1_1ListTaskDefinitionFamiliesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListTaskDefinitionFamilies\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListTaskDefinitionFamiliesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListTaskDefinitionFamiliesCommand = serializeAws_json1_1ListTaskDefinitionFamiliesCommand;\nconst serializeAws_json1_1ListTaskDefinitionsCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListTaskDefinitions\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListTaskDefinitionsRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListTaskDefinitionsCommand = serializeAws_json1_1ListTaskDefinitionsCommand;\nconst serializeAws_json1_1ListTasksCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.ListTasks\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1ListTasksRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1ListTasksCommand = serializeAws_json1_1ListTasksCommand;\nconst serializeAws_json1_1PutAccountSettingCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.PutAccountSetting\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1PutAccountSettingRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1PutAccountSettingCommand = serializeAws_json1_1PutAccountSettingCommand;\nconst serializeAws_json1_1PutAccountSettingDefaultCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.PutAccountSettingDefault\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1PutAccountSettingDefaultRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1PutAccountSettingDefaultCommand = serializeAws_json1_1PutAccountSettingDefaultCommand;\nconst serializeAws_json1_1PutAttributesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.PutAttributes\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1PutAttributesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1PutAttributesCommand = serializeAws_json1_1PutAttributesCommand;\nconst serializeAws_json1_1PutClusterCapacityProvidersCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.PutClusterCapacityProviders\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1PutClusterCapacityProvidersRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1PutClusterCapacityProvidersCommand = serializeAws_json1_1PutClusterCapacityProvidersCommand;\nconst serializeAws_json1_1RegisterContainerInstanceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.RegisterContainerInstance\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1RegisterContainerInstanceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1RegisterContainerInstanceCommand = serializeAws_json1_1RegisterContainerInstanceCommand;\nconst serializeAws_json1_1RegisterTaskDefinitionCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.RegisterTaskDefinition\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1RegisterTaskDefinitionRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1RegisterTaskDefinitionCommand = serializeAws_json1_1RegisterTaskDefinitionCommand;\nconst serializeAws_json1_1RunTaskCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.RunTask\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1RunTaskRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1RunTaskCommand = serializeAws_json1_1RunTaskCommand;\nconst serializeAws_json1_1StartTaskCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.StartTask\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1StartTaskRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1StartTaskCommand = serializeAws_json1_1StartTaskCommand;\nconst serializeAws_json1_1StopTaskCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.StopTask\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1StopTaskRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1StopTaskCommand = serializeAws_json1_1StopTaskCommand;\nconst serializeAws_json1_1SubmitAttachmentStateChangesCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.SubmitAttachmentStateChanges\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1SubmitAttachmentStateChangesRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1SubmitAttachmentStateChangesCommand = serializeAws_json1_1SubmitAttachmentStateChangesCommand;\nconst serializeAws_json1_1SubmitContainerStateChangeCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.SubmitContainerStateChange\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1SubmitContainerStateChangeRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1SubmitContainerStateChangeCommand = serializeAws_json1_1SubmitContainerStateChangeCommand;\nconst serializeAws_json1_1SubmitTaskStateChangeCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.SubmitTaskStateChange\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1SubmitTaskStateChangeRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1SubmitTaskStateChangeCommand = serializeAws_json1_1SubmitTaskStateChangeCommand;\nconst serializeAws_json1_1TagResourceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.TagResource\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1TagResourceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1TagResourceCommand = serializeAws_json1_1TagResourceCommand;\nconst serializeAws_json1_1UntagResourceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UntagResource\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UntagResourceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UntagResourceCommand = serializeAws_json1_1UntagResourceCommand;\nconst serializeAws_json1_1UpdateCapacityProviderCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateCapacityProvider\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateCapacityProviderRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateCapacityProviderCommand = serializeAws_json1_1UpdateCapacityProviderCommand;\nconst serializeAws_json1_1UpdateClusterCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateCluster\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateClusterRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateClusterCommand = serializeAws_json1_1UpdateClusterCommand;\nconst serializeAws_json1_1UpdateClusterSettingsCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateClusterSettings\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateClusterSettingsRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateClusterSettingsCommand = serializeAws_json1_1UpdateClusterSettingsCommand;\nconst serializeAws_json1_1UpdateContainerAgentCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateContainerAgent\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateContainerAgentRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateContainerAgentCommand = serializeAws_json1_1UpdateContainerAgentCommand;\nconst serializeAws_json1_1UpdateContainerInstancesStateCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateContainerInstancesState\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateContainerInstancesStateRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateContainerInstancesStateCommand = serializeAws_json1_1UpdateContainerInstancesStateCommand;\nconst serializeAws_json1_1UpdateServiceCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateService\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateServiceRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateServiceCommand = serializeAws_json1_1UpdateServiceCommand;\nconst serializeAws_json1_1UpdateServicePrimaryTaskSetCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateServicePrimaryTaskSet\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateServicePrimaryTaskSetRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateServicePrimaryTaskSetCommand = serializeAws_json1_1UpdateServicePrimaryTaskSetCommand;\nconst serializeAws_json1_1UpdateTaskSetCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": \"AmazonEC2ContainerServiceV20141113.UpdateTaskSet\",\n };\n let body;\n body = JSON.stringify(serializeAws_json1_1UpdateTaskSetRequest(input, context));\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_json1_1UpdateTaskSetCommand = serializeAws_json1_1UpdateTaskSetCommand;\nconst deserializeAws_json1_1CreateCapacityProviderCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1CreateCapacityProviderCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1CreateCapacityProviderResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1CreateCapacityProviderCommand = deserializeAws_json1_1CreateCapacityProviderCommand;\nconst deserializeAws_json1_1CreateCapacityProviderCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.ecs#LimitExceededException\":\n throw await deserializeAws_json1_1LimitExceededExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UpdateInProgressException\":\n case \"com.amazonaws.ecs#UpdateInProgressException\":\n throw await deserializeAws_json1_1UpdateInProgressExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1CreateClusterCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1CreateClusterCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1CreateClusterResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1CreateClusterCommand = deserializeAws_json1_1CreateClusterCommand;\nconst deserializeAws_json1_1CreateClusterCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1CreateServiceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1CreateServiceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1CreateServiceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1CreateServiceCommand = deserializeAws_json1_1CreateServiceCommand;\nconst deserializeAws_json1_1CreateServiceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"PlatformTaskDefinitionIncompatibilityException\":\n case \"com.amazonaws.ecs#PlatformTaskDefinitionIncompatibilityException\":\n throw await deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityExceptionResponse(parsedOutput, context);\n case \"PlatformUnknownException\":\n case \"com.amazonaws.ecs#PlatformUnknownException\":\n throw await deserializeAws_json1_1PlatformUnknownExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1CreateTaskSetCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1CreateTaskSetCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1CreateTaskSetResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1CreateTaskSetCommand = deserializeAws_json1_1CreateTaskSetCommand;\nconst deserializeAws_json1_1CreateTaskSetCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"PlatformTaskDefinitionIncompatibilityException\":\n case \"com.amazonaws.ecs#PlatformTaskDefinitionIncompatibilityException\":\n throw await deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityExceptionResponse(parsedOutput, context);\n case \"PlatformUnknownException\":\n case \"com.amazonaws.ecs#PlatformUnknownException\":\n throw await deserializeAws_json1_1PlatformUnknownExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteAccountSettingCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteAccountSettingCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteAccountSettingResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteAccountSettingCommand = deserializeAws_json1_1DeleteAccountSettingCommand;\nconst deserializeAws_json1_1DeleteAccountSettingCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteAttributesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteAttributesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteAttributesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteAttributesCommand = deserializeAws_json1_1DeleteAttributesCommand;\nconst deserializeAws_json1_1DeleteAttributesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"TargetNotFoundException\":\n case \"com.amazonaws.ecs#TargetNotFoundException\":\n throw await deserializeAws_json1_1TargetNotFoundExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteCapacityProviderCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteCapacityProviderCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteCapacityProviderResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteCapacityProviderCommand = deserializeAws_json1_1DeleteCapacityProviderCommand;\nconst deserializeAws_json1_1DeleteCapacityProviderCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteClusterCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteClusterCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteClusterResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteClusterCommand = deserializeAws_json1_1DeleteClusterCommand;\nconst deserializeAws_json1_1DeleteClusterCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterContainsContainerInstancesException\":\n case \"com.amazonaws.ecs#ClusterContainsContainerInstancesException\":\n throw await deserializeAws_json1_1ClusterContainsContainerInstancesExceptionResponse(parsedOutput, context);\n case \"ClusterContainsServicesException\":\n case \"com.amazonaws.ecs#ClusterContainsServicesException\":\n throw await deserializeAws_json1_1ClusterContainsServicesExceptionResponse(parsedOutput, context);\n case \"ClusterContainsTasksException\":\n case \"com.amazonaws.ecs#ClusterContainsTasksException\":\n throw await deserializeAws_json1_1ClusterContainsTasksExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UpdateInProgressException\":\n case \"com.amazonaws.ecs#UpdateInProgressException\":\n throw await deserializeAws_json1_1UpdateInProgressExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteServiceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteServiceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteServiceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteServiceCommand = deserializeAws_json1_1DeleteServiceCommand;\nconst deserializeAws_json1_1DeleteServiceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeleteTaskSetCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeleteTaskSetCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeleteTaskSetResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeleteTaskSetCommand = deserializeAws_json1_1DeleteTaskSetCommand;\nconst deserializeAws_json1_1DeleteTaskSetCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n case \"TaskSetNotFoundException\":\n case \"com.amazonaws.ecs#TaskSetNotFoundException\":\n throw await deserializeAws_json1_1TaskSetNotFoundExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeregisterContainerInstanceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeregisterContainerInstanceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeregisterContainerInstanceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeregisterContainerInstanceCommand = deserializeAws_json1_1DeregisterContainerInstanceCommand;\nconst deserializeAws_json1_1DeregisterContainerInstanceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DeregisterTaskDefinitionCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DeregisterTaskDefinitionCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DeregisterTaskDefinitionResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DeregisterTaskDefinitionCommand = deserializeAws_json1_1DeregisterTaskDefinitionCommand;\nconst deserializeAws_json1_1DeregisterTaskDefinitionCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeCapacityProvidersCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeCapacityProvidersCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeCapacityProvidersResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeCapacityProvidersCommand = deserializeAws_json1_1DescribeCapacityProvidersCommand;\nconst deserializeAws_json1_1DescribeCapacityProvidersCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeClustersCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeClustersCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeClustersResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeClustersCommand = deserializeAws_json1_1DescribeClustersCommand;\nconst deserializeAws_json1_1DescribeClustersCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeContainerInstancesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeContainerInstancesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeContainerInstancesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeContainerInstancesCommand = deserializeAws_json1_1DescribeContainerInstancesCommand;\nconst deserializeAws_json1_1DescribeContainerInstancesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeServicesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeServicesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeServicesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeServicesCommand = deserializeAws_json1_1DescribeServicesCommand;\nconst deserializeAws_json1_1DescribeServicesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeTaskDefinitionCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeTaskDefinitionCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeTaskDefinitionResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeTaskDefinitionCommand = deserializeAws_json1_1DescribeTaskDefinitionCommand;\nconst deserializeAws_json1_1DescribeTaskDefinitionCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeTasksCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeTasksCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeTasksResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeTasksCommand = deserializeAws_json1_1DescribeTasksCommand;\nconst deserializeAws_json1_1DescribeTasksCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DescribeTaskSetsCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DescribeTaskSetsCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DescribeTaskSetsResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DescribeTaskSetsCommand = deserializeAws_json1_1DescribeTaskSetsCommand;\nconst deserializeAws_json1_1DescribeTaskSetsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1DiscoverPollEndpointCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1DiscoverPollEndpointCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1DiscoverPollEndpointResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1DiscoverPollEndpointCommand = deserializeAws_json1_1DiscoverPollEndpointCommand;\nconst deserializeAws_json1_1DiscoverPollEndpointCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ExecuteCommandCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ExecuteCommandCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ExecuteCommandResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ExecuteCommandCommand = deserializeAws_json1_1ExecuteCommandCommand;\nconst deserializeAws_json1_1ExecuteCommandCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"TargetNotConnectedException\":\n case \"com.amazonaws.ecs#TargetNotConnectedException\":\n throw await deserializeAws_json1_1TargetNotConnectedExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListAccountSettingsCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListAccountSettingsCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListAccountSettingsResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListAccountSettingsCommand = deserializeAws_json1_1ListAccountSettingsCommand;\nconst deserializeAws_json1_1ListAccountSettingsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListAttributesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListAttributesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListAttributesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListAttributesCommand = deserializeAws_json1_1ListAttributesCommand;\nconst deserializeAws_json1_1ListAttributesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListClustersCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListClustersCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListClustersResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListClustersCommand = deserializeAws_json1_1ListClustersCommand;\nconst deserializeAws_json1_1ListClustersCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListContainerInstancesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListContainerInstancesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListContainerInstancesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListContainerInstancesCommand = deserializeAws_json1_1ListContainerInstancesCommand;\nconst deserializeAws_json1_1ListContainerInstancesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListServicesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListServicesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListServicesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListServicesCommand = deserializeAws_json1_1ListServicesCommand;\nconst deserializeAws_json1_1ListServicesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListTagsForResourceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListTagsForResourceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListTagsForResourceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListTagsForResourceCommand = deserializeAws_json1_1ListTagsForResourceCommand;\nconst deserializeAws_json1_1ListTagsForResourceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListTaskDefinitionFamiliesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListTaskDefinitionFamiliesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListTaskDefinitionFamiliesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListTaskDefinitionFamiliesCommand = deserializeAws_json1_1ListTaskDefinitionFamiliesCommand;\nconst deserializeAws_json1_1ListTaskDefinitionFamiliesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListTaskDefinitionsCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListTaskDefinitionsCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListTaskDefinitionsResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListTaskDefinitionsCommand = deserializeAws_json1_1ListTaskDefinitionsCommand;\nconst deserializeAws_json1_1ListTaskDefinitionsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1ListTasksCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1ListTasksCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1ListTasksResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1ListTasksCommand = deserializeAws_json1_1ListTasksCommand;\nconst deserializeAws_json1_1ListTasksCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1PutAccountSettingCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1PutAccountSettingCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1PutAccountSettingResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1PutAccountSettingCommand = deserializeAws_json1_1PutAccountSettingCommand;\nconst deserializeAws_json1_1PutAccountSettingCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1PutAccountSettingDefaultCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1PutAccountSettingDefaultCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1PutAccountSettingDefaultResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1PutAccountSettingDefaultCommand = deserializeAws_json1_1PutAccountSettingDefaultCommand;\nconst deserializeAws_json1_1PutAccountSettingDefaultCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1PutAttributesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1PutAttributesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1PutAttributesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1PutAttributesCommand = deserializeAws_json1_1PutAttributesCommand;\nconst deserializeAws_json1_1PutAttributesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AttributeLimitExceededException\":\n case \"com.amazonaws.ecs#AttributeLimitExceededException\":\n throw await deserializeAws_json1_1AttributeLimitExceededExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"TargetNotFoundException\":\n case \"com.amazonaws.ecs#TargetNotFoundException\":\n throw await deserializeAws_json1_1TargetNotFoundExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1PutClusterCapacityProvidersCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1PutClusterCapacityProvidersCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1PutClusterCapacityProvidersResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1PutClusterCapacityProvidersCommand = deserializeAws_json1_1PutClusterCapacityProvidersCommand;\nconst deserializeAws_json1_1PutClusterCapacityProvidersCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ResourceInUseException\":\n case \"com.amazonaws.ecs#ResourceInUseException\":\n throw await deserializeAws_json1_1ResourceInUseExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UpdateInProgressException\":\n case \"com.amazonaws.ecs#UpdateInProgressException\":\n throw await deserializeAws_json1_1UpdateInProgressExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1RegisterContainerInstanceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1RegisterContainerInstanceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1RegisterContainerInstanceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1RegisterContainerInstanceCommand = deserializeAws_json1_1RegisterContainerInstanceCommand;\nconst deserializeAws_json1_1RegisterContainerInstanceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1RegisterTaskDefinitionCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1RegisterTaskDefinitionCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1RegisterTaskDefinitionResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1RegisterTaskDefinitionCommand = deserializeAws_json1_1RegisterTaskDefinitionCommand;\nconst deserializeAws_json1_1RegisterTaskDefinitionCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1RunTaskCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1RunTaskCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1RunTaskResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1RunTaskCommand = deserializeAws_json1_1RunTaskCommand;\nconst deserializeAws_json1_1RunTaskCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"BlockedException\":\n case \"com.amazonaws.ecs#BlockedException\":\n throw await deserializeAws_json1_1BlockedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"PlatformTaskDefinitionIncompatibilityException\":\n case \"com.amazonaws.ecs#PlatformTaskDefinitionIncompatibilityException\":\n throw await deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityExceptionResponse(parsedOutput, context);\n case \"PlatformUnknownException\":\n case \"com.amazonaws.ecs#PlatformUnknownException\":\n throw await deserializeAws_json1_1PlatformUnknownExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1StartTaskCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1StartTaskCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1StartTaskResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1StartTaskCommand = deserializeAws_json1_1StartTaskCommand;\nconst deserializeAws_json1_1StartTaskCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1StopTaskCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1StopTaskCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1StopTaskResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1StopTaskCommand = deserializeAws_json1_1StopTaskCommand;\nconst deserializeAws_json1_1StopTaskCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1SubmitAttachmentStateChangesCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1SubmitAttachmentStateChangesCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1SubmitAttachmentStateChangesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1SubmitAttachmentStateChangesCommand = deserializeAws_json1_1SubmitAttachmentStateChangesCommand;\nconst deserializeAws_json1_1SubmitAttachmentStateChangesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1SubmitContainerStateChangeCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1SubmitContainerStateChangeCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1SubmitContainerStateChangeResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1SubmitContainerStateChangeCommand = deserializeAws_json1_1SubmitContainerStateChangeCommand;\nconst deserializeAws_json1_1SubmitContainerStateChangeCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1SubmitTaskStateChangeCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1SubmitTaskStateChangeCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1SubmitTaskStateChangeResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1SubmitTaskStateChangeCommand = deserializeAws_json1_1SubmitTaskStateChangeCommand;\nconst deserializeAws_json1_1SubmitTaskStateChangeCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1TagResourceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1TagResourceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1TagResourceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1TagResourceCommand = deserializeAws_json1_1TagResourceCommand;\nconst deserializeAws_json1_1TagResourceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.ecs#ResourceNotFoundException\":\n throw await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UntagResourceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UntagResourceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UntagResourceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UntagResourceCommand = deserializeAws_json1_1UntagResourceCommand;\nconst deserializeAws_json1_1UntagResourceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.ecs#ResourceNotFoundException\":\n throw await deserializeAws_json1_1ResourceNotFoundExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateCapacityProviderCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateCapacityProviderCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateCapacityProviderResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateCapacityProviderCommand = deserializeAws_json1_1UpdateCapacityProviderCommand;\nconst deserializeAws_json1_1UpdateCapacityProviderCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateClusterCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateClusterCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateClusterResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateClusterCommand = deserializeAws_json1_1UpdateClusterCommand;\nconst deserializeAws_json1_1UpdateClusterCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateClusterSettingsCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateClusterSettingsCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateClusterSettingsResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateClusterSettingsCommand = deserializeAws_json1_1UpdateClusterSettingsCommand;\nconst deserializeAws_json1_1UpdateClusterSettingsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateContainerAgentCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateContainerAgentCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateContainerAgentResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateContainerAgentCommand = deserializeAws_json1_1UpdateContainerAgentCommand;\nconst deserializeAws_json1_1UpdateContainerAgentCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"MissingVersionException\":\n case \"com.amazonaws.ecs#MissingVersionException\":\n throw await deserializeAws_json1_1MissingVersionExceptionResponse(parsedOutput, context);\n case \"NoUpdateAvailableException\":\n case \"com.amazonaws.ecs#NoUpdateAvailableException\":\n throw await deserializeAws_json1_1NoUpdateAvailableExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"UpdateInProgressException\":\n case \"com.amazonaws.ecs#UpdateInProgressException\":\n throw await deserializeAws_json1_1UpdateInProgressExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateContainerInstancesStateCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateContainerInstancesStateCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateContainerInstancesStateResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateContainerInstancesStateCommand = deserializeAws_json1_1UpdateContainerInstancesStateCommand;\nconst deserializeAws_json1_1UpdateContainerInstancesStateCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateServiceCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateServiceCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateServiceResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateServiceCommand = deserializeAws_json1_1UpdateServiceCommand;\nconst deserializeAws_json1_1UpdateServiceCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"PlatformTaskDefinitionIncompatibilityException\":\n case \"com.amazonaws.ecs#PlatformTaskDefinitionIncompatibilityException\":\n throw await deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityExceptionResponse(parsedOutput, context);\n case \"PlatformUnknownException\":\n case \"com.amazonaws.ecs#PlatformUnknownException\":\n throw await deserializeAws_json1_1PlatformUnknownExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateServicePrimaryTaskSetCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateServicePrimaryTaskSetCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateServicePrimaryTaskSetResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateServicePrimaryTaskSetCommand = deserializeAws_json1_1UpdateServicePrimaryTaskSetCommand;\nconst deserializeAws_json1_1UpdateServicePrimaryTaskSetCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n case \"TaskSetNotFoundException\":\n case \"com.amazonaws.ecs#TaskSetNotFoundException\":\n throw await deserializeAws_json1_1TaskSetNotFoundExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1UpdateTaskSetCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_json1_1UpdateTaskSetCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_json1_1UpdateTaskSetResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_json1_1UpdateTaskSetCommand = deserializeAws_json1_1UpdateTaskSetCommand;\nconst deserializeAws_json1_1UpdateTaskSetCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ecs#AccessDeniedException\":\n throw await deserializeAws_json1_1AccessDeniedExceptionResponse(parsedOutput, context);\n case \"ClientException\":\n case \"com.amazonaws.ecs#ClientException\":\n throw await deserializeAws_json1_1ClientExceptionResponse(parsedOutput, context);\n case \"ClusterNotFoundException\":\n case \"com.amazonaws.ecs#ClusterNotFoundException\":\n throw await deserializeAws_json1_1ClusterNotFoundExceptionResponse(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.ecs#InvalidParameterException\":\n throw await deserializeAws_json1_1InvalidParameterExceptionResponse(parsedOutput, context);\n case \"ServerException\":\n case \"com.amazonaws.ecs#ServerException\":\n throw await deserializeAws_json1_1ServerExceptionResponse(parsedOutput, context);\n case \"ServiceNotActiveException\":\n case \"com.amazonaws.ecs#ServiceNotActiveException\":\n throw await deserializeAws_json1_1ServiceNotActiveExceptionResponse(parsedOutput, context);\n case \"ServiceNotFoundException\":\n case \"com.amazonaws.ecs#ServiceNotFoundException\":\n throw await deserializeAws_json1_1ServiceNotFoundExceptionResponse(parsedOutput, context);\n case \"TaskSetNotFoundException\":\n case \"com.amazonaws.ecs#TaskSetNotFoundException\":\n throw await deserializeAws_json1_1TaskSetNotFoundExceptionResponse(parsedOutput, context);\n case \"UnsupportedFeatureException\":\n case \"com.amazonaws.ecs#UnsupportedFeatureException\":\n throw await deserializeAws_json1_1UnsupportedFeatureExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: ECSServiceException_1.ECSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_json1_1AccessDeniedExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1AccessDeniedException(body, context);\n const exception = new models_0_1.AccessDeniedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1AttributeLimitExceededExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1AttributeLimitExceededException(body, context);\n const exception = new models_0_1.AttributeLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1BlockedExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1BlockedException(body, context);\n const exception = new models_0_1.BlockedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ClientExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ClientException(body, context);\n const exception = new models_0_1.ClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ClusterContainsContainerInstancesExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ClusterContainsContainerInstancesException(body, context);\n const exception = new models_0_1.ClusterContainsContainerInstancesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ClusterContainsServicesExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ClusterContainsServicesException(body, context);\n const exception = new models_0_1.ClusterContainsServicesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ClusterContainsTasksExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ClusterContainsTasksException(body, context);\n const exception = new models_0_1.ClusterContainsTasksException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ClusterNotFoundExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ClusterNotFoundException(body, context);\n const exception = new models_0_1.ClusterNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1InvalidParameterExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1InvalidParameterException(body, context);\n const exception = new models_0_1.InvalidParameterException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1LimitExceededExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1LimitExceededException(body, context);\n const exception = new models_0_1.LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1MissingVersionExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1MissingVersionException(body, context);\n const exception = new models_0_1.MissingVersionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1NoUpdateAvailableExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1NoUpdateAvailableException(body, context);\n const exception = new models_0_1.NoUpdateAvailableException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityException(body, context);\n const exception = new models_0_1.PlatformTaskDefinitionIncompatibilityException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1PlatformUnknownExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1PlatformUnknownException(body, context);\n const exception = new models_0_1.PlatformUnknownException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ResourceInUseExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ResourceInUseException(body, context);\n const exception = new models_0_1.ResourceInUseException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ResourceNotFoundExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ResourceNotFoundException(body, context);\n const exception = new models_0_1.ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ServerExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ServerException(body, context);\n const exception = new models_0_1.ServerException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ServiceNotActiveExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ServiceNotActiveException(body, context);\n const exception = new models_0_1.ServiceNotActiveException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1ServiceNotFoundExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1ServiceNotFoundException(body, context);\n const exception = new models_0_1.ServiceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1TargetNotConnectedExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1TargetNotConnectedException(body, context);\n const exception = new models_0_1.TargetNotConnectedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1TargetNotFoundExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1TargetNotFoundException(body, context);\n const exception = new models_0_1.TargetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1TaskSetNotFoundExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1TaskSetNotFoundException(body, context);\n const exception = new models_0_1.TaskSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1UnsupportedFeatureExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1UnsupportedFeatureException(body, context);\n const exception = new models_0_1.UnsupportedFeatureException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_json1_1UpdateInProgressExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_json1_1UpdateInProgressException(body, context);\n const exception = new models_0_1.UpdateInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst serializeAws_json1_1AttachmentStateChange = (input, context) => {\n return {\n ...(input.attachmentArn != null && { attachmentArn: input.attachmentArn }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1AttachmentStateChanges = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1AttachmentStateChange(entry, context);\n });\n};\nconst serializeAws_json1_1Attribute = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.targetId != null && { targetId: input.targetId }),\n ...(input.targetType != null && { targetType: input.targetType }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1Attributes = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Attribute(entry, context);\n });\n};\nconst serializeAws_json1_1AutoScalingGroupProvider = (input, context) => {\n return {\n ...(input.autoScalingGroupArn != null && { autoScalingGroupArn: input.autoScalingGroupArn }),\n ...(input.managedScaling != null && {\n managedScaling: serializeAws_json1_1ManagedScaling(input.managedScaling, context),\n }),\n ...(input.managedTerminationProtection != null && {\n managedTerminationProtection: input.managedTerminationProtection,\n }),\n };\n};\nconst serializeAws_json1_1AutoScalingGroupProviderUpdate = (input, context) => {\n return {\n ...(input.managedScaling != null && {\n managedScaling: serializeAws_json1_1ManagedScaling(input.managedScaling, context),\n }),\n ...(input.managedTerminationProtection != null && {\n managedTerminationProtection: input.managedTerminationProtection,\n }),\n };\n};\nconst serializeAws_json1_1AwsVpcConfiguration = (input, context) => {\n return {\n ...(input.assignPublicIp != null && { assignPublicIp: input.assignPublicIp }),\n ...(input.securityGroups != null && {\n securityGroups: serializeAws_json1_1StringList(input.securityGroups, context),\n }),\n ...(input.subnets != null && { subnets: serializeAws_json1_1StringList(input.subnets, context) }),\n };\n};\nconst serializeAws_json1_1CapacityProviderFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1CapacityProviderStrategy = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1CapacityProviderStrategyItem(entry, context);\n });\n};\nconst serializeAws_json1_1CapacityProviderStrategyItem = (input, context) => {\n return {\n ...(input.base != null && { base: input.base }),\n ...(input.capacityProvider != null && { capacityProvider: input.capacityProvider }),\n ...(input.weight != null && { weight: input.weight }),\n };\n};\nconst serializeAws_json1_1ClusterConfiguration = (input, context) => {\n return {\n ...(input.executeCommandConfiguration != null && {\n executeCommandConfiguration: serializeAws_json1_1ExecuteCommandConfiguration(input.executeCommandConfiguration, context),\n }),\n };\n};\nconst serializeAws_json1_1ClusterFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1ClusterSetting = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1ClusterSettings = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ClusterSetting(entry, context);\n });\n};\nconst serializeAws_json1_1CompatibilityList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1ContainerDefinition = (input, context) => {\n return {\n ...(input.command != null && { command: serializeAws_json1_1StringList(input.command, context) }),\n ...(input.cpu != null && { cpu: input.cpu }),\n ...(input.dependsOn != null && { dependsOn: serializeAws_json1_1ContainerDependencies(input.dependsOn, context) }),\n ...(input.disableNetworking != null && { disableNetworking: input.disableNetworking }),\n ...(input.dnsSearchDomains != null && {\n dnsSearchDomains: serializeAws_json1_1StringList(input.dnsSearchDomains, context),\n }),\n ...(input.dnsServers != null && { dnsServers: serializeAws_json1_1StringList(input.dnsServers, context) }),\n ...(input.dockerLabels != null && {\n dockerLabels: serializeAws_json1_1DockerLabelsMap(input.dockerLabels, context),\n }),\n ...(input.dockerSecurityOptions != null && {\n dockerSecurityOptions: serializeAws_json1_1StringList(input.dockerSecurityOptions, context),\n }),\n ...(input.entryPoint != null && { entryPoint: serializeAws_json1_1StringList(input.entryPoint, context) }),\n ...(input.environment != null && {\n environment: serializeAws_json1_1EnvironmentVariables(input.environment, context),\n }),\n ...(input.environmentFiles != null && {\n environmentFiles: serializeAws_json1_1EnvironmentFiles(input.environmentFiles, context),\n }),\n ...(input.essential != null && { essential: input.essential }),\n ...(input.extraHosts != null && { extraHosts: serializeAws_json1_1HostEntryList(input.extraHosts, context) }),\n ...(input.firelensConfiguration != null && {\n firelensConfiguration: serializeAws_json1_1FirelensConfiguration(input.firelensConfiguration, context),\n }),\n ...(input.healthCheck != null && { healthCheck: serializeAws_json1_1HealthCheck(input.healthCheck, context) }),\n ...(input.hostname != null && { hostname: input.hostname }),\n ...(input.image != null && { image: input.image }),\n ...(input.interactive != null && { interactive: input.interactive }),\n ...(input.links != null && { links: serializeAws_json1_1StringList(input.links, context) }),\n ...(input.linuxParameters != null && {\n linuxParameters: serializeAws_json1_1LinuxParameters(input.linuxParameters, context),\n }),\n ...(input.logConfiguration != null && {\n logConfiguration: serializeAws_json1_1LogConfiguration(input.logConfiguration, context),\n }),\n ...(input.memory != null && { memory: input.memory }),\n ...(input.memoryReservation != null && { memoryReservation: input.memoryReservation }),\n ...(input.mountPoints != null && { mountPoints: serializeAws_json1_1MountPointList(input.mountPoints, context) }),\n ...(input.name != null && { name: input.name }),\n ...(input.portMappings != null && {\n portMappings: serializeAws_json1_1PortMappingList(input.portMappings, context),\n }),\n ...(input.privileged != null && { privileged: input.privileged }),\n ...(input.pseudoTerminal != null && { pseudoTerminal: input.pseudoTerminal }),\n ...(input.readonlyRootFilesystem != null && { readonlyRootFilesystem: input.readonlyRootFilesystem }),\n ...(input.repositoryCredentials != null && {\n repositoryCredentials: serializeAws_json1_1RepositoryCredentials(input.repositoryCredentials, context),\n }),\n ...(input.resourceRequirements != null && {\n resourceRequirements: serializeAws_json1_1ResourceRequirements(input.resourceRequirements, context),\n }),\n ...(input.secrets != null && { secrets: serializeAws_json1_1SecretList(input.secrets, context) }),\n ...(input.startTimeout != null && { startTimeout: input.startTimeout }),\n ...(input.stopTimeout != null && { stopTimeout: input.stopTimeout }),\n ...(input.systemControls != null && {\n systemControls: serializeAws_json1_1SystemControls(input.systemControls, context),\n }),\n ...(input.ulimits != null && { ulimits: serializeAws_json1_1UlimitList(input.ulimits, context) }),\n ...(input.user != null && { user: input.user }),\n ...(input.volumesFrom != null && { volumesFrom: serializeAws_json1_1VolumeFromList(input.volumesFrom, context) }),\n ...(input.workingDirectory != null && { workingDirectory: input.workingDirectory }),\n };\n};\nconst serializeAws_json1_1ContainerDefinitions = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ContainerDefinition(entry, context);\n });\n};\nconst serializeAws_json1_1ContainerDependencies = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ContainerDependency(entry, context);\n });\n};\nconst serializeAws_json1_1ContainerDependency = (input, context) => {\n return {\n ...(input.condition != null && { condition: input.condition }),\n ...(input.containerName != null && { containerName: input.containerName }),\n };\n};\nconst serializeAws_json1_1ContainerInstanceFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1ContainerOverride = (input, context) => {\n return {\n ...(input.command != null && { command: serializeAws_json1_1StringList(input.command, context) }),\n ...(input.cpu != null && { cpu: input.cpu }),\n ...(input.environment != null && {\n environment: serializeAws_json1_1EnvironmentVariables(input.environment, context),\n }),\n ...(input.environmentFiles != null && {\n environmentFiles: serializeAws_json1_1EnvironmentFiles(input.environmentFiles, context),\n }),\n ...(input.memory != null && { memory: input.memory }),\n ...(input.memoryReservation != null && { memoryReservation: input.memoryReservation }),\n ...(input.name != null && { name: input.name }),\n ...(input.resourceRequirements != null && {\n resourceRequirements: serializeAws_json1_1ResourceRequirements(input.resourceRequirements, context),\n }),\n };\n};\nconst serializeAws_json1_1ContainerOverrides = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ContainerOverride(entry, context);\n });\n};\nconst serializeAws_json1_1ContainerStateChange = (input, context) => {\n return {\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.exitCode != null && { exitCode: input.exitCode }),\n ...(input.imageDigest != null && { imageDigest: input.imageDigest }),\n ...(input.networkBindings != null && {\n networkBindings: serializeAws_json1_1NetworkBindings(input.networkBindings, context),\n }),\n ...(input.reason != null && { reason: input.reason }),\n ...(input.runtimeId != null && { runtimeId: input.runtimeId }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1ContainerStateChanges = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ContainerStateChange(entry, context);\n });\n};\nconst serializeAws_json1_1CreateCapacityProviderRequest = (input, context) => {\n return {\n ...(input.autoScalingGroupProvider != null && {\n autoScalingGroupProvider: serializeAws_json1_1AutoScalingGroupProvider(input.autoScalingGroupProvider, context),\n }),\n ...(input.name != null && { name: input.name }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n };\n};\nconst serializeAws_json1_1CreateClusterRequest = (input, context) => {\n return {\n ...(input.capacityProviders != null && {\n capacityProviders: serializeAws_json1_1StringList(input.capacityProviders, context),\n }),\n ...(input.clusterName != null && { clusterName: input.clusterName }),\n ...(input.configuration != null && {\n configuration: serializeAws_json1_1ClusterConfiguration(input.configuration, context),\n }),\n ...(input.defaultCapacityProviderStrategy != null && {\n defaultCapacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.defaultCapacityProviderStrategy, context),\n }),\n ...(input.settings != null && { settings: serializeAws_json1_1ClusterSettings(input.settings, context) }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n };\n};\nconst serializeAws_json1_1CreateServiceRequest = (input, context) => {\n return {\n ...(input.capacityProviderStrategy != null && {\n capacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.capacityProviderStrategy, context),\n }),\n ...(input.clientToken != null && { clientToken: input.clientToken }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.deploymentConfiguration != null && {\n deploymentConfiguration: serializeAws_json1_1DeploymentConfiguration(input.deploymentConfiguration, context),\n }),\n ...(input.deploymentController != null && {\n deploymentController: serializeAws_json1_1DeploymentController(input.deploymentController, context),\n }),\n ...(input.desiredCount != null && { desiredCount: input.desiredCount }),\n ...(input.enableECSManagedTags != null && { enableECSManagedTags: input.enableECSManagedTags }),\n ...(input.enableExecuteCommand != null && { enableExecuteCommand: input.enableExecuteCommand }),\n ...(input.healthCheckGracePeriodSeconds != null && {\n healthCheckGracePeriodSeconds: input.healthCheckGracePeriodSeconds,\n }),\n ...(input.launchType != null && { launchType: input.launchType }),\n ...(input.loadBalancers != null && {\n loadBalancers: serializeAws_json1_1LoadBalancers(input.loadBalancers, context),\n }),\n ...(input.networkConfiguration != null && {\n networkConfiguration: serializeAws_json1_1NetworkConfiguration(input.networkConfiguration, context),\n }),\n ...(input.placementConstraints != null && {\n placementConstraints: serializeAws_json1_1PlacementConstraints(input.placementConstraints, context),\n }),\n ...(input.placementStrategy != null && {\n placementStrategy: serializeAws_json1_1PlacementStrategies(input.placementStrategy, context),\n }),\n ...(input.platformVersion != null && { platformVersion: input.platformVersion }),\n ...(input.propagateTags != null && { propagateTags: input.propagateTags }),\n ...(input.role != null && { role: input.role }),\n ...(input.schedulingStrategy != null && { schedulingStrategy: input.schedulingStrategy }),\n ...(input.serviceName != null && { serviceName: input.serviceName }),\n ...(input.serviceRegistries != null && {\n serviceRegistries: serializeAws_json1_1ServiceRegistries(input.serviceRegistries, context),\n }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1CreateTaskSetRequest = (input, context) => {\n return {\n ...(input.capacityProviderStrategy != null && {\n capacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.capacityProviderStrategy, context),\n }),\n ...(input.clientToken != null && { clientToken: input.clientToken }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.externalId != null && { externalId: input.externalId }),\n ...(input.launchType != null && { launchType: input.launchType }),\n ...(input.loadBalancers != null && {\n loadBalancers: serializeAws_json1_1LoadBalancers(input.loadBalancers, context),\n }),\n ...(input.networkConfiguration != null && {\n networkConfiguration: serializeAws_json1_1NetworkConfiguration(input.networkConfiguration, context),\n }),\n ...(input.platformVersion != null && { platformVersion: input.platformVersion }),\n ...(input.scale != null && { scale: serializeAws_json1_1Scale(input.scale, context) }),\n ...(input.service != null && { service: input.service }),\n ...(input.serviceRegistries != null && {\n serviceRegistries: serializeAws_json1_1ServiceRegistries(input.serviceRegistries, context),\n }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1DeleteAccountSettingRequest = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.principalArn != null && { principalArn: input.principalArn }),\n };\n};\nconst serializeAws_json1_1DeleteAttributesRequest = (input, context) => {\n return {\n ...(input.attributes != null && { attributes: serializeAws_json1_1Attributes(input.attributes, context) }),\n ...(input.cluster != null && { cluster: input.cluster }),\n };\n};\nconst serializeAws_json1_1DeleteCapacityProviderRequest = (input, context) => {\n return {\n ...(input.capacityProvider != null && { capacityProvider: input.capacityProvider }),\n };\n};\nconst serializeAws_json1_1DeleteClusterRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n };\n};\nconst serializeAws_json1_1DeleteServiceRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.force != null && { force: input.force }),\n ...(input.service != null && { service: input.service }),\n };\n};\nconst serializeAws_json1_1DeleteTaskSetRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.force != null && { force: input.force }),\n ...(input.service != null && { service: input.service }),\n ...(input.taskSet != null && { taskSet: input.taskSet }),\n };\n};\nconst serializeAws_json1_1DeploymentCircuitBreaker = (input, context) => {\n return {\n ...(input.enable != null && { enable: input.enable }),\n ...(input.rollback != null && { rollback: input.rollback }),\n };\n};\nconst serializeAws_json1_1DeploymentConfiguration = (input, context) => {\n return {\n ...(input.deploymentCircuitBreaker != null && {\n deploymentCircuitBreaker: serializeAws_json1_1DeploymentCircuitBreaker(input.deploymentCircuitBreaker, context),\n }),\n ...(input.maximumPercent != null && { maximumPercent: input.maximumPercent }),\n ...(input.minimumHealthyPercent != null && { minimumHealthyPercent: input.minimumHealthyPercent }),\n };\n};\nconst serializeAws_json1_1DeploymentController = (input, context) => {\n return {\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1DeregisterContainerInstanceRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstance != null && { containerInstance: input.containerInstance }),\n ...(input.force != null && { force: input.force }),\n };\n};\nconst serializeAws_json1_1DeregisterTaskDefinitionRequest = (input, context) => {\n return {\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1DescribeCapacityProvidersRequest = (input, context) => {\n return {\n ...(input.capacityProviders != null && {\n capacityProviders: serializeAws_json1_1StringList(input.capacityProviders, context),\n }),\n ...(input.include != null && { include: serializeAws_json1_1CapacityProviderFieldList(input.include, context) }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n };\n};\nconst serializeAws_json1_1DescribeClustersRequest = (input, context) => {\n return {\n ...(input.clusters != null && { clusters: serializeAws_json1_1StringList(input.clusters, context) }),\n ...(input.include != null && { include: serializeAws_json1_1ClusterFieldList(input.include, context) }),\n };\n};\nconst serializeAws_json1_1DescribeContainerInstancesRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstances != null && {\n containerInstances: serializeAws_json1_1StringList(input.containerInstances, context),\n }),\n ...(input.include != null && { include: serializeAws_json1_1ContainerInstanceFieldList(input.include, context) }),\n };\n};\nconst serializeAws_json1_1DescribeServicesRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.include != null && { include: serializeAws_json1_1ServiceFieldList(input.include, context) }),\n ...(input.services != null && { services: serializeAws_json1_1StringList(input.services, context) }),\n };\n};\nconst serializeAws_json1_1DescribeTaskDefinitionRequest = (input, context) => {\n return {\n ...(input.include != null && { include: serializeAws_json1_1TaskDefinitionFieldList(input.include, context) }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1DescribeTaskSetsRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.include != null && { include: serializeAws_json1_1TaskSetFieldList(input.include, context) }),\n ...(input.service != null && { service: input.service }),\n ...(input.taskSets != null && { taskSets: serializeAws_json1_1StringList(input.taskSets, context) }),\n };\n};\nconst serializeAws_json1_1DescribeTasksRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.include != null && { include: serializeAws_json1_1TaskFieldList(input.include, context) }),\n ...(input.tasks != null && { tasks: serializeAws_json1_1StringList(input.tasks, context) }),\n };\n};\nconst serializeAws_json1_1Device = (input, context) => {\n return {\n ...(input.containerPath != null && { containerPath: input.containerPath }),\n ...(input.hostPath != null && { hostPath: input.hostPath }),\n ...(input.permissions != null && {\n permissions: serializeAws_json1_1DeviceCgroupPermissions(input.permissions, context),\n }),\n };\n};\nconst serializeAws_json1_1DeviceCgroupPermissions = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1DevicesList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Device(entry, context);\n });\n};\nconst serializeAws_json1_1DiscoverPollEndpointRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstance != null && { containerInstance: input.containerInstance }),\n };\n};\nconst serializeAws_json1_1DockerLabelsMap = (input, context) => {\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\nconst serializeAws_json1_1DockerVolumeConfiguration = (input, context) => {\n return {\n ...(input.autoprovision != null && { autoprovision: input.autoprovision }),\n ...(input.driver != null && { driver: input.driver }),\n ...(input.driverOpts != null && { driverOpts: serializeAws_json1_1StringMap(input.driverOpts, context) }),\n ...(input.labels != null && { labels: serializeAws_json1_1StringMap(input.labels, context) }),\n ...(input.scope != null && { scope: input.scope }),\n };\n};\nconst serializeAws_json1_1EFSAuthorizationConfig = (input, context) => {\n return {\n ...(input.accessPointId != null && { accessPointId: input.accessPointId }),\n ...(input.iam != null && { iam: input.iam }),\n };\n};\nconst serializeAws_json1_1EFSVolumeConfiguration = (input, context) => {\n return {\n ...(input.authorizationConfig != null && {\n authorizationConfig: serializeAws_json1_1EFSAuthorizationConfig(input.authorizationConfig, context),\n }),\n ...(input.fileSystemId != null && { fileSystemId: input.fileSystemId }),\n ...(input.rootDirectory != null && { rootDirectory: input.rootDirectory }),\n ...(input.transitEncryption != null && { transitEncryption: input.transitEncryption }),\n ...(input.transitEncryptionPort != null && { transitEncryptionPort: input.transitEncryptionPort }),\n };\n};\nconst serializeAws_json1_1EnvironmentFile = (input, context) => {\n return {\n ...(input.type != null && { type: input.type }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1EnvironmentFiles = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1EnvironmentFile(entry, context);\n });\n};\nconst serializeAws_json1_1EnvironmentVariables = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1KeyValuePair(entry, context);\n });\n};\nconst serializeAws_json1_1EphemeralStorage = (input, context) => {\n return {\n ...(input.sizeInGiB != null && { sizeInGiB: input.sizeInGiB }),\n };\n};\nconst serializeAws_json1_1ExecuteCommandConfiguration = (input, context) => {\n return {\n ...(input.kmsKeyId != null && { kmsKeyId: input.kmsKeyId }),\n ...(input.logConfiguration != null && {\n logConfiguration: serializeAws_json1_1ExecuteCommandLogConfiguration(input.logConfiguration, context),\n }),\n ...(input.logging != null && { logging: input.logging }),\n };\n};\nconst serializeAws_json1_1ExecuteCommandLogConfiguration = (input, context) => {\n return {\n ...(input.cloudWatchEncryptionEnabled != null && {\n cloudWatchEncryptionEnabled: input.cloudWatchEncryptionEnabled,\n }),\n ...(input.cloudWatchLogGroupName != null && { cloudWatchLogGroupName: input.cloudWatchLogGroupName }),\n ...(input.s3BucketName != null && { s3BucketName: input.s3BucketName }),\n ...(input.s3EncryptionEnabled != null && { s3EncryptionEnabled: input.s3EncryptionEnabled }),\n ...(input.s3KeyPrefix != null && { s3KeyPrefix: input.s3KeyPrefix }),\n };\n};\nconst serializeAws_json1_1ExecuteCommandRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.command != null && { command: input.command }),\n ...(input.container != null && { container: input.container }),\n ...(input.interactive != null && { interactive: input.interactive }),\n ...(input.task != null && { task: input.task }),\n };\n};\nconst serializeAws_json1_1FirelensConfiguration = (input, context) => {\n return {\n ...(input.options != null && {\n options: serializeAws_json1_1FirelensConfigurationOptionsMap(input.options, context),\n }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1FirelensConfigurationOptionsMap = (input, context) => {\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\nconst serializeAws_json1_1FSxWindowsFileServerAuthorizationConfig = (input, context) => {\n return {\n ...(input.credentialsParameter != null && { credentialsParameter: input.credentialsParameter }),\n ...(input.domain != null && { domain: input.domain }),\n };\n};\nconst serializeAws_json1_1FSxWindowsFileServerVolumeConfiguration = (input, context) => {\n return {\n ...(input.authorizationConfig != null && {\n authorizationConfig: serializeAws_json1_1FSxWindowsFileServerAuthorizationConfig(input.authorizationConfig, context),\n }),\n ...(input.fileSystemId != null && { fileSystemId: input.fileSystemId }),\n ...(input.rootDirectory != null && { rootDirectory: input.rootDirectory }),\n };\n};\nconst serializeAws_json1_1HealthCheck = (input, context) => {\n return {\n ...(input.command != null && { command: serializeAws_json1_1StringList(input.command, context) }),\n ...(input.interval != null && { interval: input.interval }),\n ...(input.retries != null && { retries: input.retries }),\n ...(input.startPeriod != null && { startPeriod: input.startPeriod }),\n ...(input.timeout != null && { timeout: input.timeout }),\n };\n};\nconst serializeAws_json1_1HostEntry = (input, context) => {\n return {\n ...(input.hostname != null && { hostname: input.hostname }),\n ...(input.ipAddress != null && { ipAddress: input.ipAddress }),\n };\n};\nconst serializeAws_json1_1HostEntryList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1HostEntry(entry, context);\n });\n};\nconst serializeAws_json1_1HostVolumeProperties = (input, context) => {\n return {\n ...(input.sourcePath != null && { sourcePath: input.sourcePath }),\n };\n};\nconst serializeAws_json1_1InferenceAccelerator = (input, context) => {\n return {\n ...(input.deviceName != null && { deviceName: input.deviceName }),\n ...(input.deviceType != null && { deviceType: input.deviceType }),\n };\n};\nconst serializeAws_json1_1InferenceAcceleratorOverride = (input, context) => {\n return {\n ...(input.deviceName != null && { deviceName: input.deviceName }),\n ...(input.deviceType != null && { deviceType: input.deviceType }),\n };\n};\nconst serializeAws_json1_1InferenceAcceleratorOverrides = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1InferenceAcceleratorOverride(entry, context);\n });\n};\nconst serializeAws_json1_1InferenceAccelerators = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1InferenceAccelerator(entry, context);\n });\n};\nconst serializeAws_json1_1KernelCapabilities = (input, context) => {\n return {\n ...(input.add != null && { add: serializeAws_json1_1StringList(input.add, context) }),\n ...(input.drop != null && { drop: serializeAws_json1_1StringList(input.drop, context) }),\n };\n};\nconst serializeAws_json1_1KeyValuePair = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1LinuxParameters = (input, context) => {\n return {\n ...(input.capabilities != null && {\n capabilities: serializeAws_json1_1KernelCapabilities(input.capabilities, context),\n }),\n ...(input.devices != null && { devices: serializeAws_json1_1DevicesList(input.devices, context) }),\n ...(input.initProcessEnabled != null && { initProcessEnabled: input.initProcessEnabled }),\n ...(input.maxSwap != null && { maxSwap: input.maxSwap }),\n ...(input.sharedMemorySize != null && { sharedMemorySize: input.sharedMemorySize }),\n ...(input.swappiness != null && { swappiness: input.swappiness }),\n ...(input.tmpfs != null && { tmpfs: serializeAws_json1_1TmpfsList(input.tmpfs, context) }),\n };\n};\nconst serializeAws_json1_1ListAccountSettingsRequest = (input, context) => {\n return {\n ...(input.effectiveSettings != null && { effectiveSettings: input.effectiveSettings }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.name != null && { name: input.name }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.principalArn != null && { principalArn: input.principalArn }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1ListAttributesRequest = (input, context) => {\n return {\n ...(input.attributeName != null && { attributeName: input.attributeName }),\n ...(input.attributeValue != null && { attributeValue: input.attributeValue }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.targetType != null && { targetType: input.targetType }),\n };\n};\nconst serializeAws_json1_1ListClustersRequest = (input, context) => {\n return {\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n };\n};\nconst serializeAws_json1_1ListContainerInstancesRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.filter != null && { filter: input.filter }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1ListServicesRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.launchType != null && { launchType: input.launchType }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.schedulingStrategy != null && { schedulingStrategy: input.schedulingStrategy }),\n };\n};\nconst serializeAws_json1_1ListTagsForResourceRequest = (input, context) => {\n return {\n ...(input.resourceArn != null && { resourceArn: input.resourceArn }),\n };\n};\nconst serializeAws_json1_1ListTaskDefinitionFamiliesRequest = (input, context) => {\n return {\n ...(input.familyPrefix != null && { familyPrefix: input.familyPrefix }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1ListTaskDefinitionsRequest = (input, context) => {\n return {\n ...(input.familyPrefix != null && { familyPrefix: input.familyPrefix }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.sort != null && { sort: input.sort }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1ListTasksRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstance != null && { containerInstance: input.containerInstance }),\n ...(input.desiredStatus != null && { desiredStatus: input.desiredStatus }),\n ...(input.family != null && { family: input.family }),\n ...(input.launchType != null && { launchType: input.launchType }),\n ...(input.maxResults != null && { maxResults: input.maxResults }),\n ...(input.nextToken != null && { nextToken: input.nextToken }),\n ...(input.serviceName != null && { serviceName: input.serviceName }),\n ...(input.startedBy != null && { startedBy: input.startedBy }),\n };\n};\nconst serializeAws_json1_1LoadBalancer = (input, context) => {\n return {\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.containerPort != null && { containerPort: input.containerPort }),\n ...(input.loadBalancerName != null && { loadBalancerName: input.loadBalancerName }),\n ...(input.targetGroupArn != null && { targetGroupArn: input.targetGroupArn }),\n };\n};\nconst serializeAws_json1_1LoadBalancers = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1LoadBalancer(entry, context);\n });\n};\nconst serializeAws_json1_1LogConfiguration = (input, context) => {\n return {\n ...(input.logDriver != null && { logDriver: input.logDriver }),\n ...(input.options != null && { options: serializeAws_json1_1LogConfigurationOptionsMap(input.options, context) }),\n ...(input.secretOptions != null && { secretOptions: serializeAws_json1_1SecretList(input.secretOptions, context) }),\n };\n};\nconst serializeAws_json1_1LogConfigurationOptionsMap = (input, context) => {\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\nconst serializeAws_json1_1ManagedAgentStateChange = (input, context) => {\n return {\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.managedAgentName != null && { managedAgentName: input.managedAgentName }),\n ...(input.reason != null && { reason: input.reason }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1ManagedAgentStateChanges = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ManagedAgentStateChange(entry, context);\n });\n};\nconst serializeAws_json1_1ManagedScaling = (input, context) => {\n return {\n ...(input.instanceWarmupPeriod != null && { instanceWarmupPeriod: input.instanceWarmupPeriod }),\n ...(input.maximumScalingStepSize != null && { maximumScalingStepSize: input.maximumScalingStepSize }),\n ...(input.minimumScalingStepSize != null && { minimumScalingStepSize: input.minimumScalingStepSize }),\n ...(input.status != null && { status: input.status }),\n ...(input.targetCapacity != null && { targetCapacity: input.targetCapacity }),\n };\n};\nconst serializeAws_json1_1MountPoint = (input, context) => {\n return {\n ...(input.containerPath != null && { containerPath: input.containerPath }),\n ...(input.readOnly != null && { readOnly: input.readOnly }),\n ...(input.sourceVolume != null && { sourceVolume: input.sourceVolume }),\n };\n};\nconst serializeAws_json1_1MountPointList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1MountPoint(entry, context);\n });\n};\nconst serializeAws_json1_1NetworkBinding = (input, context) => {\n return {\n ...(input.bindIP != null && { bindIP: input.bindIP }),\n ...(input.containerPort != null && { containerPort: input.containerPort }),\n ...(input.hostPort != null && { hostPort: input.hostPort }),\n ...(input.protocol != null && { protocol: input.protocol }),\n };\n};\nconst serializeAws_json1_1NetworkBindings = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1NetworkBinding(entry, context);\n });\n};\nconst serializeAws_json1_1NetworkConfiguration = (input, context) => {\n return {\n ...(input.awsvpcConfiguration != null && {\n awsvpcConfiguration: serializeAws_json1_1AwsVpcConfiguration(input.awsvpcConfiguration, context),\n }),\n };\n};\nconst serializeAws_json1_1PlacementConstraint = (input, context) => {\n return {\n ...(input.expression != null && { expression: input.expression }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1PlacementConstraints = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1PlacementConstraint(entry, context);\n });\n};\nconst serializeAws_json1_1PlacementStrategies = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1PlacementStrategy(entry, context);\n });\n};\nconst serializeAws_json1_1PlacementStrategy = (input, context) => {\n return {\n ...(input.field != null && { field: input.field }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1PlatformDevice = (input, context) => {\n return {\n ...(input.id != null && { id: input.id }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1PlatformDevices = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1PlatformDevice(entry, context);\n });\n};\nconst serializeAws_json1_1PortMapping = (input, context) => {\n return {\n ...(input.containerPort != null && { containerPort: input.containerPort }),\n ...(input.hostPort != null && { hostPort: input.hostPort }),\n ...(input.protocol != null && { protocol: input.protocol }),\n };\n};\nconst serializeAws_json1_1PortMappingList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1PortMapping(entry, context);\n });\n};\nconst serializeAws_json1_1ProxyConfiguration = (input, context) => {\n return {\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.properties != null && {\n properties: serializeAws_json1_1ProxyConfigurationProperties(input.properties, context),\n }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1ProxyConfigurationProperties = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1KeyValuePair(entry, context);\n });\n};\nconst serializeAws_json1_1PutAccountSettingDefaultRequest = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1PutAccountSettingRequest = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.principalArn != null && { principalArn: input.principalArn }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1PutAttributesRequest = (input, context) => {\n return {\n ...(input.attributes != null && { attributes: serializeAws_json1_1Attributes(input.attributes, context) }),\n ...(input.cluster != null && { cluster: input.cluster }),\n };\n};\nconst serializeAws_json1_1PutClusterCapacityProvidersRequest = (input, context) => {\n return {\n ...(input.capacityProviders != null && {\n capacityProviders: serializeAws_json1_1StringList(input.capacityProviders, context),\n }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.defaultCapacityProviderStrategy != null && {\n defaultCapacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.defaultCapacityProviderStrategy, context),\n }),\n };\n};\nconst serializeAws_json1_1RegisterContainerInstanceRequest = (input, context) => {\n return {\n ...(input.attributes != null && { attributes: serializeAws_json1_1Attributes(input.attributes, context) }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstanceArn != null && { containerInstanceArn: input.containerInstanceArn }),\n ...(input.instanceIdentityDocument != null && { instanceIdentityDocument: input.instanceIdentityDocument }),\n ...(input.instanceIdentityDocumentSignature != null && {\n instanceIdentityDocumentSignature: input.instanceIdentityDocumentSignature,\n }),\n ...(input.platformDevices != null && {\n platformDevices: serializeAws_json1_1PlatformDevices(input.platformDevices, context),\n }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.totalResources != null && {\n totalResources: serializeAws_json1_1Resources(input.totalResources, context),\n }),\n ...(input.versionInfo != null && { versionInfo: serializeAws_json1_1VersionInfo(input.versionInfo, context) }),\n };\n};\nconst serializeAws_json1_1RegisterTaskDefinitionRequest = (input, context) => {\n return {\n ...(input.containerDefinitions != null && {\n containerDefinitions: serializeAws_json1_1ContainerDefinitions(input.containerDefinitions, context),\n }),\n ...(input.cpu != null && { cpu: input.cpu }),\n ...(input.ephemeralStorage != null && {\n ephemeralStorage: serializeAws_json1_1EphemeralStorage(input.ephemeralStorage, context),\n }),\n ...(input.executionRoleArn != null && { executionRoleArn: input.executionRoleArn }),\n ...(input.family != null && { family: input.family }),\n ...(input.inferenceAccelerators != null && {\n inferenceAccelerators: serializeAws_json1_1InferenceAccelerators(input.inferenceAccelerators, context),\n }),\n ...(input.ipcMode != null && { ipcMode: input.ipcMode }),\n ...(input.memory != null && { memory: input.memory }),\n ...(input.networkMode != null && { networkMode: input.networkMode }),\n ...(input.pidMode != null && { pidMode: input.pidMode }),\n ...(input.placementConstraints != null && {\n placementConstraints: serializeAws_json1_1TaskDefinitionPlacementConstraints(input.placementConstraints, context),\n }),\n ...(input.proxyConfiguration != null && {\n proxyConfiguration: serializeAws_json1_1ProxyConfiguration(input.proxyConfiguration, context),\n }),\n ...(input.requiresCompatibilities != null && {\n requiresCompatibilities: serializeAws_json1_1CompatibilityList(input.requiresCompatibilities, context),\n }),\n ...(input.runtimePlatform != null && {\n runtimePlatform: serializeAws_json1_1RuntimePlatform(input.runtimePlatform, context),\n }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.taskRoleArn != null && { taskRoleArn: input.taskRoleArn }),\n ...(input.volumes != null && { volumes: serializeAws_json1_1VolumeList(input.volumes, context) }),\n };\n};\nconst serializeAws_json1_1RepositoryCredentials = (input, context) => {\n return {\n ...(input.credentialsParameter != null && { credentialsParameter: input.credentialsParameter }),\n };\n};\nconst serializeAws_json1_1Resource = (input, context) => {\n return {\n ...(input.doubleValue != null && { doubleValue: (0, smithy_client_1.serializeFloat)(input.doubleValue) }),\n ...(input.integerValue != null && { integerValue: input.integerValue }),\n ...(input.longValue != null && { longValue: input.longValue }),\n ...(input.name != null && { name: input.name }),\n ...(input.stringSetValue != null && {\n stringSetValue: serializeAws_json1_1StringList(input.stringSetValue, context),\n }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1ResourceRequirement = (input, context) => {\n return {\n ...(input.type != null && { type: input.type }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1ResourceRequirements = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ResourceRequirement(entry, context);\n });\n};\nconst serializeAws_json1_1Resources = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Resource(entry, context);\n });\n};\nconst serializeAws_json1_1RunTaskRequest = (input, context) => {\n return {\n ...(input.capacityProviderStrategy != null && {\n capacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.capacityProviderStrategy, context),\n }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.count != null && { count: input.count }),\n ...(input.enableECSManagedTags != null && { enableECSManagedTags: input.enableECSManagedTags }),\n ...(input.enableExecuteCommand != null && { enableExecuteCommand: input.enableExecuteCommand }),\n ...(input.group != null && { group: input.group }),\n ...(input.launchType != null && { launchType: input.launchType }),\n ...(input.networkConfiguration != null && {\n networkConfiguration: serializeAws_json1_1NetworkConfiguration(input.networkConfiguration, context),\n }),\n ...(input.overrides != null && { overrides: serializeAws_json1_1TaskOverride(input.overrides, context) }),\n ...(input.placementConstraints != null && {\n placementConstraints: serializeAws_json1_1PlacementConstraints(input.placementConstraints, context),\n }),\n ...(input.placementStrategy != null && {\n placementStrategy: serializeAws_json1_1PlacementStrategies(input.placementStrategy, context),\n }),\n ...(input.platformVersion != null && { platformVersion: input.platformVersion }),\n ...(input.propagateTags != null && { propagateTags: input.propagateTags }),\n ...(input.referenceId != null && { referenceId: input.referenceId }),\n ...(input.startedBy != null && { startedBy: input.startedBy }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1RuntimePlatform = (input, context) => {\n return {\n ...(input.cpuArchitecture != null && { cpuArchitecture: input.cpuArchitecture }),\n ...(input.operatingSystemFamily != null && { operatingSystemFamily: input.operatingSystemFamily }),\n };\n};\nconst serializeAws_json1_1Scale = (input, context) => {\n return {\n ...(input.unit != null && { unit: input.unit }),\n ...(input.value != null && { value: (0, smithy_client_1.serializeFloat)(input.value) }),\n };\n};\nconst serializeAws_json1_1Secret = (input, context) => {\n return {\n ...(input.name != null && { name: input.name }),\n ...(input.valueFrom != null && { valueFrom: input.valueFrom }),\n };\n};\nconst serializeAws_json1_1SecretList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Secret(entry, context);\n });\n};\nconst serializeAws_json1_1ServiceFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1ServiceRegistries = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1ServiceRegistry(entry, context);\n });\n};\nconst serializeAws_json1_1ServiceRegistry = (input, context) => {\n return {\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.containerPort != null && { containerPort: input.containerPort }),\n ...(input.port != null && { port: input.port }),\n ...(input.registryArn != null && { registryArn: input.registryArn }),\n };\n};\nconst serializeAws_json1_1StartTaskRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstances != null && {\n containerInstances: serializeAws_json1_1StringList(input.containerInstances, context),\n }),\n ...(input.enableECSManagedTags != null && { enableECSManagedTags: input.enableECSManagedTags }),\n ...(input.enableExecuteCommand != null && { enableExecuteCommand: input.enableExecuteCommand }),\n ...(input.group != null && { group: input.group }),\n ...(input.networkConfiguration != null && {\n networkConfiguration: serializeAws_json1_1NetworkConfiguration(input.networkConfiguration, context),\n }),\n ...(input.overrides != null && { overrides: serializeAws_json1_1TaskOverride(input.overrides, context) }),\n ...(input.propagateTags != null && { propagateTags: input.propagateTags }),\n ...(input.referenceId != null && { referenceId: input.referenceId }),\n ...(input.startedBy != null && { startedBy: input.startedBy }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1StopTaskRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.reason != null && { reason: input.reason }),\n ...(input.task != null && { task: input.task }),\n };\n};\nconst serializeAws_json1_1StringList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1StringMap = (input, context) => {\n return Object.entries(input).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n};\nconst serializeAws_json1_1SubmitAttachmentStateChangesRequest = (input, context) => {\n return {\n ...(input.attachments != null && {\n attachments: serializeAws_json1_1AttachmentStateChanges(input.attachments, context),\n }),\n ...(input.cluster != null && { cluster: input.cluster }),\n };\n};\nconst serializeAws_json1_1SubmitContainerStateChangeRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerName != null && { containerName: input.containerName }),\n ...(input.exitCode != null && { exitCode: input.exitCode }),\n ...(input.networkBindings != null && {\n networkBindings: serializeAws_json1_1NetworkBindings(input.networkBindings, context),\n }),\n ...(input.reason != null && { reason: input.reason }),\n ...(input.runtimeId != null && { runtimeId: input.runtimeId }),\n ...(input.status != null && { status: input.status }),\n ...(input.task != null && { task: input.task }),\n };\n};\nconst serializeAws_json1_1SubmitTaskStateChangeRequest = (input, context) => {\n return {\n ...(input.attachments != null && {\n attachments: serializeAws_json1_1AttachmentStateChanges(input.attachments, context),\n }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containers != null && {\n containers: serializeAws_json1_1ContainerStateChanges(input.containers, context),\n }),\n ...(input.executionStoppedAt != null && {\n executionStoppedAt: Math.round(input.executionStoppedAt.getTime() / 1000),\n }),\n ...(input.managedAgents != null && {\n managedAgents: serializeAws_json1_1ManagedAgentStateChanges(input.managedAgents, context),\n }),\n ...(input.pullStartedAt != null && { pullStartedAt: Math.round(input.pullStartedAt.getTime() / 1000) }),\n ...(input.pullStoppedAt != null && { pullStoppedAt: Math.round(input.pullStoppedAt.getTime() / 1000) }),\n ...(input.reason != null && { reason: input.reason }),\n ...(input.status != null && { status: input.status }),\n ...(input.task != null && { task: input.task }),\n };\n};\nconst serializeAws_json1_1SystemControl = (input, context) => {\n return {\n ...(input.namespace != null && { namespace: input.namespace }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1SystemControls = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1SystemControl(entry, context);\n });\n};\nconst serializeAws_json1_1Tag = (input, context) => {\n return {\n ...(input.key != null && { key: input.key }),\n ...(input.value != null && { value: input.value }),\n };\n};\nconst serializeAws_json1_1TagKeys = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1TagResourceRequest = (input, context) => {\n return {\n ...(input.resourceArn != null && { resourceArn: input.resourceArn }),\n ...(input.tags != null && { tags: serializeAws_json1_1Tags(input.tags, context) }),\n };\n};\nconst serializeAws_json1_1Tags = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Tag(entry, context);\n });\n};\nconst serializeAws_json1_1TaskDefinitionFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1TaskDefinitionPlacementConstraint = (input, context) => {\n return {\n ...(input.expression != null && { expression: input.expression }),\n ...(input.type != null && { type: input.type }),\n };\n};\nconst serializeAws_json1_1TaskDefinitionPlacementConstraints = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1TaskDefinitionPlacementConstraint(entry, context);\n });\n};\nconst serializeAws_json1_1TaskFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1TaskOverride = (input, context) => {\n return {\n ...(input.containerOverrides != null && {\n containerOverrides: serializeAws_json1_1ContainerOverrides(input.containerOverrides, context),\n }),\n ...(input.cpu != null && { cpu: input.cpu }),\n ...(input.ephemeralStorage != null && {\n ephemeralStorage: serializeAws_json1_1EphemeralStorage(input.ephemeralStorage, context),\n }),\n ...(input.executionRoleArn != null && { executionRoleArn: input.executionRoleArn }),\n ...(input.inferenceAcceleratorOverrides != null && {\n inferenceAcceleratorOverrides: serializeAws_json1_1InferenceAcceleratorOverrides(input.inferenceAcceleratorOverrides, context),\n }),\n ...(input.memory != null && { memory: input.memory }),\n ...(input.taskRoleArn != null && { taskRoleArn: input.taskRoleArn }),\n };\n};\nconst serializeAws_json1_1TaskSetFieldList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return entry;\n });\n};\nconst serializeAws_json1_1Tmpfs = (input, context) => {\n return {\n ...(input.containerPath != null && { containerPath: input.containerPath }),\n ...(input.mountOptions != null && { mountOptions: serializeAws_json1_1StringList(input.mountOptions, context) }),\n ...(input.size != null && { size: input.size }),\n };\n};\nconst serializeAws_json1_1TmpfsList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Tmpfs(entry, context);\n });\n};\nconst serializeAws_json1_1Ulimit = (input, context) => {\n return {\n ...(input.hardLimit != null && { hardLimit: input.hardLimit }),\n ...(input.name != null && { name: input.name }),\n ...(input.softLimit != null && { softLimit: input.softLimit }),\n };\n};\nconst serializeAws_json1_1UlimitList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Ulimit(entry, context);\n });\n};\nconst serializeAws_json1_1UntagResourceRequest = (input, context) => {\n return {\n ...(input.resourceArn != null && { resourceArn: input.resourceArn }),\n ...(input.tagKeys != null && { tagKeys: serializeAws_json1_1TagKeys(input.tagKeys, context) }),\n };\n};\nconst serializeAws_json1_1UpdateCapacityProviderRequest = (input, context) => {\n return {\n ...(input.autoScalingGroupProvider != null && {\n autoScalingGroupProvider: serializeAws_json1_1AutoScalingGroupProviderUpdate(input.autoScalingGroupProvider, context),\n }),\n ...(input.name != null && { name: input.name }),\n };\n};\nconst serializeAws_json1_1UpdateClusterRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.configuration != null && {\n configuration: serializeAws_json1_1ClusterConfiguration(input.configuration, context),\n }),\n ...(input.settings != null && { settings: serializeAws_json1_1ClusterSettings(input.settings, context) }),\n };\n};\nconst serializeAws_json1_1UpdateClusterSettingsRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.settings != null && { settings: serializeAws_json1_1ClusterSettings(input.settings, context) }),\n };\n};\nconst serializeAws_json1_1UpdateContainerAgentRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstance != null && { containerInstance: input.containerInstance }),\n };\n};\nconst serializeAws_json1_1UpdateContainerInstancesStateRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.containerInstances != null && {\n containerInstances: serializeAws_json1_1StringList(input.containerInstances, context),\n }),\n ...(input.status != null && { status: input.status }),\n };\n};\nconst serializeAws_json1_1UpdateServicePrimaryTaskSetRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.primaryTaskSet != null && { primaryTaskSet: input.primaryTaskSet }),\n ...(input.service != null && { service: input.service }),\n };\n};\nconst serializeAws_json1_1UpdateServiceRequest = (input, context) => {\n return {\n ...(input.capacityProviderStrategy != null && {\n capacityProviderStrategy: serializeAws_json1_1CapacityProviderStrategy(input.capacityProviderStrategy, context),\n }),\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.deploymentConfiguration != null && {\n deploymentConfiguration: serializeAws_json1_1DeploymentConfiguration(input.deploymentConfiguration, context),\n }),\n ...(input.desiredCount != null && { desiredCount: input.desiredCount }),\n ...(input.enableECSManagedTags != null && { enableECSManagedTags: input.enableECSManagedTags }),\n ...(input.enableExecuteCommand != null && { enableExecuteCommand: input.enableExecuteCommand }),\n ...(input.forceNewDeployment != null && { forceNewDeployment: input.forceNewDeployment }),\n ...(input.healthCheckGracePeriodSeconds != null && {\n healthCheckGracePeriodSeconds: input.healthCheckGracePeriodSeconds,\n }),\n ...(input.loadBalancers != null && {\n loadBalancers: serializeAws_json1_1LoadBalancers(input.loadBalancers, context),\n }),\n ...(input.networkConfiguration != null && {\n networkConfiguration: serializeAws_json1_1NetworkConfiguration(input.networkConfiguration, context),\n }),\n ...(input.placementConstraints != null && {\n placementConstraints: serializeAws_json1_1PlacementConstraints(input.placementConstraints, context),\n }),\n ...(input.placementStrategy != null && {\n placementStrategy: serializeAws_json1_1PlacementStrategies(input.placementStrategy, context),\n }),\n ...(input.platformVersion != null && { platformVersion: input.platformVersion }),\n ...(input.propagateTags != null && { propagateTags: input.propagateTags }),\n ...(input.service != null && { service: input.service }),\n ...(input.serviceRegistries != null && {\n serviceRegistries: serializeAws_json1_1ServiceRegistries(input.serviceRegistries, context),\n }),\n ...(input.taskDefinition != null && { taskDefinition: input.taskDefinition }),\n };\n};\nconst serializeAws_json1_1UpdateTaskSetRequest = (input, context) => {\n return {\n ...(input.cluster != null && { cluster: input.cluster }),\n ...(input.scale != null && { scale: serializeAws_json1_1Scale(input.scale, context) }),\n ...(input.service != null && { service: input.service }),\n ...(input.taskSet != null && { taskSet: input.taskSet }),\n };\n};\nconst serializeAws_json1_1VersionInfo = (input, context) => {\n return {\n ...(input.agentHash != null && { agentHash: input.agentHash }),\n ...(input.agentVersion != null && { agentVersion: input.agentVersion }),\n ...(input.dockerVersion != null && { dockerVersion: input.dockerVersion }),\n };\n};\nconst serializeAws_json1_1Volume = (input, context) => {\n return {\n ...(input.dockerVolumeConfiguration != null && {\n dockerVolumeConfiguration: serializeAws_json1_1DockerVolumeConfiguration(input.dockerVolumeConfiguration, context),\n }),\n ...(input.efsVolumeConfiguration != null && {\n efsVolumeConfiguration: serializeAws_json1_1EFSVolumeConfiguration(input.efsVolumeConfiguration, context),\n }),\n ...(input.fsxWindowsFileServerVolumeConfiguration != null && {\n fsxWindowsFileServerVolumeConfiguration: serializeAws_json1_1FSxWindowsFileServerVolumeConfiguration(input.fsxWindowsFileServerVolumeConfiguration, context),\n }),\n ...(input.host != null && { host: serializeAws_json1_1HostVolumeProperties(input.host, context) }),\n ...(input.name != null && { name: input.name }),\n };\n};\nconst serializeAws_json1_1VolumeFrom = (input, context) => {\n return {\n ...(input.readOnly != null && { readOnly: input.readOnly }),\n ...(input.sourceContainer != null && { sourceContainer: input.sourceContainer }),\n };\n};\nconst serializeAws_json1_1VolumeFromList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1VolumeFrom(entry, context);\n });\n};\nconst serializeAws_json1_1VolumeList = (input, context) => {\n return input\n .filter((e) => e != null)\n .map((entry) => {\n return serializeAws_json1_1Volume(entry, context);\n });\n};\nconst deserializeAws_json1_1AccessDeniedException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Attachment = (output, context) => {\n return {\n details: output.details != null ? deserializeAws_json1_1AttachmentDetails(output.details, context) : undefined,\n id: (0, smithy_client_1.expectString)(output.id),\n status: (0, smithy_client_1.expectString)(output.status),\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1AttachmentDetails = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1KeyValuePair(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Attachments = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Attachment(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Attribute = (output, context) => {\n return {\n name: (0, smithy_client_1.expectString)(output.name),\n targetId: (0, smithy_client_1.expectString)(output.targetId),\n targetType: (0, smithy_client_1.expectString)(output.targetType),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1AttributeLimitExceededException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Attributes = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Attribute(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1AutoScalingGroupProvider = (output, context) => {\n return {\n autoScalingGroupArn: (0, smithy_client_1.expectString)(output.autoScalingGroupArn),\n managedScaling: output.managedScaling != null ? deserializeAws_json1_1ManagedScaling(output.managedScaling, context) : undefined,\n managedTerminationProtection: (0, smithy_client_1.expectString)(output.managedTerminationProtection),\n };\n};\nconst deserializeAws_json1_1AwsVpcConfiguration = (output, context) => {\n return {\n assignPublicIp: (0, smithy_client_1.expectString)(output.assignPublicIp),\n securityGroups: output.securityGroups != null ? deserializeAws_json1_1StringList(output.securityGroups, context) : undefined,\n subnets: output.subnets != null ? deserializeAws_json1_1StringList(output.subnets, context) : undefined,\n };\n};\nconst deserializeAws_json1_1BlockedException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1CapacityProvider = (output, context) => {\n return {\n autoScalingGroupProvider: output.autoScalingGroupProvider != null\n ? deserializeAws_json1_1AutoScalingGroupProvider(output.autoScalingGroupProvider, context)\n : undefined,\n capacityProviderArn: (0, smithy_client_1.expectString)(output.capacityProviderArn),\n name: (0, smithy_client_1.expectString)(output.name),\n status: (0, smithy_client_1.expectString)(output.status),\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n updateStatus: (0, smithy_client_1.expectString)(output.updateStatus),\n updateStatusReason: (0, smithy_client_1.expectString)(output.updateStatusReason),\n };\n};\nconst deserializeAws_json1_1CapacityProviders = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1CapacityProvider(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1CapacityProviderStrategy = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1CapacityProviderStrategyItem(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1CapacityProviderStrategyItem = (output, context) => {\n return {\n base: (0, smithy_client_1.expectInt32)(output.base),\n capacityProvider: (0, smithy_client_1.expectString)(output.capacityProvider),\n weight: (0, smithy_client_1.expectInt32)(output.weight),\n };\n};\nconst deserializeAws_json1_1ClientException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Cluster = (output, context) => {\n return {\n activeServicesCount: (0, smithy_client_1.expectInt32)(output.activeServicesCount),\n attachments: output.attachments != null ? deserializeAws_json1_1Attachments(output.attachments, context) : undefined,\n attachmentsStatus: (0, smithy_client_1.expectString)(output.attachmentsStatus),\n capacityProviders: output.capacityProviders != null\n ? deserializeAws_json1_1StringList(output.capacityProviders, context)\n : undefined,\n clusterArn: (0, smithy_client_1.expectString)(output.clusterArn),\n clusterName: (0, smithy_client_1.expectString)(output.clusterName),\n configuration: output.configuration != null\n ? deserializeAws_json1_1ClusterConfiguration(output.configuration, context)\n : undefined,\n defaultCapacityProviderStrategy: output.defaultCapacityProviderStrategy != null\n ? deserializeAws_json1_1CapacityProviderStrategy(output.defaultCapacityProviderStrategy, context)\n : undefined,\n pendingTasksCount: (0, smithy_client_1.expectInt32)(output.pendingTasksCount),\n registeredContainerInstancesCount: (0, smithy_client_1.expectInt32)(output.registeredContainerInstancesCount),\n runningTasksCount: (0, smithy_client_1.expectInt32)(output.runningTasksCount),\n settings: output.settings != null ? deserializeAws_json1_1ClusterSettings(output.settings, context) : undefined,\n statistics: output.statistics != null ? deserializeAws_json1_1Statistics(output.statistics, context) : undefined,\n status: (0, smithy_client_1.expectString)(output.status),\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ClusterConfiguration = (output, context) => {\n return {\n executeCommandConfiguration: output.executeCommandConfiguration != null\n ? deserializeAws_json1_1ExecuteCommandConfiguration(output.executeCommandConfiguration, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1ClusterContainsContainerInstancesException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ClusterContainsServicesException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ClusterContainsTasksException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ClusterNotFoundException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Clusters = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Cluster(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ClusterSetting = (output, context) => {\n return {\n name: (0, smithy_client_1.expectString)(output.name),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1ClusterSettings = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ClusterSetting(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1CompatibilityList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return (0, smithy_client_1.expectString)(entry);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Container = (output, context) => {\n return {\n containerArn: (0, smithy_client_1.expectString)(output.containerArn),\n cpu: (0, smithy_client_1.expectString)(output.cpu),\n exitCode: (0, smithy_client_1.expectInt32)(output.exitCode),\n gpuIds: output.gpuIds != null ? deserializeAws_json1_1GpuIds(output.gpuIds, context) : undefined,\n healthStatus: (0, smithy_client_1.expectString)(output.healthStatus),\n image: (0, smithy_client_1.expectString)(output.image),\n imageDigest: (0, smithy_client_1.expectString)(output.imageDigest),\n lastStatus: (0, smithy_client_1.expectString)(output.lastStatus),\n managedAgents: output.managedAgents != null ? deserializeAws_json1_1ManagedAgents(output.managedAgents, context) : undefined,\n memory: (0, smithy_client_1.expectString)(output.memory),\n memoryReservation: (0, smithy_client_1.expectString)(output.memoryReservation),\n name: (0, smithy_client_1.expectString)(output.name),\n networkBindings: output.networkBindings != null\n ? deserializeAws_json1_1NetworkBindings(output.networkBindings, context)\n : undefined,\n networkInterfaces: output.networkInterfaces != null\n ? deserializeAws_json1_1NetworkInterfaces(output.networkInterfaces, context)\n : undefined,\n reason: (0, smithy_client_1.expectString)(output.reason),\n runtimeId: (0, smithy_client_1.expectString)(output.runtimeId),\n taskArn: (0, smithy_client_1.expectString)(output.taskArn),\n };\n};\nconst deserializeAws_json1_1ContainerDefinition = (output, context) => {\n return {\n command: output.command != null ? deserializeAws_json1_1StringList(output.command, context) : undefined,\n cpu: (0, smithy_client_1.expectInt32)(output.cpu),\n dependsOn: output.dependsOn != null ? deserializeAws_json1_1ContainerDependencies(output.dependsOn, context) : undefined,\n disableNetworking: (0, smithy_client_1.expectBoolean)(output.disableNetworking),\n dnsSearchDomains: output.dnsSearchDomains != null ? deserializeAws_json1_1StringList(output.dnsSearchDomains, context) : undefined,\n dnsServers: output.dnsServers != null ? deserializeAws_json1_1StringList(output.dnsServers, context) : undefined,\n dockerLabels: output.dockerLabels != null ? deserializeAws_json1_1DockerLabelsMap(output.dockerLabels, context) : undefined,\n dockerSecurityOptions: output.dockerSecurityOptions != null\n ? deserializeAws_json1_1StringList(output.dockerSecurityOptions, context)\n : undefined,\n entryPoint: output.entryPoint != null ? deserializeAws_json1_1StringList(output.entryPoint, context) : undefined,\n environment: output.environment != null ? deserializeAws_json1_1EnvironmentVariables(output.environment, context) : undefined,\n environmentFiles: output.environmentFiles != null\n ? deserializeAws_json1_1EnvironmentFiles(output.environmentFiles, context)\n : undefined,\n essential: (0, smithy_client_1.expectBoolean)(output.essential),\n extraHosts: output.extraHosts != null ? deserializeAws_json1_1HostEntryList(output.extraHosts, context) : undefined,\n firelensConfiguration: output.firelensConfiguration != null\n ? deserializeAws_json1_1FirelensConfiguration(output.firelensConfiguration, context)\n : undefined,\n healthCheck: output.healthCheck != null ? deserializeAws_json1_1HealthCheck(output.healthCheck, context) : undefined,\n hostname: (0, smithy_client_1.expectString)(output.hostname),\n image: (0, smithy_client_1.expectString)(output.image),\n interactive: (0, smithy_client_1.expectBoolean)(output.interactive),\n links: output.links != null ? deserializeAws_json1_1StringList(output.links, context) : undefined,\n linuxParameters: output.linuxParameters != null\n ? deserializeAws_json1_1LinuxParameters(output.linuxParameters, context)\n : undefined,\n logConfiguration: output.logConfiguration != null\n ? deserializeAws_json1_1LogConfiguration(output.logConfiguration, context)\n : undefined,\n memory: (0, smithy_client_1.expectInt32)(output.memory),\n memoryReservation: (0, smithy_client_1.expectInt32)(output.memoryReservation),\n mountPoints: output.mountPoints != null ? deserializeAws_json1_1MountPointList(output.mountPoints, context) : undefined,\n name: (0, smithy_client_1.expectString)(output.name),\n portMappings: output.portMappings != null ? deserializeAws_json1_1PortMappingList(output.portMappings, context) : undefined,\n privileged: (0, smithy_client_1.expectBoolean)(output.privileged),\n pseudoTerminal: (0, smithy_client_1.expectBoolean)(output.pseudoTerminal),\n readonlyRootFilesystem: (0, smithy_client_1.expectBoolean)(output.readonlyRootFilesystem),\n repositoryCredentials: output.repositoryCredentials != null\n ? deserializeAws_json1_1RepositoryCredentials(output.repositoryCredentials, context)\n : undefined,\n resourceRequirements: output.resourceRequirements != null\n ? deserializeAws_json1_1ResourceRequirements(output.resourceRequirements, context)\n : undefined,\n secrets: output.secrets != null ? deserializeAws_json1_1SecretList(output.secrets, context) : undefined,\n startTimeout: (0, smithy_client_1.expectInt32)(output.startTimeout),\n stopTimeout: (0, smithy_client_1.expectInt32)(output.stopTimeout),\n systemControls: output.systemControls != null ? deserializeAws_json1_1SystemControls(output.systemControls, context) : undefined,\n ulimits: output.ulimits != null ? deserializeAws_json1_1UlimitList(output.ulimits, context) : undefined,\n user: (0, smithy_client_1.expectString)(output.user),\n volumesFrom: output.volumesFrom != null ? deserializeAws_json1_1VolumeFromList(output.volumesFrom, context) : undefined,\n workingDirectory: (0, smithy_client_1.expectString)(output.workingDirectory),\n };\n};\nconst deserializeAws_json1_1ContainerDefinitions = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ContainerDefinition(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ContainerDependencies = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ContainerDependency(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ContainerDependency = (output, context) => {\n return {\n condition: (0, smithy_client_1.expectString)(output.condition),\n containerName: (0, smithy_client_1.expectString)(output.containerName),\n };\n};\nconst deserializeAws_json1_1ContainerInstance = (output, context) => {\n return {\n agentConnected: (0, smithy_client_1.expectBoolean)(output.agentConnected),\n agentUpdateStatus: (0, smithy_client_1.expectString)(output.agentUpdateStatus),\n attachments: output.attachments != null ? deserializeAws_json1_1Attachments(output.attachments, context) : undefined,\n attributes: output.attributes != null ? deserializeAws_json1_1Attributes(output.attributes, context) : undefined,\n capacityProviderName: (0, smithy_client_1.expectString)(output.capacityProviderName),\n containerInstanceArn: (0, smithy_client_1.expectString)(output.containerInstanceArn),\n ec2InstanceId: (0, smithy_client_1.expectString)(output.ec2InstanceId),\n healthStatus: output.healthStatus != null\n ? deserializeAws_json1_1ContainerInstanceHealthStatus(output.healthStatus, context)\n : undefined,\n pendingTasksCount: (0, smithy_client_1.expectInt32)(output.pendingTasksCount),\n registeredAt: output.registeredAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.registeredAt)))\n : undefined,\n registeredResources: output.registeredResources != null\n ? deserializeAws_json1_1Resources(output.registeredResources, context)\n : undefined,\n remainingResources: output.remainingResources != null\n ? deserializeAws_json1_1Resources(output.remainingResources, context)\n : undefined,\n runningTasksCount: (0, smithy_client_1.expectInt32)(output.runningTasksCount),\n status: (0, smithy_client_1.expectString)(output.status),\n statusReason: (0, smithy_client_1.expectString)(output.statusReason),\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n version: (0, smithy_client_1.expectLong)(output.version),\n versionInfo: output.versionInfo != null ? deserializeAws_json1_1VersionInfo(output.versionInfo, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ContainerInstanceHealthStatus = (output, context) => {\n return {\n details: output.details != null ? deserializeAws_json1_1InstanceHealthCheckResultList(output.details, context) : undefined,\n overallStatus: (0, smithy_client_1.expectString)(output.overallStatus),\n };\n};\nconst deserializeAws_json1_1ContainerInstances = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ContainerInstance(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ContainerOverride = (output, context) => {\n return {\n command: output.command != null ? deserializeAws_json1_1StringList(output.command, context) : undefined,\n cpu: (0, smithy_client_1.expectInt32)(output.cpu),\n environment: output.environment != null ? deserializeAws_json1_1EnvironmentVariables(output.environment, context) : undefined,\n environmentFiles: output.environmentFiles != null\n ? deserializeAws_json1_1EnvironmentFiles(output.environmentFiles, context)\n : undefined,\n memory: (0, smithy_client_1.expectInt32)(output.memory),\n memoryReservation: (0, smithy_client_1.expectInt32)(output.memoryReservation),\n name: (0, smithy_client_1.expectString)(output.name),\n resourceRequirements: output.resourceRequirements != null\n ? deserializeAws_json1_1ResourceRequirements(output.resourceRequirements, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1ContainerOverrides = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ContainerOverride(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Containers = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Container(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1CreateCapacityProviderResponse = (output, context) => {\n return {\n capacityProvider: output.capacityProvider != null\n ? deserializeAws_json1_1CapacityProvider(output.capacityProvider, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1CreateClusterResponse = (output, context) => {\n return {\n cluster: output.cluster != null ? deserializeAws_json1_1Cluster(output.cluster, context) : undefined,\n };\n};\nconst deserializeAws_json1_1CreateServiceResponse = (output, context) => {\n return {\n service: output.service != null ? deserializeAws_json1_1Service(output.service, context) : undefined,\n };\n};\nconst deserializeAws_json1_1CreateTaskSetResponse = (output, context) => {\n return {\n taskSet: output.taskSet != null ? deserializeAws_json1_1TaskSet(output.taskSet, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteAccountSettingResponse = (output, context) => {\n return {\n setting: output.setting != null ? deserializeAws_json1_1Setting(output.setting, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteAttributesResponse = (output, context) => {\n return {\n attributes: output.attributes != null ? deserializeAws_json1_1Attributes(output.attributes, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteCapacityProviderResponse = (output, context) => {\n return {\n capacityProvider: output.capacityProvider != null\n ? deserializeAws_json1_1CapacityProvider(output.capacityProvider, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteClusterResponse = (output, context) => {\n return {\n cluster: output.cluster != null ? deserializeAws_json1_1Cluster(output.cluster, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteServiceResponse = (output, context) => {\n return {\n service: output.service != null ? deserializeAws_json1_1Service(output.service, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DeleteTaskSetResponse = (output, context) => {\n return {\n taskSet: output.taskSet != null ? deserializeAws_json1_1TaskSet(output.taskSet, context) : undefined,\n };\n};\nconst deserializeAws_json1_1Deployment = (output, context) => {\n return {\n capacityProviderStrategy: output.capacityProviderStrategy != null\n ? deserializeAws_json1_1CapacityProviderStrategy(output.capacityProviderStrategy, context)\n : undefined,\n createdAt: output.createdAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.createdAt))) : undefined,\n desiredCount: (0, smithy_client_1.expectInt32)(output.desiredCount),\n failedTasks: (0, smithy_client_1.expectInt32)(output.failedTasks),\n id: (0, smithy_client_1.expectString)(output.id),\n launchType: (0, smithy_client_1.expectString)(output.launchType),\n networkConfiguration: output.networkConfiguration != null\n ? deserializeAws_json1_1NetworkConfiguration(output.networkConfiguration, context)\n : undefined,\n pendingCount: (0, smithy_client_1.expectInt32)(output.pendingCount),\n platformFamily: (0, smithy_client_1.expectString)(output.platformFamily),\n platformVersion: (0, smithy_client_1.expectString)(output.platformVersion),\n rolloutState: (0, smithy_client_1.expectString)(output.rolloutState),\n rolloutStateReason: (0, smithy_client_1.expectString)(output.rolloutStateReason),\n runningCount: (0, smithy_client_1.expectInt32)(output.runningCount),\n status: (0, smithy_client_1.expectString)(output.status),\n taskDefinition: (0, smithy_client_1.expectString)(output.taskDefinition),\n updatedAt: output.updatedAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.updatedAt))) : undefined,\n };\n};\nconst deserializeAws_json1_1DeploymentCircuitBreaker = (output, context) => {\n return {\n enable: (0, smithy_client_1.expectBoolean)(output.enable),\n rollback: (0, smithy_client_1.expectBoolean)(output.rollback),\n };\n};\nconst deserializeAws_json1_1DeploymentConfiguration = (output, context) => {\n return {\n deploymentCircuitBreaker: output.deploymentCircuitBreaker != null\n ? deserializeAws_json1_1DeploymentCircuitBreaker(output.deploymentCircuitBreaker, context)\n : undefined,\n maximumPercent: (0, smithy_client_1.expectInt32)(output.maximumPercent),\n minimumHealthyPercent: (0, smithy_client_1.expectInt32)(output.minimumHealthyPercent),\n };\n};\nconst deserializeAws_json1_1DeploymentController = (output, context) => {\n return {\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1Deployments = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Deployment(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1DeregisterContainerInstanceResponse = (output, context) => {\n return {\n containerInstance: output.containerInstance != null\n ? deserializeAws_json1_1ContainerInstance(output.containerInstance, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1DeregisterTaskDefinitionResponse = (output, context) => {\n return {\n taskDefinition: output.taskDefinition != null ? deserializeAws_json1_1TaskDefinition(output.taskDefinition, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeCapacityProvidersResponse = (output, context) => {\n return {\n capacityProviders: output.capacityProviders != null\n ? deserializeAws_json1_1CapacityProviders(output.capacityProviders, context)\n : undefined,\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n };\n};\nconst deserializeAws_json1_1DescribeClustersResponse = (output, context) => {\n return {\n clusters: output.clusters != null ? deserializeAws_json1_1Clusters(output.clusters, context) : undefined,\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeContainerInstancesResponse = (output, context) => {\n return {\n containerInstances: output.containerInstances != null\n ? deserializeAws_json1_1ContainerInstances(output.containerInstances, context)\n : undefined,\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeServicesResponse = (output, context) => {\n return {\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n services: output.services != null ? deserializeAws_json1_1Services(output.services, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeTaskDefinitionResponse = (output, context) => {\n return {\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n taskDefinition: output.taskDefinition != null ? deserializeAws_json1_1TaskDefinition(output.taskDefinition, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeTaskSetsResponse = (output, context) => {\n return {\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n taskSets: output.taskSets != null ? deserializeAws_json1_1TaskSets(output.taskSets, context) : undefined,\n };\n};\nconst deserializeAws_json1_1DescribeTasksResponse = (output, context) => {\n return {\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n tasks: output.tasks != null ? deserializeAws_json1_1Tasks(output.tasks, context) : undefined,\n };\n};\nconst deserializeAws_json1_1Device = (output, context) => {\n return {\n containerPath: (0, smithy_client_1.expectString)(output.containerPath),\n hostPath: (0, smithy_client_1.expectString)(output.hostPath),\n permissions: output.permissions != null\n ? deserializeAws_json1_1DeviceCgroupPermissions(output.permissions, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1DeviceCgroupPermissions = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return (0, smithy_client_1.expectString)(entry);\n });\n return retVal;\n};\nconst deserializeAws_json1_1DevicesList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Device(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1DiscoverPollEndpointResponse = (output, context) => {\n return {\n endpoint: (0, smithy_client_1.expectString)(output.endpoint),\n telemetryEndpoint: (0, smithy_client_1.expectString)(output.telemetryEndpoint),\n };\n};\nconst deserializeAws_json1_1DockerLabelsMap = (output, context) => {\n return Object.entries(output).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: (0, smithy_client_1.expectString)(value),\n };\n }, {});\n};\nconst deserializeAws_json1_1DockerVolumeConfiguration = (output, context) => {\n return {\n autoprovision: (0, smithy_client_1.expectBoolean)(output.autoprovision),\n driver: (0, smithy_client_1.expectString)(output.driver),\n driverOpts: output.driverOpts != null ? deserializeAws_json1_1StringMap(output.driverOpts, context) : undefined,\n labels: output.labels != null ? deserializeAws_json1_1StringMap(output.labels, context) : undefined,\n scope: (0, smithy_client_1.expectString)(output.scope),\n };\n};\nconst deserializeAws_json1_1EFSAuthorizationConfig = (output, context) => {\n return {\n accessPointId: (0, smithy_client_1.expectString)(output.accessPointId),\n iam: (0, smithy_client_1.expectString)(output.iam),\n };\n};\nconst deserializeAws_json1_1EFSVolumeConfiguration = (output, context) => {\n return {\n authorizationConfig: output.authorizationConfig != null\n ? deserializeAws_json1_1EFSAuthorizationConfig(output.authorizationConfig, context)\n : undefined,\n fileSystemId: (0, smithy_client_1.expectString)(output.fileSystemId),\n rootDirectory: (0, smithy_client_1.expectString)(output.rootDirectory),\n transitEncryption: (0, smithy_client_1.expectString)(output.transitEncryption),\n transitEncryptionPort: (0, smithy_client_1.expectInt32)(output.transitEncryptionPort),\n };\n};\nconst deserializeAws_json1_1EnvironmentFile = (output, context) => {\n return {\n type: (0, smithy_client_1.expectString)(output.type),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1EnvironmentFiles = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1EnvironmentFile(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1EnvironmentVariables = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1KeyValuePair(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1EphemeralStorage = (output, context) => {\n return {\n sizeInGiB: (0, smithy_client_1.expectInt32)(output.sizeInGiB),\n };\n};\nconst deserializeAws_json1_1ExecuteCommandConfiguration = (output, context) => {\n return {\n kmsKeyId: (0, smithy_client_1.expectString)(output.kmsKeyId),\n logConfiguration: output.logConfiguration != null\n ? deserializeAws_json1_1ExecuteCommandLogConfiguration(output.logConfiguration, context)\n : undefined,\n logging: (0, smithy_client_1.expectString)(output.logging),\n };\n};\nconst deserializeAws_json1_1ExecuteCommandLogConfiguration = (output, context) => {\n return {\n cloudWatchEncryptionEnabled: (0, smithy_client_1.expectBoolean)(output.cloudWatchEncryptionEnabled),\n cloudWatchLogGroupName: (0, smithy_client_1.expectString)(output.cloudWatchLogGroupName),\n s3BucketName: (0, smithy_client_1.expectString)(output.s3BucketName),\n s3EncryptionEnabled: (0, smithy_client_1.expectBoolean)(output.s3EncryptionEnabled),\n s3KeyPrefix: (0, smithy_client_1.expectString)(output.s3KeyPrefix),\n };\n};\nconst deserializeAws_json1_1ExecuteCommandResponse = (output, context) => {\n return {\n clusterArn: (0, smithy_client_1.expectString)(output.clusterArn),\n containerArn: (0, smithy_client_1.expectString)(output.containerArn),\n containerName: (0, smithy_client_1.expectString)(output.containerName),\n interactive: (0, smithy_client_1.expectBoolean)(output.interactive),\n session: output.session != null ? deserializeAws_json1_1Session(output.session, context) : undefined,\n taskArn: (0, smithy_client_1.expectString)(output.taskArn),\n };\n};\nconst deserializeAws_json1_1Failure = (output, context) => {\n return {\n arn: (0, smithy_client_1.expectString)(output.arn),\n detail: (0, smithy_client_1.expectString)(output.detail),\n reason: (0, smithy_client_1.expectString)(output.reason),\n };\n};\nconst deserializeAws_json1_1Failures = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Failure(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1FirelensConfiguration = (output, context) => {\n return {\n options: output.options != null\n ? deserializeAws_json1_1FirelensConfigurationOptionsMap(output.options, context)\n : undefined,\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1FirelensConfigurationOptionsMap = (output, context) => {\n return Object.entries(output).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: (0, smithy_client_1.expectString)(value),\n };\n }, {});\n};\nconst deserializeAws_json1_1FSxWindowsFileServerAuthorizationConfig = (output, context) => {\n return {\n credentialsParameter: (0, smithy_client_1.expectString)(output.credentialsParameter),\n domain: (0, smithy_client_1.expectString)(output.domain),\n };\n};\nconst deserializeAws_json1_1FSxWindowsFileServerVolumeConfiguration = (output, context) => {\n return {\n authorizationConfig: output.authorizationConfig != null\n ? deserializeAws_json1_1FSxWindowsFileServerAuthorizationConfig(output.authorizationConfig, context)\n : undefined,\n fileSystemId: (0, smithy_client_1.expectString)(output.fileSystemId),\n rootDirectory: (0, smithy_client_1.expectString)(output.rootDirectory),\n };\n};\nconst deserializeAws_json1_1GpuIds = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return (0, smithy_client_1.expectString)(entry);\n });\n return retVal;\n};\nconst deserializeAws_json1_1HealthCheck = (output, context) => {\n return {\n command: output.command != null ? deserializeAws_json1_1StringList(output.command, context) : undefined,\n interval: (0, smithy_client_1.expectInt32)(output.interval),\n retries: (0, smithy_client_1.expectInt32)(output.retries),\n startPeriod: (0, smithy_client_1.expectInt32)(output.startPeriod),\n timeout: (0, smithy_client_1.expectInt32)(output.timeout),\n };\n};\nconst deserializeAws_json1_1HostEntry = (output, context) => {\n return {\n hostname: (0, smithy_client_1.expectString)(output.hostname),\n ipAddress: (0, smithy_client_1.expectString)(output.ipAddress),\n };\n};\nconst deserializeAws_json1_1HostEntryList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1HostEntry(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1HostVolumeProperties = (output, context) => {\n return {\n sourcePath: (0, smithy_client_1.expectString)(output.sourcePath),\n };\n};\nconst deserializeAws_json1_1InferenceAccelerator = (output, context) => {\n return {\n deviceName: (0, smithy_client_1.expectString)(output.deviceName),\n deviceType: (0, smithy_client_1.expectString)(output.deviceType),\n };\n};\nconst deserializeAws_json1_1InferenceAcceleratorOverride = (output, context) => {\n return {\n deviceName: (0, smithy_client_1.expectString)(output.deviceName),\n deviceType: (0, smithy_client_1.expectString)(output.deviceType),\n };\n};\nconst deserializeAws_json1_1InferenceAcceleratorOverrides = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1InferenceAcceleratorOverride(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1InferenceAccelerators = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1InferenceAccelerator(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1InstanceHealthCheckResult = (output, context) => {\n return {\n lastStatusChange: output.lastStatusChange != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.lastStatusChange)))\n : undefined,\n lastUpdated: output.lastUpdated != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.lastUpdated)))\n : undefined,\n status: (0, smithy_client_1.expectString)(output.status),\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1InstanceHealthCheckResultList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1InstanceHealthCheckResult(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1InvalidParameterException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1KernelCapabilities = (output, context) => {\n return {\n add: output.add != null ? deserializeAws_json1_1StringList(output.add, context) : undefined,\n drop: output.drop != null ? deserializeAws_json1_1StringList(output.drop, context) : undefined,\n };\n};\nconst deserializeAws_json1_1KeyValuePair = (output, context) => {\n return {\n name: (0, smithy_client_1.expectString)(output.name),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1LimitExceededException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1LinuxParameters = (output, context) => {\n return {\n capabilities: output.capabilities != null ? deserializeAws_json1_1KernelCapabilities(output.capabilities, context) : undefined,\n devices: output.devices != null ? deserializeAws_json1_1DevicesList(output.devices, context) : undefined,\n initProcessEnabled: (0, smithy_client_1.expectBoolean)(output.initProcessEnabled),\n maxSwap: (0, smithy_client_1.expectInt32)(output.maxSwap),\n sharedMemorySize: (0, smithy_client_1.expectInt32)(output.sharedMemorySize),\n swappiness: (0, smithy_client_1.expectInt32)(output.swappiness),\n tmpfs: output.tmpfs != null ? deserializeAws_json1_1TmpfsList(output.tmpfs, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ListAccountSettingsResponse = (output, context) => {\n return {\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n settings: output.settings != null ? deserializeAws_json1_1Settings(output.settings, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ListAttributesResponse = (output, context) => {\n return {\n attributes: output.attributes != null ? deserializeAws_json1_1Attributes(output.attributes, context) : undefined,\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n };\n};\nconst deserializeAws_json1_1ListClustersResponse = (output, context) => {\n return {\n clusterArns: output.clusterArns != null ? deserializeAws_json1_1StringList(output.clusterArns, context) : undefined,\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n };\n};\nconst deserializeAws_json1_1ListContainerInstancesResponse = (output, context) => {\n return {\n containerInstanceArns: output.containerInstanceArns != null\n ? deserializeAws_json1_1StringList(output.containerInstanceArns, context)\n : undefined,\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n };\n};\nconst deserializeAws_json1_1ListServicesResponse = (output, context) => {\n return {\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n serviceArns: output.serviceArns != null ? deserializeAws_json1_1StringList(output.serviceArns, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ListTagsForResourceResponse = (output, context) => {\n return {\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ListTaskDefinitionFamiliesResponse = (output, context) => {\n return {\n families: output.families != null ? deserializeAws_json1_1StringList(output.families, context) : undefined,\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n };\n};\nconst deserializeAws_json1_1ListTaskDefinitionsResponse = (output, context) => {\n return {\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n taskDefinitionArns: output.taskDefinitionArns != null\n ? deserializeAws_json1_1StringList(output.taskDefinitionArns, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1ListTasksResponse = (output, context) => {\n return {\n nextToken: (0, smithy_client_1.expectString)(output.nextToken),\n taskArns: output.taskArns != null ? deserializeAws_json1_1StringList(output.taskArns, context) : undefined,\n };\n};\nconst deserializeAws_json1_1LoadBalancer = (output, context) => {\n return {\n containerName: (0, smithy_client_1.expectString)(output.containerName),\n containerPort: (0, smithy_client_1.expectInt32)(output.containerPort),\n loadBalancerName: (0, smithy_client_1.expectString)(output.loadBalancerName),\n targetGroupArn: (0, smithy_client_1.expectString)(output.targetGroupArn),\n };\n};\nconst deserializeAws_json1_1LoadBalancers = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1LoadBalancer(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1LogConfiguration = (output, context) => {\n return {\n logDriver: (0, smithy_client_1.expectString)(output.logDriver),\n options: output.options != null ? deserializeAws_json1_1LogConfigurationOptionsMap(output.options, context) : undefined,\n secretOptions: output.secretOptions != null ? deserializeAws_json1_1SecretList(output.secretOptions, context) : undefined,\n };\n};\nconst deserializeAws_json1_1LogConfigurationOptionsMap = (output, context) => {\n return Object.entries(output).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: (0, smithy_client_1.expectString)(value),\n };\n }, {});\n};\nconst deserializeAws_json1_1ManagedAgent = (output, context) => {\n return {\n lastStartedAt: output.lastStartedAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.lastStartedAt)))\n : undefined,\n lastStatus: (0, smithy_client_1.expectString)(output.lastStatus),\n name: (0, smithy_client_1.expectString)(output.name),\n reason: (0, smithy_client_1.expectString)(output.reason),\n };\n};\nconst deserializeAws_json1_1ManagedAgents = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ManagedAgent(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ManagedScaling = (output, context) => {\n return {\n instanceWarmupPeriod: (0, smithy_client_1.expectInt32)(output.instanceWarmupPeriod),\n maximumScalingStepSize: (0, smithy_client_1.expectInt32)(output.maximumScalingStepSize),\n minimumScalingStepSize: (0, smithy_client_1.expectInt32)(output.minimumScalingStepSize),\n status: (0, smithy_client_1.expectString)(output.status),\n targetCapacity: (0, smithy_client_1.expectInt32)(output.targetCapacity),\n };\n};\nconst deserializeAws_json1_1MissingVersionException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1MountPoint = (output, context) => {\n return {\n containerPath: (0, smithy_client_1.expectString)(output.containerPath),\n readOnly: (0, smithy_client_1.expectBoolean)(output.readOnly),\n sourceVolume: (0, smithy_client_1.expectString)(output.sourceVolume),\n };\n};\nconst deserializeAws_json1_1MountPointList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1MountPoint(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1NetworkBinding = (output, context) => {\n return {\n bindIP: (0, smithy_client_1.expectString)(output.bindIP),\n containerPort: (0, smithy_client_1.expectInt32)(output.containerPort),\n hostPort: (0, smithy_client_1.expectInt32)(output.hostPort),\n protocol: (0, smithy_client_1.expectString)(output.protocol),\n };\n};\nconst deserializeAws_json1_1NetworkBindings = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1NetworkBinding(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1NetworkConfiguration = (output, context) => {\n return {\n awsvpcConfiguration: output.awsvpcConfiguration != null\n ? deserializeAws_json1_1AwsVpcConfiguration(output.awsvpcConfiguration, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1NetworkInterface = (output, context) => {\n return {\n attachmentId: (0, smithy_client_1.expectString)(output.attachmentId),\n ipv6Address: (0, smithy_client_1.expectString)(output.ipv6Address),\n privateIpv4Address: (0, smithy_client_1.expectString)(output.privateIpv4Address),\n };\n};\nconst deserializeAws_json1_1NetworkInterfaces = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1NetworkInterface(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1NoUpdateAvailableException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1PlacementConstraint = (output, context) => {\n return {\n expression: (0, smithy_client_1.expectString)(output.expression),\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1PlacementConstraints = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1PlacementConstraint(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1PlacementStrategies = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1PlacementStrategy(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1PlacementStrategy = (output, context) => {\n return {\n field: (0, smithy_client_1.expectString)(output.field),\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1PlatformTaskDefinitionIncompatibilityException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1PlatformUnknownException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1PortMapping = (output, context) => {\n return {\n containerPort: (0, smithy_client_1.expectInt32)(output.containerPort),\n hostPort: (0, smithy_client_1.expectInt32)(output.hostPort),\n protocol: (0, smithy_client_1.expectString)(output.protocol),\n };\n};\nconst deserializeAws_json1_1PortMappingList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1PortMapping(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ProxyConfiguration = (output, context) => {\n return {\n containerName: (0, smithy_client_1.expectString)(output.containerName),\n properties: output.properties != null\n ? deserializeAws_json1_1ProxyConfigurationProperties(output.properties, context)\n : undefined,\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1ProxyConfigurationProperties = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1KeyValuePair(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1PutAccountSettingDefaultResponse = (output, context) => {\n return {\n setting: output.setting != null ? deserializeAws_json1_1Setting(output.setting, context) : undefined,\n };\n};\nconst deserializeAws_json1_1PutAccountSettingResponse = (output, context) => {\n return {\n setting: output.setting != null ? deserializeAws_json1_1Setting(output.setting, context) : undefined,\n };\n};\nconst deserializeAws_json1_1PutAttributesResponse = (output, context) => {\n return {\n attributes: output.attributes != null ? deserializeAws_json1_1Attributes(output.attributes, context) : undefined,\n };\n};\nconst deserializeAws_json1_1PutClusterCapacityProvidersResponse = (output, context) => {\n return {\n cluster: output.cluster != null ? deserializeAws_json1_1Cluster(output.cluster, context) : undefined,\n };\n};\nconst deserializeAws_json1_1RegisterContainerInstanceResponse = (output, context) => {\n return {\n containerInstance: output.containerInstance != null\n ? deserializeAws_json1_1ContainerInstance(output.containerInstance, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1RegisterTaskDefinitionResponse = (output, context) => {\n return {\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n taskDefinition: output.taskDefinition != null ? deserializeAws_json1_1TaskDefinition(output.taskDefinition, context) : undefined,\n };\n};\nconst deserializeAws_json1_1RepositoryCredentials = (output, context) => {\n return {\n credentialsParameter: (0, smithy_client_1.expectString)(output.credentialsParameter),\n };\n};\nconst deserializeAws_json1_1RequiresAttributes = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Attribute(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Resource = (output, context) => {\n return {\n doubleValue: (0, smithy_client_1.limitedParseDouble)(output.doubleValue),\n integerValue: (0, smithy_client_1.expectInt32)(output.integerValue),\n longValue: (0, smithy_client_1.expectLong)(output.longValue),\n name: (0, smithy_client_1.expectString)(output.name),\n stringSetValue: output.stringSetValue != null ? deserializeAws_json1_1StringList(output.stringSetValue, context) : undefined,\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1ResourceInUseException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ResourceNotFoundException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ResourceRequirement = (output, context) => {\n return {\n type: (0, smithy_client_1.expectString)(output.type),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1ResourceRequirements = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ResourceRequirement(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Resources = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Resource(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1RunTaskResponse = (output, context) => {\n return {\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n tasks: output.tasks != null ? deserializeAws_json1_1Tasks(output.tasks, context) : undefined,\n };\n};\nconst deserializeAws_json1_1RuntimePlatform = (output, context) => {\n return {\n cpuArchitecture: (0, smithy_client_1.expectString)(output.cpuArchitecture),\n operatingSystemFamily: (0, smithy_client_1.expectString)(output.operatingSystemFamily),\n };\n};\nconst deserializeAws_json1_1Scale = (output, context) => {\n return {\n unit: (0, smithy_client_1.expectString)(output.unit),\n value: (0, smithy_client_1.limitedParseDouble)(output.value),\n };\n};\nconst deserializeAws_json1_1Secret = (output, context) => {\n return {\n name: (0, smithy_client_1.expectString)(output.name),\n valueFrom: (0, smithy_client_1.expectString)(output.valueFrom),\n };\n};\nconst deserializeAws_json1_1SecretList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Secret(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ServerException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Service = (output, context) => {\n return {\n capacityProviderStrategy: output.capacityProviderStrategy != null\n ? deserializeAws_json1_1CapacityProviderStrategy(output.capacityProviderStrategy, context)\n : undefined,\n clusterArn: (0, smithy_client_1.expectString)(output.clusterArn),\n createdAt: output.createdAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.createdAt))) : undefined,\n createdBy: (0, smithy_client_1.expectString)(output.createdBy),\n deploymentConfiguration: output.deploymentConfiguration != null\n ? deserializeAws_json1_1DeploymentConfiguration(output.deploymentConfiguration, context)\n : undefined,\n deploymentController: output.deploymentController != null\n ? deserializeAws_json1_1DeploymentController(output.deploymentController, context)\n : undefined,\n deployments: output.deployments != null ? deserializeAws_json1_1Deployments(output.deployments, context) : undefined,\n desiredCount: (0, smithy_client_1.expectInt32)(output.desiredCount),\n enableECSManagedTags: (0, smithy_client_1.expectBoolean)(output.enableECSManagedTags),\n enableExecuteCommand: (0, smithy_client_1.expectBoolean)(output.enableExecuteCommand),\n events: output.events != null ? deserializeAws_json1_1ServiceEvents(output.events, context) : undefined,\n healthCheckGracePeriodSeconds: (0, smithy_client_1.expectInt32)(output.healthCheckGracePeriodSeconds),\n launchType: (0, smithy_client_1.expectString)(output.launchType),\n loadBalancers: output.loadBalancers != null ? deserializeAws_json1_1LoadBalancers(output.loadBalancers, context) : undefined,\n networkConfiguration: output.networkConfiguration != null\n ? deserializeAws_json1_1NetworkConfiguration(output.networkConfiguration, context)\n : undefined,\n pendingCount: (0, smithy_client_1.expectInt32)(output.pendingCount),\n placementConstraints: output.placementConstraints != null\n ? deserializeAws_json1_1PlacementConstraints(output.placementConstraints, context)\n : undefined,\n placementStrategy: output.placementStrategy != null\n ? deserializeAws_json1_1PlacementStrategies(output.placementStrategy, context)\n : undefined,\n platformFamily: (0, smithy_client_1.expectString)(output.platformFamily),\n platformVersion: (0, smithy_client_1.expectString)(output.platformVersion),\n propagateTags: (0, smithy_client_1.expectString)(output.propagateTags),\n roleArn: (0, smithy_client_1.expectString)(output.roleArn),\n runningCount: (0, smithy_client_1.expectInt32)(output.runningCount),\n schedulingStrategy: (0, smithy_client_1.expectString)(output.schedulingStrategy),\n serviceArn: (0, smithy_client_1.expectString)(output.serviceArn),\n serviceName: (0, smithy_client_1.expectString)(output.serviceName),\n serviceRegistries: output.serviceRegistries != null\n ? deserializeAws_json1_1ServiceRegistries(output.serviceRegistries, context)\n : undefined,\n status: (0, smithy_client_1.expectString)(output.status),\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n taskDefinition: (0, smithy_client_1.expectString)(output.taskDefinition),\n taskSets: output.taskSets != null ? deserializeAws_json1_1TaskSets(output.taskSets, context) : undefined,\n };\n};\nconst deserializeAws_json1_1ServiceEvent = (output, context) => {\n return {\n createdAt: output.createdAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.createdAt))) : undefined,\n id: (0, smithy_client_1.expectString)(output.id),\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ServiceEvents = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ServiceEvent(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ServiceNotActiveException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ServiceNotFoundException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1ServiceRegistries = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1ServiceRegistry(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1ServiceRegistry = (output, context) => {\n return {\n containerName: (0, smithy_client_1.expectString)(output.containerName),\n containerPort: (0, smithy_client_1.expectInt32)(output.containerPort),\n port: (0, smithy_client_1.expectInt32)(output.port),\n registryArn: (0, smithy_client_1.expectString)(output.registryArn),\n };\n};\nconst deserializeAws_json1_1Services = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Service(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Session = (output, context) => {\n return {\n sessionId: (0, smithy_client_1.expectString)(output.sessionId),\n streamUrl: (0, smithy_client_1.expectString)(output.streamUrl),\n tokenValue: (0, smithy_client_1.expectString)(output.tokenValue),\n };\n};\nconst deserializeAws_json1_1Setting = (output, context) => {\n return {\n name: (0, smithy_client_1.expectString)(output.name),\n principalArn: (0, smithy_client_1.expectString)(output.principalArn),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1Settings = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Setting(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1StartTaskResponse = (output, context) => {\n return {\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n tasks: output.tasks != null ? deserializeAws_json1_1Tasks(output.tasks, context) : undefined,\n };\n};\nconst deserializeAws_json1_1Statistics = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1KeyValuePair(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1StopTaskResponse = (output, context) => {\n return {\n task: output.task != null ? deserializeAws_json1_1Task(output.task, context) : undefined,\n };\n};\nconst deserializeAws_json1_1StringList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return (0, smithy_client_1.expectString)(entry);\n });\n return retVal;\n};\nconst deserializeAws_json1_1StringMap = (output, context) => {\n return Object.entries(output).reduce((acc, [key, value]) => {\n if (value === null) {\n return acc;\n }\n return {\n ...acc,\n [key]: (0, smithy_client_1.expectString)(value),\n };\n }, {});\n};\nconst deserializeAws_json1_1SubmitAttachmentStateChangesResponse = (output, context) => {\n return {\n acknowledgment: (0, smithy_client_1.expectString)(output.acknowledgment),\n };\n};\nconst deserializeAws_json1_1SubmitContainerStateChangeResponse = (output, context) => {\n return {\n acknowledgment: (0, smithy_client_1.expectString)(output.acknowledgment),\n };\n};\nconst deserializeAws_json1_1SubmitTaskStateChangeResponse = (output, context) => {\n return {\n acknowledgment: (0, smithy_client_1.expectString)(output.acknowledgment),\n };\n};\nconst deserializeAws_json1_1SystemControl = (output, context) => {\n return {\n namespace: (0, smithy_client_1.expectString)(output.namespace),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1SystemControls = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1SystemControl(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Tag = (output, context) => {\n return {\n key: (0, smithy_client_1.expectString)(output.key),\n value: (0, smithy_client_1.expectString)(output.value),\n };\n};\nconst deserializeAws_json1_1TagResourceResponse = (output, context) => {\n return {};\n};\nconst deserializeAws_json1_1Tags = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Tag(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1TargetNotConnectedException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1TargetNotFoundException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1Task = (output, context) => {\n return {\n attachments: output.attachments != null ? deserializeAws_json1_1Attachments(output.attachments, context) : undefined,\n attributes: output.attributes != null ? deserializeAws_json1_1Attributes(output.attributes, context) : undefined,\n availabilityZone: (0, smithy_client_1.expectString)(output.availabilityZone),\n capacityProviderName: (0, smithy_client_1.expectString)(output.capacityProviderName),\n clusterArn: (0, smithy_client_1.expectString)(output.clusterArn),\n connectivity: (0, smithy_client_1.expectString)(output.connectivity),\n connectivityAt: output.connectivityAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.connectivityAt)))\n : undefined,\n containerInstanceArn: (0, smithy_client_1.expectString)(output.containerInstanceArn),\n containers: output.containers != null ? deserializeAws_json1_1Containers(output.containers, context) : undefined,\n cpu: (0, smithy_client_1.expectString)(output.cpu),\n createdAt: output.createdAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.createdAt))) : undefined,\n desiredStatus: (0, smithy_client_1.expectString)(output.desiredStatus),\n enableExecuteCommand: (0, smithy_client_1.expectBoolean)(output.enableExecuteCommand),\n ephemeralStorage: output.ephemeralStorage != null\n ? deserializeAws_json1_1EphemeralStorage(output.ephemeralStorage, context)\n : undefined,\n executionStoppedAt: output.executionStoppedAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.executionStoppedAt)))\n : undefined,\n group: (0, smithy_client_1.expectString)(output.group),\n healthStatus: (0, smithy_client_1.expectString)(output.healthStatus),\n inferenceAccelerators: output.inferenceAccelerators != null\n ? deserializeAws_json1_1InferenceAccelerators(output.inferenceAccelerators, context)\n : undefined,\n lastStatus: (0, smithy_client_1.expectString)(output.lastStatus),\n launchType: (0, smithy_client_1.expectString)(output.launchType),\n memory: (0, smithy_client_1.expectString)(output.memory),\n overrides: output.overrides != null ? deserializeAws_json1_1TaskOverride(output.overrides, context) : undefined,\n platformFamily: (0, smithy_client_1.expectString)(output.platformFamily),\n platformVersion: (0, smithy_client_1.expectString)(output.platformVersion),\n pullStartedAt: output.pullStartedAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.pullStartedAt)))\n : undefined,\n pullStoppedAt: output.pullStoppedAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.pullStoppedAt)))\n : undefined,\n startedAt: output.startedAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.startedAt))) : undefined,\n startedBy: (0, smithy_client_1.expectString)(output.startedBy),\n stopCode: (0, smithy_client_1.expectString)(output.stopCode),\n stoppedAt: output.stoppedAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.stoppedAt))) : undefined,\n stoppedReason: (0, smithy_client_1.expectString)(output.stoppedReason),\n stoppingAt: output.stoppingAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.stoppingAt))) : undefined,\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n taskArn: (0, smithy_client_1.expectString)(output.taskArn),\n taskDefinitionArn: (0, smithy_client_1.expectString)(output.taskDefinitionArn),\n version: (0, smithy_client_1.expectLong)(output.version),\n };\n};\nconst deserializeAws_json1_1TaskDefinition = (output, context) => {\n return {\n compatibilities: output.compatibilities != null\n ? deserializeAws_json1_1CompatibilityList(output.compatibilities, context)\n : undefined,\n containerDefinitions: output.containerDefinitions != null\n ? deserializeAws_json1_1ContainerDefinitions(output.containerDefinitions, context)\n : undefined,\n cpu: (0, smithy_client_1.expectString)(output.cpu),\n deregisteredAt: output.deregisteredAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.deregisteredAt)))\n : undefined,\n ephemeralStorage: output.ephemeralStorage != null\n ? deserializeAws_json1_1EphemeralStorage(output.ephemeralStorage, context)\n : undefined,\n executionRoleArn: (0, smithy_client_1.expectString)(output.executionRoleArn),\n family: (0, smithy_client_1.expectString)(output.family),\n inferenceAccelerators: output.inferenceAccelerators != null\n ? deserializeAws_json1_1InferenceAccelerators(output.inferenceAccelerators, context)\n : undefined,\n ipcMode: (0, smithy_client_1.expectString)(output.ipcMode),\n memory: (0, smithy_client_1.expectString)(output.memory),\n networkMode: (0, smithy_client_1.expectString)(output.networkMode),\n pidMode: (0, smithy_client_1.expectString)(output.pidMode),\n placementConstraints: output.placementConstraints != null\n ? deserializeAws_json1_1TaskDefinitionPlacementConstraints(output.placementConstraints, context)\n : undefined,\n proxyConfiguration: output.proxyConfiguration != null\n ? deserializeAws_json1_1ProxyConfiguration(output.proxyConfiguration, context)\n : undefined,\n registeredAt: output.registeredAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.registeredAt)))\n : undefined,\n registeredBy: (0, smithy_client_1.expectString)(output.registeredBy),\n requiresAttributes: output.requiresAttributes != null\n ? deserializeAws_json1_1RequiresAttributes(output.requiresAttributes, context)\n : undefined,\n requiresCompatibilities: output.requiresCompatibilities != null\n ? deserializeAws_json1_1CompatibilityList(output.requiresCompatibilities, context)\n : undefined,\n revision: (0, smithy_client_1.expectInt32)(output.revision),\n runtimePlatform: output.runtimePlatform != null\n ? deserializeAws_json1_1RuntimePlatform(output.runtimePlatform, context)\n : undefined,\n status: (0, smithy_client_1.expectString)(output.status),\n taskDefinitionArn: (0, smithy_client_1.expectString)(output.taskDefinitionArn),\n taskRoleArn: (0, smithy_client_1.expectString)(output.taskRoleArn),\n volumes: output.volumes != null ? deserializeAws_json1_1VolumeList(output.volumes, context) : undefined,\n };\n};\nconst deserializeAws_json1_1TaskDefinitionPlacementConstraint = (output, context) => {\n return {\n expression: (0, smithy_client_1.expectString)(output.expression),\n type: (0, smithy_client_1.expectString)(output.type),\n };\n};\nconst deserializeAws_json1_1TaskDefinitionPlacementConstraints = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1TaskDefinitionPlacementConstraint(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1TaskOverride = (output, context) => {\n return {\n containerOverrides: output.containerOverrides != null\n ? deserializeAws_json1_1ContainerOverrides(output.containerOverrides, context)\n : undefined,\n cpu: (0, smithy_client_1.expectString)(output.cpu),\n ephemeralStorage: output.ephemeralStorage != null\n ? deserializeAws_json1_1EphemeralStorage(output.ephemeralStorage, context)\n : undefined,\n executionRoleArn: (0, smithy_client_1.expectString)(output.executionRoleArn),\n inferenceAcceleratorOverrides: output.inferenceAcceleratorOverrides != null\n ? deserializeAws_json1_1InferenceAcceleratorOverrides(output.inferenceAcceleratorOverrides, context)\n : undefined,\n memory: (0, smithy_client_1.expectString)(output.memory),\n taskRoleArn: (0, smithy_client_1.expectString)(output.taskRoleArn),\n };\n};\nconst deserializeAws_json1_1Tasks = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Task(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1TaskSet = (output, context) => {\n return {\n capacityProviderStrategy: output.capacityProviderStrategy != null\n ? deserializeAws_json1_1CapacityProviderStrategy(output.capacityProviderStrategy, context)\n : undefined,\n clusterArn: (0, smithy_client_1.expectString)(output.clusterArn),\n computedDesiredCount: (0, smithy_client_1.expectInt32)(output.computedDesiredCount),\n createdAt: output.createdAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.createdAt))) : undefined,\n externalId: (0, smithy_client_1.expectString)(output.externalId),\n id: (0, smithy_client_1.expectString)(output.id),\n launchType: (0, smithy_client_1.expectString)(output.launchType),\n loadBalancers: output.loadBalancers != null ? deserializeAws_json1_1LoadBalancers(output.loadBalancers, context) : undefined,\n networkConfiguration: output.networkConfiguration != null\n ? deserializeAws_json1_1NetworkConfiguration(output.networkConfiguration, context)\n : undefined,\n pendingCount: (0, smithy_client_1.expectInt32)(output.pendingCount),\n platformFamily: (0, smithy_client_1.expectString)(output.platformFamily),\n platformVersion: (0, smithy_client_1.expectString)(output.platformVersion),\n runningCount: (0, smithy_client_1.expectInt32)(output.runningCount),\n scale: output.scale != null ? deserializeAws_json1_1Scale(output.scale, context) : undefined,\n serviceArn: (0, smithy_client_1.expectString)(output.serviceArn),\n serviceRegistries: output.serviceRegistries != null\n ? deserializeAws_json1_1ServiceRegistries(output.serviceRegistries, context)\n : undefined,\n stabilityStatus: (0, smithy_client_1.expectString)(output.stabilityStatus),\n stabilityStatusAt: output.stabilityStatusAt != null\n ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.stabilityStatusAt)))\n : undefined,\n startedBy: (0, smithy_client_1.expectString)(output.startedBy),\n status: (0, smithy_client_1.expectString)(output.status),\n tags: output.tags != null ? deserializeAws_json1_1Tags(output.tags, context) : undefined,\n taskDefinition: (0, smithy_client_1.expectString)(output.taskDefinition),\n taskSetArn: (0, smithy_client_1.expectString)(output.taskSetArn),\n updatedAt: output.updatedAt != null ? (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseEpochTimestamp)((0, smithy_client_1.expectNumber)(output.updatedAt))) : undefined,\n };\n};\nconst deserializeAws_json1_1TaskSetNotFoundException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1TaskSets = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1TaskSet(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Tmpfs = (output, context) => {\n return {\n containerPath: (0, smithy_client_1.expectString)(output.containerPath),\n mountOptions: output.mountOptions != null ? deserializeAws_json1_1StringList(output.mountOptions, context) : undefined,\n size: (0, smithy_client_1.expectInt32)(output.size),\n };\n};\nconst deserializeAws_json1_1TmpfsList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Tmpfs(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1Ulimit = (output, context) => {\n return {\n hardLimit: (0, smithy_client_1.expectInt32)(output.hardLimit),\n name: (0, smithy_client_1.expectString)(output.name),\n softLimit: (0, smithy_client_1.expectInt32)(output.softLimit),\n };\n};\nconst deserializeAws_json1_1UlimitList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Ulimit(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1UnsupportedFeatureException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1UntagResourceResponse = (output, context) => {\n return {};\n};\nconst deserializeAws_json1_1UpdateCapacityProviderResponse = (output, context) => {\n return {\n capacityProvider: output.capacityProvider != null\n ? deserializeAws_json1_1CapacityProvider(output.capacityProvider, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateClusterResponse = (output, context) => {\n return {\n cluster: output.cluster != null ? deserializeAws_json1_1Cluster(output.cluster, context) : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateClusterSettingsResponse = (output, context) => {\n return {\n cluster: output.cluster != null ? deserializeAws_json1_1Cluster(output.cluster, context) : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateContainerAgentResponse = (output, context) => {\n return {\n containerInstance: output.containerInstance != null\n ? deserializeAws_json1_1ContainerInstance(output.containerInstance, context)\n : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateContainerInstancesStateResponse = (output, context) => {\n return {\n containerInstances: output.containerInstances != null\n ? deserializeAws_json1_1ContainerInstances(output.containerInstances, context)\n : undefined,\n failures: output.failures != null ? deserializeAws_json1_1Failures(output.failures, context) : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateInProgressException = (output, context) => {\n return {\n message: (0, smithy_client_1.expectString)(output.message),\n };\n};\nconst deserializeAws_json1_1UpdateServicePrimaryTaskSetResponse = (output, context) => {\n return {\n taskSet: output.taskSet != null ? deserializeAws_json1_1TaskSet(output.taskSet, context) : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateServiceResponse = (output, context) => {\n return {\n service: output.service != null ? deserializeAws_json1_1Service(output.service, context) : undefined,\n };\n};\nconst deserializeAws_json1_1UpdateTaskSetResponse = (output, context) => {\n return {\n taskSet: output.taskSet != null ? deserializeAws_json1_1TaskSet(output.taskSet, context) : undefined,\n };\n};\nconst deserializeAws_json1_1VersionInfo = (output, context) => {\n return {\n agentHash: (0, smithy_client_1.expectString)(output.agentHash),\n agentVersion: (0, smithy_client_1.expectString)(output.agentVersion),\n dockerVersion: (0, smithy_client_1.expectString)(output.dockerVersion),\n };\n};\nconst deserializeAws_json1_1Volume = (output, context) => {\n return {\n dockerVolumeConfiguration: output.dockerVolumeConfiguration != null\n ? deserializeAws_json1_1DockerVolumeConfiguration(output.dockerVolumeConfiguration, context)\n : undefined,\n efsVolumeConfiguration: output.efsVolumeConfiguration != null\n ? deserializeAws_json1_1EFSVolumeConfiguration(output.efsVolumeConfiguration, context)\n : undefined,\n fsxWindowsFileServerVolumeConfiguration: output.fsxWindowsFileServerVolumeConfiguration != null\n ? deserializeAws_json1_1FSxWindowsFileServerVolumeConfiguration(output.fsxWindowsFileServerVolumeConfiguration, context)\n : undefined,\n host: output.host != null ? deserializeAws_json1_1HostVolumeProperties(output.host, context) : undefined,\n name: (0, smithy_client_1.expectString)(output.name),\n };\n};\nconst deserializeAws_json1_1VolumeFrom = (output, context) => {\n return {\n readOnly: (0, smithy_client_1.expectBoolean)(output.readOnly),\n sourceContainer: (0, smithy_client_1.expectString)(output.sourceContainer),\n };\n};\nconst deserializeAws_json1_1VolumeFromList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1VolumeFrom(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_json1_1VolumeList = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_json1_1Volume(entry, context);\n });\n return retVal;\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\nconst collectBody = (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\nconst collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\nconst buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers,\n };\n if (resolvedHostname !== undefined) {\n contents.hostname = resolvedHostname;\n }\n if (body !== undefined) {\n contents.body = body;\n }\n return new protocol_http_1.HttpRequest(contents);\n};\nconst parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n return JSON.parse(encoded);\n }\n return {};\n});\nconst parseErrorBody = async (errorBody, context) => {\n const value = await parseBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n};\nconst loadRestJsonErrorCode = (output, data) => {\n const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\n const sanitizeErrorCode = (rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n };\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== undefined) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== undefined) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== undefined) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst hash_node_1 = require(\"@aws-sdk/hash-node\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst node_http_handler_1 = require(\"@aws-sdk/node-http-handler\");\nconst util_base64_node_1 = require(\"@aws-sdk/util-base64-node\");\nconst util_body_length_node_1 = require(\"@aws-sdk/util-body-length-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst util_utf8_node_1 = require(\"@aws-sdk/util-utf8-node\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@aws-sdk/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@aws-sdk/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n base64Decoder: config?.base64Decoder ?? util_base64_node_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_node_1.toBase64,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? (0, client_sts_1.decorateDefaultCredentialProvider)(credential_provider_node_1.defaultProvider),\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || middleware_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n utf8Decoder: config?.utf8Decoder ?? util_utf8_node_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_node_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst url_parser_1 = require(\"@aws-sdk/url-parser\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => ({\n apiVersion: \"2014-11-13\",\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n logger: config?.logger ?? {},\n serviceId: config?.serviceId ?? \"ECS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n});\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./waitForServicesInactive\"), exports);\ntslib_1.__exportStar(require(\"./waitForServicesStable\"), exports);\ntslib_1.__exportStar(require(\"./waitForTasksRunning\"), exports);\ntslib_1.__exportStar(require(\"./waitForTasksStopped\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitUntilServicesInactive = exports.waitForServicesInactive = void 0;\nconst util_waiter_1 = require(\"@aws-sdk/util-waiter\");\nconst DescribeServicesCommand_1 = require(\"../commands/DescribeServicesCommand\");\nconst checkState = async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeServicesCommand_1.DescribeServicesCommand(input));\n reason = result;\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.failures);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.reason;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"MISSING\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.services);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.status;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"INACTIVE\") {\n return { state: util_waiter_1.WaiterState.SUCCESS, reason };\n }\n }\n }\n catch (e) { }\n }\n catch (exception) {\n reason = exception;\n }\n return { state: util_waiter_1.WaiterState.RETRY, reason };\n};\nconst waitForServicesInactive = async (params, input) => {\n const serviceDefaults = { minDelay: 15, maxDelay: 120 };\n return (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n};\nexports.waitForServicesInactive = waitForServicesInactive;\nconst waitUntilServicesInactive = async (params, input) => {\n const serviceDefaults = { minDelay: 15, maxDelay: 120 };\n const result = await (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, util_waiter_1.checkExceptions)(result);\n};\nexports.waitUntilServicesInactive = waitUntilServicesInactive;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitUntilServicesStable = exports.waitForServicesStable = void 0;\nconst util_waiter_1 = require(\"@aws-sdk/util-waiter\");\nconst DescribeServicesCommand_1 = require(\"../commands/DescribeServicesCommand\");\nconst checkState = async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeServicesCommand_1.DescribeServicesCommand(input));\n reason = result;\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.failures);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.reason;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"MISSING\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.services);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.status;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DRAINING\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.services);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.status;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"INACTIVE\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const filterRes_2 = result.services.filter((element_1) => {\n return !(element_1.deployments.length == 1.0 && element_1.runningCount == element_1.desiredCount);\n });\n return filterRes_2.length == 0.0;\n };\n if (returnComparator() == true) {\n return { state: util_waiter_1.WaiterState.SUCCESS, reason };\n }\n }\n catch (e) { }\n }\n catch (exception) {\n reason = exception;\n }\n return { state: util_waiter_1.WaiterState.RETRY, reason };\n};\nconst waitForServicesStable = async (params, input) => {\n const serviceDefaults = { minDelay: 15, maxDelay: 120 };\n return (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n};\nexports.waitForServicesStable = waitForServicesStable;\nconst waitUntilServicesStable = async (params, input) => {\n const serviceDefaults = { minDelay: 15, maxDelay: 120 };\n const result = await (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, util_waiter_1.checkExceptions)(result);\n};\nexports.waitUntilServicesStable = waitUntilServicesStable;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitUntilTasksRunning = exports.waitForTasksRunning = void 0;\nconst util_waiter_1 = require(\"@aws-sdk/util-waiter\");\nconst DescribeTasksCommand_1 = require(\"../commands/DescribeTasksCommand\");\nconst checkState = async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTasksCommand_1.DescribeTasksCommand(input));\n reason = result;\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.tasks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.lastStatus;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"STOPPED\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.failures);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.reason;\n });\n return projection_3;\n };\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"MISSING\") {\n return { state: util_waiter_1.WaiterState.FAILURE, reason };\n }\n }\n }\n catch (e) { }\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.tasks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.lastStatus;\n });\n return projection_3;\n };\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"RUNNING\";\n }\n if (allStringEq_5) {\n return { state: util_waiter_1.WaiterState.SUCCESS, reason };\n }\n }\n catch (e) { }\n }\n catch (exception) {\n reason = exception;\n }\n return { state: util_waiter_1.WaiterState.RETRY, reason };\n};\nconst waitForTasksRunning = async (params, input) => {\n const serviceDefaults = { minDelay: 6, maxDelay: 120 };\n return (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n};\nexports.waitForTasksRunning = waitForTasksRunning;\nconst waitUntilTasksRunning = async (params, input) => {\n const serviceDefaults = { minDelay: 6, maxDelay: 120 };\n const result = await (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, util_waiter_1.checkExceptions)(result);\n};\nexports.waitUntilTasksRunning = waitUntilTasksRunning;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.waitUntilTasksStopped = exports.waitForTasksStopped = void 0;\nconst util_waiter_1 = require(\"@aws-sdk/util-waiter\");\nconst DescribeTasksCommand_1 = require(\"../commands/DescribeTasksCommand\");\nconst checkState = async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTasksCommand_1.DescribeTasksCommand(input));\n reason = result;\n try {\n const returnComparator = () => {\n const flat_1 = [].concat(...result.tasks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.lastStatus;\n });\n return projection_3;\n };\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"STOPPED\";\n }\n if (allStringEq_5) {\n return { state: util_waiter_1.WaiterState.SUCCESS, reason };\n }\n }\n catch (e) { }\n }\n catch (exception) {\n reason = exception;\n }\n return { state: util_waiter_1.WaiterState.RETRY, reason };\n};\nconst waitForTasksStopped = async (params, input) => {\n const serviceDefaults = { minDelay: 6, maxDelay: 120 };\n return (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n};\nexports.waitForTasksStopped = waitForTasksStopped;\nconst waitUntilTasksStopped = async (params, input) => {\n const serviceDefaults = { minDelay: 6, maxDelay: 120 };\n const result = await (0, util_waiter_1.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, util_waiter_1.checkExceptions)(result);\n};\nexports.waitUntilTasksStopped = waitUntilTasksStopped;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SSO = void 0;\nconst GetRoleCredentialsCommand_1 = require(\"./commands/GetRoleCredentialsCommand\");\nconst ListAccountRolesCommand_1 = require(\"./commands/ListAccountRolesCommand\");\nconst ListAccountsCommand_1 = require(\"./commands/ListAccountsCommand\");\nconst LogoutCommand_1 = require(\"./commands/LogoutCommand\");\nconst SSOClient_1 = require(\"./SSOClient\");\nclass SSO extends SSOClient_1.SSOClient {\n getRoleCredentials(args, optionsOrCb, cb) {\n const command = new GetRoleCredentialsCommand_1.GetRoleCredentialsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listAccountRoles(args, optionsOrCb, cb) {\n const command = new ListAccountRolesCommand_1.ListAccountRolesCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n listAccounts(args, optionsOrCb, cb) {\n const command = new ListAccountsCommand_1.ListAccountsCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n logout(args, optionsOrCb, cb) {\n const command = new LogoutCommand_1.LogoutCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n}\nexports.SSO = SSO;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SSOClient = void 0;\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst middleware_content_length_1 = require(\"@aws-sdk/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nclass SSOClient extends smithy_client_1.Client {\n constructor(configuration) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration);\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1);\n const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_5);\n super(_config_6);\n this.config = _config_6;\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\nexports.SSOClient = SSOClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetRoleCredentialsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_restJson1_1 = require(\"../protocols/Aws_restJson1\");\nclass GetRoleCredentialsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, GetRoleCredentialsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"SSOClient\";\n const commandName = \"GetRoleCredentialsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.GetRoleCredentialsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.GetRoleCredentialsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_restJson1_1.serializeAws_restJson1GetRoleCredentialsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_restJson1_1.deserializeAws_restJson1GetRoleCredentialsCommand)(output, context);\n }\n}\nexports.GetRoleCredentialsCommand = GetRoleCredentialsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListAccountRolesCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_restJson1_1 = require(\"../protocols/Aws_restJson1\");\nclass ListAccountRolesCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListAccountRolesCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"SSOClient\";\n const commandName = \"ListAccountRolesCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListAccountRolesRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListAccountRolesResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_restJson1_1.serializeAws_restJson1ListAccountRolesCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_restJson1_1.deserializeAws_restJson1ListAccountRolesCommand)(output, context);\n }\n}\nexports.ListAccountRolesCommand = ListAccountRolesCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ListAccountsCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_restJson1_1 = require(\"../protocols/Aws_restJson1\");\nclass ListAccountsCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, ListAccountsCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"SSOClient\";\n const commandName = \"ListAccountsCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.ListAccountsRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.ListAccountsResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_restJson1_1.serializeAws_restJson1ListAccountsCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_restJson1_1.deserializeAws_restJson1ListAccountsCommand)(output, context);\n }\n}\nexports.ListAccountsCommand = ListAccountsCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogoutCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_restJson1_1 = require(\"../protocols/Aws_restJson1\");\nclass LogoutCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, LogoutCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"SSOClient\";\n const commandName = \"LogoutCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.LogoutRequestFilterSensitiveLog,\n outputFilterSensitiveLog: (output) => output,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_restJson1_1.serializeAws_restJson1LogoutCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_restJson1_1.deserializeAws_restJson1LogoutCommand)(output, context);\n }\n}\nexports.LogoutCommand = LogoutCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./GetRoleCredentialsCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountRolesCommand\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountsCommand\"), exports);\ntslib_1.__exportStar(require(\"./LogoutCommand\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nexports.ruleSet = {\n version: \"1.0\",\n parameters: {\n Region: {\n builtIn: \"AWS::Region\",\n required: false,\n documentation: \"The AWS region used to dispatch the request.\",\n type: \"String\",\n },\n UseDualStack: {\n builtIn: \"AWS::UseDualStack\",\n required: true,\n default: false,\n documentation: \"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\n type: \"Boolean\",\n },\n UseFIPS: {\n builtIn: \"AWS::UseFIPS\",\n required: true,\n default: false,\n documentation: \"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\n type: \"Boolean\",\n },\n Endpoint: {\n builtIn: \"SDK::Endpoint\",\n required: false,\n documentation: \"Override the endpoint used to send this request\",\n type: \"String\",\n },\n },\n rules: [\n {\n conditions: [\n {\n fn: \"aws.partition\",\n argv: [\n {\n ref: \"Region\",\n },\n ],\n assign: \"PartitionResult\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"isSet\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n },\n {\n fn: \"parseURL\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n assign: \"url\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: FIPS and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n endpoint: {\n url: {\n ref: \"Endpoint\",\n },\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS and DualStack are enabled, but this partition does not support one or both\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS is enabled but this partition does not support FIPS\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"DualStack is enabled but this partition does not support DualStack\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [],\n endpoint: {\n url: \"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SSOServiceException = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./SSO\"), exports);\ntslib_1.__exportStar(require(\"./SSOClient\"), exports);\ntslib_1.__exportStar(require(\"./commands\"), exports);\ntslib_1.__exportStar(require(\"./models\"), exports);\ntslib_1.__exportStar(require(\"./pagination\"), exports);\nvar SSOServiceException_1 = require(\"./models/SSOServiceException\");\nObject.defineProperty(exports, \"SSOServiceException\", { enumerable: true, get: function () { return SSOServiceException_1.SSOServiceException; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SSOServiceException = void 0;\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nclass SSOServiceException extends smithy_client_1.ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, SSOServiceException.prototype);\n }\n}\nexports.SSOServiceException = SSOServiceException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./models_0\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogoutRequestFilterSensitiveLog = exports.ListAccountsResponseFilterSensitiveLog = exports.ListAccountsRequestFilterSensitiveLog = exports.ListAccountRolesResponseFilterSensitiveLog = exports.RoleInfoFilterSensitiveLog = exports.ListAccountRolesRequestFilterSensitiveLog = exports.GetRoleCredentialsResponseFilterSensitiveLog = exports.RoleCredentialsFilterSensitiveLog = exports.GetRoleCredentialsRequestFilterSensitiveLog = exports.AccountInfoFilterSensitiveLog = exports.UnauthorizedException = exports.TooManyRequestsException = exports.ResourceNotFoundException = exports.InvalidRequestException = void 0;\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst SSOServiceException_1 = require(\"./SSOServiceException\");\nclass InvalidRequestException extends SSOServiceException_1.SSOServiceException {\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, InvalidRequestException.prototype);\n }\n}\nexports.InvalidRequestException = InvalidRequestException;\nclass ResourceNotFoundException extends SSOServiceException_1.SSOServiceException {\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ResourceNotFoundException.prototype);\n }\n}\nexports.ResourceNotFoundException = ResourceNotFoundException;\nclass TooManyRequestsException extends SSOServiceException_1.SSOServiceException {\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, TooManyRequestsException.prototype);\n }\n}\nexports.TooManyRequestsException = TooManyRequestsException;\nclass UnauthorizedException extends SSOServiceException_1.SSOServiceException {\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"UnauthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, UnauthorizedException.prototype);\n }\n}\nexports.UnauthorizedException = UnauthorizedException;\nconst AccountInfoFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AccountInfoFilterSensitiveLog = AccountInfoFilterSensitiveLog;\nconst GetRoleCredentialsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.GetRoleCredentialsRequestFilterSensitiveLog = GetRoleCredentialsRequestFilterSensitiveLog;\nconst RoleCredentialsFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.secretAccessKey && { secretAccessKey: smithy_client_1.SENSITIVE_STRING }),\n ...(obj.sessionToken && { sessionToken: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.RoleCredentialsFilterSensitiveLog = RoleCredentialsFilterSensitiveLog;\nconst GetRoleCredentialsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.roleCredentials && { roleCredentials: (0, exports.RoleCredentialsFilterSensitiveLog)(obj.roleCredentials) }),\n});\nexports.GetRoleCredentialsResponseFilterSensitiveLog = GetRoleCredentialsResponseFilterSensitiveLog;\nconst ListAccountRolesRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.ListAccountRolesRequestFilterSensitiveLog = ListAccountRolesRequestFilterSensitiveLog;\nconst RoleInfoFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.RoleInfoFilterSensitiveLog = RoleInfoFilterSensitiveLog;\nconst ListAccountRolesResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAccountRolesResponseFilterSensitiveLog = ListAccountRolesResponseFilterSensitiveLog;\nconst ListAccountsRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.ListAccountsRequestFilterSensitiveLog = ListAccountsRequestFilterSensitiveLog;\nconst ListAccountsResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.ListAccountsResponseFilterSensitiveLog = ListAccountsResponseFilterSensitiveLog;\nconst LogoutRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n ...(obj.accessToken && { accessToken: smithy_client_1.SENSITIVE_STRING }),\n});\nexports.LogoutRequestFilterSensitiveLog = LogoutRequestFilterSensitiveLog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListAccountRoles = void 0;\nconst ListAccountRolesCommand_1 = require(\"../commands/ListAccountRolesCommand\");\nconst SSO_1 = require(\"../SSO\");\nconst SSOClient_1 = require(\"../SSOClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListAccountRolesCommand_1.ListAccountRolesCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listAccountRoles(input, ...args);\n};\nasync function* paginateListAccountRoles(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof SSO_1.SSO) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof SSOClient_1.SSOClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected SSO | SSOClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListAccountRoles = paginateListAccountRoles;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.paginateListAccounts = void 0;\nconst ListAccountsCommand_1 = require(\"../commands/ListAccountsCommand\");\nconst SSO_1 = require(\"../SSO\");\nconst SSOClient_1 = require(\"../SSOClient\");\nconst makePagedClientRequest = async (client, input, ...args) => {\n return await client.send(new ListAccountsCommand_1.ListAccountsCommand(input), ...args);\n};\nconst makePagedRequest = async (client, input, ...args) => {\n return await client.listAccounts(input, ...args);\n};\nasync function* paginateListAccounts(config, input, ...additionalArguments) {\n let token = config.startingToken || undefined;\n let hasNext = true;\n let page;\n while (hasNext) {\n input.nextToken = token;\n input[\"maxResults\"] = config.pageSize;\n if (config.client instanceof SSO_1.SSO) {\n page = await makePagedRequest(config.client, input, ...additionalArguments);\n }\n else if (config.client instanceof SSOClient_1.SSOClient) {\n page = await makePagedClientRequest(config.client, input, ...additionalArguments);\n }\n else {\n throw new Error(\"Invalid client, expected SSO | SSOClient\");\n }\n yield page;\n const prevToken = token;\n token = page.nextToken;\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return undefined;\n}\nexports.paginateListAccounts = paginateListAccounts;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./Interfaces\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountRolesPaginator\"), exports);\ntslib_1.__exportStar(require(\"./ListAccountsPaginator\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeAws_restJson1LogoutCommand = exports.deserializeAws_restJson1ListAccountsCommand = exports.deserializeAws_restJson1ListAccountRolesCommand = exports.deserializeAws_restJson1GetRoleCredentialsCommand = exports.serializeAws_restJson1LogoutCommand = exports.serializeAws_restJson1ListAccountsCommand = exports.serializeAws_restJson1ListAccountRolesCommand = exports.serializeAws_restJson1GetRoleCredentialsCommand = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst SSOServiceException_1 = require(\"../models/SSOServiceException\");\nconst serializeAws_restJson1GetRoleCredentialsCommand = async (input, context) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const headers = map({}, isSerializableHeaderValue, {\n \"x-amz-sso_bearer_token\": input.accessToken,\n });\n const resolvedPath = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + \"/federation/credentials\";\n const query = map({\n role_name: [, input.roleName],\n account_id: [, input.accountId],\n });\n let body;\n return new protocol_http_1.HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\nexports.serializeAws_restJson1GetRoleCredentialsCommand = serializeAws_restJson1GetRoleCredentialsCommand;\nconst serializeAws_restJson1ListAccountRolesCommand = async (input, context) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const headers = map({}, isSerializableHeaderValue, {\n \"x-amz-sso_bearer_token\": input.accessToken,\n });\n const resolvedPath = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + \"/assignment/roles\";\n const query = map({\n next_token: [, input.nextToken],\n max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()],\n account_id: [, input.accountId],\n });\n let body;\n return new protocol_http_1.HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\nexports.serializeAws_restJson1ListAccountRolesCommand = serializeAws_restJson1ListAccountRolesCommand;\nconst serializeAws_restJson1ListAccountsCommand = async (input, context) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const headers = map({}, isSerializableHeaderValue, {\n \"x-amz-sso_bearer_token\": input.accessToken,\n });\n const resolvedPath = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + \"/assignment/accounts\";\n const query = map({\n next_token: [, input.nextToken],\n max_result: [() => input.maxResults !== void 0, () => input.maxResults.toString()],\n });\n let body;\n return new protocol_http_1.HttpRequest({\n protocol,\n hostname,\n port,\n method: \"GET\",\n headers,\n path: resolvedPath,\n query,\n body,\n });\n};\nexports.serializeAws_restJson1ListAccountsCommand = serializeAws_restJson1ListAccountsCommand;\nconst serializeAws_restJson1LogoutCommand = async (input, context) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const headers = map({}, isSerializableHeaderValue, {\n \"x-amz-sso_bearer_token\": input.accessToken,\n });\n const resolvedPath = `${basePath?.endsWith(\"/\") ? basePath.slice(0, -1) : basePath || \"\"}` + \"/logout\";\n let body;\n return new protocol_http_1.HttpRequest({\n protocol,\n hostname,\n port,\n method: \"POST\",\n headers,\n path: resolvedPath,\n body,\n });\n};\nexports.serializeAws_restJson1LogoutCommand = serializeAws_restJson1LogoutCommand;\nconst deserializeAws_restJson1GetRoleCredentialsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1GetRoleCredentialsCommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), \"body\");\n if (data.roleCredentials != null) {\n contents.roleCredentials = deserializeAws_restJson1RoleCredentials(data.roleCredentials, context);\n }\n return contents;\n};\nexports.deserializeAws_restJson1GetRoleCredentialsCommand = deserializeAws_restJson1GetRoleCredentialsCommand;\nconst deserializeAws_restJson1GetRoleCredentialsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await deserializeAws_restJson1InvalidRequestExceptionResponse(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await deserializeAws_restJson1ResourceNotFoundExceptionResponse(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await deserializeAws_restJson1UnauthorizedExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: SSOServiceException_1.SSOServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_restJson1ListAccountRolesCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListAccountRolesCommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), \"body\");\n if (data.nextToken != null) {\n contents.nextToken = (0, smithy_client_1.expectString)(data.nextToken);\n }\n if (data.roleList != null) {\n contents.roleList = deserializeAws_restJson1RoleListType(data.roleList, context);\n }\n return contents;\n};\nexports.deserializeAws_restJson1ListAccountRolesCommand = deserializeAws_restJson1ListAccountRolesCommand;\nconst deserializeAws_restJson1ListAccountRolesCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await deserializeAws_restJson1InvalidRequestExceptionResponse(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await deserializeAws_restJson1ResourceNotFoundExceptionResponse(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await deserializeAws_restJson1UnauthorizedExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: SSOServiceException_1.SSOServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_restJson1ListAccountsCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1ListAccountsCommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n const data = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.expectObject)(await parseBody(output.body, context)), \"body\");\n if (data.accountList != null) {\n contents.accountList = deserializeAws_restJson1AccountListType(data.accountList, context);\n }\n if (data.nextToken != null) {\n contents.nextToken = (0, smithy_client_1.expectString)(data.nextToken);\n }\n return contents;\n};\nexports.deserializeAws_restJson1ListAccountsCommand = deserializeAws_restJson1ListAccountsCommand;\nconst deserializeAws_restJson1ListAccountsCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await deserializeAws_restJson1InvalidRequestExceptionResponse(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await deserializeAws_restJson1ResourceNotFoundExceptionResponse(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await deserializeAws_restJson1UnauthorizedExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: SSOServiceException_1.SSOServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_restJson1LogoutCommand = async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return deserializeAws_restJson1LogoutCommandError(output, context);\n }\n const contents = map({\n $metadata: deserializeMetadata(output),\n });\n await collectBody(output.body, context);\n return contents;\n};\nexports.deserializeAws_restJson1LogoutCommand = deserializeAws_restJson1LogoutCommand;\nconst deserializeAws_restJson1LogoutCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadRestJsonErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await deserializeAws_restJson1InvalidRequestExceptionResponse(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await deserializeAws_restJson1TooManyRequestsExceptionResponse(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await deserializeAws_restJson1UnauthorizedExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody,\n exceptionCtor: SSOServiceException_1.SSOServiceException,\n errorCode,\n });\n }\n};\nconst map = smithy_client_1.map;\nconst deserializeAws_restJson1InvalidRequestExceptionResponse = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n if (data.message != null) {\n contents.message = (0, smithy_client_1.expectString)(data.message);\n }\n const exception = new models_0_1.InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body);\n};\nconst deserializeAws_restJson1ResourceNotFoundExceptionResponse = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n if (data.message != null) {\n contents.message = (0, smithy_client_1.expectString)(data.message);\n }\n const exception = new models_0_1.ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body);\n};\nconst deserializeAws_restJson1TooManyRequestsExceptionResponse = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n if (data.message != null) {\n contents.message = (0, smithy_client_1.expectString)(data.message);\n }\n const exception = new models_0_1.TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body);\n};\nconst deserializeAws_restJson1UnauthorizedExceptionResponse = async (parsedOutput, context) => {\n const contents = map({});\n const data = parsedOutput.body;\n if (data.message != null) {\n contents.message = (0, smithy_client_1.expectString)(data.message);\n }\n const exception = new models_0_1.UnauthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, parsedOutput.body);\n};\nconst deserializeAws_restJson1AccountInfo = (output, context) => {\n return {\n accountId: (0, smithy_client_1.expectString)(output.accountId),\n accountName: (0, smithy_client_1.expectString)(output.accountName),\n emailAddress: (0, smithy_client_1.expectString)(output.emailAddress),\n };\n};\nconst deserializeAws_restJson1AccountListType = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_restJson1AccountInfo(entry, context);\n });\n return retVal;\n};\nconst deserializeAws_restJson1RoleCredentials = (output, context) => {\n return {\n accessKeyId: (0, smithy_client_1.expectString)(output.accessKeyId),\n expiration: (0, smithy_client_1.expectLong)(output.expiration),\n secretAccessKey: (0, smithy_client_1.expectString)(output.secretAccessKey),\n sessionToken: (0, smithy_client_1.expectString)(output.sessionToken),\n };\n};\nconst deserializeAws_restJson1RoleInfo = (output, context) => {\n return {\n accountId: (0, smithy_client_1.expectString)(output.accountId),\n roleName: (0, smithy_client_1.expectString)(output.roleName),\n };\n};\nconst deserializeAws_restJson1RoleListType = (output, context) => {\n const retVal = (output || [])\n .filter((e) => e != null)\n .map((entry) => {\n if (entry === null) {\n return null;\n }\n return deserializeAws_restJson1RoleInfo(entry, context);\n });\n return retVal;\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\nconst collectBody = (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\nconst collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\nconst isSerializableHeaderValue = (value) => value !== undefined &&\n value !== null &&\n value !== \"\" &&\n (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) &&\n (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0);\nconst parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n return JSON.parse(encoded);\n }\n return {};\n});\nconst parseErrorBody = async (errorBody, context) => {\n const value = await parseBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n};\nconst loadRestJsonErrorCode = (output, data) => {\n const findKey = (object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase());\n const sanitizeErrorCode = (rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n };\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== undefined) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== undefined) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== undefined) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst hash_node_1 = require(\"@aws-sdk/hash-node\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst node_http_handler_1 = require(\"@aws-sdk/node-http-handler\");\nconst util_base64_node_1 = require(\"@aws-sdk/util-base64-node\");\nconst util_body_length_node_1 = require(\"@aws-sdk/util-body-length-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst util_utf8_node_1 = require(\"@aws-sdk/util-utf8-node\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@aws-sdk/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@aws-sdk/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n base64Decoder: config?.base64Decoder ?? util_base64_node_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_node_1.toBase64,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || middleware_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n utf8Decoder: config?.utf8Decoder ?? util_utf8_node_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_node_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst url_parser_1 = require(\"@aws-sdk/url-parser\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => ({\n apiVersion: \"2019-06-10\",\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n logger: config?.logger ?? {},\n serviceId: config?.serviceId ?? \"SSO\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n});\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STS = void 0;\nconst AssumeRoleCommand_1 = require(\"./commands/AssumeRoleCommand\");\nconst AssumeRoleWithSAMLCommand_1 = require(\"./commands/AssumeRoleWithSAMLCommand\");\nconst AssumeRoleWithWebIdentityCommand_1 = require(\"./commands/AssumeRoleWithWebIdentityCommand\");\nconst DecodeAuthorizationMessageCommand_1 = require(\"./commands/DecodeAuthorizationMessageCommand\");\nconst GetAccessKeyInfoCommand_1 = require(\"./commands/GetAccessKeyInfoCommand\");\nconst GetCallerIdentityCommand_1 = require(\"./commands/GetCallerIdentityCommand\");\nconst GetFederationTokenCommand_1 = require(\"./commands/GetFederationTokenCommand\");\nconst GetSessionTokenCommand_1 = require(\"./commands/GetSessionTokenCommand\");\nconst STSClient_1 = require(\"./STSClient\");\nclass STS extends STSClient_1.STSClient {\n assumeRole(args, optionsOrCb, cb) {\n const command = new AssumeRoleCommand_1.AssumeRoleCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n assumeRoleWithSAML(args, optionsOrCb, cb) {\n const command = new AssumeRoleWithSAMLCommand_1.AssumeRoleWithSAMLCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n assumeRoleWithWebIdentity(args, optionsOrCb, cb) {\n const command = new AssumeRoleWithWebIdentityCommand_1.AssumeRoleWithWebIdentityCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n decodeAuthorizationMessage(args, optionsOrCb, cb) {\n const command = new DecodeAuthorizationMessageCommand_1.DecodeAuthorizationMessageCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n getAccessKeyInfo(args, optionsOrCb, cb) {\n const command = new GetAccessKeyInfoCommand_1.GetAccessKeyInfoCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n getCallerIdentity(args, optionsOrCb, cb) {\n const command = new GetCallerIdentityCommand_1.GetCallerIdentityCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n getFederationToken(args, optionsOrCb, cb) {\n const command = new GetFederationTokenCommand_1.GetFederationTokenCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n getSessionToken(args, optionsOrCb, cb) {\n const command = new GetSessionTokenCommand_1.GetSessionTokenCommand(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command, optionsOrCb);\n }\n else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expect http options but get ${typeof optionsOrCb}`);\n this.send(command, optionsOrCb || {}, cb);\n }\n else {\n return this.send(command, optionsOrCb);\n }\n }\n}\nexports.STS = STS;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = void 0;\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst middleware_content_length_1 = require(\"@aws-sdk/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst middleware_sdk_sts_1 = require(\"@aws-sdk/middleware-sdk-sts\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nclass STSClient extends smithy_client_1.Client {\n constructor(configuration) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration);\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1);\n const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_sdk_sts_1.resolveStsAuthConfig)(_config_5, { stsClientCtor: STSClient });\n const _config_7 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_6);\n super(_config_7);\n this.config = _config_7;\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n}\nexports.STSClient = STSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssumeRoleCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass AssumeRoleCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, AssumeRoleCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"AssumeRoleCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.AssumeRoleRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.AssumeRoleResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryAssumeRoleCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryAssumeRoleCommand)(output, context);\n }\n}\nexports.AssumeRoleCommand = AssumeRoleCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssumeRoleWithSAMLCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass AssumeRoleWithSAMLCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, AssumeRoleWithSAMLCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"AssumeRoleWithSAMLCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.AssumeRoleWithSAMLRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.AssumeRoleWithSAMLResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryAssumeRoleWithSAMLCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryAssumeRoleWithSAMLCommand)(output, context);\n }\n}\nexports.AssumeRoleWithSAMLCommand = AssumeRoleWithSAMLCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssumeRoleWithWebIdentityCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass AssumeRoleWithWebIdentityCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, AssumeRoleWithWebIdentityCommand.getEndpointParameterInstructions()));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"AssumeRoleWithWebIdentityCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryAssumeRoleWithWebIdentityCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryAssumeRoleWithWebIdentityCommand)(output, context);\n }\n}\nexports.AssumeRoleWithWebIdentityCommand = AssumeRoleWithWebIdentityCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecodeAuthorizationMessageCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass DecodeAuthorizationMessageCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, DecodeAuthorizationMessageCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"DecodeAuthorizationMessageCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.DecodeAuthorizationMessageRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.DecodeAuthorizationMessageResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryDecodeAuthorizationMessageCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryDecodeAuthorizationMessageCommand)(output, context);\n }\n}\nexports.DecodeAuthorizationMessageCommand = DecodeAuthorizationMessageCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetAccessKeyInfoCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass GetAccessKeyInfoCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, GetAccessKeyInfoCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"GetAccessKeyInfoCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.GetAccessKeyInfoRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.GetAccessKeyInfoResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryGetAccessKeyInfoCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryGetAccessKeyInfoCommand)(output, context);\n }\n}\nexports.GetAccessKeyInfoCommand = GetAccessKeyInfoCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetCallerIdentityCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass GetCallerIdentityCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, GetCallerIdentityCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"GetCallerIdentityCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.GetCallerIdentityRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.GetCallerIdentityResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryGetCallerIdentityCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryGetCallerIdentityCommand)(output, context);\n }\n}\nexports.GetCallerIdentityCommand = GetCallerIdentityCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetFederationTokenCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass GetFederationTokenCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, GetFederationTokenCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"GetFederationTokenCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.GetFederationTokenRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.GetFederationTokenResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryGetFederationTokenCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryGetFederationTokenCommand)(output, context);\n }\n}\nexports.GetFederationTokenCommand = GetFederationTokenCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetSessionTokenCommand = void 0;\nconst middleware_endpoint_1 = require(\"@aws-sdk/middleware-endpoint\");\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst models_0_1 = require(\"../models/models_0\");\nconst Aws_query_1 = require(\"../protocols/Aws_query\");\nclass GetSessionTokenCommand extends smithy_client_1.Command {\n constructor(input) {\n super();\n this.input = input;\n }\n static getEndpointParameterInstructions() {\n return {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n };\n }\n resolveMiddleware(clientStack, configuration, options) {\n this.middlewareStack.use((0, middleware_serde_1.getSerdePlugin)(configuration, this.serialize, this.deserialize));\n this.middlewareStack.use((0, middleware_endpoint_1.getEndpointPlugin)(configuration, GetSessionTokenCommand.getEndpointParameterInstructions()));\n this.middlewareStack.use((0, middleware_signing_1.getAwsAuthPlugin)(configuration));\n const stack = clientStack.concat(this.middlewareStack);\n const { logger } = configuration;\n const clientName = \"STSClient\";\n const commandName = \"GetSessionTokenCommand\";\n const handlerExecutionContext = {\n logger,\n clientName,\n commandName,\n inputFilterSensitiveLog: models_0_1.GetSessionTokenRequestFilterSensitiveLog,\n outputFilterSensitiveLog: models_0_1.GetSessionTokenResponseFilterSensitiveLog,\n };\n const { requestHandler } = configuration;\n return stack.resolve((request) => requestHandler.handle(request.request, options || {}), handlerExecutionContext);\n }\n serialize(input, context) {\n return (0, Aws_query_1.serializeAws_queryGetSessionTokenCommand)(input, context);\n }\n deserialize(output, context) {\n return (0, Aws_query_1.deserializeAws_queryGetSessionTokenCommand)(output, context);\n }\n}\nexports.GetSessionTokenCommand = GetSessionTokenCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./AssumeRoleCommand\"), exports);\ntslib_1.__exportStar(require(\"./AssumeRoleWithSAMLCommand\"), exports);\ntslib_1.__exportStar(require(\"./AssumeRoleWithWebIdentityCommand\"), exports);\ntslib_1.__exportStar(require(\"./DecodeAuthorizationMessageCommand\"), exports);\ntslib_1.__exportStar(require(\"./GetAccessKeyInfoCommand\"), exports);\ntslib_1.__exportStar(require(\"./GetCallerIdentityCommand\"), exports);\ntslib_1.__exportStar(require(\"./GetFederationTokenCommand\"), exports);\ntslib_1.__exportStar(require(\"./GetSessionTokenCommand\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorateDefaultCredentialProvider = exports.getDefaultRoleAssumerWithWebIdentity = exports.getDefaultRoleAssumer = void 0;\nconst defaultStsRoleAssumers_1 = require(\"./defaultStsRoleAssumers\");\nconst STSClient_1 = require(\"./STSClient\");\nconst getCustomizableStsClientCtor = (baseCtor, customizations) => {\n if (!customizations)\n return baseCtor;\n else\n return class CustomizableSTSClient extends baseCtor {\n constructor(config) {\n super(config);\n for (const customization of customizations) {\n this.middlewareStack.use(customization);\n }\n }\n };\n};\nconst getDefaultRoleAssumer = (stsOptions = {}, stsPlugins) => (0, defaultStsRoleAssumers_1.getDefaultRoleAssumer)(stsOptions, getCustomizableStsClientCtor(STSClient_1.STSClient, stsPlugins));\nexports.getDefaultRoleAssumer = getDefaultRoleAssumer;\nconst getDefaultRoleAssumerWithWebIdentity = (stsOptions = {}, stsPlugins) => (0, defaultStsRoleAssumers_1.getDefaultRoleAssumerWithWebIdentity)(stsOptions, getCustomizableStsClientCtor(STSClient_1.STSClient, stsPlugins));\nexports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity;\nconst decorateDefaultCredentialProvider = (provider) => (input) => provider({\n roleAssumer: (0, exports.getDefaultRoleAssumer)(input),\n roleAssumerWithWebIdentity: (0, exports.getDefaultRoleAssumerWithWebIdentity)(input),\n ...input,\n});\nexports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorateDefaultCredentialProvider = exports.getDefaultRoleAssumerWithWebIdentity = exports.getDefaultRoleAssumer = void 0;\nconst AssumeRoleCommand_1 = require(\"./commands/AssumeRoleCommand\");\nconst AssumeRoleWithWebIdentityCommand_1 = require(\"./commands/AssumeRoleWithWebIdentityCommand\");\nconst ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nconst decorateDefaultRegion = (region) => {\n if (typeof region !== \"function\") {\n return region === undefined ? ASSUME_ROLE_DEFAULT_REGION : region;\n }\n return async () => {\n try {\n return await region();\n }\n catch (e) {\n return ASSUME_ROLE_DEFAULT_REGION;\n }\n };\n};\nconst getDefaultRoleAssumer = (stsOptions, stsClientCtor) => {\n let stsClient;\n let closureSourceCreds;\n return async (sourceCreds, params) => {\n closureSourceCreds = sourceCreds;\n if (!stsClient) {\n const { logger, region, requestHandler } = stsOptions;\n stsClient = new stsClientCtor({\n logger,\n credentialDefaultProvider: () => async () => closureSourceCreds,\n region: decorateDefaultRegion(region || stsOptions.region),\n ...(requestHandler ? { requestHandler } : {}),\n });\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand_1.AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n };\n };\n};\nexports.getDefaultRoleAssumer = getDefaultRoleAssumer;\nconst getDefaultRoleAssumerWithWebIdentity = (stsOptions, stsClientCtor) => {\n let stsClient;\n return async (params) => {\n if (!stsClient) {\n const { logger, region, requestHandler } = stsOptions;\n stsClient = new stsClientCtor({\n logger,\n region: decorateDefaultRegion(region || stsOptions.region),\n ...(requestHandler ? { requestHandler } : {}),\n });\n }\n const { Credentials } = await stsClient.send(new AssumeRoleWithWebIdentityCommand_1.AssumeRoleWithWebIdentityCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n };\n };\n};\nexports.getDefaultRoleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity;\nconst decorateDefaultCredentialProvider = (provider) => (input) => provider({\n roleAssumer: (0, exports.getDefaultRoleAssumer)(input, input.stsClientCtor),\n roleAssumerWithWebIdentity: (0, exports.getDefaultRoleAssumerWithWebIdentity)(input, input.stsClientCtor),\n ...input,\n});\nexports.decorateDefaultCredentialProvider = decorateDefaultCredentialProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n defaultSigningName: \"sts\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_1.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nexports.ruleSet = {\n version: \"1.0\",\n parameters: {\n Region: {\n builtIn: \"AWS::Region\",\n required: false,\n documentation: \"The AWS region used to dispatch the request.\",\n type: \"String\",\n },\n UseDualStack: {\n builtIn: \"AWS::UseDualStack\",\n required: true,\n default: false,\n documentation: \"When true, use the dual-stack endpoint. If the configured endpoint does not support dual-stack, dispatching the request MAY return an error.\",\n type: \"Boolean\",\n },\n UseFIPS: {\n builtIn: \"AWS::UseFIPS\",\n required: true,\n default: false,\n documentation: \"When true, send this request to the FIPS-compliant regional endpoint. If the configured endpoint does not have a FIPS compliant endpoint, dispatching the request will return an error.\",\n type: \"Boolean\",\n },\n Endpoint: {\n builtIn: \"SDK::Endpoint\",\n required: false,\n documentation: \"Override the endpoint used to send this request\",\n type: \"String\",\n },\n UseGlobalEndpoint: {\n builtIn: \"AWS::STS::UseGlobalEndpoint\",\n required: true,\n default: false,\n documentation: \"Whether the global endpoint should be used, rather then the regional endpoint for us-east-1.\",\n type: \"Boolean\",\n },\n },\n rules: [\n {\n conditions: [\n {\n fn: \"aws.partition\",\n argv: [\n {\n ref: \"Region\",\n },\n ],\n assign: \"PartitionResult\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseGlobalEndpoint\",\n },\n true,\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n false,\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n false,\n ],\n },\n {\n fn: \"not\",\n argv: [\n {\n fn: \"isSet\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"ap-northeast-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"ap-south-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"ap-southeast-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"ap-southeast-2\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"aws-global\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"ca-central-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"eu-central-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"eu-north-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"eu-west-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"eu-west-2\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"eu-west-3\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"sa-east-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"us-east-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"us-east-2\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"us-west-1\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"us-west-2\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [],\n endpoint: {\n url: \"https://sts.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"{Region}\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"isSet\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n },\n {\n fn: \"parseURL\",\n argv: [\n {\n ref: \"Endpoint\",\n },\n ],\n assign: \"url\",\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: FIPS and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\",\n type: \"error\",\n },\n {\n conditions: [],\n endpoint: {\n url: {\n ref: \"Endpoint\",\n },\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS and DualStack are enabled, but this partition does not support one or both\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseFIPS\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsFIPS\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n \"aws-us-gov\",\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"name\",\n ],\n },\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [],\n endpoint: {\n url: \"https://sts-fips.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n {\n conditions: [],\n error: \"FIPS is enabled but this partition does not support FIPS\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n {\n ref: \"UseDualStack\",\n },\n true,\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"booleanEquals\",\n argv: [\n true,\n {\n fn: \"getAttr\",\n argv: [\n {\n ref: \"PartitionResult\",\n },\n \"supportsDualStack\",\n ],\n },\n ],\n },\n ],\n type: \"tree\",\n rules: [\n {\n conditions: [],\n endpoint: {\n url: \"https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n {\n conditions: [],\n error: \"DualStack is enabled but this partition does not support DualStack\",\n type: \"error\",\n },\n ],\n },\n {\n conditions: [],\n type: \"tree\",\n rules: [\n {\n conditions: [\n {\n fn: \"stringEquals\",\n argv: [\n {\n ref: \"Region\",\n },\n \"aws-global\",\n ],\n },\n ],\n endpoint: {\n url: \"https://sts.amazonaws.com\",\n properties: {\n authSchemes: [\n {\n name: \"sigv4\",\n signingName: \"sts\",\n signingRegion: \"us-east-1\",\n },\n ],\n },\n headers: {},\n },\n type: \"endpoint\",\n },\n {\n conditions: [],\n endpoint: {\n url: \"https://sts.{Region}.{PartitionResult#dnsSuffix}\",\n properties: {},\n headers: {},\n },\n type: \"endpoint\",\n },\n ],\n },\n ],\n },\n ],\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSServiceException = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./STS\"), exports);\ntslib_1.__exportStar(require(\"./STSClient\"), exports);\ntslib_1.__exportStar(require(\"./commands\"), exports);\ntslib_1.__exportStar(require(\"./defaultRoleAssumers\"), exports);\ntslib_1.__exportStar(require(\"./models\"), exports);\nvar STSServiceException_1 = require(\"./models/STSServiceException\");\nObject.defineProperty(exports, \"STSServiceException\", { enumerable: true, get: function () { return STSServiceException_1.STSServiceException; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSServiceException = void 0;\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nclass STSServiceException extends smithy_client_1.ServiceException {\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, STSServiceException.prototype);\n }\n}\nexports.STSServiceException = STSServiceException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./models_0\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GetSessionTokenResponseFilterSensitiveLog = exports.GetSessionTokenRequestFilterSensitiveLog = exports.GetFederationTokenResponseFilterSensitiveLog = exports.FederatedUserFilterSensitiveLog = exports.GetFederationTokenRequestFilterSensitiveLog = exports.GetCallerIdentityResponseFilterSensitiveLog = exports.GetCallerIdentityRequestFilterSensitiveLog = exports.GetAccessKeyInfoResponseFilterSensitiveLog = exports.GetAccessKeyInfoRequestFilterSensitiveLog = exports.DecodeAuthorizationMessageResponseFilterSensitiveLog = exports.DecodeAuthorizationMessageRequestFilterSensitiveLog = exports.AssumeRoleWithWebIdentityResponseFilterSensitiveLog = exports.AssumeRoleWithWebIdentityRequestFilterSensitiveLog = exports.AssumeRoleWithSAMLResponseFilterSensitiveLog = exports.AssumeRoleWithSAMLRequestFilterSensitiveLog = exports.AssumeRoleResponseFilterSensitiveLog = exports.CredentialsFilterSensitiveLog = exports.AssumeRoleRequestFilterSensitiveLog = exports.TagFilterSensitiveLog = exports.PolicyDescriptorTypeFilterSensitiveLog = exports.AssumedRoleUserFilterSensitiveLog = exports.InvalidAuthorizationMessageException = exports.IDPCommunicationErrorException = exports.InvalidIdentityTokenException = exports.IDPRejectedClaimException = exports.RegionDisabledException = exports.PackedPolicyTooLargeException = exports.MalformedPolicyDocumentException = exports.ExpiredTokenException = void 0;\nconst STSServiceException_1 = require(\"./STSServiceException\");\nclass ExpiredTokenException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, ExpiredTokenException.prototype);\n }\n}\nexports.ExpiredTokenException = ExpiredTokenException;\nclass MalformedPolicyDocumentException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"MalformedPolicyDocumentException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"MalformedPolicyDocumentException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, MalformedPolicyDocumentException.prototype);\n }\n}\nexports.MalformedPolicyDocumentException = MalformedPolicyDocumentException;\nclass PackedPolicyTooLargeException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"PackedPolicyTooLargeException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"PackedPolicyTooLargeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, PackedPolicyTooLargeException.prototype);\n }\n}\nexports.PackedPolicyTooLargeException = PackedPolicyTooLargeException;\nclass RegionDisabledException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"RegionDisabledException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"RegionDisabledException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, RegionDisabledException.prototype);\n }\n}\nexports.RegionDisabledException = RegionDisabledException;\nclass IDPRejectedClaimException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"IDPRejectedClaimException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"IDPRejectedClaimException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, IDPRejectedClaimException.prototype);\n }\n}\nexports.IDPRejectedClaimException = IDPRejectedClaimException;\nclass InvalidIdentityTokenException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"InvalidIdentityTokenException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"InvalidIdentityTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, InvalidIdentityTokenException.prototype);\n }\n}\nexports.InvalidIdentityTokenException = InvalidIdentityTokenException;\nclass IDPCommunicationErrorException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"IDPCommunicationErrorException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"IDPCommunicationErrorException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, IDPCommunicationErrorException.prototype);\n }\n}\nexports.IDPCommunicationErrorException = IDPCommunicationErrorException;\nclass InvalidAuthorizationMessageException extends STSServiceException_1.STSServiceException {\n constructor(opts) {\n super({\n name: \"InvalidAuthorizationMessageException\",\n $fault: \"client\",\n ...opts,\n });\n this.name = \"InvalidAuthorizationMessageException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, InvalidAuthorizationMessageException.prototype);\n }\n}\nexports.InvalidAuthorizationMessageException = InvalidAuthorizationMessageException;\nconst AssumedRoleUserFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumedRoleUserFilterSensitiveLog = AssumedRoleUserFilterSensitiveLog;\nconst PolicyDescriptorTypeFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.PolicyDescriptorTypeFilterSensitiveLog = PolicyDescriptorTypeFilterSensitiveLog;\nconst TagFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.TagFilterSensitiveLog = TagFilterSensitiveLog;\nconst AssumeRoleRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleRequestFilterSensitiveLog = AssumeRoleRequestFilterSensitiveLog;\nconst CredentialsFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.CredentialsFilterSensitiveLog = CredentialsFilterSensitiveLog;\nconst AssumeRoleResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleResponseFilterSensitiveLog = AssumeRoleResponseFilterSensitiveLog;\nconst AssumeRoleWithSAMLRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleWithSAMLRequestFilterSensitiveLog = AssumeRoleWithSAMLRequestFilterSensitiveLog;\nconst AssumeRoleWithSAMLResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleWithSAMLResponseFilterSensitiveLog = AssumeRoleWithSAMLResponseFilterSensitiveLog;\nconst AssumeRoleWithWebIdentityRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleWithWebIdentityRequestFilterSensitiveLog = AssumeRoleWithWebIdentityRequestFilterSensitiveLog;\nconst AssumeRoleWithWebIdentityResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.AssumeRoleWithWebIdentityResponseFilterSensitiveLog = AssumeRoleWithWebIdentityResponseFilterSensitiveLog;\nconst DecodeAuthorizationMessageRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DecodeAuthorizationMessageRequestFilterSensitiveLog = DecodeAuthorizationMessageRequestFilterSensitiveLog;\nconst DecodeAuthorizationMessageResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.DecodeAuthorizationMessageResponseFilterSensitiveLog = DecodeAuthorizationMessageResponseFilterSensitiveLog;\nconst GetAccessKeyInfoRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetAccessKeyInfoRequestFilterSensitiveLog = GetAccessKeyInfoRequestFilterSensitiveLog;\nconst GetAccessKeyInfoResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetAccessKeyInfoResponseFilterSensitiveLog = GetAccessKeyInfoResponseFilterSensitiveLog;\nconst GetCallerIdentityRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetCallerIdentityRequestFilterSensitiveLog = GetCallerIdentityRequestFilterSensitiveLog;\nconst GetCallerIdentityResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetCallerIdentityResponseFilterSensitiveLog = GetCallerIdentityResponseFilterSensitiveLog;\nconst GetFederationTokenRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetFederationTokenRequestFilterSensitiveLog = GetFederationTokenRequestFilterSensitiveLog;\nconst FederatedUserFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.FederatedUserFilterSensitiveLog = FederatedUserFilterSensitiveLog;\nconst GetFederationTokenResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetFederationTokenResponseFilterSensitiveLog = GetFederationTokenResponseFilterSensitiveLog;\nconst GetSessionTokenRequestFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetSessionTokenRequestFilterSensitiveLog = GetSessionTokenRequestFilterSensitiveLog;\nconst GetSessionTokenResponseFilterSensitiveLog = (obj) => ({\n ...obj,\n});\nexports.GetSessionTokenResponseFilterSensitiveLog = GetSessionTokenResponseFilterSensitiveLog;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeAws_queryGetSessionTokenCommand = exports.deserializeAws_queryGetFederationTokenCommand = exports.deserializeAws_queryGetCallerIdentityCommand = exports.deserializeAws_queryGetAccessKeyInfoCommand = exports.deserializeAws_queryDecodeAuthorizationMessageCommand = exports.deserializeAws_queryAssumeRoleWithWebIdentityCommand = exports.deserializeAws_queryAssumeRoleWithSAMLCommand = exports.deserializeAws_queryAssumeRoleCommand = exports.serializeAws_queryGetSessionTokenCommand = exports.serializeAws_queryGetFederationTokenCommand = exports.serializeAws_queryGetCallerIdentityCommand = exports.serializeAws_queryGetAccessKeyInfoCommand = exports.serializeAws_queryDecodeAuthorizationMessageCommand = exports.serializeAws_queryAssumeRoleWithWebIdentityCommand = exports.serializeAws_queryAssumeRoleWithSAMLCommand = exports.serializeAws_queryAssumeRoleCommand = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst fast_xml_parser_1 = require(\"fast-xml-parser\");\nconst models_0_1 = require(\"../models/models_0\");\nconst STSServiceException_1 = require(\"../models/STSServiceException\");\nconst serializeAws_queryAssumeRoleCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryAssumeRoleRequest(input, context),\n Action: \"AssumeRole\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryAssumeRoleCommand = serializeAws_queryAssumeRoleCommand;\nconst serializeAws_queryAssumeRoleWithSAMLCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryAssumeRoleWithSAMLRequest(input, context),\n Action: \"AssumeRoleWithSAML\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryAssumeRoleWithSAMLCommand = serializeAws_queryAssumeRoleWithSAMLCommand;\nconst serializeAws_queryAssumeRoleWithWebIdentityCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryAssumeRoleWithWebIdentityRequest(input, context),\n Action: \"AssumeRoleWithWebIdentity\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryAssumeRoleWithWebIdentityCommand = serializeAws_queryAssumeRoleWithWebIdentityCommand;\nconst serializeAws_queryDecodeAuthorizationMessageCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryDecodeAuthorizationMessageRequest(input, context),\n Action: \"DecodeAuthorizationMessage\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryDecodeAuthorizationMessageCommand = serializeAws_queryDecodeAuthorizationMessageCommand;\nconst serializeAws_queryGetAccessKeyInfoCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryGetAccessKeyInfoRequest(input, context),\n Action: \"GetAccessKeyInfo\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryGetAccessKeyInfoCommand = serializeAws_queryGetAccessKeyInfoCommand;\nconst serializeAws_queryGetCallerIdentityCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryGetCallerIdentityRequest(input, context),\n Action: \"GetCallerIdentity\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryGetCallerIdentityCommand = serializeAws_queryGetCallerIdentityCommand;\nconst serializeAws_queryGetFederationTokenCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryGetFederationTokenRequest(input, context),\n Action: \"GetFederationToken\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryGetFederationTokenCommand = serializeAws_queryGetFederationTokenCommand;\nconst serializeAws_queryGetSessionTokenCommand = async (input, context) => {\n const headers = {\n \"content-type\": \"application/x-www-form-urlencoded\",\n };\n let body;\n body = buildFormUrlencodedString({\n ...serializeAws_queryGetSessionTokenRequest(input, context),\n Action: \"GetSessionToken\",\n Version: \"2011-06-15\",\n });\n return buildHttpRpcRequest(context, headers, \"/\", undefined, body);\n};\nexports.serializeAws_queryGetSessionTokenCommand = serializeAws_queryGetSessionTokenCommand;\nconst deserializeAws_queryAssumeRoleCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryAssumeRoleCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryAssumeRoleResponse(data.AssumeRoleResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryAssumeRoleCommand = deserializeAws_queryAssumeRoleCommand;\nconst deserializeAws_queryAssumeRoleCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await deserializeAws_queryExpiredTokenExceptionResponse(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await deserializeAws_queryMalformedPolicyDocumentExceptionResponse(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await deserializeAws_queryPackedPolicyTooLargeExceptionResponse(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await deserializeAws_queryRegionDisabledExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryAssumeRoleWithSAMLCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryAssumeRoleWithSAMLCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryAssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryAssumeRoleWithSAMLCommand = deserializeAws_queryAssumeRoleWithSAMLCommand;\nconst deserializeAws_queryAssumeRoleWithSAMLCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await deserializeAws_queryExpiredTokenExceptionResponse(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await deserializeAws_queryIDPRejectedClaimExceptionResponse(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await deserializeAws_queryInvalidIdentityTokenExceptionResponse(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await deserializeAws_queryMalformedPolicyDocumentExceptionResponse(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await deserializeAws_queryPackedPolicyTooLargeExceptionResponse(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await deserializeAws_queryRegionDisabledExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryAssumeRoleWithWebIdentityCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryAssumeRoleWithWebIdentityCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryAssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryAssumeRoleWithWebIdentityCommand = deserializeAws_queryAssumeRoleWithWebIdentityCommand;\nconst deserializeAws_queryAssumeRoleWithWebIdentityCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await deserializeAws_queryExpiredTokenExceptionResponse(parsedOutput, context);\n case \"IDPCommunicationError\":\n case \"com.amazonaws.sts#IDPCommunicationErrorException\":\n throw await deserializeAws_queryIDPCommunicationErrorExceptionResponse(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await deserializeAws_queryIDPRejectedClaimExceptionResponse(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await deserializeAws_queryInvalidIdentityTokenExceptionResponse(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await deserializeAws_queryMalformedPolicyDocumentExceptionResponse(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await deserializeAws_queryPackedPolicyTooLargeExceptionResponse(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await deserializeAws_queryRegionDisabledExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryDecodeAuthorizationMessageCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryDecodeAuthorizationMessageCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryDecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryDecodeAuthorizationMessageCommand = deserializeAws_queryDecodeAuthorizationMessageCommand;\nconst deserializeAws_queryDecodeAuthorizationMessageCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidAuthorizationMessageException\":\n case \"com.amazonaws.sts#InvalidAuthorizationMessageException\":\n throw await deserializeAws_queryInvalidAuthorizationMessageExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryGetAccessKeyInfoCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryGetAccessKeyInfoCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryGetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryGetAccessKeyInfoCommand = deserializeAws_queryGetAccessKeyInfoCommand;\nconst deserializeAws_queryGetAccessKeyInfoCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n};\nconst deserializeAws_queryGetCallerIdentityCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryGetCallerIdentityCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryGetCallerIdentityResponse(data.GetCallerIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryGetCallerIdentityCommand = deserializeAws_queryGetCallerIdentityCommand;\nconst deserializeAws_queryGetCallerIdentityCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n};\nconst deserializeAws_queryGetFederationTokenCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryGetFederationTokenCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryGetFederationTokenResponse(data.GetFederationTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryGetFederationTokenCommand = deserializeAws_queryGetFederationTokenCommand;\nconst deserializeAws_queryGetFederationTokenCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await deserializeAws_queryMalformedPolicyDocumentExceptionResponse(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await deserializeAws_queryPackedPolicyTooLargeExceptionResponse(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await deserializeAws_queryRegionDisabledExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryGetSessionTokenCommand = async (output, context) => {\n if (output.statusCode >= 300) {\n return deserializeAws_queryGetSessionTokenCommandError(output, context);\n }\n const data = await parseBody(output.body, context);\n let contents = {};\n contents = deserializeAws_queryGetSessionTokenResponse(data.GetSessionTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents,\n };\n return Promise.resolve(response);\n};\nexports.deserializeAws_queryGetSessionTokenCommand = deserializeAws_queryGetSessionTokenCommand;\nconst deserializeAws_queryGetSessionTokenCommandError = async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await parseErrorBody(output.body, context),\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await deserializeAws_queryRegionDisabledExceptionResponse(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n (0, smithy_client_1.throwDefaultError)({\n output,\n parsedBody: parsedBody.Error,\n exceptionCtor: STSServiceException_1.STSServiceException,\n errorCode,\n });\n }\n};\nconst deserializeAws_queryExpiredTokenExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryExpiredTokenException(body.Error, context);\n const exception = new models_0_1.ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryIDPCommunicationErrorExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryIDPCommunicationErrorException(body.Error, context);\n const exception = new models_0_1.IDPCommunicationErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryIDPRejectedClaimExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryIDPRejectedClaimException(body.Error, context);\n const exception = new models_0_1.IDPRejectedClaimException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryInvalidAuthorizationMessageExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryInvalidAuthorizationMessageException(body.Error, context);\n const exception = new models_0_1.InvalidAuthorizationMessageException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryInvalidIdentityTokenExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryInvalidIdentityTokenException(body.Error, context);\n const exception = new models_0_1.InvalidIdentityTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryMalformedPolicyDocumentExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryMalformedPolicyDocumentException(body.Error, context);\n const exception = new models_0_1.MalformedPolicyDocumentException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryPackedPolicyTooLargeExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryPackedPolicyTooLargeException(body.Error, context);\n const exception = new models_0_1.PackedPolicyTooLargeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst deserializeAws_queryRegionDisabledExceptionResponse = async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = deserializeAws_queryRegionDisabledException(body.Error, context);\n const exception = new models_0_1.RegionDisabledException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized,\n });\n return (0, smithy_client_1.decorateServiceException)(exception, body);\n};\nconst serializeAws_queryAssumeRoleRequest = (input, context) => {\n const entries = {};\n if (input.RoleArn != null) {\n entries[\"RoleArn\"] = input.RoleArn;\n }\n if (input.RoleSessionName != null) {\n entries[\"RoleSessionName\"] = input.RoleSessionName;\n }\n if (input.PolicyArns != null) {\n const memberEntries = serializeAws_querypolicyDescriptorListType(input.PolicyArns, context);\n if (input.PolicyArns?.length === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input.Policy != null) {\n entries[\"Policy\"] = input.Policy;\n }\n if (input.DurationSeconds != null) {\n entries[\"DurationSeconds\"] = input.DurationSeconds;\n }\n if (input.Tags != null) {\n const memberEntries = serializeAws_querytagListType(input.Tags, context);\n if (input.Tags?.length === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input.TransitiveTagKeys != null) {\n const memberEntries = serializeAws_querytagKeyListType(input.TransitiveTagKeys, context);\n if (input.TransitiveTagKeys?.length === 0) {\n entries.TransitiveTagKeys = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TransitiveTagKeys.${key}`;\n entries[loc] = value;\n });\n }\n if (input.ExternalId != null) {\n entries[\"ExternalId\"] = input.ExternalId;\n }\n if (input.SerialNumber != null) {\n entries[\"SerialNumber\"] = input.SerialNumber;\n }\n if (input.TokenCode != null) {\n entries[\"TokenCode\"] = input.TokenCode;\n }\n if (input.SourceIdentity != null) {\n entries[\"SourceIdentity\"] = input.SourceIdentity;\n }\n return entries;\n};\nconst serializeAws_queryAssumeRoleWithSAMLRequest = (input, context) => {\n const entries = {};\n if (input.RoleArn != null) {\n entries[\"RoleArn\"] = input.RoleArn;\n }\n if (input.PrincipalArn != null) {\n entries[\"PrincipalArn\"] = input.PrincipalArn;\n }\n if (input.SAMLAssertion != null) {\n entries[\"SAMLAssertion\"] = input.SAMLAssertion;\n }\n if (input.PolicyArns != null) {\n const memberEntries = serializeAws_querypolicyDescriptorListType(input.PolicyArns, context);\n if (input.PolicyArns?.length === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input.Policy != null) {\n entries[\"Policy\"] = input.Policy;\n }\n if (input.DurationSeconds != null) {\n entries[\"DurationSeconds\"] = input.DurationSeconds;\n }\n return entries;\n};\nconst serializeAws_queryAssumeRoleWithWebIdentityRequest = (input, context) => {\n const entries = {};\n if (input.RoleArn != null) {\n entries[\"RoleArn\"] = input.RoleArn;\n }\n if (input.RoleSessionName != null) {\n entries[\"RoleSessionName\"] = input.RoleSessionName;\n }\n if (input.WebIdentityToken != null) {\n entries[\"WebIdentityToken\"] = input.WebIdentityToken;\n }\n if (input.ProviderId != null) {\n entries[\"ProviderId\"] = input.ProviderId;\n }\n if (input.PolicyArns != null) {\n const memberEntries = serializeAws_querypolicyDescriptorListType(input.PolicyArns, context);\n if (input.PolicyArns?.length === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input.Policy != null) {\n entries[\"Policy\"] = input.Policy;\n }\n if (input.DurationSeconds != null) {\n entries[\"DurationSeconds\"] = input.DurationSeconds;\n }\n return entries;\n};\nconst serializeAws_queryDecodeAuthorizationMessageRequest = (input, context) => {\n const entries = {};\n if (input.EncodedMessage != null) {\n entries[\"EncodedMessage\"] = input.EncodedMessage;\n }\n return entries;\n};\nconst serializeAws_queryGetAccessKeyInfoRequest = (input, context) => {\n const entries = {};\n if (input.AccessKeyId != null) {\n entries[\"AccessKeyId\"] = input.AccessKeyId;\n }\n return entries;\n};\nconst serializeAws_queryGetCallerIdentityRequest = (input, context) => {\n const entries = {};\n return entries;\n};\nconst serializeAws_queryGetFederationTokenRequest = (input, context) => {\n const entries = {};\n if (input.Name != null) {\n entries[\"Name\"] = input.Name;\n }\n if (input.Policy != null) {\n entries[\"Policy\"] = input.Policy;\n }\n if (input.PolicyArns != null) {\n const memberEntries = serializeAws_querypolicyDescriptorListType(input.PolicyArns, context);\n if (input.PolicyArns?.length === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input.DurationSeconds != null) {\n entries[\"DurationSeconds\"] = input.DurationSeconds;\n }\n if (input.Tags != null) {\n const memberEntries = serializeAws_querytagListType(input.Tags, context);\n if (input.Tags?.length === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n};\nconst serializeAws_queryGetSessionTokenRequest = (input, context) => {\n const entries = {};\n if (input.DurationSeconds != null) {\n entries[\"DurationSeconds\"] = input.DurationSeconds;\n }\n if (input.SerialNumber != null) {\n entries[\"SerialNumber\"] = input.SerialNumber;\n }\n if (input.TokenCode != null) {\n entries[\"TokenCode\"] = input.TokenCode;\n }\n return entries;\n};\nconst serializeAws_querypolicyDescriptorListType = (input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = serializeAws_queryPolicyDescriptorType(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n};\nconst serializeAws_queryPolicyDescriptorType = (input, context) => {\n const entries = {};\n if (input.arn != null) {\n entries[\"arn\"] = input.arn;\n }\n return entries;\n};\nconst serializeAws_queryTag = (input, context) => {\n const entries = {};\n if (input.Key != null) {\n entries[\"Key\"] = input.Key;\n }\n if (input.Value != null) {\n entries[\"Value\"] = input.Value;\n }\n return entries;\n};\nconst serializeAws_querytagKeyListType = (input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n};\nconst serializeAws_querytagListType = (input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = serializeAws_queryTag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n};\nconst deserializeAws_queryAssumedRoleUser = (output, context) => {\n const contents = {\n AssumedRoleId: undefined,\n Arn: undefined,\n };\n if (output[\"AssumedRoleId\"] !== undefined) {\n contents.AssumedRoleId = (0, smithy_client_1.expectString)(output[\"AssumedRoleId\"]);\n }\n if (output[\"Arn\"] !== undefined) {\n contents.Arn = (0, smithy_client_1.expectString)(output[\"Arn\"]);\n }\n return contents;\n};\nconst deserializeAws_queryAssumeRoleResponse = (output, context) => {\n const contents = {\n Credentials: undefined,\n AssumedRoleUser: undefined,\n PackedPolicySize: undefined,\n SourceIdentity: undefined,\n };\n if (output[\"Credentials\"] !== undefined) {\n contents.Credentials = deserializeAws_queryCredentials(output[\"Credentials\"], context);\n }\n if (output[\"AssumedRoleUser\"] !== undefined) {\n contents.AssumedRoleUser = deserializeAws_queryAssumedRoleUser(output[\"AssumedRoleUser\"], context);\n }\n if (output[\"PackedPolicySize\"] !== undefined) {\n contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output[\"PackedPolicySize\"]);\n }\n if (output[\"SourceIdentity\"] !== undefined) {\n contents.SourceIdentity = (0, smithy_client_1.expectString)(output[\"SourceIdentity\"]);\n }\n return contents;\n};\nconst deserializeAws_queryAssumeRoleWithSAMLResponse = (output, context) => {\n const contents = {\n Credentials: undefined,\n AssumedRoleUser: undefined,\n PackedPolicySize: undefined,\n Subject: undefined,\n SubjectType: undefined,\n Issuer: undefined,\n Audience: undefined,\n NameQualifier: undefined,\n SourceIdentity: undefined,\n };\n if (output[\"Credentials\"] !== undefined) {\n contents.Credentials = deserializeAws_queryCredentials(output[\"Credentials\"], context);\n }\n if (output[\"AssumedRoleUser\"] !== undefined) {\n contents.AssumedRoleUser = deserializeAws_queryAssumedRoleUser(output[\"AssumedRoleUser\"], context);\n }\n if (output[\"PackedPolicySize\"] !== undefined) {\n contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output[\"PackedPolicySize\"]);\n }\n if (output[\"Subject\"] !== undefined) {\n contents.Subject = (0, smithy_client_1.expectString)(output[\"Subject\"]);\n }\n if (output[\"SubjectType\"] !== undefined) {\n contents.SubjectType = (0, smithy_client_1.expectString)(output[\"SubjectType\"]);\n }\n if (output[\"Issuer\"] !== undefined) {\n contents.Issuer = (0, smithy_client_1.expectString)(output[\"Issuer\"]);\n }\n if (output[\"Audience\"] !== undefined) {\n contents.Audience = (0, smithy_client_1.expectString)(output[\"Audience\"]);\n }\n if (output[\"NameQualifier\"] !== undefined) {\n contents.NameQualifier = (0, smithy_client_1.expectString)(output[\"NameQualifier\"]);\n }\n if (output[\"SourceIdentity\"] !== undefined) {\n contents.SourceIdentity = (0, smithy_client_1.expectString)(output[\"SourceIdentity\"]);\n }\n return contents;\n};\nconst deserializeAws_queryAssumeRoleWithWebIdentityResponse = (output, context) => {\n const contents = {\n Credentials: undefined,\n SubjectFromWebIdentityToken: undefined,\n AssumedRoleUser: undefined,\n PackedPolicySize: undefined,\n Provider: undefined,\n Audience: undefined,\n SourceIdentity: undefined,\n };\n if (output[\"Credentials\"] !== undefined) {\n contents.Credentials = deserializeAws_queryCredentials(output[\"Credentials\"], context);\n }\n if (output[\"SubjectFromWebIdentityToken\"] !== undefined) {\n contents.SubjectFromWebIdentityToken = (0, smithy_client_1.expectString)(output[\"SubjectFromWebIdentityToken\"]);\n }\n if (output[\"AssumedRoleUser\"] !== undefined) {\n contents.AssumedRoleUser = deserializeAws_queryAssumedRoleUser(output[\"AssumedRoleUser\"], context);\n }\n if (output[\"PackedPolicySize\"] !== undefined) {\n contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output[\"PackedPolicySize\"]);\n }\n if (output[\"Provider\"] !== undefined) {\n contents.Provider = (0, smithy_client_1.expectString)(output[\"Provider\"]);\n }\n if (output[\"Audience\"] !== undefined) {\n contents.Audience = (0, smithy_client_1.expectString)(output[\"Audience\"]);\n }\n if (output[\"SourceIdentity\"] !== undefined) {\n contents.SourceIdentity = (0, smithy_client_1.expectString)(output[\"SourceIdentity\"]);\n }\n return contents;\n};\nconst deserializeAws_queryCredentials = (output, context) => {\n const contents = {\n AccessKeyId: undefined,\n SecretAccessKey: undefined,\n SessionToken: undefined,\n Expiration: undefined,\n };\n if (output[\"AccessKeyId\"] !== undefined) {\n contents.AccessKeyId = (0, smithy_client_1.expectString)(output[\"AccessKeyId\"]);\n }\n if (output[\"SecretAccessKey\"] !== undefined) {\n contents.SecretAccessKey = (0, smithy_client_1.expectString)(output[\"SecretAccessKey\"]);\n }\n if (output[\"SessionToken\"] !== undefined) {\n contents.SessionToken = (0, smithy_client_1.expectString)(output[\"SessionToken\"]);\n }\n if (output[\"Expiration\"] !== undefined) {\n contents.Expiration = (0, smithy_client_1.expectNonNull)((0, smithy_client_1.parseRfc3339DateTime)(output[\"Expiration\"]));\n }\n return contents;\n};\nconst deserializeAws_queryDecodeAuthorizationMessageResponse = (output, context) => {\n const contents = {\n DecodedMessage: undefined,\n };\n if (output[\"DecodedMessage\"] !== undefined) {\n contents.DecodedMessage = (0, smithy_client_1.expectString)(output[\"DecodedMessage\"]);\n }\n return contents;\n};\nconst deserializeAws_queryExpiredTokenException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryFederatedUser = (output, context) => {\n const contents = {\n FederatedUserId: undefined,\n Arn: undefined,\n };\n if (output[\"FederatedUserId\"] !== undefined) {\n contents.FederatedUserId = (0, smithy_client_1.expectString)(output[\"FederatedUserId\"]);\n }\n if (output[\"Arn\"] !== undefined) {\n contents.Arn = (0, smithy_client_1.expectString)(output[\"Arn\"]);\n }\n return contents;\n};\nconst deserializeAws_queryGetAccessKeyInfoResponse = (output, context) => {\n const contents = {\n Account: undefined,\n };\n if (output[\"Account\"] !== undefined) {\n contents.Account = (0, smithy_client_1.expectString)(output[\"Account\"]);\n }\n return contents;\n};\nconst deserializeAws_queryGetCallerIdentityResponse = (output, context) => {\n const contents = {\n UserId: undefined,\n Account: undefined,\n Arn: undefined,\n };\n if (output[\"UserId\"] !== undefined) {\n contents.UserId = (0, smithy_client_1.expectString)(output[\"UserId\"]);\n }\n if (output[\"Account\"] !== undefined) {\n contents.Account = (0, smithy_client_1.expectString)(output[\"Account\"]);\n }\n if (output[\"Arn\"] !== undefined) {\n contents.Arn = (0, smithy_client_1.expectString)(output[\"Arn\"]);\n }\n return contents;\n};\nconst deserializeAws_queryGetFederationTokenResponse = (output, context) => {\n const contents = {\n Credentials: undefined,\n FederatedUser: undefined,\n PackedPolicySize: undefined,\n };\n if (output[\"Credentials\"] !== undefined) {\n contents.Credentials = deserializeAws_queryCredentials(output[\"Credentials\"], context);\n }\n if (output[\"FederatedUser\"] !== undefined) {\n contents.FederatedUser = deserializeAws_queryFederatedUser(output[\"FederatedUser\"], context);\n }\n if (output[\"PackedPolicySize\"] !== undefined) {\n contents.PackedPolicySize = (0, smithy_client_1.strictParseInt32)(output[\"PackedPolicySize\"]);\n }\n return contents;\n};\nconst deserializeAws_queryGetSessionTokenResponse = (output, context) => {\n const contents = {\n Credentials: undefined,\n };\n if (output[\"Credentials\"] !== undefined) {\n contents.Credentials = deserializeAws_queryCredentials(output[\"Credentials\"], context);\n }\n return contents;\n};\nconst deserializeAws_queryIDPCommunicationErrorException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryIDPRejectedClaimException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryInvalidAuthorizationMessageException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryInvalidIdentityTokenException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryMalformedPolicyDocumentException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryPackedPolicyTooLargeException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeAws_queryRegionDisabledException = (output, context) => {\n const contents = {\n message: undefined,\n };\n if (output[\"message\"] !== undefined) {\n contents.message = (0, smithy_client_1.expectString)(output[\"message\"]);\n }\n return contents;\n};\nconst deserializeMetadata = (output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n});\nconst collectBody = (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return Promise.resolve(streamBody);\n }\n return context.streamCollector(streamBody) || Promise.resolve(new Uint8Array());\n};\nconst collectBodyString = (streamBody, context) => collectBody(streamBody, context).then((body) => context.utf8Encoder(body));\nconst buildHttpRpcRequest = async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers,\n };\n if (resolvedHostname !== undefined) {\n contents.hostname = resolvedHostname;\n }\n if (body !== undefined) {\n contents.body = body;\n }\n return new protocol_http_1.HttpRequest(contents);\n};\nconst parseBody = (streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new fast_xml_parser_1.XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => (val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : undefined),\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n const parsedObj = parser.parse(encoded);\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return (0, smithy_client_1.getValueFromTextNode)(parsedObjToReturn);\n }\n return {};\n});\nconst parseErrorBody = async (errorBody, context) => {\n const value = await parseBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n};\nconst buildFormUrlencodedString = (formEntries) => Object.entries(formEntries)\n .map(([key, value]) => (0, smithy_client_1.extendedEncodeURIComponent)(key) + \"=\" + (0, smithy_client_1.extendedEncodeURIComponent)(value))\n .join(\"&\");\nconst loadQueryErrorCode = (output, data) => {\n if (data.Error.Code !== undefined) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst defaultStsRoleAssumers_1 = require(\"./defaultStsRoleAssumers\");\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst hash_node_1 = require(\"@aws-sdk/hash-node\");\nconst middleware_retry_1 = require(\"@aws-sdk/middleware-retry\");\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst node_http_handler_1 = require(\"@aws-sdk/node-http-handler\");\nconst util_base64_node_1 = require(\"@aws-sdk/util-base64-node\");\nconst util_body_length_node_1 = require(\"@aws-sdk/util-body-length-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst util_utf8_node_1 = require(\"@aws-sdk/util-utf8-node\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@aws-sdk/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@aws-sdk/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@aws-sdk/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n base64Decoder: config?.base64Decoder ?? util_base64_node_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_node_1.toBase64,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? (0, defaultStsRoleAssumers_1.decorateDefaultCredentialProvider)(credential_provider_node_1.defaultProvider),\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: config?.requestHandler ?? new node_http_handler_1.NodeHttpHandler(defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || middleware_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n utf8Decoder: config?.utf8Decoder ?? util_utf8_node_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_node_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst url_parser_1 = require(\"@aws-sdk/url-parser\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => ({\n apiVersion: \"2011-06-15\",\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n logger: config?.logger ?? {},\n serviceId: config?.serviceId ?? \"STS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n});\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = exports.DEFAULT_USE_DUALSTACK_ENDPOINT = exports.CONFIG_USE_DUALSTACK_ENDPOINT = exports.ENV_USE_DUALSTACK_ENDPOINT = void 0;\nconst util_config_provider_1 = require(\"@aws-sdk/util-config-provider\");\nexports.ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nexports.CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nexports.DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nexports.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, util_config_provider_1.booleanSelector)(env, exports.ENV_USE_DUALSTACK_ENDPOINT, util_config_provider_1.SelectorType.ENV),\n configFileSelector: (profile) => (0, util_config_provider_1.booleanSelector)(profile, exports.CONFIG_USE_DUALSTACK_ENDPOINT, util_config_provider_1.SelectorType.CONFIG),\n default: false,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = exports.DEFAULT_USE_FIPS_ENDPOINT = exports.CONFIG_USE_FIPS_ENDPOINT = exports.ENV_USE_FIPS_ENDPOINT = void 0;\nconst util_config_provider_1 = require(\"@aws-sdk/util-config-provider\");\nexports.ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nexports.CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nexports.DEFAULT_USE_FIPS_ENDPOINT = false;\nexports.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, util_config_provider_1.booleanSelector)(env, exports.ENV_USE_FIPS_ENDPOINT, util_config_provider_1.SelectorType.ENV),\n configFileSelector: (profile) => (0, util_config_provider_1.booleanSelector)(profile, exports.CONFIG_USE_FIPS_ENDPOINT, util_config_provider_1.SelectorType.CONFIG),\n default: false,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./NodeUseDualstackEndpointConfigOptions\"), exports);\ntslib_1.__exportStar(require(\"./NodeUseFipsEndpointConfigOptions\"), exports);\ntslib_1.__exportStar(require(\"./resolveCustomEndpointsConfig\"), exports);\ntslib_1.__exportStar(require(\"./resolveEndpointsConfig\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveCustomEndpointsConfig = void 0;\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst resolveCustomEndpointsConfig = (input) => {\n var _a;\n const { endpoint, urlParser } = input;\n return {\n ...input,\n tls: (_a = input.tls) !== null && _a !== void 0 ? _a : true,\n endpoint: (0, util_middleware_1.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint),\n isCustomEndpoint: true,\n useDualstackEndpoint: (0, util_middleware_1.normalizeProvider)(input.useDualstackEndpoint),\n };\n};\nexports.resolveCustomEndpointsConfig = resolveCustomEndpointsConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveEndpointsConfig = void 0;\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst getEndpointFromRegion_1 = require(\"./utils/getEndpointFromRegion\");\nconst resolveEndpointsConfig = (input) => {\n var _a;\n const useDualstackEndpoint = (0, util_middleware_1.normalizeProvider)(input.useDualstackEndpoint);\n const { endpoint, useFipsEndpoint, urlParser } = input;\n return {\n ...input,\n tls: (_a = input.tls) !== null && _a !== void 0 ? _a : true,\n endpoint: endpoint\n ? (0, util_middleware_1.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint)\n : () => (0, getEndpointFromRegion_1.getEndpointFromRegion)({ ...input, useDualstackEndpoint, useFipsEndpoint }),\n isCustomEndpoint: !!endpoint,\n useDualstackEndpoint,\n };\n};\nexports.resolveEndpointsConfig = resolveEndpointsConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointFromRegion = void 0;\nconst getEndpointFromRegion = async (input) => {\n var _a;\n const { tls = true } = input;\n const region = await input.region();\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n const useDualstackEndpoint = await input.useDualstackEndpoint();\n const useFipsEndpoint = await input.useFipsEndpoint();\n const { hostname } = (_a = (await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }))) !== null && _a !== void 0 ? _a : {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n};\nexports.getEndpointFromRegion = getEndpointFromRegion;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./endpointsConfig\"), exports);\ntslib_1.__exportStar(require(\"./regionConfig\"), exports);\ntslib_1.__exportStar(require(\"./regionInfo\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODE_REGION_CONFIG_FILE_OPTIONS = exports.NODE_REGION_CONFIG_OPTIONS = exports.REGION_INI_NAME = exports.REGION_ENV_NAME = void 0;\nexports.REGION_ENV_NAME = \"AWS_REGION\";\nexports.REGION_INI_NAME = \"region\";\nexports.NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[exports.REGION_ENV_NAME],\n configFileSelector: (profile) => profile[exports.REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n },\n};\nexports.NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\",\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRealRegion = void 0;\nconst isFipsRegion_1 = require(\"./isFipsRegion\");\nconst getRealRegion = (region) => (0, isFipsRegion_1.isFipsRegion)(region)\n ? [\"fips-aws-global\", \"aws-fips\"].includes(region)\n ? \"us-east-1\"\n : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\")\n : region;\nexports.getRealRegion = getRealRegion;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./config\"), exports);\ntslib_1.__exportStar(require(\"./resolveRegionConfig\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isFipsRegion = void 0;\nconst isFipsRegion = (region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\"));\nexports.isFipsRegion = isFipsRegion;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveRegionConfig = void 0;\nconst getRealRegion_1 = require(\"./getRealRegion\");\nconst isFipsRegion_1 = require(\"./isFipsRegion\");\nconst resolveRegionConfig = (input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return (0, getRealRegion_1.getRealRegion)(region);\n }\n const providedRegion = await region();\n return (0, getRealRegion_1.getRealRegion)(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if ((0, isFipsRegion_1.isFipsRegion)(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint === \"boolean\" ? Promise.resolve(useFipsEndpoint) : useFipsEndpoint();\n },\n };\n};\nexports.resolveRegionConfig = resolveRegionConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHostnameFromVariants = void 0;\nconst getHostnameFromVariants = (variants = [], { useFipsEndpoint, useDualstackEndpoint }) => {\n var _a;\n return (_a = variants.find(({ tags }) => useFipsEndpoint === tags.includes(\"fips\") && useDualstackEndpoint === tags.includes(\"dualstack\"))) === null || _a === void 0 ? void 0 : _a.hostname;\n};\nexports.getHostnameFromVariants = getHostnameFromVariants;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRegionInfo = void 0;\nconst getHostnameFromVariants_1 = require(\"./getHostnameFromVariants\");\nconst getResolvedHostname_1 = require(\"./getResolvedHostname\");\nconst getResolvedPartition_1 = require(\"./getResolvedPartition\");\nconst getResolvedSigningRegion_1 = require(\"./getResolvedSigningRegion\");\nconst getRegionInfo = (region, { useFipsEndpoint = false, useDualstackEndpoint = false, signingService, regionHash, partitionHash, }) => {\n var _a, _b, _c, _d, _e, _f;\n const partition = (0, getResolvedPartition_1.getResolvedPartition)(region, { partitionHash });\n const resolvedRegion = region in regionHash ? region : (_b = (_a = partitionHash[partition]) === null || _a === void 0 ? void 0 : _a.endpoint) !== null && _b !== void 0 ? _b : region;\n const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint };\n const regionHostname = (0, getHostnameFromVariants_1.getHostnameFromVariants)((_c = regionHash[resolvedRegion]) === null || _c === void 0 ? void 0 : _c.variants, hostnameOptions);\n const partitionHostname = (0, getHostnameFromVariants_1.getHostnameFromVariants)((_d = partitionHash[partition]) === null || _d === void 0 ? void 0 : _d.variants, hostnameOptions);\n const hostname = (0, getResolvedHostname_1.getResolvedHostname)(resolvedRegion, { regionHostname, partitionHostname });\n if (hostname === undefined) {\n throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`);\n }\n const signingRegion = (0, getResolvedSigningRegion_1.getResolvedSigningRegion)(hostname, {\n signingRegion: (_e = regionHash[resolvedRegion]) === null || _e === void 0 ? void 0 : _e.signingRegion,\n regionRegex: partitionHash[partition].regionRegex,\n useFipsEndpoint,\n });\n return {\n partition,\n signingService,\n hostname,\n ...(signingRegion && { signingRegion }),\n ...(((_f = regionHash[resolvedRegion]) === null || _f === void 0 ? void 0 : _f.signingService) && {\n signingService: regionHash[resolvedRegion].signingService,\n }),\n };\n};\nexports.getRegionInfo = getRegionInfo;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getResolvedHostname = void 0;\nconst getResolvedHostname = (resolvedRegion, { regionHostname, partitionHostname }) => regionHostname\n ? regionHostname\n : partitionHostname\n ? partitionHostname.replace(\"{region}\", resolvedRegion)\n : undefined;\nexports.getResolvedHostname = getResolvedHostname;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getResolvedPartition = void 0;\nconst getResolvedPartition = (region, { partitionHash }) => { var _a; return (_a = Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region))) !== null && _a !== void 0 ? _a : \"aws\"; };\nexports.getResolvedPartition = getResolvedPartition;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getResolvedSigningRegion = void 0;\nconst getResolvedSigningRegion = (hostname, { signingRegion, regionRegex, useFipsEndpoint }) => {\n if (signingRegion) {\n return signingRegion;\n }\n else if (useFipsEndpoint) {\n const regionRegexJs = regionRegex.replace(\"\\\\\\\\\", \"\\\\\").replace(/^\\^/g, \"\\\\.\").replace(/\\$$/g, \"\\\\.\");\n const regionRegexmatchArray = hostname.match(regionRegexJs);\n if (regionRegexmatchArray) {\n return regionRegexmatchArray[0].slice(1, -1);\n }\n }\n};\nexports.getResolvedSigningRegion = getResolvedSigningRegion;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./PartitionHash\"), exports);\ntslib_1.__exportStar(require(\"./RegionHash\"), exports);\ntslib_1.__exportStar(require(\"./getRegionInfo\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = exports.ENV_EXPIRATION = exports.ENV_SESSION = exports.ENV_SECRET = exports.ENV_KEY = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nexports.ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nexports.ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nexports.ENV_SESSION = \"AWS_SESSION_TOKEN\";\nexports.ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nconst fromEnv = () => async () => {\n const accessKeyId = process.env[exports.ENV_KEY];\n const secretAccessKey = process.env[exports.ENV_SECRET];\n const sessionToken = process.env[exports.ENV_SESSION];\n const expiry = process.env[exports.ENV_EXPIRATION];\n if (accessKeyId && secretAccessKey) {\n return {\n accessKeyId,\n secretAccessKey,\n ...(sessionToken && { sessionToken }),\n ...(expiry && { expiration: new Date(expiry) }),\n };\n }\n throw new property_provider_1.CredentialsProviderError(\"Unable to find environment variable credentials.\");\n};\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromEnv\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Endpoint = void 0;\nvar Endpoint;\n(function (Endpoint) {\n Endpoint[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n})(Endpoint = exports.Endpoint || (exports.Endpoint = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ENDPOINT_CONFIG_OPTIONS = exports.CONFIG_ENDPOINT_NAME = exports.ENV_ENDPOINT_NAME = void 0;\nexports.ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nexports.CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nexports.ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[exports.ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[exports.CONFIG_ENDPOINT_NAME],\n default: undefined,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointMode = void 0;\nvar EndpointMode;\n(function (EndpointMode) {\n EndpointMode[\"IPv4\"] = \"IPv4\";\n EndpointMode[\"IPv6\"] = \"IPv6\";\n})(EndpointMode = exports.EndpointMode || (exports.EndpointMode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ENDPOINT_MODE_CONFIG_OPTIONS = exports.CONFIG_ENDPOINT_MODE_NAME = exports.ENV_ENDPOINT_MODE_NAME = void 0;\nconst EndpointMode_1 = require(\"./EndpointMode\");\nexports.ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nexports.CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nexports.ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[exports.ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[exports.CONFIG_ENDPOINT_MODE_NAME],\n default: EndpointMode_1.EndpointMode.IPv4,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromContainerMetadata = exports.ENV_CMDS_AUTH_TOKEN = exports.ENV_CMDS_RELATIVE_URI = exports.ENV_CMDS_FULL_URI = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst url_1 = require(\"url\");\nconst httpRequest_1 = require(\"./remoteProvider/httpRequest\");\nconst ImdsCredentials_1 = require(\"./remoteProvider/ImdsCredentials\");\nconst RemoteProviderInit_1 = require(\"./remoteProvider/RemoteProviderInit\");\nconst retry_1 = require(\"./remoteProvider/retry\");\nexports.ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nexports.ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nexports.ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nconst fromContainerMetadata = (init = {}) => {\n const { timeout, maxRetries } = (0, RemoteProviderInit_1.providerConfigFromInit)(init);\n return () => (0, retry_1.retry)(async () => {\n const requestOptions = await getCmdsUri();\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!(0, ImdsCredentials_1.isImdsCredentials)(credsResponse)) {\n throw new property_provider_1.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return (0, ImdsCredentials_1.fromImdsCredentials)(credsResponse);\n }, maxRetries);\n};\nexports.fromContainerMetadata = fromContainerMetadata;\nconst requestFromEcsImds = async (timeout, options) => {\n if (process.env[exports.ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[exports.ENV_CMDS_AUTH_TOKEN],\n };\n }\n const buffer = await (0, httpRequest_1.httpRequest)({\n ...options,\n timeout,\n });\n return buffer.toString();\n};\nconst CMDS_IP = \"169.254.170.2\";\nconst GREENGRASS_HOSTS = {\n localhost: true,\n \"127.0.0.1\": true,\n};\nconst GREENGRASS_PROTOCOLS = {\n \"http:\": true,\n \"https:\": true,\n};\nconst getCmdsUri = async () => {\n if (process.env[exports.ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[exports.ENV_CMDS_RELATIVE_URI],\n };\n }\n if (process.env[exports.ENV_CMDS_FULL_URI]) {\n const parsed = (0, url_1.parse)(process.env[exports.ENV_CMDS_FULL_URI]);\n if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {\n throw new property_provider_1.CredentialsProviderError(`${parsed.hostname} is not a valid container metadata service hostname`, false);\n }\n if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {\n throw new property_provider_1.CredentialsProviderError(`${parsed.protocol} is not a valid container metadata service protocol`, false);\n }\n return {\n ...parsed,\n port: parsed.port ? parseInt(parsed.port, 10) : undefined,\n };\n }\n throw new property_provider_1.CredentialsProviderError(\"The container metadata credential provider cannot be used unless\" +\n ` the ${exports.ENV_CMDS_RELATIVE_URI} or ${exports.ENV_CMDS_FULL_URI} environment` +\n \" variable is set\", false);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromInstanceMetadata = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst httpRequest_1 = require(\"./remoteProvider/httpRequest\");\nconst ImdsCredentials_1 = require(\"./remoteProvider/ImdsCredentials\");\nconst RemoteProviderInit_1 = require(\"./remoteProvider/RemoteProviderInit\");\nconst retry_1 = require(\"./remoteProvider/retry\");\nconst getInstanceMetadataEndpoint_1 = require(\"./utils/getInstanceMetadataEndpoint\");\nconst staticStabilityProvider_1 = require(\"./utils/staticStabilityProvider\");\nconst IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nconst IMDS_TOKEN_PATH = \"/latest/api/token\";\nconst fromInstanceMetadata = (init = {}) => (0, staticStabilityProvider_1.staticStabilityProvider)(getInstanceImdsProvider(init), { logger: init.logger });\nexports.fromInstanceMetadata = fromInstanceMetadata;\nconst getInstanceImdsProvider = (init) => {\n let disableFetchToken = false;\n const { timeout, maxRetries } = (0, RemoteProviderInit_1.providerConfigFromInit)(init);\n const getCredentials = async (maxRetries, options) => {\n const profile = (await (0, retry_1.retry)(async () => {\n let profile;\n try {\n profile = await getProfile(options);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile;\n }, maxRetries)).trim();\n return (0, retry_1.retry)(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(profile, options);\n }\n catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries);\n };\n return async () => {\n const endpoint = await (0, getInstanceMetadataEndpoint_1.getInstanceMetadataEndpoint)();\n if (disableFetchToken) {\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n }\n catch (error) {\n if ((error === null || error === void 0 ? void 0 : error.statusCode) === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\",\n });\n }\n else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n \"x-aws-ec2-metadata-token\": token,\n },\n timeout,\n });\n }\n };\n};\nconst getMetadataToken = async (options) => (0, httpRequest_1.httpRequest)({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\",\n },\n});\nconst getProfile = async (options) => (await (0, httpRequest_1.httpRequest)({ ...options, path: IMDS_PATH })).toString();\nconst getCredentialsFromProfile = async (profile, options) => {\n const credsResponse = JSON.parse((await (0, httpRequest_1.httpRequest)({\n ...options,\n path: IMDS_PATH + profile,\n })).toString());\n if (!(0, ImdsCredentials_1.isImdsCredentials)(credsResponse)) {\n throw new property_provider_1.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return (0, ImdsCredentials_1.fromImdsCredentials)(credsResponse);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstanceMetadataEndpoint = exports.httpRequest = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromContainerMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromInstanceMetadata\"), exports);\ntslib_1.__exportStar(require(\"./remoteProvider/RemoteProviderInit\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\nvar httpRequest_1 = require(\"./remoteProvider/httpRequest\");\nObject.defineProperty(exports, \"httpRequest\", { enumerable: true, get: function () { return httpRequest_1.httpRequest; } });\nvar getInstanceMetadataEndpoint_1 = require(\"./utils/getInstanceMetadataEndpoint\");\nObject.defineProperty(exports, \"getInstanceMetadataEndpoint\", { enumerable: true, get: function () { return getInstanceMetadataEndpoint_1.getInstanceMetadataEndpoint; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromImdsCredentials = exports.isImdsCredentials = void 0;\nconst isImdsCredentials = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.AccessKeyId === \"string\" &&\n typeof arg.SecretAccessKey === \"string\" &&\n typeof arg.Token === \"string\" &&\n typeof arg.Expiration === \"string\";\nexports.isImdsCredentials = isImdsCredentials;\nconst fromImdsCredentials = (creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration),\n});\nexports.fromImdsCredentials = fromImdsCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.providerConfigFromInit = exports.DEFAULT_MAX_RETRIES = exports.DEFAULT_TIMEOUT = void 0;\nexports.DEFAULT_TIMEOUT = 1000;\nexports.DEFAULT_MAX_RETRIES = 0;\nconst providerConfigFromInit = ({ maxRetries = exports.DEFAULT_MAX_RETRIES, timeout = exports.DEFAULT_TIMEOUT, }) => ({ maxRetries, timeout });\nexports.providerConfigFromInit = providerConfigFromInit;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.httpRequest = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst buffer_1 = require(\"buffer\");\nconst http_1 = require(\"http\");\nfunction httpRequest(options) {\n return new Promise((resolve, reject) => {\n var _a;\n const req = (0, http_1.request)({\n method: \"GET\",\n ...options,\n hostname: (_a = options.hostname) === null || _a === void 0 ? void 0 : _a.replace(/^\\[(.+)\\]$/, \"$1\"),\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new property_provider_1.ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new property_provider_1.ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(Object.assign(new property_provider_1.ProviderError(\"Error response received from instance metadata service\"), { statusCode }));\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(buffer_1.Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\nexports.httpRequest = httpRequest;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retry = void 0;\nconst retry = (toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n};\nexports.retry = retry;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getExtendedInstanceMetadataCredentials = void 0;\nconst STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nconst STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nconst STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nconst getExtendedInstanceMetadataCredentials = (credentials, logger) => {\n var _a;\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS +\n Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1000);\n logger.warn(\"Attempting credential expiration extension due to a credential service availability issue. A refresh of these \" +\n \"credentials will be attempted after ${new Date(newExpiration)}.\\nFor more information, please visit: \" +\n STATIC_STABILITY_DOC_URL);\n const originalExpiration = (_a = credentials.originalExpiration) !== null && _a !== void 0 ? _a : credentials.expiration;\n return {\n ...credentials,\n ...(originalExpiration ? { originalExpiration } : {}),\n expiration: newExpiration,\n };\n};\nexports.getExtendedInstanceMetadataCredentials = getExtendedInstanceMetadataCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getInstanceMetadataEndpoint = void 0;\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst url_parser_1 = require(\"@aws-sdk/url-parser\");\nconst Endpoint_1 = require(\"../config/Endpoint\");\nconst EndpointConfigOptions_1 = require(\"../config/EndpointConfigOptions\");\nconst EndpointMode_1 = require(\"../config/EndpointMode\");\nconst EndpointModeConfigOptions_1 = require(\"../config/EndpointModeConfigOptions\");\nconst getInstanceMetadataEndpoint = async () => (0, url_parser_1.parseUrl)((await getFromEndpointConfig()) || (await getFromEndpointModeConfig()));\nexports.getInstanceMetadataEndpoint = getInstanceMetadataEndpoint;\nconst getFromEndpointConfig = async () => (0, node_config_provider_1.loadConfig)(EndpointConfigOptions_1.ENDPOINT_CONFIG_OPTIONS)();\nconst getFromEndpointModeConfig = async () => {\n const endpointMode = await (0, node_config_provider_1.loadConfig)(EndpointModeConfigOptions_1.ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case EndpointMode_1.EndpointMode.IPv4:\n return Endpoint_1.Endpoint.IPv4;\n case EndpointMode_1.EndpointMode.IPv6:\n return Endpoint_1.Endpoint.IPv6;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}.` + ` Select from ${Object.values(EndpointMode_1.EndpointMode)}`);\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.staticStabilityProvider = void 0;\nconst getExtendedInstanceMetadataCredentials_1 = require(\"./getExtendedInstanceMetadataCredentials\");\nconst staticStabilityProvider = (provider, options = {}) => {\n const logger = (options === null || options === void 0 ? void 0 : options.logger) || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = (0, getExtendedInstanceMetadataCredentials_1.getExtendedInstanceMetadataCredentials)(credentials, logger);\n }\n }\n catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = (0, getExtendedInstanceMetadataCredentials_1.getExtendedInstanceMetadataCredentials)(pastCredentials, logger);\n }\n else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n};\nexports.staticStabilityProvider = staticStabilityProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromIni = void 0;\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst resolveProfileData_1 = require(\"./resolveProfileData\");\nconst fromIni = (init = {}) => async () => {\n const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init);\n return (0, resolveProfileData_1.resolveProfileData)((0, shared_ini_file_loader_1.getProfileName)(init), profiles, init);\n};\nexports.fromIni = fromIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromIni\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveAssumeRoleCredentials = exports.isAssumeRoleProfile = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst resolveCredentialSource_1 = require(\"./resolveCredentialSource\");\nconst resolveProfileData_1 = require(\"./resolveProfileData\");\nconst isAssumeRoleProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 &&\n [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 &&\n (isAssumeRoleWithSourceProfile(arg) || isAssumeRoleWithProviderProfile(arg));\nexports.isAssumeRoleProfile = isAssumeRoleProfile;\nconst isAssumeRoleWithSourceProfile = (arg) => typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\";\nconst isAssumeRoleWithProviderProfile = (arg) => typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\";\nconst resolveAssumeRoleCredentials = async (profileName, profiles, options, visitedProfiles = {}) => {\n const data = profiles[profileName];\n if (!options.roleAssumer) {\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} requires a role to be assumed, but no role assumption callback was provided.`, false);\n }\n const { source_profile } = data;\n if (source_profile && source_profile in visitedProfiles) {\n throw new property_provider_1.CredentialsProviderError(`Detected a cycle attempting to resolve credentials for profile` +\n ` ${(0, shared_ini_file_loader_1.getProfileName)(options)}. Profiles visited: ` +\n Object.keys(visitedProfiles).join(\", \"), false);\n }\n const sourceCredsProvider = source_profile\n ? (0, resolveProfileData_1.resolveProfileData)(source_profile, profiles, options, {\n ...visitedProfiles,\n [source_profile]: true,\n })\n : (0, resolveCredentialSource_1.resolveCredentialSource)(data.credential_source, profileName)();\n const params = {\n RoleArn: data.role_arn,\n RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: data.external_id,\n };\n const { mfa_serial } = data;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`, false);\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params);\n};\nexports.resolveAssumeRoleCredentials = resolveAssumeRoleCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveCredentialSource = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst credential_provider_imds_1 = require(\"@aws-sdk/credential-provider-imds\");\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst resolveCredentialSource = (credentialSource, profileName) => {\n const sourceProvidersMap = {\n EcsContainer: credential_provider_imds_1.fromContainerMetadata,\n Ec2InstanceMetadata: credential_provider_imds_1.fromInstanceMetadata,\n Environment: credential_provider_env_1.fromEnv,\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource]();\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`Unsupported credential source in profile ${profileName}. Got ${credentialSource}, ` +\n `expected EcsContainer or Ec2InstanceMetadata or Environment.`);\n }\n};\nexports.resolveCredentialSource = resolveCredentialSource;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveProfileData = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst resolveAssumeRoleCredentials_1 = require(\"./resolveAssumeRoleCredentials\");\nconst resolveSsoCredentials_1 = require(\"./resolveSsoCredentials\");\nconst resolveStaticCredentials_1 = require(\"./resolveStaticCredentials\");\nconst resolveWebIdentityCredentials_1 = require(\"./resolveWebIdentityCredentials\");\nconst resolveProfileData = async (profileName, profiles, options, visitedProfiles = {}) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && (0, resolveStaticCredentials_1.isStaticCredsProfile)(data)) {\n return (0, resolveStaticCredentials_1.resolveStaticCredentials)(data);\n }\n if ((0, resolveAssumeRoleCredentials_1.isAssumeRoleProfile)(data)) {\n return (0, resolveAssumeRoleCredentials_1.resolveAssumeRoleCredentials)(profileName, profiles, options, visitedProfiles);\n }\n if ((0, resolveStaticCredentials_1.isStaticCredsProfile)(data)) {\n return (0, resolveStaticCredentials_1.resolveStaticCredentials)(data);\n }\n if ((0, resolveWebIdentityCredentials_1.isWebIdentityProfile)(data)) {\n return (0, resolveWebIdentityCredentials_1.resolveWebIdentityCredentials)(data, options);\n }\n if ((0, resolveSsoCredentials_1.isSsoProfile)(data)) {\n return (0, resolveSsoCredentials_1.resolveSsoCredentials)(data);\n }\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found or parsed in shared credentials file.`);\n};\nexports.resolveProfileData = resolveProfileData;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSsoCredentials = exports.isSsoProfile = void 0;\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nvar credential_provider_sso_2 = require(\"@aws-sdk/credential-provider-sso\");\nObject.defineProperty(exports, \"isSsoProfile\", { enumerable: true, get: function () { return credential_provider_sso_2.isSsoProfile; } });\nconst resolveSsoCredentials = (data) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = (0, credential_provider_sso_1.validateSsoProfile)(data);\n return (0, credential_provider_sso_1.fromSSO)({\n ssoStartUrl: sso_start_url,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n })();\n};\nexports.resolveSsoCredentials = resolveSsoCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveStaticCredentials = exports.isStaticCredsProfile = void 0;\nconst isStaticCredsProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.aws_access_key_id === \"string\" &&\n typeof arg.aws_secret_access_key === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1;\nexports.isStaticCredsProfile = isStaticCredsProfile;\nconst resolveStaticCredentials = (profile) => Promise.resolve({\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n});\nexports.resolveStaticCredentials = resolveStaticCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveWebIdentityCredentials = exports.isWebIdentityProfile = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst isWebIdentityProfile = (arg) => Boolean(arg) &&\n typeof arg === \"object\" &&\n typeof arg.web_identity_token_file === \"string\" &&\n typeof arg.role_arn === \"string\" &&\n [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1;\nexports.isWebIdentityProfile = isWebIdentityProfile;\nconst resolveWebIdentityCredentials = async (profile, options) => (0, credential_provider_web_identity_1.fromTokenFile)({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n})();\nexports.resolveWebIdentityCredentials = resolveWebIdentityCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultProvider = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst credential_provider_ini_1 = require(\"@aws-sdk/credential-provider-ini\");\nconst credential_provider_process_1 = require(\"@aws-sdk/credential-provider-process\");\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst remoteProvider_1 = require(\"./remoteProvider\");\nconst defaultProvider = (init = {}) => (0, property_provider_1.memoize)((0, property_provider_1.chain)(...(init.profile || process.env[shared_ini_file_loader_1.ENV_PROFILE] ? [] : [(0, credential_provider_env_1.fromEnv)()]), (0, credential_provider_sso_1.fromSSO)(init), (0, credential_provider_ini_1.fromIni)(init), (0, credential_provider_process_1.fromProcess)(init), (0, credential_provider_web_identity_1.fromTokenFile)(init), (0, remoteProvider_1.remoteProvider)(init), async () => {\n throw new property_provider_1.CredentialsProviderError(\"Could not load credentials from any providers\", false);\n}), (credentials) => credentials.expiration !== undefined && credentials.expiration.getTime() - Date.now() < 300000, (credentials) => credentials.expiration !== undefined);\nexports.defaultProvider = defaultProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./defaultProvider\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.remoteProvider = exports.ENV_IMDS_DISABLED = void 0;\nconst credential_provider_imds_1 = require(\"@aws-sdk/credential-provider-imds\");\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nexports.ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nconst remoteProvider = (init) => {\n if (process.env[credential_provider_imds_1.ENV_CMDS_RELATIVE_URI] || process.env[credential_provider_imds_1.ENV_CMDS_FULL_URI]) {\n return (0, credential_provider_imds_1.fromContainerMetadata)(init);\n }\n if (process.env[exports.ENV_IMDS_DISABLED]) {\n return async () => {\n throw new property_provider_1.CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\");\n };\n }\n return (0, credential_provider_imds_1.fromInstanceMetadata)(init);\n};\nexports.remoteProvider = remoteProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromProcess = void 0;\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst resolveProcessCredentials_1 = require(\"./resolveProcessCredentials\");\nconst fromProcess = (init = {}) => async () => {\n const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init);\n return (0, resolveProcessCredentials_1.resolveProcessCredentials)((0, shared_ini_file_loader_1.getProfileName)(init), profiles);\n};\nexports.fromProcess = fromProcess;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getValidatedProcessCredentials = void 0;\nconst getValidatedProcessCredentials = (profileName, data) => {\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === undefined || data.SecretAccessKey === undefined) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n return {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...(data.SessionToken && { sessionToken: data.SessionToken }),\n ...(data.Expiration && { expiration: new Date(data.Expiration) }),\n };\n};\nexports.getValidatedProcessCredentials = getValidatedProcessCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromProcess\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveProcessCredentials = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst child_process_1 = require(\"child_process\");\nconst util_1 = require(\"util\");\nconst getValidatedProcessCredentials_1 = require(\"./getValidatedProcessCredentials\");\nconst resolveProcessCredentials = async (profileName, profiles) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== undefined) {\n const execPromise = (0, util_1.promisify)(child_process_1.exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n }\n catch (_a) {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return (0, getValidatedProcessCredentials_1.getValidatedProcessCredentials)(profileName, data);\n }\n catch (error) {\n throw new property_provider_1.CredentialsProviderError(error.message);\n }\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);\n }\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);\n }\n};\nexports.resolveProcessCredentials = resolveProcessCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSSO = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst isSsoProfile_1 = require(\"./isSsoProfile\");\nconst resolveSSOCredentials_1 = require(\"./resolveSSOCredentials\");\nconst validateSsoProfile_1 = require(\"./validateSsoProfile\");\nconst fromSSO = (init = {}) => async () => {\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName) {\n const profiles = await (0, shared_ini_file_loader_1.parseKnownFiles)(init);\n const profileName = (0, shared_ini_file_loader_1.getProfileName)(init);\n const profile = profiles[profileName];\n if (!(0, isSsoProfile_1.isSsoProfile)(profile)) {\n throw new property_provider_1.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = (0, validateSsoProfile_1.validateSsoProfile)(profile);\n return (0, resolveSSOCredentials_1.resolveSSOCredentials)({\n ssoStartUrl: sso_start_url,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient: ssoClient,\n });\n }\n else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new property_provider_1.CredentialsProviderError('Incomplete configuration. The fromSSO() argument hash must include \"ssoStartUrl\",' +\n ' \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"');\n }\n else {\n return (0, resolveSSOCredentials_1.resolveSSOCredentials)({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient });\n }\n};\nexports.fromSSO = fromSSO;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromSSO\"), exports);\ntslib_1.__exportStar(require(\"./isSsoProfile\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\ntslib_1.__exportStar(require(\"./validateSsoProfile\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSsoProfile = void 0;\nconst isSsoProfile = (arg) => arg &&\n (typeof arg.sso_start_url === \"string\" ||\n typeof arg.sso_account_id === \"string\" ||\n typeof arg.sso_region === \"string\" ||\n typeof arg.sso_role_name === \"string\");\nexports.isSsoProfile = isSsoProfile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSSOCredentials = void 0;\nconst client_sso_1 = require(\"@aws-sdk/client-sso\");\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst EXPIRE_WINDOW_MS = 15 * 60 * 1000;\nconst SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nconst resolveSSOCredentials = async ({ ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoClient, }) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n try {\n token = await (0, shared_ini_file_loader_1.getSSOTokenFromFile)(ssoStartUrl);\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile is invalid. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= EXPIRE_WINDOW_MS) {\n throw new property_provider_1.CredentialsProviderError(`The SSO session associated with this profile has expired. ${refreshMessage}`, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n const { accessToken } = token;\n const sso = ssoClient || new client_sso_1.SSOClient({ region: ssoRegion });\n let ssoResp;\n try {\n ssoResp = await sso.send(new client_sso_1.GetRoleCredentialsCommand({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken,\n }));\n }\n catch (e) {\n throw property_provider_1.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration } = {} } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new property_provider_1.CredentialsProviderError(\"SSO returns an invalid temporary credential.\", SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration) };\n};\nexports.resolveSSOCredentials = resolveSSOCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSsoProfile = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst validateSsoProfile = (profile) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new property_provider_1.CredentialsProviderError(`Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", ` +\n `\"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\", \")}\\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`, false);\n }\n return profile;\n};\nexports.validateSsoProfile = validateSsoProfile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst fs_1 = require(\"fs\");\nconst fromWebToken_1 = require(\"./fromWebToken\");\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nconst fromTokenFile = (init = {}) => async () => {\n return resolveTokenFile(init);\n};\nexports.fromTokenFile = fromTokenFile;\nconst resolveTokenFile = (init) => {\n var _a, _b, _c;\n const webIdentityTokenFile = (_a = init === null || init === void 0 ? void 0 : init.webIdentityTokenFile) !== null && _a !== void 0 ? _a : process.env[ENV_TOKEN_FILE];\n const roleArn = (_b = init === null || init === void 0 ? void 0 : init.roleArn) !== null && _b !== void 0 ? _b : process.env[ENV_ROLE_ARN];\n const roleSessionName = (_c = init === null || init === void 0 ? void 0 : init.roleSessionName) !== null && _c !== void 0 ? _c : process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new property_provider_1.CredentialsProviderError(\"Web identity configuration not specified\");\n }\n return (0, fromWebToken_1.fromWebToken)({\n ...init,\n webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })();\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst fromWebToken = (init) => () => {\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds, roleAssumerWithWebIdentity, } = init;\n if (!roleAssumerWithWebIdentity) {\n throw new property_provider_1.CredentialsProviderError(`Role Arn '${roleArn}' needs to be assumed with web identity,` +\n ` but no role assumption callback was provided.`, false);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName !== null && roleSessionName !== void 0 ? roleSessionName : `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromTokenFile\"), exports);\ntslib_1.__exportStar(require(\"./fromWebToken\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Hash = void 0;\nconst util_buffer_from_1 = require(\"@aws-sdk/util-buffer-from\");\nconst buffer_1 = require(\"buffer\");\nconst crypto_1 = require(\"crypto\");\nclass Hash {\n constructor(algorithmIdentifier, secret) {\n this.hash = secret ? (0, crypto_1.createHmac)(algorithmIdentifier, castSourceData(secret)) : (0, crypto_1.createHash)(algorithmIdentifier);\n }\n update(toHash, encoding) {\n this.hash.update(castSourceData(toHash, encoding));\n }\n digest() {\n return Promise.resolve(this.hash.digest());\n }\n}\nexports.Hash = Hash;\nfunction castSourceData(toCast, encoding) {\n if (buffer_1.Buffer.isBuffer(toCast)) {\n return toCast;\n }\n if (typeof toCast === \"string\") {\n return (0, util_buffer_from_1.fromString)(toCast, encoding);\n }\n if (ArrayBuffer.isView(toCast)) {\n return (0, util_buffer_from_1.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength);\n }\n return (0, util_buffer_from_1.fromArrayBuffer)(toCast);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArrayBuffer = void 0;\nconst isArrayBuffer = (arg) => (typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer) ||\n Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\";\nexports.isArrayBuffer = isArrayBuffer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getContentLengthPlugin = exports.contentLengthMiddlewareOptions = exports.contentLengthMiddleware = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst CONTENT_LENGTH_HEADER = \"content-length\";\nfunction contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (protocol_http_1.HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body &&\n Object.keys(headers)\n .map((str) => str.toLowerCase())\n .indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length),\n };\n }\n catch (error) {\n }\n }\n }\n return next({\n ...args,\n request,\n });\n };\n}\nexports.contentLengthMiddleware = contentLengthMiddleware;\nexports.contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true,\n};\nconst getContentLengthPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), exports.contentLengthMiddlewareOptions);\n },\n});\nexports.getContentLengthPlugin = getContentLengthPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createConfigValueProvider = void 0;\nconst createConfigValueProvider = (configKey, canonicalEndpointParamKey, config) => {\n const configProvider = async () => {\n var _a;\n const configValue = (_a = config[configKey]) !== null && _a !== void 0 ? _a : config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n };\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n};\nexports.createConfigValueProvider = createConfigValueProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveParams = exports.getEndpointFromInstructions = void 0;\nconst service_customizations_1 = require(\"../service-customizations\");\nconst createConfigValueProvider_1 = require(\"./createConfigValueProvider\");\nconst getEndpointFromInstructions = async (commandInput, instructionsSupplier, clientConfig, context) => {\n const endpointParams = await (0, exports.resolveParams)(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n};\nexports.getEndpointFromInstructions = getEndpointFromInstructions;\nconst resolveParams = async (commandInput, instructionsSupplier, clientConfig) => {\n var _a;\n const endpointParams = {};\n const instructions = ((_a = instructionsSupplier === null || instructionsSupplier === void 0 ? void 0 : instructionsSupplier.getEndpointParameterInstructions) === null || _a === void 0 ? void 0 : _a.call(instructionsSupplier)) || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await (0, createConfigValueProvider_1.createConfigValueProvider)(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await (0, service_customizations_1.resolveParamsForS3)(endpointParams);\n }\n return endpointParams;\n};\nexports.resolveParams = resolveParams;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./getEndpointFromInstructions\"), exports);\ntslib_1.__exportStar(require(\"./toEndpointV1\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toEndpointV1 = void 0;\nconst url_parser_1 = require(\"@aws-sdk/url-parser\");\nconst toEndpointV1 = (endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return (0, url_parser_1.parseUrl)(endpoint.url);\n }\n return endpoint;\n }\n return (0, url_parser_1.parseUrl)(endpoint);\n};\nexports.toEndpointV1 = toEndpointV1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.endpointMiddleware = void 0;\nconst getEndpointFromInstructions_1 = require(\"./adaptors/getEndpointFromInstructions\");\nconst endpointMiddleware = ({ config, instructions, }) => {\n return (next, context) => async (args) => {\n var _a, _b;\n const endpoint = await (0, getEndpointFromInstructions_1.getEndpointFromInstructions)(args.input, {\n getEndpointParameterInstructions() {\n return instructions;\n },\n }, { ...config }, context);\n context.endpointV2 = endpoint;\n context.authSchemes = (_a = endpoint.properties) === null || _a === void 0 ? void 0 : _a.authSchemes;\n const authScheme = (_b = context.authSchemes) === null || _b === void 0 ? void 0 : _b[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n }\n return next({\n ...args,\n });\n };\n};\nexports.endpointMiddleware = endpointMiddleware;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointPlugin = exports.endpointMiddlewareOptions = void 0;\nconst middleware_serde_1 = require(\"@aws-sdk/middleware-serde\");\nconst endpointMiddleware_1 = require(\"./endpointMiddleware\");\nexports.endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: middleware_serde_1.serializerMiddlewareOption.name,\n};\nconst getEndpointPlugin = (config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo((0, endpointMiddleware_1.endpointMiddleware)({\n config,\n instructions,\n }), exports.endpointMiddlewareOptions);\n },\n});\nexports.getEndpointPlugin = getEndpointPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./adaptors\"), exports);\ntslib_1.__exportStar(require(\"./endpointMiddleware\"), exports);\ntslib_1.__exportStar(require(\"./getEndpointPlugin\"), exports);\ntslib_1.__exportStar(require(\"./resolveEndpointConfig\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveEndpointConfig = void 0;\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst toEndpointV1_1 = require(\"./adaptors/toEndpointV1\");\nconst resolveEndpointConfig = (input) => {\n var _a, _b, _c;\n const tls = (_a = input.tls) !== null && _a !== void 0 ? _a : true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => (0, toEndpointV1_1.toEndpointV1)(await (0, util_middleware_1.normalizeProvider)(endpoint)()) : undefined;\n const isCustomEndpoint = !!endpoint;\n return {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: (0, util_middleware_1.normalizeProvider)((_b = input.useDualstackEndpoint) !== null && _b !== void 0 ? _b : false),\n useFipsEndpoint: (0, util_middleware_1.normalizeProvider)((_c = input.useFipsEndpoint) !== null && _c !== void 0 ? _c : false),\n };\n};\nexports.resolveEndpointConfig = resolveEndpointConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./s3\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isArnBucketName = exports.isDnsCompatibleBucketName = exports.S3_HOSTNAME_PATTERN = exports.DOT_PATTERN = exports.resolveParamsForS3 = void 0;\nconst resolveParamsForS3 = async (endpointParams) => {\n const bucket = (endpointParams === null || endpointParams === void 0 ? void 0 : endpointParams.Bucket) || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if ((0, exports.isArnBucketName)(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n }\n else if (!(0, exports.isDnsCompatibleBucketName)(bucket) ||\n (bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\")) ||\n bucket.toLowerCase() !== bucket ||\n bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n};\nexports.resolveParamsForS3 = resolveParamsForS3;\nconst DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nconst IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nconst DOTS_PATTERN = /\\.\\./;\nexports.DOT_PATTERN = /\\./;\nexports.S3_HOSTNAME_PATTERN = /^(.+\\.)?s3(-fips)?(\\.dualstack)?[.-]([a-z0-9-]+)\\./;\nconst isDnsCompatibleBucketName = (bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName);\nexports.isDnsCompatibleBucketName = isDnsCompatibleBucketName;\nconst isArnBucketName = (bucketName) => {\n const [arn, partition, service, region, account, typeOrId] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = [arn, partition, service, account, typeOrId].filter(Boolean).length === 5;\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return arn === \"arn\" && !!partition && !!service && !!account && !!typeOrId;\n};\nexports.isArnBucketName = isArnBucketName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHostHeaderPlugin = exports.hostHeaderMiddlewareOptions = exports.hostHeaderMiddleware = exports.resolveHostHeaderConfig = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nfunction resolveHostHeaderConfig(input) {\n return input;\n}\nexports.resolveHostHeaderConfig = resolveHostHeaderConfig;\nconst hostHeaderMiddleware = (options) => (next) => async (args) => {\n if (!protocol_http_1.HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = \"\";\n }\n else if (!request.headers[\"host\"]) {\n request.headers[\"host\"] = request.hostname;\n }\n return next(args);\n};\nexports.hostHeaderMiddleware = hostHeaderMiddleware;\nexports.hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true,\n};\nconst getHostHeaderPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add((0, exports.hostHeaderMiddleware)(options), exports.hostHeaderMiddlewareOptions);\n },\n});\nexports.getHostHeaderPlugin = getHostHeaderPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./loggerMiddleware\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getLoggerPlugin = exports.loggerMiddlewareOptions = exports.loggerMiddleware = void 0;\nconst loggerMiddleware = () => (next, context) => async (args) => {\n const { clientName, commandName, inputFilterSensitiveLog, logger, outputFilterSensitiveLog } = context;\n const response = await next(args);\n if (!logger) {\n return response;\n }\n if (typeof logger.info === \"function\") {\n const { $metadata, ...outputWithoutMetadata } = response.output;\n logger.info({\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata,\n });\n }\n return response;\n};\nexports.loggerMiddleware = loggerMiddleware;\nexports.loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true,\n};\nconst getLoggerPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add((0, exports.loggerMiddleware)(), exports.loggerMiddlewareOptions);\n },\n});\nexports.getLoggerPlugin = getLoggerPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRecursionDetectionPlugin = exports.addRecursionDetectionMiddlewareOptions = exports.recursionDetectionMiddleware = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nconst ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nconst ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nconst recursionDetectionMiddleware = (options) => (next) => async (args) => {\n const { request } = args;\n if (!protocol_http_1.HttpRequest.isInstance(request) ||\n options.runtime !== \"node\" ||\n request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = (str) => typeof str === \"string\" && str.length > 0;\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request,\n });\n};\nexports.recursionDetectionMiddleware = recursionDetectionMiddleware;\nexports.addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\",\n};\nconst getRecursionDetectionPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add((0, exports.recursionDetectionMiddleware)(options), exports.addRecursionDetectionMiddlewareOptions);\n },\n});\nexports.getRecursionDetectionPlugin = getRecursionDetectionPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AdaptiveRetryStrategy = void 0;\nconst config_1 = require(\"./config\");\nconst DefaultRateLimiter_1 = require(\"./DefaultRateLimiter\");\nconst StandardRetryStrategy_1 = require(\"./StandardRetryStrategy\");\nclass AdaptiveRetryStrategy extends StandardRetryStrategy_1.StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n const { rateLimiter, ...superOptions } = options !== null && options !== void 0 ? options : {};\n super(maxAttemptsProvider, superOptions);\n this.rateLimiter = rateLimiter !== null && rateLimiter !== void 0 ? rateLimiter : new DefaultRateLimiter_1.DefaultRateLimiter();\n this.mode = config_1.RETRY_MODES.ADAPTIVE;\n }\n async retry(next, args) {\n return super.retry(next, args, {\n beforeRequest: async () => {\n return this.rateLimiter.getSendToken();\n },\n afterRequest: (response) => {\n this.rateLimiter.updateClientSendingRate(response);\n },\n });\n }\n}\nexports.AdaptiveRetryStrategy = AdaptiveRetryStrategy;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DefaultRateLimiter = void 0;\nconst service_error_classification_1 = require(\"@aws-sdk/service-error-classification\");\nclass DefaultRateLimiter {\n constructor(options) {\n var _a, _b, _c, _d, _e;\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = (_a = options === null || options === void 0 ? void 0 : options.beta) !== null && _a !== void 0 ? _a : 0.7;\n this.minCapacity = (_b = options === null || options === void 0 ? void 0 : options.minCapacity) !== null && _b !== void 0 ? _b : 1;\n this.minFillRate = (_c = options === null || options === void 0 ? void 0 : options.minFillRate) !== null && _c !== void 0 ? _c : 0.5;\n this.scaleConstant = (_d = options === null || options === void 0 ? void 0 : options.scaleConstant) !== null && _d !== void 0 ? _d : 0.4;\n this.smooth = (_e = options === null || options === void 0 ? void 0 : options.smooth) !== null && _e !== void 0 ? _e : 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1000;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = ((amount - this.currentCapacity) / this.fillRate) * 1000;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if ((0, service_error_classification_1.isThrottlingError)(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n }\n else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow((this.lastMaxRate * (1 - this.beta)) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate);\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n}\nexports.DefaultRateLimiter = DefaultRateLimiter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StandardRetryStrategy = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst service_error_classification_1 = require(\"@aws-sdk/service-error-classification\");\nconst uuid_1 = require(\"uuid\");\nconst config_1 = require(\"./config\");\nconst constants_1 = require(\"./constants\");\nconst defaultRetryQuota_1 = require(\"./defaultRetryQuota\");\nconst delayDecider_1 = require(\"./delayDecider\");\nconst retryDecider_1 = require(\"./retryDecider\");\nclass StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n var _a, _b, _c;\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = config_1.RETRY_MODES.STANDARD;\n this.retryDecider = (_a = options === null || options === void 0 ? void 0 : options.retryDecider) !== null && _a !== void 0 ? _a : retryDecider_1.defaultRetryDecider;\n this.delayDecider = (_b = options === null || options === void 0 ? void 0 : options.delayDecider) !== null && _b !== void 0 ? _b : delayDecider_1.defaultDelayDecider;\n this.retryQuota = (_c = options === null || options === void 0 ? void 0 : options.retryQuota) !== null && _c !== void 0 ? _c : (0, defaultRetryQuota_1.getDefaultRetryQuota)(constants_1.INITIAL_RETRY_TOKENS);\n }\n shouldRetry(error, attempts, maxAttempts) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n async getMaxAttempts() {\n let maxAttempts;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n }\n catch (error) {\n maxAttempts = config_1.DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n async retry(next, args, options) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n const maxAttempts = await this.getMaxAttempts();\n const { request } = args;\n if (protocol_http_1.HttpRequest.isInstance(request)) {\n request.headers[constants_1.INVOCATION_ID_HEADER] = (0, uuid_1.v4)();\n }\n while (true) {\n try {\n if (protocol_http_1.HttpRequest.isInstance(request)) {\n request.headers[constants_1.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n if (options === null || options === void 0 ? void 0 : options.beforeRequest) {\n await options.beforeRequest();\n }\n const { response, output } = await next(args);\n if (options === null || options === void 0 ? void 0 : options.afterRequest) {\n options.afterRequest(response);\n }\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n return { response, output };\n }\n catch (e) {\n const err = asSdkError(e);\n attempts++;\n if (this.shouldRetry(err, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delayFromDecider = this.delayDecider((0, service_error_classification_1.isThrottlingError)(err) ? constants_1.THROTTLING_RETRY_DELAY_BASE : constants_1.DEFAULT_RETRY_DELAY_BASE, attempts);\n const delayFromResponse = getDelayFromRetryAfterHeader(err.$response);\n const delay = Math.max(delayFromResponse || 0, delayFromDecider);\n totalDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (!err.$metadata) {\n err.$metadata = {};\n }\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n}\nexports.StandardRetryStrategy = StandardRetryStrategy;\nconst getDelayFromRetryAfterHeader = (response) => {\n if (!protocol_http_1.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return retryAfterSeconds * 1000;\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate.getTime() - Date.now();\n};\nconst asSdkError = (error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_RETRY_MODE = exports.DEFAULT_MAX_ATTEMPTS = exports.RETRY_MODES = void 0;\nvar RETRY_MODES;\n(function (RETRY_MODES) {\n RETRY_MODES[\"STANDARD\"] = \"standard\";\n RETRY_MODES[\"ADAPTIVE\"] = \"adaptive\";\n})(RETRY_MODES = exports.RETRY_MODES || (exports.RETRY_MODES = {}));\nexports.DEFAULT_MAX_ATTEMPTS = 3;\nexports.DEFAULT_RETRY_MODE = RETRY_MODES.STANDARD;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODE_RETRY_MODE_CONFIG_OPTIONS = exports.CONFIG_RETRY_MODE = exports.ENV_RETRY_MODE = exports.resolveRetryConfig = exports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = exports.CONFIG_MAX_ATTEMPTS = exports.ENV_MAX_ATTEMPTS = void 0;\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst AdaptiveRetryStrategy_1 = require(\"./AdaptiveRetryStrategy\");\nconst config_1 = require(\"./config\");\nconst StandardRetryStrategy_1 = require(\"./StandardRetryStrategy\");\nexports.ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nexports.CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nexports.NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[exports.ENV_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${exports.ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[exports.CONFIG_MAX_ATTEMPTS];\n if (!value)\n return undefined;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${exports.CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: config_1.DEFAULT_MAX_ATTEMPTS,\n};\nconst resolveRetryConfig = (input) => {\n var _a;\n const maxAttempts = (0, util_middleware_1.normalizeProvider)((_a = input.maxAttempts) !== null && _a !== void 0 ? _a : config_1.DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (input.retryStrategy) {\n return input.retryStrategy;\n }\n const retryMode = await (0, util_middleware_1.normalizeProvider)(input.retryMode)();\n if (retryMode === config_1.RETRY_MODES.ADAPTIVE) {\n return new AdaptiveRetryStrategy_1.AdaptiveRetryStrategy(maxAttempts);\n }\n return new StandardRetryStrategy_1.StandardRetryStrategy(maxAttempts);\n },\n };\n};\nexports.resolveRetryConfig = resolveRetryConfig;\nexports.ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nexports.CONFIG_RETRY_MODE = \"retry_mode\";\nexports.NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[exports.ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[exports.CONFIG_RETRY_MODE],\n default: config_1.DEFAULT_RETRY_MODE,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.REQUEST_HEADER = exports.INVOCATION_ID_HEADER = exports.NO_RETRY_INCREMENT = exports.TIMEOUT_RETRY_COST = exports.RETRY_COST = exports.INITIAL_RETRY_TOKENS = exports.THROTTLING_RETRY_DELAY_BASE = exports.MAXIMUM_RETRY_DELAY = exports.DEFAULT_RETRY_DELAY_BASE = void 0;\nexports.DEFAULT_RETRY_DELAY_BASE = 100;\nexports.MAXIMUM_RETRY_DELAY = 20 * 1000;\nexports.THROTTLING_RETRY_DELAY_BASE = 500;\nexports.INITIAL_RETRY_TOKENS = 500;\nexports.RETRY_COST = 5;\nexports.TIMEOUT_RETRY_COST = 10;\nexports.NO_RETRY_INCREMENT = 1;\nexports.INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nexports.REQUEST_HEADER = \"amz-sdk-request\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRetryQuota = void 0;\nconst constants_1 = require(\"./constants\");\nconst getDefaultRetryQuota = (initialRetryTokens, options) => {\n var _a, _b, _c;\n const MAX_CAPACITY = initialRetryTokens;\n const noRetryIncrement = (_a = options === null || options === void 0 ? void 0 : options.noRetryIncrement) !== null && _a !== void 0 ? _a : constants_1.NO_RETRY_INCREMENT;\n const retryCost = (_b = options === null || options === void 0 ? void 0 : options.retryCost) !== null && _b !== void 0 ? _b : constants_1.RETRY_COST;\n const timeoutRetryCost = (_c = options === null || options === void 0 ? void 0 : options.timeoutRetryCost) !== null && _c !== void 0 ? _c : constants_1.TIMEOUT_RETRY_COST;\n let availableCapacity = initialRetryTokens;\n const getCapacityAmount = (error) => (error.name === \"TimeoutError\" ? timeoutRetryCost : retryCost);\n const hasRetryTokens = (error) => getCapacityAmount(error) <= availableCapacity;\n const retrieveRetryTokens = (error) => {\n if (!hasRetryTokens(error)) {\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n };\n const releaseRetryTokens = (capacityReleaseAmount) => {\n availableCapacity += capacityReleaseAmount !== null && capacityReleaseAmount !== void 0 ? capacityReleaseAmount : noRetryIncrement;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n };\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens,\n });\n};\nexports.getDefaultRetryQuota = getDefaultRetryQuota;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultDelayDecider = void 0;\nconst constants_1 = require(\"./constants\");\nconst defaultDelayDecider = (delayBase, attempts) => Math.floor(Math.min(constants_1.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\nexports.defaultDelayDecider = defaultDelayDecider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./AdaptiveRetryStrategy\"), exports);\ntslib_1.__exportStar(require(\"./DefaultRateLimiter\"), exports);\ntslib_1.__exportStar(require(\"./StandardRetryStrategy\"), exports);\ntslib_1.__exportStar(require(\"./config\"), exports);\ntslib_1.__exportStar(require(\"./configurations\"), exports);\ntslib_1.__exportStar(require(\"./delayDecider\"), exports);\ntslib_1.__exportStar(require(\"./omitRetryHeadersMiddleware\"), exports);\ntslib_1.__exportStar(require(\"./retryDecider\"), exports);\ntslib_1.__exportStar(require(\"./retryMiddleware\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOmitRetryHeadersPlugin = exports.omitRetryHeadersMiddlewareOptions = exports.omitRetryHeadersMiddleware = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst constants_1 = require(\"./constants\");\nconst omitRetryHeadersMiddleware = () => (next) => async (args) => {\n const { request } = args;\n if (protocol_http_1.HttpRequest.isInstance(request)) {\n delete request.headers[constants_1.INVOCATION_ID_HEADER];\n delete request.headers[constants_1.REQUEST_HEADER];\n }\n return next(args);\n};\nexports.omitRetryHeadersMiddleware = omitRetryHeadersMiddleware;\nexports.omitRetryHeadersMiddlewareOptions = {\n name: \"omitRetryHeadersMiddleware\",\n tags: [\"RETRY\", \"HEADERS\", \"OMIT_RETRY_HEADERS\"],\n relation: \"before\",\n toMiddleware: \"awsAuthMiddleware\",\n override: true,\n};\nconst getOmitRetryHeadersPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo((0, exports.omitRetryHeadersMiddleware)(), exports.omitRetryHeadersMiddlewareOptions);\n },\n});\nexports.getOmitRetryHeadersPlugin = getOmitRetryHeadersPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultRetryDecider = void 0;\nconst service_error_classification_1 = require(\"@aws-sdk/service-error-classification\");\nconst defaultRetryDecider = (error) => {\n if (!error) {\n return false;\n }\n return (0, service_error_classification_1.isRetryableByTrait)(error) || (0, service_error_classification_1.isClockSkewError)(error) || (0, service_error_classification_1.isThrottlingError)(error) || (0, service_error_classification_1.isTransientError)(error);\n};\nexports.defaultRetryDecider = defaultRetryDecider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRetryPlugin = exports.retryMiddlewareOptions = exports.retryMiddleware = void 0;\nconst retryMiddleware = (options) => (next, context) => async (args) => {\n const retryStrategy = await options.retryStrategy();\n if (retryStrategy === null || retryStrategy === void 0 ? void 0 : retryStrategy.mode)\n context.userAgent = [...(context.userAgent || []), [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n};\nexports.retryMiddleware = retryMiddleware;\nexports.retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true,\n};\nconst getRetryPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.add((0, exports.retryMiddleware)(options), exports.retryMiddlewareOptions);\n },\n});\nexports.getRetryPlugin = getRetryPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveStsAuthConfig = void 0;\nconst middleware_signing_1 = require(\"@aws-sdk/middleware-signing\");\nconst resolveStsAuthConfig = (input, { stsClientCtor }) => (0, middleware_signing_1.resolveAwsAuthConfig)({\n ...input,\n stsClientCtor,\n});\nexports.resolveStsAuthConfig = resolveStsAuthConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializerMiddleware = void 0;\nconst deserializerMiddleware = (options, deserializer) => (next, context) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed,\n };\n }\n catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response,\n });\n throw error;\n }\n};\nexports.deserializerMiddleware = deserializerMiddleware;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./deserializerMiddleware\"), exports);\ntslib_1.__exportStar(require(\"./serdePlugin\"), exports);\ntslib_1.__exportStar(require(\"./serializerMiddleware\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSerdePlugin = exports.serializerMiddlewareOption = exports.deserializerMiddlewareOption = void 0;\nconst deserializerMiddleware_1 = require(\"./deserializerMiddleware\");\nconst serializerMiddleware_1 = require(\"./serializerMiddleware\");\nexports.deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true,\n};\nexports.serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true,\n};\nfunction getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add((0, deserializerMiddleware_1.deserializerMiddleware)(config, deserializer), exports.deserializerMiddlewareOption);\n commandStack.add((0, serializerMiddleware_1.serializerMiddleware)(config, serializer), exports.serializerMiddlewareOption);\n },\n };\n}\nexports.getSerdePlugin = getSerdePlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializerMiddleware = void 0;\nconst serializerMiddleware = (options, serializer) => (next, context) => async (args) => {\n var _a;\n const endpoint = ((_a = context.endpointV2) === null || _a === void 0 ? void 0 : _a.url) && options.urlParser\n ? async () => options.urlParser(context.endpointV2.url)\n : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request,\n });\n};\nexports.serializerMiddleware = serializerMiddleware;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveSigV4AuthConfig = exports.resolveAwsAuthConfig = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst signature_v4_1 = require(\"@aws-sdk/signature-v4\");\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst CREDENTIAL_EXPIRE_WINDOW = 300000;\nconst resolveAwsAuthConfig = (input) => {\n const normalizedCreds = input.credentials\n ? normalizeCredentialProvider(input.credentials)\n : input.credentialDefaultProvider(input);\n const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input;\n let signer;\n if (input.signer) {\n signer = (0, util_middleware_1.normalizeProvider)(input.signer);\n }\n else if (input.regionInfoProvider) {\n signer = () => (0, util_middleware_1.normalizeProvider)(input.region)()\n .then(async (region) => [\n (await input.regionInfoProvider(region, {\n useFipsEndpoint: await input.useFipsEndpoint(),\n useDualstackEndpoint: await input.useDualstackEndpoint(),\n })) || {},\n region,\n ])\n .then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n input.signingRegion = input.signingRegion || signingRegion || region;\n input.signingName = input.signingName || signingService || input.serviceId;\n const params = {\n ...input,\n credentials: normalizedCreds,\n region: input.signingRegion,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = input.signerConstructor || signature_v4_1.SignatureV4;\n return new SignerCtor(params);\n });\n }\n else {\n signer = async (authScheme) => {\n authScheme = Object.assign({}, {\n name: \"sigv4\",\n signingName: input.signingName || input.defaultSigningName,\n signingRegion: await (0, util_middleware_1.normalizeProvider)(input.region)(),\n properties: {},\n }, authScheme);\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n input.signingRegion = input.signingRegion || signingRegion;\n input.signingName = input.signingName || signingService || input.serviceId;\n const params = {\n ...input,\n credentials: normalizedCreds,\n region: input.signingRegion,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n };\n const SignerCtor = input.signerConstructor || signature_v4_1.SignatureV4;\n return new SignerCtor(params);\n };\n }\n return {\n ...input,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer,\n };\n};\nexports.resolveAwsAuthConfig = resolveAwsAuthConfig;\nconst resolveSigV4AuthConfig = (input) => {\n const normalizedCreds = input.credentials\n ? normalizeCredentialProvider(input.credentials)\n : input.credentialDefaultProvider(input);\n const { signingEscapePath = true, systemClockOffset = input.systemClockOffset || 0, sha256 } = input;\n let signer;\n if (input.signer) {\n signer = (0, util_middleware_1.normalizeProvider)(input.signer);\n }\n else {\n signer = (0, util_middleware_1.normalizeProvider)(new signature_v4_1.SignatureV4({\n credentials: normalizedCreds,\n region: input.region,\n service: input.signingName,\n sha256,\n uriEscapePath: signingEscapePath,\n }));\n }\n return {\n ...input,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer,\n };\n};\nexports.resolveSigV4AuthConfig = resolveSigV4AuthConfig;\nconst normalizeCredentialProvider = (credentials) => {\n if (typeof credentials === \"function\") {\n return (0, property_provider_1.memoize)(credentials, (credentials) => credentials.expiration !== undefined &&\n credentials.expiration.getTime() - Date.now() < CREDENTIAL_EXPIRE_WINDOW, (credentials) => credentials.expiration !== undefined);\n }\n return (0, util_middleware_1.normalizeProvider)(credentials);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./configurations\"), exports);\ntslib_1.__exportStar(require(\"./middleware\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSigV4AuthPlugin = exports.getAwsAuthPlugin = exports.awsAuthMiddlewareOptions = exports.awsAuthMiddleware = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst getSkewCorrectedDate_1 = require(\"./utils/getSkewCorrectedDate\");\nconst getUpdatedSystemClockOffset_1 = require(\"./utils/getUpdatedSystemClockOffset\");\nconst awsAuthMiddleware = (options) => (next, context) => async function (args) {\n var _a, _b, _c, _d;\n if (!protocol_http_1.HttpRequest.isInstance(args.request))\n return next(args);\n const authScheme = (_c = (_b = (_a = context.endpointV2) === null || _a === void 0 ? void 0 : _a.properties) === null || _b === void 0 ? void 0 : _b.authSchemes) === null || _c === void 0 ? void 0 : _c[0];\n const multiRegionOverride = (authScheme === null || authScheme === void 0 ? void 0 : authScheme.name) === \"sigv4a\" ? (_d = authScheme === null || authScheme === void 0 ? void 0 : authScheme.signingRegionSet) === null || _d === void 0 ? void 0 : _d.join(\",\") : undefined;\n const signer = await options.signer(authScheme);\n const output = await next({\n ...args,\n request: await signer.sign(args.request, {\n signingDate: (0, getSkewCorrectedDate_1.getSkewCorrectedDate)(options.systemClockOffset),\n signingRegion: multiRegionOverride || context[\"signing_region\"],\n signingService: context[\"signing_service\"],\n }),\n }).catch((error) => {\n var _a;\n const serverTime = (_a = error.ServerTime) !== null && _a !== void 0 ? _a : getDateHeader(error.$response);\n if (serverTime) {\n options.systemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(serverTime, options.systemClockOffset);\n }\n throw error;\n });\n const dateHeader = getDateHeader(output.response);\n if (dateHeader) {\n options.systemClockOffset = (0, getUpdatedSystemClockOffset_1.getUpdatedSystemClockOffset)(dateHeader, options.systemClockOffset);\n }\n return output;\n};\nexports.awsAuthMiddleware = awsAuthMiddleware;\nconst getDateHeader = (response) => { var _a, _b, _c; return protocol_http_1.HttpResponse.isInstance(response) ? (_b = (_a = response.headers) === null || _a === void 0 ? void 0 : _a.date) !== null && _b !== void 0 ? _b : (_c = response.headers) === null || _c === void 0 ? void 0 : _c.Date : undefined; };\nexports.awsAuthMiddlewareOptions = {\n name: \"awsAuthMiddleware\",\n tags: [\"SIGNATURE\", \"AWSAUTH\"],\n relation: \"after\",\n toMiddleware: \"retryMiddleware\",\n override: true,\n};\nconst getAwsAuthPlugin = (options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo((0, exports.awsAuthMiddleware)(options), exports.awsAuthMiddlewareOptions);\n },\n});\nexports.getAwsAuthPlugin = getAwsAuthPlugin;\nexports.getSigV4AuthPlugin = exports.getAwsAuthPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSkewCorrectedDate = void 0;\nconst getSkewCorrectedDate = (systemClockOffset) => new Date(Date.now() + systemClockOffset);\nexports.getSkewCorrectedDate = getSkewCorrectedDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUpdatedSystemClockOffset = void 0;\nconst isClockSkewed_1 = require(\"./isClockSkewed\");\nconst getUpdatedSystemClockOffset = (clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if ((0, isClockSkewed_1.isClockSkewed)(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n};\nexports.getUpdatedSystemClockOffset = getUpdatedSystemClockOffset;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isClockSkewed = void 0;\nconst getSkewCorrectedDate_1 = require(\"./getSkewCorrectedDate\");\nconst isClockSkewed = (clockTime, systemClockOffset) => Math.abs((0, getSkewCorrectedDate_1.getSkewCorrectedDate)(systemClockOffset).getTime() - clockTime) >= 300000;\nexports.isClockSkewed = isClockSkewed;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.constructStack = void 0;\nconst constructStack = () => {\n let absoluteEntries = [];\n let relativeEntries = [];\n const entriesNameSet = new Set();\n const sort = (entries) => entries.sort((a, b) => stepWeights[b.step] - stepWeights[a.step] ||\n priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]);\n const removeByName = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n if (entry.name && entry.name === toRemove) {\n isRemoved = true;\n entriesNameSet.delete(toRemove);\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const removeByReference = (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n if (entry.name)\n entriesNameSet.delete(entry.name);\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n };\n const cloneTo = (toStack) => {\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n return toStack;\n };\n const expandRelativeMiddlewareList = (from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n }\n else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n };\n const getMiddlewareList = (debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n if (normalizedEntry.name)\n normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry;\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: [],\n };\n if (normalizedEntry.name)\n normalizedEntriesNameMap[normalizedEntry.name] = normalizedEntry;\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === undefined) {\n if (debug) {\n return;\n }\n throw new Error(`${entry.toMiddleware} is not found when adding ${entry.name || \"anonymous\"} middleware ${entry.relation} ${entry.toMiddleware}`);\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries)\n .map(expandRelativeMiddlewareList)\n .reduce((wholeList, expendedMiddlewareList) => {\n wholeList.push(...expendedMiddlewareList);\n return wholeList;\n }, []);\n return mainChain;\n };\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options,\n };\n if (name) {\n if (entriesNameSet.has(name)) {\n if (!override)\n throw new Error(`Duplicate middleware name '${name}'`);\n const toOverrideIndex = absoluteEntries.findIndex((entry) => entry.name === name);\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || toOverride.priority !== entry.priority) {\n throw new Error(`\"${name}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be ` +\n `overridden by same-name middleware with ${entry.priority} priority in ${entry.step} step.`);\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n entriesNameSet.add(name);\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override } = options;\n const entry = {\n middleware,\n ...options,\n };\n if (name) {\n if (entriesNameSet.has(name)) {\n if (!override)\n throw new Error(`Duplicate middleware name '${name}'`);\n const toOverrideIndex = relativeEntries.findIndex((entry) => entry.name === name);\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(`\"${name}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden ` +\n `by same-name middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`);\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n entriesNameSet.add(name);\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo((0, exports.constructStack)()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = (entry) => {\n const { tags, name } = entry;\n if (tags && tags.includes(toRemove)) {\n if (name)\n entriesNameSet.delete(name);\n isRemoved = true;\n return false;\n }\n return true;\n };\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n const cloned = cloneTo((0, exports.constructStack)());\n cloned.use(from);\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n return mw.name + \": \" + (mw.tags || []).join(\",\");\n });\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList()\n .map((entry) => entry.middleware)\n .reverse()) {\n handler = middleware(handler, context);\n }\n return handler;\n },\n };\n return stack;\n};\nexports.constructStack = constructStack;\nconst stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1,\n};\nconst priorityWeights = {\n high: 3,\n normal: 2,\n low: 1,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./MiddlewareStack\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveUserAgentConfig = void 0;\nfunction resolveUserAgentConfig(input) {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent,\n };\n}\nexports.resolveUserAgentConfig = resolveUserAgentConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UA_ESCAPE_REGEX = exports.SPACE = exports.X_AMZ_USER_AGENT = exports.USER_AGENT = void 0;\nexports.USER_AGENT = \"user-agent\";\nexports.X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nexports.SPACE = \" \";\nexports.UA_ESCAPE_REGEX = /[^\\!\\#\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./configurations\"), exports);\ntslib_1.__exportStar(require(\"./user-agent-middleware\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getUserAgentPlugin = exports.getUserAgentMiddlewareOptions = exports.userAgentMiddleware = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst constants_1 = require(\"./constants\");\nconst userAgentMiddleware = (options) => (next, context) => async (args) => {\n var _a, _b;\n const { request } = args;\n if (!protocol_http_1.HttpRequest.isInstance(request))\n return next(args);\n const { headers } = request;\n const userAgent = ((_a = context === null || context === void 0 ? void 0 : context.userAgent) === null || _a === void 0 ? void 0 : _a.map(escapeUserAgent)) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = ((_b = options === null || options === void 0 ? void 0 : options.customUserAgent) === null || _b === void 0 ? void 0 : _b.map(escapeUserAgent)) || [];\n const sdkUserAgentValue = [...defaultUserAgent, ...userAgent, ...customUserAgent].join(constants_1.SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent,\n ].join(constants_1.SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[constants_1.X_AMZ_USER_AGENT] = headers[constants_1.X_AMZ_USER_AGENT]\n ? `${headers[constants_1.USER_AGENT]} ${normalUAValue}`\n : normalUAValue;\n }\n headers[constants_1.USER_AGENT] = sdkUserAgentValue;\n }\n else {\n headers[constants_1.X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request,\n });\n};\nexports.userAgentMiddleware = userAgentMiddleware;\nconst escapeUserAgent = ([name, version]) => {\n const prefixSeparatorIndex = name.indexOf(\"/\");\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version]\n .filter((item) => item && item.length > 0)\n .map((item) => item === null || item === void 0 ? void 0 : item.replace(constants_1.UA_ESCAPE_REGEX, \"_\"))\n .join(\"/\");\n};\nexports.getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true,\n};\nconst getUserAgentPlugin = (config) => ({\n applyToStack: (clientStack) => {\n clientStack.add((0, exports.userAgentMiddleware)(config), exports.getUserAgentMiddlewareOptions);\n },\n});\nexports.getUserAgentPlugin = getUserAgentPlugin;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadConfig = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst fromEnv_1 = require(\"./fromEnv\");\nconst fromSharedConfigFiles_1 = require(\"./fromSharedConfigFiles\");\nconst fromStatic_1 = require(\"./fromStatic\");\nconst loadConfig = ({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, property_provider_1.memoize)((0, property_provider_1.chain)((0, fromEnv_1.fromEnv)(environmentVariableSelector), (0, fromSharedConfigFiles_1.fromSharedConfigFiles)(configFileSelector, configuration), (0, fromStatic_1.fromStatic)(defaultValue)));\nexports.loadConfig = loadConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst fromEnv = (envVarSelector) => async () => {\n try {\n const config = envVarSelector(process.env);\n if (config === undefined) {\n throw new Error();\n }\n return config;\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(e.message || `Cannot load config from environment variables with getter: ${envVarSelector}`);\n }\n};\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSharedConfigFiles = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst shared_ini_file_loader_1 = require(\"@aws-sdk/shared-ini-file-loader\");\nconst fromSharedConfigFiles = (configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = (0, shared_ini_file_loader_1.getProfileName)(init);\n const { configFile, credentialsFile } = await (0, shared_ini_file_loader_1.loadSharedConfigFiles)(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\"\n ? { ...profileFromCredentials, ...profileFromConfig }\n : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const configValue = configSelector(mergedProfile);\n if (configValue === undefined) {\n throw new Error();\n }\n return configValue;\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(e.message ||\n `Cannot load config for profile ${profile} in SDK configuration files with getter: ${configSelector}`);\n }\n};\nexports.fromSharedConfigFiles = fromSharedConfigFiles;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromStatic = void 0;\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst isFunction = (func) => typeof func === \"function\";\nconst fromStatic = (defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, property_provider_1.fromStatic)(defaultValue);\nexports.fromStatic = fromStatic;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./configLoader\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODEJS_TIMEOUT_ERROR_CODES = void 0;\nexports.NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTransformedHeaders = void 0;\nconst getTransformedHeaders = (headers) => {\n const transformedHeaders = {};\n for (const name of Object.keys(headers)) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n};\nexports.getTransformedHeaders = getTransformedHeaders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./node-http-handler\"), exports);\ntslib_1.__exportStar(require(\"./node-http2-handler\"), exports);\ntslib_1.__exportStar(require(\"./stream-collector\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHttpHandler = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst querystring_builder_1 = require(\"@aws-sdk/querystring-builder\");\nconst http_1 = require(\"http\");\nconst https_1 = require(\"https\");\nconst constants_1 = require(\"./constants\");\nconst get_transformed_headers_1 = require(\"./get-transformed-headers\");\nconst set_connection_timeout_1 = require(\"./set-connection-timeout\");\nconst set_socket_timeout_1 = require(\"./set-socket-timeout\");\nconst write_request_body_1 = require(\"./write-request-body\");\nclass NodeHttpHandler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"http/1.1\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n })\n .catch(reject);\n }\n else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n resolveDefaultConfig(options) {\n const { connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n socketTimeout,\n httpAgent: httpAgent || new http_1.Agent({ keepAlive, maxSockets }),\n httpsAgent: httpsAgent || new https_1.Agent({ keepAlive, maxSockets }),\n };\n }\n destroy() {\n var _a, _b, _c, _d;\n (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.httpAgent) === null || _b === void 0 ? void 0 : _b.destroy();\n (_d = (_c = this.config) === null || _c === void 0 ? void 0 : _c.httpsAgent) === null || _d === void 0 ? void 0 : _d.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n return new Promise((resolve, reject) => {\n if (!this.config) {\n throw new Error(\"Node HTTP request handler config is not resolved\");\n }\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const isSSL = request.protocol === \"https:\";\n const queryString = (0, querystring_builder_1.buildQueryString)(request.query || {});\n const nodeHttpsOptions = {\n headers: request.headers,\n host: request.hostname,\n method: request.method,\n path: queryString ? `${request.path}?${queryString}` : request.path,\n port: request.port,\n agent: isSSL ? this.config.httpsAgent : this.config.httpAgent,\n };\n const requestFunc = isSSL ? https_1.request : http_1.request;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new protocol_http_1.HttpResponse({\n statusCode: res.statusCode || -1,\n headers: (0, get_transformed_headers_1.getTransformedHeaders)(res.headers),\n body: res,\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n }\n else {\n reject(err);\n }\n });\n (0, set_connection_timeout_1.setConnectionTimeout)(req, reject, this.config.connectionTimeout);\n (0, set_socket_timeout_1.setSocketTimeout)(req, reject, this.config.socketTimeout);\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.abort();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n }\n (0, write_request_body_1.writeRequestBody)(req, request);\n });\n }\n}\nexports.NodeHttpHandler = NodeHttpHandler;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeHttp2Handler = void 0;\nconst protocol_http_1 = require(\"@aws-sdk/protocol-http\");\nconst querystring_builder_1 = require(\"@aws-sdk/querystring-builder\");\nconst http2_1 = require(\"http2\");\nconst get_transformed_headers_1 = require(\"./get-transformed-headers\");\nconst write_request_body_1 = require(\"./write-request-body\");\nclass NodeHttp2Handler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"h2\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options()\n .then((opts) => {\n resolve(opts || {});\n })\n .catch(reject);\n }\n else {\n resolve(options || {});\n }\n });\n this.sessionCache = new Map();\n }\n destroy() {\n for (const sessions of this.sessionCache.values()) {\n sessions.forEach((session) => this.destroySession(session));\n }\n this.sessionCache.clear();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n const { requestTimeout, disableConcurrentStreams } = this.config;\n return new Promise((resolve, rejectOriginal) => {\n let fulfilled = false;\n if (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted) {\n fulfilled = true;\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n rejectOriginal(abortError);\n return;\n }\n const { hostname, method, port, protocol, path, query } = request;\n const authority = `${protocol}//${hostname}${port ? `:${port}` : \"\"}`;\n const session = this.getSession(authority, disableConcurrentStreams || false);\n const reject = (err) => {\n if (disableConcurrentStreams) {\n this.destroySession(session);\n }\n fulfilled = true;\n rejectOriginal(err);\n };\n const queryString = (0, querystring_builder_1.buildQueryString)(query || {});\n const req = session.request({\n ...request.headers,\n [http2_1.constants.HTTP2_HEADER_PATH]: queryString ? `${path}?${queryString}` : path,\n [http2_1.constants.HTTP2_HEADER_METHOD]: method,\n });\n session.ref();\n req.on(\"response\", (headers) => {\n const httpResponse = new protocol_http_1.HttpResponse({\n statusCode: headers[\":status\"] || -1,\n headers: (0, get_transformed_headers_1.getTransformedHeaders)(headers),\n body: req,\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (disableConcurrentStreams) {\n session.close();\n this.deleteSessionFromCache(authority, session);\n }\n });\n if (requestTimeout) {\n req.setTimeout(requestTimeout, () => {\n req.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n reject(timeoutError);\n });\n }\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.close();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n }\n req.on(\"frameError\", (type, code, id) => {\n reject(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n req.on(\"error\", reject);\n req.on(\"aborted\", () => {\n reject(new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`));\n });\n req.on(\"close\", () => {\n session.unref();\n if (disableConcurrentStreams) {\n session.destroy();\n }\n if (!fulfilled) {\n reject(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n (0, write_request_body_1.writeRequestBody)(req, request);\n });\n }\n getSession(authority, disableConcurrentStreams) {\n var _a;\n const sessionCache = this.sessionCache;\n const existingSessions = sessionCache.get(authority) || [];\n if (existingSessions.length > 0 && !disableConcurrentStreams)\n return existingSessions[0];\n const newSession = (0, http2_1.connect)(authority);\n newSession.unref();\n const destroySessionCb = () => {\n this.destroySession(newSession);\n this.deleteSessionFromCache(authority, newSession);\n };\n newSession.on(\"goaway\", destroySessionCb);\n newSession.on(\"error\", destroySessionCb);\n newSession.on(\"frameError\", destroySessionCb);\n newSession.on(\"close\", () => this.deleteSessionFromCache(authority, newSession));\n if ((_a = this.config) === null || _a === void 0 ? void 0 : _a.sessionTimeout) {\n newSession.setTimeout(this.config.sessionTimeout, destroySessionCb);\n }\n existingSessions.push(newSession);\n sessionCache.set(authority, existingSessions);\n return newSession;\n }\n destroySession(session) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n deleteSessionFromCache(authority, session) {\n const existingSessions = this.sessionCache.get(authority) || [];\n if (!existingSessions.includes(session)) {\n return;\n }\n this.sessionCache.set(authority, existingSessions.filter((s) => s !== session));\n }\n}\nexports.NodeHttp2Handler = NodeHttp2Handler;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setConnectionTimeout = void 0;\nconst setConnectionTimeout = (request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return;\n }\n request.on(\"socket\", (socket) => {\n if (socket.connecting) {\n const timeoutId = setTimeout(() => {\n request.destroy();\n reject(Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {\n name: \"TimeoutError\",\n }));\n }, timeoutInMs);\n socket.on(\"connect\", () => {\n clearTimeout(timeoutId);\n });\n }\n });\n};\nexports.setConnectionTimeout = setConnectionTimeout;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setSocketTimeout = void 0;\nconst setSocketTimeout = (request, reject, timeoutInMs = 0) => {\n request.setTimeout(timeoutInMs, () => {\n request.destroy();\n reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: \"TimeoutError\" }));\n });\n};\nexports.setSocketTimeout = setSocketTimeout;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Collector = void 0;\nconst stream_1 = require(\"stream\");\nclass Collector extends stream_1.Writable {\n constructor() {\n super(...arguments);\n this.bufferedBytes = [];\n }\n _write(chunk, encoding, callback) {\n this.bufferedBytes.push(chunk);\n callback();\n }\n}\nexports.Collector = Collector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.streamCollector = void 0;\nconst collector_1 = require(\"./collector\");\nconst streamCollector = (stream) => new Promise((resolve, reject) => {\n const collector = new collector_1.Collector();\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function () {\n const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes));\n resolve(bytes);\n });\n});\nexports.streamCollector = streamCollector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.writeRequestBody = void 0;\nconst stream_1 = require(\"stream\");\nfunction writeRequestBody(httpRequest, request) {\n const expect = request.headers[\"Expect\"] || request.headers[\"expect\"];\n if (expect === \"100-continue\") {\n httpRequest.on(\"continue\", () => {\n writeBody(httpRequest, request.body);\n });\n }\n else {\n writeBody(httpRequest, request.body);\n }\n}\nexports.writeRequestBody = writeRequestBody;\nfunction writeBody(httpRequest, body) {\n if (body instanceof stream_1.Readable) {\n body.pipe(httpRequest);\n }\n else if (body) {\n httpRequest.end(Buffer.from(body));\n }\n else {\n httpRequest.end();\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CredentialsProviderError = void 0;\nconst ProviderError_1 = require(\"./ProviderError\");\nclass CredentialsProviderError extends ProviderError_1.ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, CredentialsProviderError.prototype);\n }\n}\nexports.CredentialsProviderError = CredentialsProviderError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ProviderError = void 0;\nclass ProviderError extends Error {\n constructor(message, tryNextLink = true) {\n super(message);\n this.tryNextLink = tryNextLink;\n this.name = \"ProviderError\";\n Object.setPrototypeOf(this, ProviderError.prototype);\n }\n static from(error, tryNextLink = true) {\n return Object.assign(new this(error.message, tryNextLink), error);\n }\n}\nexports.ProviderError = ProviderError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenProviderError = void 0;\nconst ProviderError_1 = require(\"./ProviderError\");\nclass TokenProviderError extends ProviderError_1.ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"TokenProviderError\";\n Object.setPrototypeOf(this, TokenProviderError.prototype);\n }\n}\nexports.TokenProviderError = TokenProviderError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chain = void 0;\nconst ProviderError_1 = require(\"./ProviderError\");\nfunction chain(...providers) {\n return () => {\n let promise = Promise.reject(new ProviderError_1.ProviderError(\"No providers in chain\"));\n for (const provider of providers) {\n promise = promise.catch((err) => {\n if (err === null || err === void 0 ? void 0 : err.tryNextLink) {\n return provider();\n }\n throw err;\n });\n }\n return promise;\n };\n}\nexports.chain = chain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromStatic = void 0;\nconst fromStatic = (staticValue) => () => Promise.resolve(staticValue);\nexports.fromStatic = fromStatic;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./CredentialsProviderError\"), exports);\ntslib_1.__exportStar(require(\"./ProviderError\"), exports);\ntslib_1.__exportStar(require(\"./TokenProviderError\"), exports);\ntslib_1.__exportStar(require(\"./chain\"), exports);\ntslib_1.__exportStar(require(\"./fromStatic\"), exports);\ntslib_1.__exportStar(require(\"./memoize\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.memoize = void 0;\nconst memoize = (provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n }\n finally {\n pending = undefined;\n }\n return resolved;\n };\n if (isExpired === undefined) {\n return async (options) => {\n if (!hasResult || (options === null || options === void 0 ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options === null || options === void 0 ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n};\nexports.memoize = memoize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpRequest = void 0;\nclass HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol\n ? options.protocol.slice(-1) !== \":\"\n ? `${options.protocol}:`\n : options.protocol\n : \"https:\";\n this.path = options.path ? (options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path) : \"/\";\n }\n static isInstance(request) {\n if (!request)\n return false;\n const req = request;\n return (\"method\" in req &&\n \"protocol\" in req &&\n \"hostname\" in req &&\n \"path\" in req &&\n typeof req[\"query\"] === \"object\" &&\n typeof req[\"headers\"] === \"object\");\n }\n clone() {\n const cloned = new HttpRequest({\n ...this,\n headers: { ...this.headers },\n });\n if (cloned.query)\n cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n}\nexports.HttpRequest = HttpRequest;\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n }, {});\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpResponse = void 0;\nclass HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n}\nexports.HttpResponse = HttpResponse;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./httpHandler\"), exports);\ntslib_1.__exportStar(require(\"./httpRequest\"), exports);\ntslib_1.__exportStar(require(\"./httpResponse\"), exports);\ntslib_1.__exportStar(require(\"./isValidHostname\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidHostname = void 0;\nfunction isValidHostname(hostname) {\n const hostPattern = /^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/;\n return hostPattern.test(hostname);\n}\nexports.isValidHostname = isValidHostname;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildQueryString = void 0;\nconst util_uri_escape_1 = require(\"@aws-sdk/util-uri-escape\");\nfunction buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = (0, util_uri_escape_1.escapeUri)(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${(0, util_uri_escape_1.escapeUri)(value[i])}`);\n }\n }\n else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${(0, util_uri_escape_1.escapeUri)(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\nexports.buildQueryString = buildQueryString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseQueryString = void 0;\nfunction parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n }\n else if (Array.isArray(query[key])) {\n query[key].push(value);\n }\n else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\nexports.parseQueryString = parseQueryString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODEJS_TIMEOUT_ERROR_CODES = exports.TRANSIENT_ERROR_STATUS_CODES = exports.TRANSIENT_ERROR_CODES = exports.THROTTLING_ERROR_CODES = exports.CLOCK_SKEW_ERROR_CODES = void 0;\nexports.CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\",\n];\nexports.THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\",\n];\nexports.TRANSIENT_ERROR_CODES = [\"AbortError\", \"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nexports.TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nexports.NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isTransientError = exports.isThrottlingError = exports.isClockSkewError = exports.isRetryableByTrait = void 0;\nconst constants_1 = require(\"./constants\");\nconst isRetryableByTrait = (error) => error.$retryable !== undefined;\nexports.isRetryableByTrait = isRetryableByTrait;\nconst isClockSkewError = (error) => constants_1.CLOCK_SKEW_ERROR_CODES.includes(error.name);\nexports.isClockSkewError = isClockSkewError;\nconst isThrottlingError = (error) => {\n var _a, _b;\n return ((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) === 429 ||\n constants_1.THROTTLING_ERROR_CODES.includes(error.name) ||\n ((_b = error.$retryable) === null || _b === void 0 ? void 0 : _b.throttling) == true;\n};\nexports.isThrottlingError = isThrottlingError;\nconst isTransientError = (error) => {\n var _a;\n return constants_1.TRANSIENT_ERROR_CODES.includes(error.name) ||\n constants_1.NODEJS_TIMEOUT_ERROR_CODES.includes((error === null || error === void 0 ? void 0 : error.code) || \"\") ||\n constants_1.TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) === null || _a === void 0 ? void 0 : _a.httpStatusCode) || 0);\n};\nexports.isTransientError = isTransientError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getConfigFilepath = exports.ENV_CONFIG_PATH = void 0;\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nexports.ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nconst getConfigFilepath = () => process.env[exports.ENV_CONFIG_PATH] || (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"config\");\nexports.getConfigFilepath = getConfigFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCredentialsFilepath = exports.ENV_CREDENTIALS_PATH = void 0;\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nexports.ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nconst getCredentialsFilepath = () => process.env[exports.ENV_CREDENTIALS_PATH] || (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"credentials\");\nexports.getCredentialsFilepath = getCredentialsFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHomeDir = void 0;\nconst os_1 = require(\"os\");\nconst path_1 = require(\"path\");\nconst getHomeDir = () => {\n const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env;\n if (HOME)\n return HOME;\n if (USERPROFILE)\n return USERPROFILE;\n if (HOMEPATH)\n return `${HOMEDRIVE}${HOMEPATH}`;\n return (0, os_1.homedir)();\n};\nexports.getHomeDir = getHomeDir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProfileData = void 0;\nconst profileKeyRegex = /^profile\\s([\"'])?([^\\1]+)\\1$/;\nconst getProfileData = (data) => Object.entries(data)\n .filter(([key]) => profileKeyRegex.test(key))\n .reduce((acc, [key, value]) => ({ ...acc, [profileKeyRegex.exec(key)[2]]: value }), {\n ...(data.default && { default: data.default }),\n});\nexports.getProfileData = getProfileData;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProfileName = exports.DEFAULT_PROFILE = exports.ENV_PROFILE = void 0;\nexports.ENV_PROFILE = \"AWS_PROFILE\";\nexports.DEFAULT_PROFILE = \"default\";\nconst getProfileName = (init) => init.profile || process.env[exports.ENV_PROFILE] || exports.DEFAULT_PROFILE;\nexports.getProfileName = getProfileName;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFilepath = void 0;\nconst crypto_1 = require(\"crypto\");\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nconst getSSOTokenFilepath = (ssoStartUrl) => {\n const hasher = (0, crypto_1.createHash)(\"sha1\");\n const cacheName = hasher.update(ssoStartUrl).digest(\"hex\");\n return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\nexports.getSSOTokenFilepath = getSSOTokenFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFromFile = void 0;\nconst fs_1 = require(\"fs\");\nconst getSSOTokenFilepath_1 = require(\"./getSSOTokenFilepath\");\nconst { readFile } = fs_1.promises;\nconst getSSOTokenFromFile = async (ssoStartUrl) => {\n const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(ssoStartUrl);\n const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n return JSON.parse(ssoTokenText);\n};\nexports.getSSOTokenFromFile = getSSOTokenFromFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSsoSessionData = void 0;\nconst ssoSessionKeyRegex = /^sso-session\\s([\"'])?([^\\1]+)\\1$/;\nconst getSsoSessionData = (data) => Object.entries(data)\n .filter(([key]) => ssoSessionKeyRegex.test(key))\n .reduce((acc, [key, value]) => ({ ...acc, [ssoSessionKeyRegex.exec(key)[2]]: value }), {});\nexports.getSsoSessionData = getSsoSessionData;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./getHomeDir\"), exports);\ntslib_1.__exportStar(require(\"./getProfileName\"), exports);\ntslib_1.__exportStar(require(\"./getSSOTokenFilepath\"), exports);\ntslib_1.__exportStar(require(\"./getSSOTokenFromFile\"), exports);\ntslib_1.__exportStar(require(\"./loadSharedConfigFiles\"), exports);\ntslib_1.__exportStar(require(\"./loadSsoSessionData\"), exports);\ntslib_1.__exportStar(require(\"./parseKnownFiles\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadSharedConfigFiles = void 0;\nconst getConfigFilepath_1 = require(\"./getConfigFilepath\");\nconst getCredentialsFilepath_1 = require(\"./getCredentialsFilepath\");\nconst getProfileData_1 = require(\"./getProfileData\");\nconst parseIni_1 = require(\"./parseIni\");\nconst slurpFile_1 = require(\"./slurpFile\");\nconst swallowError = () => ({});\nconst loadSharedConfigFiles = async (init = {}) => {\n const { filepath = (0, getCredentialsFilepath_1.getCredentialsFilepath)(), configFilepath = (0, getConfigFilepath_1.getConfigFilepath)() } = init;\n const parsedFiles = await Promise.all([\n (0, slurpFile_1.slurpFile)(configFilepath).then(parseIni_1.parseIni).then(getProfileData_1.getProfileData).catch(swallowError),\n (0, slurpFile_1.slurpFile)(filepath).then(parseIni_1.parseIni).catch(swallowError),\n ]);\n return {\n configFile: parsedFiles[0],\n credentialsFile: parsedFiles[1],\n };\n};\nexports.loadSharedConfigFiles = loadSharedConfigFiles;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadSsoSessionData = void 0;\nconst getConfigFilepath_1 = require(\"./getConfigFilepath\");\nconst getSsoSessionData_1 = require(\"./getSsoSessionData\");\nconst parseIni_1 = require(\"./parseIni\");\nconst slurpFile_1 = require(\"./slurpFile\");\nconst swallowError = () => ({});\nconst loadSsoSessionData = async (init = {}) => {\n var _a;\n return (0, slurpFile_1.slurpFile)((_a = init.configFilepath) !== null && _a !== void 0 ? _a : (0, getConfigFilepath_1.getConfigFilepath)())\n .then(parseIni_1.parseIni)\n .then(getSsoSessionData_1.getSsoSessionData)\n .catch(swallowError);\n};\nexports.loadSsoSessionData = loadSsoSessionData;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseIni = void 0;\nconst profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nconst parseIni = (iniData) => {\n const map = {};\n let currentSection;\n for (let line of iniData.split(/\\r?\\n/)) {\n line = line.split(/(^|\\s)[;#]/)[0].trim();\n const isSection = line[0] === \"[\" && line[line.length - 1] === \"]\";\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (profileNameBlockList.includes(currentSection)) {\n throw new Error(`Found invalid profile name \"${currentSection}\"`);\n }\n }\n else if (currentSection) {\n const indexOfEqualsSign = line.indexOf(\"=\");\n const start = 0;\n const end = line.length - 1;\n const isAssignment = indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n if (isAssignment) {\n const [name, value] = [\n line.substring(0, indexOfEqualsSign).trim(),\n line.substring(indexOfEqualsSign + 1).trim(),\n ];\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n }\n return map;\n};\nexports.parseIni = parseIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseKnownFiles = void 0;\nconst loadSharedConfigFiles_1 = require(\"./loadSharedConfigFiles\");\nconst parseKnownFiles = async (init) => {\n const parsedFiles = await (0, loadSharedConfigFiles_1.loadSharedConfigFiles)(init);\n return {\n ...parsedFiles.configFile,\n ...parsedFiles.credentialsFile,\n };\n};\nexports.parseKnownFiles = parseKnownFiles;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slurpFile = void 0;\nconst fs_1 = require(\"fs\");\nconst { readFile } = fs_1.promises;\nconst filePromisesHash = {};\nconst slurpFile = (path) => {\n if (!filePromisesHash[path]) {\n filePromisesHash[path] = readFile(path, \"utf8\");\n }\n return filePromisesHash[path];\n};\nexports.slurpFile = slurpFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SignatureV4 = void 0;\nconst util_hex_encoding_1 = require(\"@aws-sdk/util-hex-encoding\");\nconst util_middleware_1 = require(\"@aws-sdk/util-middleware\");\nconst constants_1 = require(\"./constants\");\nconst credentialDerivation_1 = require(\"./credentialDerivation\");\nconst getCanonicalHeaders_1 = require(\"./getCanonicalHeaders\");\nconst getCanonicalQuery_1 = require(\"./getCanonicalQuery\");\nconst getPayloadHash_1 = require(\"./getPayloadHash\");\nconst headerUtil_1 = require(\"./headerUtil\");\nconst moveHeadersToQuery_1 = require(\"./moveHeadersToQuery\");\nconst prepareRequest_1 = require(\"./prepareRequest\");\nconst utilDate_1 = require(\"./utilDate\");\nclass SignatureV4 {\n constructor({ applyChecksum, credentials, region, service, sha256, uriEscapePath = true, }) {\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = (0, util_middleware_1.normalizeProvider)(region);\n this.credentialProvider = (0, util_middleware_1.normalizeProvider)(credentials);\n }\n async presign(originalRequest, options = {}) {\n const { signingDate = new Date(), expiresIn = 3600, unsignableHeaders, unhoistableHeaders, signableHeaders, signingRegion, signingService, } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > constants_1.MAX_PRESIGNED_TTL) {\n return Promise.reject(\"Signature version 4 presigned URLs\" + \" must have an expiration date less than one week in\" + \" the future\");\n }\n const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service);\n const request = (0, moveHeadersToQuery_1.moveHeadersToQuery)((0, prepareRequest_1.prepareRequest)(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[constants_1.TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[constants_1.ALGORITHM_QUERY_PARAM] = constants_1.ALGORITHM_IDENTIFIER;\n request.query[constants_1.CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[constants_1.AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[constants_1.EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = (0, getCanonicalHeaders_1.getCanonicalHeaders)(request, unsignableHeaders, signableHeaders);\n request.query[constants_1.SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[constants_1.SIGNATURE_QUERY_PARAM] = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, await (0, getPayloadHash_1.getPayloadHash)(originalRequest, this.sha256)));\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n }\n else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n }\n else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service);\n const hashedPayload = await (0, getPayloadHash_1.getPayloadHash)({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = (0, util_hex_encoding_1.toHex)(await hash.digest());\n const stringToSign = [\n constants_1.EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload,\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signString(stringToSign, { signingDate = new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update(stringToSign);\n return (0, util_hex_encoding_1.toHex)(await hash.digest());\n }\n async signRequest(requestToSign, { signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());\n const request = (0, prepareRequest_1.prepareRequest)(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = (0, credentialDerivation_1.createScope)(shortDate, region, signingService !== null && signingService !== void 0 ? signingService : this.service);\n request.headers[constants_1.AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[constants_1.TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await (0, getPayloadHash_1.getPayloadHash)(request, this.sha256);\n if (!(0, headerUtil_1.hasHeader)(constants_1.SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[constants_1.SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = (0, getCanonicalHeaders_1.getCanonicalHeaders)(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(longDate, scope, this.getSigningKey(credentials, region, shortDate, signingService), this.createCanonicalRequest(request, canonicalHeaders, payloadHash));\n request.headers[constants_1.AUTH_HEADER] =\n `${constants_1.ALGORITHM_IDENTIFIER} ` +\n `Credential=${credentials.accessKeyId}/${scope}, ` +\n `SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, ` +\n `Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${(0, getCanonicalQuery_1.getCanonicalQuery)(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update(canonicalRequest);\n const hashedRequest = await hash.digest();\n return `${constants_1.ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${(0, util_hex_encoding_1.toHex)(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if ((pathSegment === null || pathSegment === void 0 ? void 0 : pathSegment.length) === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n }\n else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${(path === null || path === void 0 ? void 0 : path.startsWith(\"/\")) ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && (path === null || path === void 0 ? void 0 : path.endsWith(\"/\")) ? \"/\" : \"\"}`;\n const doubleEncoded = encodeURIComponent(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update(stringToSign);\n return (0, util_hex_encoding_1.toHex)(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return (0, credentialDerivation_1.getSigningKey)(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" ||\n typeof credentials.accessKeyId !== \"string\" ||\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n}\nexports.SignatureV4 = SignatureV4;\nconst formatDate = (now) => {\n const longDate = (0, utilDate_1.iso8601)(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8),\n };\n};\nconst getCanonicalHeaderList = (headers) => Object.keys(headers).sort().join(\";\");\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.cloneQuery = exports.cloneRequest = void 0;\nconst cloneRequest = ({ headers, query, ...rest }) => ({\n ...rest,\n headers: { ...headers },\n query: query ? (0, exports.cloneQuery)(query) : undefined,\n});\nexports.cloneRequest = cloneRequest;\nconst cloneQuery = (query) => Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param,\n };\n}, {});\nexports.cloneQuery = cloneQuery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MAX_PRESIGNED_TTL = exports.KEY_TYPE_IDENTIFIER = exports.MAX_CACHE_SIZE = exports.UNSIGNED_PAYLOAD = exports.EVENT_ALGORITHM_IDENTIFIER = exports.ALGORITHM_IDENTIFIER_V4A = exports.ALGORITHM_IDENTIFIER = exports.UNSIGNABLE_PATTERNS = exports.SEC_HEADER_PATTERN = exports.PROXY_HEADER_PATTERN = exports.ALWAYS_UNSIGNABLE_HEADERS = exports.HOST_HEADER = exports.TOKEN_HEADER = exports.SHA256_HEADER = exports.SIGNATURE_HEADER = exports.GENERATED_HEADERS = exports.DATE_HEADER = exports.AMZ_DATE_HEADER = exports.AUTH_HEADER = exports.REGION_SET_PARAM = exports.TOKEN_QUERY_PARAM = exports.SIGNATURE_QUERY_PARAM = exports.EXPIRES_QUERY_PARAM = exports.SIGNED_HEADERS_QUERY_PARAM = exports.AMZ_DATE_QUERY_PARAM = exports.CREDENTIAL_QUERY_PARAM = exports.ALGORITHM_QUERY_PARAM = void 0;\nexports.ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nexports.CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nexports.AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nexports.SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nexports.EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nexports.SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nexports.TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nexports.REGION_SET_PARAM = \"X-Amz-Region-Set\";\nexports.AUTH_HEADER = \"authorization\";\nexports.AMZ_DATE_HEADER = exports.AMZ_DATE_QUERY_PARAM.toLowerCase();\nexports.DATE_HEADER = \"date\";\nexports.GENERATED_HEADERS = [exports.AUTH_HEADER, exports.AMZ_DATE_HEADER, exports.DATE_HEADER];\nexports.SIGNATURE_HEADER = exports.SIGNATURE_QUERY_PARAM.toLowerCase();\nexports.SHA256_HEADER = \"x-amz-content-sha256\";\nexports.TOKEN_HEADER = exports.TOKEN_QUERY_PARAM.toLowerCase();\nexports.HOST_HEADER = \"host\";\nexports.ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true,\n};\nexports.PROXY_HEADER_PATTERN = /^proxy-/;\nexports.SEC_HEADER_PATTERN = /^sec-/;\nexports.UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];\nexports.ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nexports.ALGORITHM_IDENTIFIER_V4A = \"AWS4-ECDSA-P256-SHA256\";\nexports.EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nexports.UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nexports.MAX_CACHE_SIZE = 50;\nexports.KEY_TYPE_IDENTIFIER = \"aws4_request\";\nexports.MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.clearCredentialCache = exports.getSigningKey = exports.createScope = void 0;\nconst util_hex_encoding_1 = require(\"@aws-sdk/util-hex-encoding\");\nconst constants_1 = require(\"./constants\");\nconst signingKeyCache = {};\nconst cacheQueue = [];\nconst createScope = (shortDate, region, service) => `${shortDate}/${region}/${service}/${constants_1.KEY_TYPE_IDENTIFIER}`;\nexports.createScope = createScope;\nconst getSigningKey = async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${(0, util_hex_encoding_1.toHex)(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > constants_1.MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, constants_1.KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return (signingKeyCache[cacheKey] = key);\n};\nexports.getSigningKey = getSigningKey;\nconst clearCredentialCache = () => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n};\nexports.clearCredentialCache = clearCredentialCache;\nconst hmac = (ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update(data);\n return hash.digest();\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCanonicalHeaders = void 0;\nconst constants_1 = require(\"./constants\");\nconst getCanonicalHeaders = ({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == undefined) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in constants_1.ALWAYS_UNSIGNABLE_HEADERS ||\n (unsignableHeaders === null || unsignableHeaders === void 0 ? void 0 : unsignableHeaders.has(canonicalHeaderName)) ||\n constants_1.PROXY_HEADER_PATTERN.test(canonicalHeaderName) ||\n constants_1.SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || (signableHeaders && !signableHeaders.has(canonicalHeaderName))) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n};\nexports.getCanonicalHeaders = getCanonicalHeaders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCanonicalQuery = void 0;\nconst util_uri_escape_1 = require(\"@aws-sdk/util-uri-escape\");\nconst constants_1 = require(\"./constants\");\nconst getCanonicalQuery = ({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === constants_1.SIGNATURE_HEADER) {\n continue;\n }\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${(0, util_uri_escape_1.escapeUri)(key)}=${(0, util_uri_escape_1.escapeUri)(value)}`;\n }\n else if (Array.isArray(value)) {\n serialized[key] = value\n .slice(0)\n .sort()\n .reduce((encoded, value) => encoded.concat([`${(0, util_uri_escape_1.escapeUri)(key)}=${(0, util_uri_escape_1.escapeUri)(value)}`]), [])\n .join(\"&\");\n }\n }\n return keys\n .map((key) => serialized[key])\n .filter((serialized) => serialized)\n .join(\"&\");\n};\nexports.getCanonicalQuery = getCanonicalQuery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPayloadHash = void 0;\nconst is_array_buffer_1 = require(\"@aws-sdk/is-array-buffer\");\nconst util_hex_encoding_1 = require(\"@aws-sdk/util-hex-encoding\");\nconst constants_1 = require(\"./constants\");\nconst getPayloadHash = async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === constants_1.SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == undefined) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n }\n else if (typeof body === \"string\" || ArrayBuffer.isView(body) || (0, is_array_buffer_1.isArrayBuffer)(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update(body);\n return (0, util_hex_encoding_1.toHex)(await hashCtor.digest());\n }\n return constants_1.UNSIGNED_PAYLOAD;\n};\nexports.getPayloadHash = getPayloadHash;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deleteHeader = exports.getHeaderValue = exports.hasHeader = void 0;\nconst hasHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n};\nexports.hasHeader = hasHeader;\nconst getHeaderValue = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return headers[headerName];\n }\n }\n return undefined;\n};\nexports.getHeaderValue = getHeaderValue;\nconst deleteHeader = (soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n delete headers[headerName];\n }\n }\n};\nexports.deleteHeader = deleteHeader;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareRequest = exports.moveHeadersToQuery = exports.getPayloadHash = exports.getCanonicalQuery = exports.getCanonicalHeaders = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./SignatureV4\"), exports);\nvar getCanonicalHeaders_1 = require(\"./getCanonicalHeaders\");\nObject.defineProperty(exports, \"getCanonicalHeaders\", { enumerable: true, get: function () { return getCanonicalHeaders_1.getCanonicalHeaders; } });\nvar getCanonicalQuery_1 = require(\"./getCanonicalQuery\");\nObject.defineProperty(exports, \"getCanonicalQuery\", { enumerable: true, get: function () { return getCanonicalQuery_1.getCanonicalQuery; } });\nvar getPayloadHash_1 = require(\"./getPayloadHash\");\nObject.defineProperty(exports, \"getPayloadHash\", { enumerable: true, get: function () { return getPayloadHash_1.getPayloadHash; } });\nvar moveHeadersToQuery_1 = require(\"./moveHeadersToQuery\");\nObject.defineProperty(exports, \"moveHeadersToQuery\", { enumerable: true, get: function () { return moveHeadersToQuery_1.moveHeadersToQuery; } });\nvar prepareRequest_1 = require(\"./prepareRequest\");\nObject.defineProperty(exports, \"prepareRequest\", { enumerable: true, get: function () { return prepareRequest_1.prepareRequest; } });\ntslib_1.__exportStar(require(\"./credentialDerivation\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.moveHeadersToQuery = void 0;\nconst cloneRequest_1 = require(\"./cloneRequest\");\nconst moveHeadersToQuery = (request, options = {}) => {\n var _a;\n const { headers, query = {} } = typeof request.clone === \"function\" ? request.clone() : (0, cloneRequest_1.cloneRequest)(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !((_a = options.unhoistableHeaders) === null || _a === void 0 ? void 0 : _a.has(lname))) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query,\n };\n};\nexports.moveHeadersToQuery = moveHeadersToQuery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareRequest = void 0;\nconst cloneRequest_1 = require(\"./cloneRequest\");\nconst constants_1 = require(\"./constants\");\nconst prepareRequest = (request) => {\n request = typeof request.clone === \"function\" ? request.clone() : (0, cloneRequest_1.cloneRequest)(request);\n for (const headerName of Object.keys(request.headers)) {\n if (constants_1.GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n};\nexports.prepareRequest = prepareRequest;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toDate = exports.iso8601 = void 0;\nconst iso8601 = (time) => (0, exports.toDate)(time)\n .toISOString()\n .replace(/\\.\\d{3}Z$/, \"Z\");\nexports.iso8601 = iso8601;\nconst toDate = (time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1000);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1000);\n }\n return new Date(time);\n }\n return time;\n};\nexports.toDate = toDate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Client = void 0;\nconst middleware_stack_1 = require(\"@aws-sdk/middleware-stack\");\nclass Client {\n constructor(config) {\n this.middlewareStack = (0, middleware_stack_1.constructStack)();\n this.config = config;\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : undefined;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n if (callback) {\n handler(command)\n .then((result) => callback(null, result.output), (err) => callback(err))\n .catch(() => { });\n }\n else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n if (this.config.requestHandler.destroy)\n this.config.requestHandler.destroy();\n }\n}\nexports.Client = Client;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Command = void 0;\nconst middleware_stack_1 = require(\"@aws-sdk/middleware-stack\");\nclass Command {\n constructor() {\n this.middlewareStack = (0, middleware_stack_1.constructStack)();\n }\n}\nexports.Command = Command;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SENSITIVE_STRING = void 0;\nexports.SENSITIVE_STRING = \"***SensitiveInformation***\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseEpochTimestamp = exports.parseRfc7231DateTime = exports.parseRfc3339DateTime = exports.dateToUtcString = void 0;\nconst parse_utils_1 = require(\"./parse-utils\");\nconst DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nconst MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\nexports.dateToUtcString = dateToUtcString;\nconst RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nconst parseRfc3339DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = (0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n};\nexports.parseRfc3339DateTime = parseRfc3339DateTime;\nconst IMF_FIXDATE = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst RFC_850_DATE = new RegExp(/^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/);\nconst ASC_TIME = new RegExp(/^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/);\nconst parseRfc7231DateTime = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate((0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds,\n }));\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate((0, parse_utils_1.strictParseShort)(stripLeadingZeroes(yearStr)), parseMonthByShortName(monthStr), parseDateValue(dayStr.trimLeft(), \"day\", 1, 31), { hours, minutes, seconds, fractionalMilliseconds });\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n};\nexports.parseRfc7231DateTime = parseRfc7231DateTime;\nconst parseEpochTimestamp = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n }\n else if (typeof value === \"string\") {\n valueAsDouble = (0, parse_utils_1.strictParseDouble)(value);\n }\n else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1000));\n};\nexports.parseEpochTimestamp = parseEpochTimestamp;\nconst buildDate = (year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(Date.UTC(year, adjustedMonth, day, parseDateValue(time.hours, \"hour\", 0, 23), parseDateValue(time.minutes, \"minute\", 0, 59), parseDateValue(time.seconds, \"seconds\", 0, 60), parseMilliseconds(time.fractionalMilliseconds)));\n};\nconst parseTwoDigitYear = (value) => {\n const thisYear = new Date().getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + (0, parse_utils_1.strictParseShort)(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n};\nconst FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1000;\nconst adjustRfc850Year = (input) => {\n if (input.getTime() - new Date().getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(Date.UTC(input.getUTCFullYear() - 100, input.getUTCMonth(), input.getUTCDate(), input.getUTCHours(), input.getUTCMinutes(), input.getUTCSeconds(), input.getUTCMilliseconds()));\n }\n return input;\n};\nconst parseMonthByShortName = (value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n};\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst validateDayOfMonth = (year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n};\nconst isLeapYear = (year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n};\nconst parseDateValue = (value, type, lower, upper) => {\n const dateVal = (0, parse_utils_1.strictParseByte)(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n};\nconst parseMilliseconds = (value) => {\n if (value === null || value === undefined) {\n return 0;\n }\n return (0, parse_utils_1.strictParseFloat32)(\"0.\" + value) * 1000;\n};\nconst stripLeadingZeroes = (value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.throwDefaultError = void 0;\nconst exceptions_1 = require(\"./exceptions\");\nconst throwDefaultError = ({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : undefined;\n const response = new exceptionCtor({\n name: parsedBody.code || parsedBody.Code || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata,\n });\n throw (0, exceptions_1.decorateServiceException)(response, parsedBody);\n};\nexports.throwDefaultError = throwDefaultError;\nconst deserializeMetadata = (output) => {\n var _a;\n return ({\n httpStatusCode: output.statusCode,\n requestId: (_a = output.headers[\"x-amzn-requestid\"]) !== null && _a !== void 0 ? _a : output.headers[\"x-amzn-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"],\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadConfigsForDefaultMode = void 0;\nconst loadConfigsForDefaultMode = (mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100,\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100,\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 30000,\n };\n default:\n return {};\n }\n};\nexports.loadConfigsForDefaultMode = loadConfigsForDefaultMode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.emitWarningIfUnsupportedVersion = void 0;\nlet warningEmitted = false;\nconst emitWarningIfUnsupportedVersion = (version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 14) {\n warningEmitted = true;\n }\n};\nexports.emitWarningIfUnsupportedVersion = emitWarningIfUnsupportedVersion;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decorateServiceException = exports.ServiceException = void 0;\nclass ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n}\nexports.ServiceException = ServiceException;\nconst decorateServiceException = (exception, additions = {}) => {\n Object.entries(additions)\n .filter(([, v]) => v !== undefined)\n .forEach(([k, v]) => {\n if (exception[k] == undefined || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n};\nexports.decorateServiceException = decorateServiceException;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendedEncodeURIComponent = void 0;\nfunction extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nexports.extendedEncodeURIComponent = extendedEncodeURIComponent;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getArrayIfSingleItem = void 0;\nconst getArrayIfSingleItem = (mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray];\nexports.getArrayIfSingleItem = getArrayIfSingleItem;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getValueFromTextNode = void 0;\nconst getValueFromTextNode = (obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== undefined) {\n obj[key] = obj[key][textNodeName];\n }\n else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = (0, exports.getValueFromTextNode)(obj[key]);\n }\n }\n return obj;\n};\nexports.getValueFromTextNode = getValueFromTextNode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./client\"), exports);\ntslib_1.__exportStar(require(\"./command\"), exports);\ntslib_1.__exportStar(require(\"./constants\"), exports);\ntslib_1.__exportStar(require(\"./date-utils\"), exports);\ntslib_1.__exportStar(require(\"./default-error-handler\"), exports);\ntslib_1.__exportStar(require(\"./defaults-mode\"), exports);\ntslib_1.__exportStar(require(\"./emitWarningIfUnsupportedVersion\"), exports);\ntslib_1.__exportStar(require(\"./exceptions\"), exports);\ntslib_1.__exportStar(require(\"./extended-encode-uri-component\"), exports);\ntslib_1.__exportStar(require(\"./get-array-if-single-item\"), exports);\ntslib_1.__exportStar(require(\"./get-value-from-text-node\"), exports);\ntslib_1.__exportStar(require(\"./lazy-json\"), exports);\ntslib_1.__exportStar(require(\"./object-mapping\"), exports);\ntslib_1.__exportStar(require(\"./parse-utils\"), exports);\ntslib_1.__exportStar(require(\"./resolve-path\"), exports);\ntslib_1.__exportStar(require(\"./ser-utils\"), exports);\ntslib_1.__exportStar(require(\"./split-every\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LazyJsonString = exports.StringWrapper = void 0;\nconst StringWrapper = function () {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n};\nexports.StringWrapper = StringWrapper;\nexports.StringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: exports.StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n});\nObject.setPrototypeOf(exports.StringWrapper, String);\nclass LazyJsonString extends exports.StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof LazyJsonString) {\n return object;\n }\n else if (object instanceof String || typeof object === \"string\") {\n return new LazyJsonString(object);\n }\n return new LazyJsonString(JSON.stringify(object));\n }\n}\nexports.LazyJsonString = LazyJsonString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertMap = exports.map = void 0;\nfunction map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n }\n else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n }\n else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n let [filter, value] = instructions[key];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === undefined && (_value = value()) != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(void 0)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed) {\n target[key] = _value;\n }\n else if (customFilterPassed) {\n target[key] = value();\n }\n }\n else {\n const defaultFilterPassed = filter === undefined && value != null;\n const customFilterPassed = (typeof filter === \"function\" && !!filter(value)) || (typeof filter !== \"function\" && !!filter);\n if (defaultFilterPassed || customFilterPassed) {\n target[key] = value;\n }\n }\n }\n return target;\n}\nexports.map = map;\nconst convertMap = (target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n};\nexports.convertMap = convertMap;\nconst mapWithFilter = (target, filter, instructions) => {\n return map(target, Object.entries(instructions).reduce((_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n }\n else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n }\n else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n }, {}));\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logger = exports.strictParseByte = exports.strictParseShort = exports.strictParseInt32 = exports.strictParseInt = exports.strictParseLong = exports.limitedParseFloat32 = exports.limitedParseFloat = exports.handleFloat = exports.limitedParseDouble = exports.strictParseFloat32 = exports.strictParseFloat = exports.strictParseDouble = exports.expectUnion = exports.expectString = exports.expectObject = exports.expectNonNull = exports.expectByte = exports.expectShort = exports.expectInt32 = exports.expectInt = exports.expectLong = exports.expectFloat32 = exports.expectNumber = exports.expectBoolean = exports.parseBoolean = void 0;\nconst parseBoolean = (value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n};\nexports.parseBoolean = parseBoolean;\nconst expectBoolean = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n exports.logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n exports.logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n};\nexports.expectBoolean = expectBoolean;\nconst expectNumber = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n exports.logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n};\nexports.expectNumber = expectNumber;\nconst MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nconst expectFloat32 = (value) => {\n const expected = (0, exports.expectNumber)(value);\n if (expected !== undefined && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n};\nexports.expectFloat32 = expectFloat32;\nconst expectLong = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n};\nexports.expectLong = expectLong;\nexports.expectInt = exports.expectLong;\nconst expectInt32 = (value) => expectSizedInt(value, 32);\nexports.expectInt32 = expectInt32;\nconst expectShort = (value) => expectSizedInt(value, 16);\nexports.expectShort = expectShort;\nconst expectByte = (value) => expectSizedInt(value, 8);\nexports.expectByte = expectByte;\nconst expectSizedInt = (value, size) => {\n const expected = (0, exports.expectLong)(value);\n if (expected !== undefined && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n};\nconst castInt = (value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n};\nconst expectNonNull = (value, location) => {\n if (value === null || value === undefined) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n};\nexports.expectNonNull = expectNonNull;\nconst expectObject = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n};\nexports.expectObject = expectObject;\nconst expectString = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n exports.logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n};\nexports.expectString = expectString;\nconst expectUnion = (value) => {\n if (value === null || value === undefined) {\n return undefined;\n }\n const asObject = (0, exports.expectObject)(value);\n const setKeys = Object.entries(asObject)\n .filter(([, v]) => v != null)\n .map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n};\nexports.expectUnion = expectUnion;\nconst strictParseDouble = (value) => {\n if (typeof value == \"string\") {\n return (0, exports.expectNumber)(parseNumber(value));\n }\n return (0, exports.expectNumber)(value);\n};\nexports.strictParseDouble = strictParseDouble;\nexports.strictParseFloat = exports.strictParseDouble;\nconst strictParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return (0, exports.expectFloat32)(parseNumber(value));\n }\n return (0, exports.expectFloat32)(value);\n};\nexports.strictParseFloat32 = strictParseFloat32;\nconst NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nconst parseNumber = (value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n};\nconst limitedParseDouble = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return (0, exports.expectNumber)(value);\n};\nexports.limitedParseDouble = limitedParseDouble;\nexports.handleFloat = exports.limitedParseDouble;\nexports.limitedParseFloat = exports.limitedParseDouble;\nconst limitedParseFloat32 = (value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return (0, exports.expectFloat32)(value);\n};\nexports.limitedParseFloat32 = limitedParseFloat32;\nconst parseFloatString = (value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n};\nconst strictParseLong = (value) => {\n if (typeof value === \"string\") {\n return (0, exports.expectLong)(parseNumber(value));\n }\n return (0, exports.expectLong)(value);\n};\nexports.strictParseLong = strictParseLong;\nexports.strictParseInt = exports.strictParseLong;\nconst strictParseInt32 = (value) => {\n if (typeof value === \"string\") {\n return (0, exports.expectInt32)(parseNumber(value));\n }\n return (0, exports.expectInt32)(value);\n};\nexports.strictParseInt32 = strictParseInt32;\nconst strictParseShort = (value) => {\n if (typeof value === \"string\") {\n return (0, exports.expectShort)(parseNumber(value));\n }\n return (0, exports.expectShort)(value);\n};\nexports.strictParseShort = strictParseShort;\nconst strictParseByte = (value) => {\n if (typeof value === \"string\") {\n return (0, exports.expectByte)(parseNumber(value));\n }\n return (0, exports.expectByte)(value);\n};\nexports.strictParseByte = strictParseByte;\nconst stackTraceWarning = (message) => {\n return String(new TypeError(message).stack || message)\n .split(\"\\n\")\n .slice(0, 5)\n .filter((s) => !s.includes(\"stackTraceWarning\"))\n .join(\"\\n\");\n};\nexports.logger = {\n warn: console.warn,\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolvedPath = void 0;\nconst extended_encode_uri_component_1 = require(\"./extended-encode-uri-component\");\nconst resolvedPath = (resolvedPath, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== undefined) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath = resolvedPath.replace(uriLabel, isGreedyLabel\n ? labelValue\n .split(\"/\")\n .map((segment) => (0, extended_encode_uri_component_1.extendedEncodeURIComponent)(segment))\n .join(\"/\")\n : (0, extended_encode_uri_component_1.extendedEncodeURIComponent)(labelValue));\n }\n else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath;\n};\nexports.resolvedPath = resolvedPath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.serializeFloat = void 0;\nconst serializeFloat = (value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n};\nexports.serializeFloat = serializeFloat;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitEvery = void 0;\nfunction splitEvery(value, delimiter, numDelimiters) {\n if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n }\n const segments = value.split(delimiter);\n if (numDelimiters === 1) {\n return segments;\n }\n const compoundSegments = [];\n let currentSegment = \"\";\n for (let i = 0; i < segments.length; i++) {\n if (currentSegment === \"\") {\n currentSegment = segments[i];\n }\n else {\n currentSegment += delimiter + segments[i];\n }\n if ((i + 1) % numDelimiters === 0) {\n compoundSegments.push(currentSegment);\n currentSegment = \"\";\n }\n }\n if (currentSegment !== \"\") {\n compoundSegments.push(currentSegment);\n }\n return compoundSegments;\n}\nexports.splitEvery = splitEvery;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointURLScheme = void 0;\nvar EndpointURLScheme;\n(function (EndpointURLScheme) {\n EndpointURLScheme[\"HTTP\"] = \"http\";\n EndpointURLScheme[\"HTTPS\"] = \"https\";\n})(EndpointURLScheme = exports.EndpointURLScheme || (exports.EndpointURLScheme = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./abort\"), exports);\ntslib_1.__exportStar(require(\"./auth\"), exports);\ntslib_1.__exportStar(require(\"./client\"), exports);\ntslib_1.__exportStar(require(\"./command\"), exports);\ntslib_1.__exportStar(require(\"./credentials\"), exports);\ntslib_1.__exportStar(require(\"./crypto\"), exports);\ntslib_1.__exportStar(require(\"./endpoint\"), exports);\ntslib_1.__exportStar(require(\"./eventStream\"), exports);\ntslib_1.__exportStar(require(\"./http\"), exports);\ntslib_1.__exportStar(require(\"./logger\"), exports);\ntslib_1.__exportStar(require(\"./middleware\"), exports);\ntslib_1.__exportStar(require(\"./pagination\"), exports);\ntslib_1.__exportStar(require(\"./profile\"), exports);\ntslib_1.__exportStar(require(\"./response\"), exports);\ntslib_1.__exportStar(require(\"./serde\"), exports);\ntslib_1.__exportStar(require(\"./shapes\"), exports);\ntslib_1.__exportStar(require(\"./signature\"), exports);\ntslib_1.__exportStar(require(\"./stream\"), exports);\ntslib_1.__exportStar(require(\"./token\"), exports);\ntslib_1.__exportStar(require(\"./transfer\"), exports);\ntslib_1.__exportStar(require(\"./util\"), exports);\ntslib_1.__exportStar(require(\"./waiter\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseUrl = void 0;\nconst querystring_parser_1 = require(\"@aws-sdk/querystring-parser\");\nconst parseUrl = (url) => {\n if (typeof url === \"string\") {\n return (0, exports.parseUrl)(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = (0, querystring_parser_1.parseQueryString)(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : undefined,\n protocol,\n path: pathname,\n query,\n };\n};\nexports.parseUrl = parseUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBase64 = exports.fromBase64 = void 0;\nconst util_buffer_from_1 = require(\"@aws-sdk/util-buffer-from\");\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nfunction fromBase64(input) {\n if ((input.length * 3) % 4 !== 0) {\n throw new TypeError(`Incorrect padding on base64 string.`);\n }\n if (!BASE64_REGEX.exec(input)) {\n throw new TypeError(`Invalid base64 string.`);\n }\n const buffer = (0, util_buffer_from_1.fromString)(input, \"base64\");\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n}\nexports.fromBase64 = fromBase64;\nfunction toBase64(input) {\n return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n}\nexports.toBase64 = toBase64;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateBodyLength = void 0;\nconst fs_1 = require(\"fs\");\nconst calculateBodyLength = (body) => {\n if (!body) {\n return 0;\n }\n if (typeof body === \"string\") {\n return Buffer.from(body).length;\n }\n else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n }\n else if (typeof body.size === \"number\") {\n return body.size;\n }\n else if (typeof body.path === \"string\" || Buffer.isBuffer(body.path)) {\n return (0, fs_1.lstatSync)(body.path).size;\n }\n else if (typeof body.fd === \"number\") {\n return (0, fs_1.fstatSync)(body.fd).size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n};\nexports.calculateBodyLength = calculateBodyLength;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./calculateBodyLength\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromString = exports.fromArrayBuffer = void 0;\nconst is_array_buffer_1 = require(\"@aws-sdk/is-array-buffer\");\nconst buffer_1 = require(\"buffer\");\nconst fromArrayBuffer = (input, offset = 0, length = input.byteLength - offset) => {\n if (!(0, is_array_buffer_1.isArrayBuffer)(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return buffer_1.Buffer.from(input, offset, length);\n};\nexports.fromArrayBuffer = fromArrayBuffer;\nconst fromString = (input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? buffer_1.Buffer.from(input, encoding) : buffer_1.Buffer.from(input);\n};\nexports.fromString = fromString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.booleanSelector = exports.SelectorType = void 0;\nvar SelectorType;\n(function (SelectorType) {\n SelectorType[\"ENV\"] = \"env\";\n SelectorType[\"CONFIG\"] = \"shared config entry\";\n})(SelectorType = exports.SelectorType || (exports.SelectorType = {}));\nconst booleanSelector = (obj, key, type) => {\n if (!(key in obj))\n return undefined;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n};\nexports.booleanSelector = booleanSelector;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./booleanSelector\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IMDS_REGION_PATH = exports.DEFAULTS_MODE_OPTIONS = exports.ENV_IMDS_DISABLED = exports.AWS_DEFAULT_REGION_ENV = exports.AWS_REGION_ENV = exports.AWS_EXECUTION_ENV = void 0;\nexports.AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nexports.AWS_REGION_ENV = \"AWS_REGION\";\nexports.AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nexports.ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nexports.DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nexports.IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NODE_DEFAULTS_MODE_CONFIG_OPTIONS = void 0;\nconst AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nconst AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nexports.NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n return env[AWS_DEFAULTS_MODE_ENV];\n },\n configFileSelector: (profile) => {\n return profile[AWS_DEFAULTS_MODE_CONFIG];\n },\n default: \"legacy\",\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./resolveDefaultsModeConfig\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveDefaultsModeConfig = void 0;\nconst config_resolver_1 = require(\"@aws-sdk/config-resolver\");\nconst credential_provider_imds_1 = require(\"@aws-sdk/credential-provider-imds\");\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst property_provider_1 = require(\"@aws-sdk/property-provider\");\nconst constants_1 = require(\"./constants\");\nconst defaultsModeConfig_1 = require(\"./defaultsModeConfig\");\nconst resolveDefaultsModeConfig = ({ region = (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS), defaultsMode = (0, node_config_provider_1.loadConfig)(defaultsModeConfig_1.NODE_DEFAULTS_MODE_CONFIG_OPTIONS), } = {}) => (0, property_provider_1.memoize)(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode === null || mode === void 0 ? void 0 : mode.toLowerCase()) {\n case \"auto\":\n return resolveNodeDefaultsModeAuto(region);\n case \"in-region\":\n case \"cross-region\":\n case \"mobile\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode === null || mode === void 0 ? void 0 : mode.toLocaleLowerCase());\n case undefined:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(`Invalid parameter for \"defaultsMode\", expect ${constants_1.DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`);\n }\n});\nexports.resolveDefaultsModeConfig = resolveDefaultsModeConfig;\nconst resolveNodeDefaultsModeAuto = async (clientRegion) => {\n if (clientRegion) {\n const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n const inferredRegion = await inferPhysicalRegion();\n if (!inferredRegion) {\n return \"standard\";\n }\n if (resolvedRegion === inferredRegion) {\n return \"in-region\";\n }\n else {\n return \"cross-region\";\n }\n }\n return \"standard\";\n};\nconst inferPhysicalRegion = async () => {\n var _a;\n if (process.env[constants_1.AWS_EXECUTION_ENV] && (process.env[constants_1.AWS_REGION_ENV] || process.env[constants_1.AWS_DEFAULT_REGION_ENV])) {\n return (_a = process.env[constants_1.AWS_REGION_ENV]) !== null && _a !== void 0 ? _a : process.env[constants_1.AWS_DEFAULT_REGION_ENV];\n }\n if (!process.env[constants_1.ENV_IMDS_DISABLED]) {\n try {\n const endpoint = await (0, credential_provider_imds_1.getInstanceMetadataEndpoint)();\n return (await (0, credential_provider_imds_1.httpRequest)({ ...endpoint, path: constants_1.IMDS_REGION_PATH })).toString();\n }\n catch (e) {\n }\n }\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.debugId = void 0;\nexports.debugId = \"endpoints\";\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./debugId\"), exports);\ntslib_1.__exportStar(require(\"./toDebugString\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toDebugString = void 0;\nfunction toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\nexports.toDebugString = toDebugString;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./lib/aws/partition\"), exports);\ntslib_1.__exportStar(require(\"./resolveEndpoint\"), exports);\ntslib_1.__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./isVirtualHostableS3Bucket\"), exports);\ntslib_1.__exportStar(require(\"./parseArn\"), exports);\ntslib_1.__exportStar(require(\"./partition\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isVirtualHostableS3Bucket = void 0;\nconst isIpAddress_1 = require(\"../isIpAddress\");\nconst isValidHostLabel_1 = require(\"../isValidHostLabel\");\nconst isVirtualHostableS3Bucket = (value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!(0, exports.isVirtualHostableS3Bucket)(label)) {\n return false;\n }\n }\n return true;\n }\n if (!(0, isValidHostLabel_1.isValidHostLabel)(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if ((0, isIpAddress_1.isIpAddress)(value)) {\n return false;\n }\n return true;\n};\nexports.isVirtualHostableS3Bucket = isVirtualHostableS3Bucket;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseArn = void 0;\nconst parseArn = (value) => {\n const segments = value.split(\":\");\n if (segments.length < 6)\n return null;\n const [arn, partition, service, region, accountId, ...resourceId] = segments;\n if (arn !== \"arn\" || partition === \"\" || service === \"\" || resourceId[0] === \"\")\n return null;\n return {\n partition,\n service,\n region,\n accountId,\n resourceId: resourceId[0].includes(\"/\") ? resourceId[0].split(\"/\") : resourceId,\n };\n};\nexports.parseArn = parseArn;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.partition = void 0;\nconst tslib_1 = require(\"tslib\");\nconst partitions_json_1 = tslib_1.__importDefault(require(\"./partitions.json\"));\nconst { partitions } = partitions_json_1.default;\nconst DEFAULT_PARTITION = partitions.find((partition) => partition.id === \"aws\");\nconst partition = (value) => {\n for (const partition of partitions) {\n const { regions, outputs } = partition;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData,\n };\n }\n }\n }\n for (const partition of partitions) {\n const { regionRegex, outputs } = partition;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs,\n };\n }\n }\n if (!DEFAULT_PARTITION) {\n throw new Error(\"Provided region was not found in the partition array or regex,\" +\n \" and default partition with id 'aws' doesn't exist.\");\n }\n return {\n ...DEFAULT_PARTITION.outputs,\n };\n};\nexports.partition = partition;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.booleanEquals = void 0;\nconst booleanEquals = (value1, value2) => value1 === value2;\nexports.booleanEquals = booleanEquals;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAttr = void 0;\nconst types_1 = require(\"../types\");\nconst getAttrPathList_1 = require(\"./getAttrPathList\");\nconst getAttr = (value, path) => (0, getAttrPathList_1.getAttrPathList)(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new types_1.EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n }\n else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value);\nexports.getAttr = getAttr;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAttrPathList = void 0;\nconst types_1 = require(\"../types\");\nconst getAttrPathList = (path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new types_1.EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new types_1.EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n }\n else {\n pathList.push(part);\n }\n }\n return pathList;\n};\nexports.getAttrPathList = getAttrPathList;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aws = void 0;\nconst tslib_1 = require(\"tslib\");\nexports.aws = tslib_1.__importStar(require(\"./aws\"));\ntslib_1.__exportStar(require(\"./booleanEquals\"), exports);\ntslib_1.__exportStar(require(\"./getAttr\"), exports);\ntslib_1.__exportStar(require(\"./isSet\"), exports);\ntslib_1.__exportStar(require(\"./isValidHostLabel\"), exports);\ntslib_1.__exportStar(require(\"./not\"), exports);\ntslib_1.__exportStar(require(\"./parseURL\"), exports);\ntslib_1.__exportStar(require(\"./stringEquals\"), exports);\ntslib_1.__exportStar(require(\"./substring\"), exports);\ntslib_1.__exportStar(require(\"./uriEncode\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isIpAddress = void 0;\nconst IP_V4_REGEX = new RegExp(`^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`);\nconst isIpAddress = (value) => IP_V4_REGEX.test(value) || (value.startsWith(\"[\") && value.endsWith(\"]\"));\nexports.isIpAddress = isIpAddress;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSet = void 0;\nconst isSet = (value) => value != null;\nexports.isSet = isSet;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isValidHostLabel = void 0;\nconst VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nconst isValidHostLabel = (value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!(0, exports.isValidHostLabel)(label)) {\n return false;\n }\n }\n return true;\n};\nexports.isValidHostLabel = isValidHostLabel;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.not = void 0;\nconst not = (value) => !value;\nexports.not = not;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseURL = void 0;\nconst types_1 = require(\"@aws-sdk/types\");\nconst isIpAddress_1 = require(\"./isIpAddress\");\nconst DEFAULT_PORTS = {\n [types_1.EndpointURLScheme.HTTP]: 80,\n [types_1.EndpointURLScheme.HTTPS]: 443,\n};\nconst parseURL = (value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname, port, protocol = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol}//${hostname}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query)\n .map(([k, v]) => `${k}=${v}`)\n .join(\"&\");\n return url;\n }\n return new URL(value);\n }\n catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(types_1.EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = (0, isIpAddress_1.isIpAddress)(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) ||\n (typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`));\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp,\n };\n};\nexports.parseURL = parseURL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringEquals = void 0;\nconst stringEquals = (value1, value2) => value1 === value2;\nexports.stringEquals = stringEquals;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.substring = void 0;\nconst substring = (input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n};\nexports.substring = substring;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.uriEncode = void 0;\nconst uriEncode = (value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`);\nexports.uriEncode = uriEncode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveEndpoint = void 0;\nconst debug_1 = require(\"./debug\");\nconst types_1 = require(\"./types\");\nconst utils_1 = require(\"./utils\");\nconst resolveEndpoint = (ruleSetObject, options) => {\n var _a, _b, _c, _d, _e, _f;\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `Initial EndpointParams: ${(0, debug_1.toDebugString)(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters)\n .filter(([, v]) => v.default != null)\n .map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = (_c = endpointParams[paramKey]) !== null && _c !== void 0 ? _c : paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters)\n .filter(([, v]) => v.required)\n .map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new types_1.EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = (0, utils_1.evaluateRules)(rules, { endpointParams, logger, referenceRecord: {} });\n if ((_d = options.endpointParams) === null || _d === void 0 ? void 0 : _d.Endpoint) {\n try {\n const givenEndpoint = new URL(options.endpointParams.Endpoint);\n const { protocol, port } = givenEndpoint;\n endpoint.url.protocol = protocol;\n endpoint.url.port = port;\n }\n catch (e) {\n }\n }\n (_f = (_e = options.logger) === null || _e === void 0 ? void 0 : _e.debug) === null || _f === void 0 ? void 0 : _f.call(_e, debug_1.debugId, `Resolved endpoint: ${(0, debug_1.toDebugString)(endpoint)}`);\n return endpoint;\n};\nexports.resolveEndpoint = resolveEndpoint;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EndpointError = void 0;\nclass EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n}\nexports.EndpointError = EndpointError;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./EndpointError\"), exports);\ntslib_1.__exportStar(require(\"./EndpointRuleObject\"), exports);\ntslib_1.__exportStar(require(\"./ErrorRuleObject\"), exports);\ntslib_1.__exportStar(require(\"./RuleSetObject\"), exports);\ntslib_1.__exportStar(require(\"./TreeRuleObject\"), exports);\ntslib_1.__exportStar(require(\"./shared\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.callFunction = void 0;\nconst tslib_1 = require(\"tslib\");\nconst lib = tslib_1.__importStar(require(\"../lib\"));\nconst evaluateExpression_1 = require(\"./evaluateExpression\");\nconst callFunction = ({ fn, argv }, options) => {\n const evaluatedArgs = argv.map((arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : (0, evaluateExpression_1.evaluateExpression)(arg, \"arg\", options));\n return fn.split(\".\").reduce((acc, key) => acc[key], lib)(...evaluatedArgs);\n};\nexports.callFunction = callFunction;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateCondition = void 0;\nconst debug_1 = require(\"../debug\");\nconst types_1 = require(\"../types\");\nconst callFunction_1 = require(\"./callFunction\");\nconst evaluateCondition = ({ assign, ...fnArgs }, options) => {\n var _a, _b;\n if (assign && assign in options.referenceRecord) {\n throw new types_1.EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = (0, callFunction_1.callFunction)(fnArgs, options);\n (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `evaluateCondition: ${(0, debug_1.toDebugString)(fnArgs)} = ${(0, debug_1.toDebugString)(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...(assign != null && { toAssign: { name: assign, value } }),\n };\n};\nexports.evaluateCondition = evaluateCondition;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateConditions = void 0;\nconst debug_1 = require(\"../debug\");\nconst evaluateCondition_1 = require(\"./evaluateCondition\");\nconst evaluateConditions = (conditions = [], options) => {\n var _a, _b;\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = (0, evaluateCondition_1.evaluateCondition)(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord,\n },\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `assign: ${toAssign.name} := ${(0, debug_1.toDebugString)(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n};\nexports.evaluateConditions = evaluateConditions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateEndpointRule = void 0;\nconst debug_1 = require(\"../debug\");\nconst evaluateConditions_1 = require(\"./evaluateConditions\");\nconst getEndpointHeaders_1 = require(\"./getEndpointHeaders\");\nconst getEndpointProperties_1 = require(\"./getEndpointProperties\");\nconst getEndpointUrl_1 = require(\"./getEndpointUrl\");\nconst evaluateEndpointRule = (endpointRule, options) => {\n var _a, _b;\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n };\n const { url, properties, headers } = endpoint;\n (_b = (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug) === null || _b === void 0 ? void 0 : _b.call(_a, debug_1.debugId, `Resolving endpoint from template: ${(0, debug_1.toDebugString)(endpoint)}`);\n return {\n ...(headers != undefined && {\n headers: (0, getEndpointHeaders_1.getEndpointHeaders)(headers, endpointRuleOptions),\n }),\n ...(properties != undefined && {\n properties: (0, getEndpointProperties_1.getEndpointProperties)(properties, endpointRuleOptions),\n }),\n url: (0, getEndpointUrl_1.getEndpointUrl)(url, endpointRuleOptions),\n };\n};\nexports.evaluateEndpointRule = evaluateEndpointRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateErrorRule = void 0;\nconst types_1 = require(\"../types\");\nconst evaluateConditions_1 = require(\"./evaluateConditions\");\nconst evaluateExpression_1 = require(\"./evaluateExpression\");\nconst evaluateErrorRule = (errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options);\n if (!result) {\n return;\n }\n throw new types_1.EndpointError((0, evaluateExpression_1.evaluateExpression)(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n }));\n};\nexports.evaluateErrorRule = evaluateErrorRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateExpression = void 0;\nconst types_1 = require(\"../types\");\nconst callFunction_1 = require(\"./callFunction\");\nconst evaluateTemplate_1 = require(\"./evaluateTemplate\");\nconst getReferenceValue_1 = require(\"./getReferenceValue\");\nconst evaluateExpression = (obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return (0, evaluateTemplate_1.evaluateTemplate)(obj, options);\n }\n else if (obj[\"fn\"]) {\n return (0, callFunction_1.callFunction)(obj, options);\n }\n else if (obj[\"ref\"]) {\n return (0, getReferenceValue_1.getReferenceValue)(obj, options);\n }\n throw new types_1.EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n};\nexports.evaluateExpression = evaluateExpression;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateRules = void 0;\nconst types_1 = require(\"../types\");\nconst evaluateEndpointRule_1 = require(\"./evaluateEndpointRule\");\nconst evaluateErrorRule_1 = require(\"./evaluateErrorRule\");\nconst evaluateTreeRule_1 = require(\"./evaluateTreeRule\");\nconst evaluateRules = (rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = (0, evaluateEndpointRule_1.evaluateEndpointRule)(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else if (rule.type === \"error\") {\n (0, evaluateErrorRule_1.evaluateErrorRule)(rule, options);\n }\n else if (rule.type === \"tree\") {\n const endpointOrUndefined = (0, evaluateTreeRule_1.evaluateTreeRule)(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n }\n else {\n throw new types_1.EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new types_1.EndpointError(`Rules evaluation failed`);\n};\nexports.evaluateRules = evaluateRules;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateTemplate = void 0;\nconst lib_1 = require(\"../lib\");\nconst evaluateTemplate = (template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push((0, lib_1.getAttr)(templateContext[refName], attrName));\n }\n else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n};\nexports.evaluateTemplate = evaluateTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.evaluateTreeRule = void 0;\nconst evaluateConditions_1 = require(\"./evaluateConditions\");\nconst evaluateRules_1 = require(\"./evaluateRules\");\nconst evaluateTreeRule = (treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = (0, evaluateConditions_1.evaluateConditions)(conditions, options);\n if (!result) {\n return;\n }\n return (0, evaluateRules_1.evaluateRules)(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord },\n });\n};\nexports.evaluateTreeRule = evaluateTreeRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointHeaders = void 0;\nconst types_1 = require(\"../types\");\nconst evaluateExpression_1 = require(\"./evaluateExpression\");\nconst getEndpointHeaders = (headers, options) => Object.entries(headers).reduce((acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = (0, evaluateExpression_1.evaluateExpression)(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new types_1.EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n }),\n}), {});\nexports.getEndpointHeaders = getEndpointHeaders;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointProperties = void 0;\nconst getEndpointProperty_1 = require(\"./getEndpointProperty\");\nconst getEndpointProperties = (properties, options) => Object.entries(properties).reduce((acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: (0, getEndpointProperty_1.getEndpointProperty)(propertyVal, options),\n}), {});\nexports.getEndpointProperties = getEndpointProperties;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointProperty = void 0;\nconst types_1 = require(\"../types\");\nconst evaluateTemplate_1 = require(\"./evaluateTemplate\");\nconst getEndpointProperties_1 = require(\"./getEndpointProperties\");\nconst getEndpointProperty = (property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => (0, exports.getEndpointProperty)(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return (0, evaluateTemplate_1.evaluateTemplate)(property, options);\n case \"object\":\n if (property === null) {\n throw new types_1.EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return (0, getEndpointProperties_1.getEndpointProperties)(property, options);\n case \"boolean\":\n return property;\n default:\n throw new types_1.EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n};\nexports.getEndpointProperty = getEndpointProperty;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointUrl = void 0;\nconst types_1 = require(\"../types\");\nconst evaluateExpression_1 = require(\"./evaluateExpression\");\nconst getEndpointUrl = (endpointUrl, options) => {\n const expression = (0, evaluateExpression_1.evaluateExpression)(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n }\n catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new types_1.EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n};\nexports.getEndpointUrl = getEndpointUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getReferenceValue = void 0;\nconst getReferenceValue = ({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord,\n };\n return referenceRecord[ref];\n};\nexports.getReferenceValue = getReferenceValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./evaluateRules\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toHex = exports.fromHex = void 0;\nconst SHORT_TO_HEX = {};\nconst HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nfunction fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n }\n else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\nexports.fromHex = fromHex;\nfunction toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\nexports.toHex = toHex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./normalizeProvider\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.normalizeProvider = void 0;\nconst normalizeProvider = (input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n};\nexports.normalizeProvider = normalizeProvider;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUriPath = void 0;\nconst escape_uri_1 = require(\"./escape-uri\");\nconst escapeUriPath = (uri) => uri.split(\"/\").map(escape_uri_1.escapeUri).join(\"/\");\nexports.escapeUriPath = escapeUriPath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.escapeUri = void 0;\nconst escapeUri = (uri) => encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode);\nexports.escapeUri = escapeUri;\nconst hexEncode = (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./escape-uri\"), exports);\ntslib_1.__exportStar(require(\"./escape-uri-path\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultUserAgent = exports.UA_APP_ID_INI_NAME = exports.UA_APP_ID_ENV_NAME = void 0;\nconst node_config_provider_1 = require(\"@aws-sdk/node-config-provider\");\nconst os_1 = require(\"os\");\nconst process_1 = require(\"process\");\nconst is_crt_available_1 = require(\"./is-crt-available\");\nexports.UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nexports.UA_APP_ID_INI_NAME = \"sdk-ua-app-id\";\nconst defaultUserAgent = ({ serviceId, clientVersion }) => {\n const sections = [\n [\"aws-sdk-js\", clientVersion],\n [`os/${(0, os_1.platform)()}`, (0, os_1.release)()],\n [\"lang/js\"],\n [\"md/nodejs\", `${process_1.versions.node}`],\n ];\n const crtAvailable = (0, is_crt_available_1.isCrtAvailable)();\n if (crtAvailable) {\n sections.push(crtAvailable);\n }\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n if (process_1.env.AWS_EXECUTION_ENV) {\n sections.push([`exec-env/${process_1.env.AWS_EXECUTION_ENV}`]);\n }\n const appIdPromise = (0, node_config_provider_1.loadConfig)({\n environmentVariableSelector: (env) => env[exports.UA_APP_ID_ENV_NAME],\n configFileSelector: (profile) => profile[exports.UA_APP_ID_INI_NAME],\n default: undefined,\n })();\n let resolvedUserAgent = undefined;\n return async () => {\n if (!resolvedUserAgent) {\n const appId = await appIdPromise;\n resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n }\n return resolvedUserAgent;\n };\n};\nexports.defaultUserAgent = defaultUserAgent;\n",null,"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toUtf8 = exports.fromUtf8 = void 0;\nconst util_buffer_from_1 = require(\"@aws-sdk/util-buffer-from\");\nconst fromUtf8 = (input) => {\n const buf = (0, util_buffer_from_1.fromString)(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n};\nexports.fromUtf8 = fromUtf8;\nconst toUtf8 = (input) => (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\nexports.toUtf8 = toUtf8;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createWaiter = void 0;\nconst poller_1 = require(\"./poller\");\nconst utils_1 = require(\"./utils\");\nconst waiter_1 = require(\"./waiter\");\nconst abortTimeout = async (abortSignal) => {\n return new Promise((resolve) => {\n abortSignal.onabort = () => resolve({ state: waiter_1.WaiterState.ABORTED });\n });\n};\nconst createWaiter = async (options, input, acceptorChecks) => {\n const params = {\n ...waiter_1.waiterServiceDefaults,\n ...options,\n };\n (0, utils_1.validateWaiterOptions)(params);\n const exitConditions = [(0, poller_1.runPolling)(params, input, acceptorChecks)];\n if (options.abortController) {\n exitConditions.push(abortTimeout(options.abortController.signal));\n }\n if (options.abortSignal) {\n exitConditions.push(abortTimeout(options.abortSignal));\n }\n return Promise.race(exitConditions);\n};\nexports.createWaiter = createWaiter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./createWaiter\"), exports);\ntslib_1.__exportStar(require(\"./waiter\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.runPolling = void 0;\nconst sleep_1 = require(\"./utils/sleep\");\nconst waiter_1 = require(\"./waiter\");\nconst exponentialBackoffWithJitter = (minDelay, maxDelay, attemptCeiling, attempt) => {\n if (attempt > attemptCeiling)\n return maxDelay;\n const delay = minDelay * 2 ** (attempt - 1);\n return randomInRange(minDelay, delay);\n};\nconst randomInRange = (min, max) => min + Math.random() * (max - min);\nconst runPolling = async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {\n var _a;\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== waiter_1.WaiterState.RETRY) {\n return { state, reason };\n }\n let currentAttempt = 1;\n const waitUntil = Date.now() + maxWaitTime * 1000;\n const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;\n while (true) {\n if (((_a = abortController === null || abortController === void 0 ? void 0 : abortController.signal) === null || _a === void 0 ? void 0 : _a.aborted) || (abortSignal === null || abortSignal === void 0 ? void 0 : abortSignal.aborted)) {\n return { state: waiter_1.WaiterState.ABORTED };\n }\n const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);\n if (Date.now() + delay * 1000 > waitUntil) {\n return { state: waiter_1.WaiterState.TIMEOUT };\n }\n await (0, sleep_1.sleep)(delay);\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== waiter_1.WaiterState.RETRY) {\n return { state, reason };\n }\n currentAttempt += 1;\n }\n};\nexports.runPolling = runPolling;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./sleep\"), exports);\ntslib_1.__exportStar(require(\"./validate\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sleep = void 0;\nconst sleep = (seconds) => {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1000));\n};\nexports.sleep = sleep;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateWaiterOptions = void 0;\nconst validateWaiterOptions = (options) => {\n if (options.maxWaitTime < 1) {\n throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);\n }\n else if (options.minDelay < 1) {\n throw new Error(`WaiterConfiguration.minDelay must be greater than 0`);\n }\n else if (options.maxDelay < 1) {\n throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`);\n }\n else if (options.maxWaitTime <= options.minDelay) {\n throw new Error(`WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`);\n }\n else if (options.maxDelay < options.minDelay) {\n throw new Error(`WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`);\n }\n};\nexports.validateWaiterOptions = validateWaiterOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkExceptions = exports.WaiterState = exports.waiterServiceDefaults = void 0;\nexports.waiterServiceDefaults = {\n minDelay: 2,\n maxDelay: 120,\n};\nvar WaiterState;\n(function (WaiterState) {\n WaiterState[\"ABORTED\"] = \"ABORTED\";\n WaiterState[\"FAILURE\"] = \"FAILURE\";\n WaiterState[\"SUCCESS\"] = \"SUCCESS\";\n WaiterState[\"RETRY\"] = \"RETRY\";\n WaiterState[\"TIMEOUT\"] = \"TIMEOUT\";\n})(WaiterState = exports.WaiterState || (exports.WaiterState = {}));\nconst checkExceptions = (result) => {\n if (result.state === WaiterState.ABORTED) {\n const abortError = new Error(`${JSON.stringify({\n ...result,\n reason: \"Request was aborted\",\n })}`);\n abortError.name = \"AbortError\";\n throw abortError;\n }\n else if (result.state === WaiterState.TIMEOUT) {\n const timeoutError = new Error(`${JSON.stringify({\n ...result,\n reason: \"Waiter has timed out\",\n })}`);\n timeoutError.name = \"TimeoutError\";\n throw timeoutError;\n }\n else if (result.state !== WaiterState.SUCCESS) {\n throw new Error(`${JSON.stringify({ result })}`);\n }\n return result;\n};\nexports.checkExceptions = checkExceptions;\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","var concatMap = require('concat-map');\nvar balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n return parseInt(str, 10) == str\n ? parseInt(str, 10)\n : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n return str.split('\\\\\\\\').join(escSlash)\n .split('\\\\{').join(escOpen)\n .split('\\\\}').join(escClose)\n .split('\\\\,').join(escComma)\n .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n return str.split(escSlash).join('\\\\')\n .split(escOpen).join('{')\n .split(escClose).join('}')\n .split(escComma).join(',')\n .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n if (!str)\n return [''];\n\n var parts = [];\n var m = balanced('{', '}', str);\n\n if (!m)\n return str.split(',');\n\n var pre = m.pre;\n var body = m.body;\n var post = m.post;\n var p = pre.split(',');\n\n p[p.length-1] += '{' + body + '}';\n var postParts = parseCommaParts(post);\n if (post.length) {\n p[p.length-1] += postParts.shift();\n p.push.apply(p, postParts);\n }\n\n parts.push.apply(parts, p);\n\n return parts;\n}\n\nfunction expandTop(str) {\n if (!str)\n return [];\n\n // I don't know why Bash 4.3 does this, but it does.\n // Anything starting with {} will have the first two bytes preserved\n // but *only* at the top level, so {},a}b will not expand to anything,\n // but a{},b}c will be expanded to [a}c,abc].\n // One could argue that this is a bug in Bash, but since the goal of\n // this module is to match Bash's rules, we escape a leading {}\n if (str.substr(0, 2) === '{}') {\n str = '\\\\{\\\\}' + str.substr(2);\n }\n\n return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction identity(e) {\n return e;\n}\n\nfunction embrace(str) {\n return '{' + str + '}';\n}\nfunction isPadded(el) {\n return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n return i <= y;\n}\nfunction gte(i, y) {\n return i >= y;\n}\n\nfunction expand(str, isTop) {\n var expansions = [];\n\n var m = balanced('{', '}', str);\n if (!m || /\\$$/.test(m.pre)) return [str];\n\n var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n var isSequence = isNumericSequence || isAlphaSequence;\n var isOptions = m.body.indexOf(',') >= 0;\n if (!isSequence && !isOptions) {\n // {a},b}\n if (m.post.match(/,.*\\}/)) {\n str = m.pre + '{' + m.body + escClose + m.post;\n return expand(str);\n }\n return [str];\n }\n\n var n;\n if (isSequence) {\n n = m.body.split(/\\.\\./);\n } else {\n n = parseCommaParts(m.body);\n if (n.length === 1) {\n // x{{a,b}}y ==> x{a}y x{b}y\n n = expand(n[0], false).map(embrace);\n if (n.length === 1) {\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n return post.map(function(p) {\n return m.pre + n[0] + p;\n });\n }\n }\n }\n\n // at this point, n is the parts, and we know it's not a comma set\n // with a single entry.\n\n // no need to expand pre, since it is guaranteed to be free of brace-sets\n var pre = m.pre;\n var post = m.post.length\n ? expand(m.post, false)\n : [''];\n\n var N;\n\n if (isSequence) {\n var x = numeric(n[0]);\n var y = numeric(n[1]);\n var width = Math.max(n[0].length, n[1].length)\n var incr = n.length == 3\n ? Math.abs(numeric(n[2]))\n : 1;\n var test = lte;\n var reverse = y < x;\n if (reverse) {\n incr *= -1;\n test = gte;\n }\n var pad = n.some(isPadded);\n\n N = [];\n\n for (var i = x; test(i, y); i += incr) {\n var c;\n if (isAlphaSequence) {\n c = String.fromCharCode(i);\n if (c === '\\\\')\n c = '';\n } else {\n c = String(i);\n if (pad) {\n var need = width - c.length;\n if (need > 0) {\n var z = new Array(need + 1).join('0');\n if (i < 0)\n c = '-' + z + c.slice(1);\n else\n c = z + c;\n }\n }\n }\n N.push(c);\n }\n } else {\n N = concatMap(n, function(el) { return expand(el, false) });\n }\n\n for (var j = 0; j < N.length; j++) {\n for (var k = 0; k < post.length; k++) {\n var expansion = pre + N[j] + post[k];\n if (!isTop || isSequence || expansion)\n expansions.push(expansion);\n }\n }\n\n return expansions;\n}\n\n","module.exports = function (xs, fn) {\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n var x = fn(xs[i], i);\n if (isArray(x)) res.push.apply(res, x);\n else res.push(x);\n }\n return res;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n transformTagName: false,\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n\n if (this.options.suppressEmptyNode) {\n this.buildTextNode = buildEmptyTextNode;\n this.buildObjNode = buildEmptyObjNode;\n } else {\n this.buildTextNode = buildTextValNode;\n this.buildObjNode = buildObjectNode;\n }\n\n this.buildTextValNode = buildTextValNode;\n this.buildObjectNode = buildObjectNode;\n\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.buildAttrPairStr = buildAttrPairStr;\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n val += this.processTextOrObjNode(item, key, level)\n } else {\n val += this.buildTextNode(item, key, '', level);\n }\n }\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nfunction buildAttrPairStr(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjNode(result.val, key, result.attrStr, level);\n }\n}\n\nfunction buildObjectNode(val, key, attrStr, level) {\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n}\n\nfunction buildEmptyObjNode(val, key, attrStr, level) {\n if (val !== '') {\n return this.buildObjectNode(val, key, attrStr, level);\n } else {\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else return this.indentate(level) + '<' + key + attrStr + '/' + this.tagEndChar;\n }\n}\n\nfunction buildTextValNode(val, key, attrStr, level) {\n if (this.options.cdataPropName !== false && key === this.options.cdataPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === '' && this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(this.options.suppressUnpairedNode){\n return this.indentate(level) + '<' + key + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + \"/\" + this.tagEndChar;\n }\n } else{\n return (\n this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0){//TODO: this logic can be avoided for each call\n indentation = EOL + \"\" + options.indentBy.repeat(level);\n }\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if(jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if(tagName === options.textNodeName){\n let tagText = tagObj[tagName];\n if(!isStopNode(newJPath, options)){\n tagText = options.tagValueProcessor( tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n xmlStr += indentation + tagText;\n continue;\n }else if( tagName === options.cdataPropName){\n xmlStr += indentation + ``;\n continue;\n }else if( tagName === options.commentPropName){\n xmlStr += indentation + ``;\n continue;\n }else if( tagName[0] === \"?\"){\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n continue;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n let tagStart = indentation + `<${tagName}${attStr}`;\n let tagValue = arrToStr(tagObj[tagName], options, newJPath, level + 1);\n if(options.unpairedTags.indexOf(tagName) !== -1){\n if(options.suppressUnpairedNode) xmlStr += tagStart + \">\"; \n else xmlStr += tagStart + \"/>\"; \n }else if( (!tagValue || tagValue.length === 0) && options.suppressEmptyNode){ \n xmlStr += tagStart + \"/>\"; \n }else{ \n //TODO: node with only text value should not parse the text value in next line\n xmlStr += tagStart + `>${tagValue}${indentation}` ;\n }\n }\n \n return xmlStr;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n }\n\nfunction attr_to_str(attrMap, options){\n let attrStr = \"\";\n if(attrMap && !options.ignoreAttributes){\n for (let attr in attrMap){\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if(attrVal === true && options.suppressBooleanAttributes){\n attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}`;\n }else{\n attrStr+= ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options){\n jPath = jPath.substr(0,jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for(let index in options.stopNodes){\n if(options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\"+tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options){\n if(textValue && textValue.length > 0 && options.processEntities){\n for (let i=0; i< options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n }\nmodule.exports = toXml;","//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, entity = false, comment = false;\n let exp = \"\";\n for(;i') {\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n }else{\n throw new Error(`Invalid XML comment in DOCTYPE`);\n }\n }else if(entity){\n parseEntityExp(exp, entities);\n entity = false;\n }\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nconst entityRegex = RegExp(\"^\\\\s([a-zA-z0-0]+)[ \\t](['\\\"])([^&]+)\\\\2\");\nfunction parseEntityExp(exp, entities){\n const match = entityRegex.exec(exp);\n if(match){\n entities[ match[1] ] = {\n regx : RegExp( `&${match[1]};`,\"g\"),\n val: match[3]\n };\n }\n}\nmodule.exports = readDocType;","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n const aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs;\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n \n currentNode = this.tagsNodeStack.pop();//avoid recurssion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath);\n }\n currentNode.addChild(childNode);\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this. options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n }\n\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //boolean tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n currentNode.addChild(childNode);\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n currentNode.addChild(childNode);\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath);\n }\n currentNode.addChild(childNode);\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-dobule quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const propCount = Object.keys(obj).length;\n if( propCount === 0 || (propCount === 1 && obj[options.textNodeName]) ) return true;\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","module.exports = realpath\nrealpath.realpath = realpath\nrealpath.sync = realpathSync\nrealpath.realpathSync = realpathSync\nrealpath.monkeypatch = monkeypatch\nrealpath.unmonkeypatch = unmonkeypatch\n\nvar fs = require('fs')\nvar origRealpath = fs.realpath\nvar origRealpathSync = fs.realpathSync\n\nvar version = process.version\nvar ok = /^v[0-5]\\./.test(version)\nvar old = require('./old.js')\n\nfunction newError (er) {\n return er && er.syscall === 'realpath' && (\n er.code === 'ELOOP' ||\n er.code === 'ENOMEM' ||\n er.code === 'ENAMETOOLONG'\n )\n}\n\nfunction realpath (p, cache, cb) {\n if (ok) {\n return origRealpath(p, cache, cb)\n }\n\n if (typeof cache === 'function') {\n cb = cache\n cache = null\n }\n origRealpath(p, cache, function (er, result) {\n if (newError(er)) {\n old.realpath(p, cache, cb)\n } else {\n cb(er, result)\n }\n })\n}\n\nfunction realpathSync (p, cache) {\n if (ok) {\n return origRealpathSync(p, cache)\n }\n\n try {\n return origRealpathSync(p, cache)\n } catch (er) {\n if (newError(er)) {\n return old.realpathSync(p, cache)\n } else {\n throw er\n }\n }\n}\n\nfunction monkeypatch () {\n fs.realpath = realpath\n fs.realpathSync = realpathSync\n}\n\nfunction unmonkeypatch () {\n fs.realpath = origRealpath\n fs.realpathSync = origRealpathSync\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar pathModule = require('path');\nvar isWindows = process.platform === 'win32';\nvar fs = require('fs');\n\n// JavaScript implementation of realpath, ported from node pre-v6\n\nvar DEBUG = process.env.NODE_DEBUG && /fs/.test(process.env.NODE_DEBUG);\n\nfunction rethrow() {\n // Only enable in debug mode. A backtrace uses ~1000 bytes of heap space and\n // is fairly slow to generate.\n var callback;\n if (DEBUG) {\n var backtrace = new Error;\n callback = debugCallback;\n } else\n callback = missingCallback;\n\n return callback;\n\n function debugCallback(err) {\n if (err) {\n backtrace.message = err.message;\n err = backtrace;\n missingCallback(err);\n }\n }\n\n function missingCallback(err) {\n if (err) {\n if (process.throwDeprecation)\n throw err; // Forgot a callback but don't know where? Use NODE_DEBUG=fs\n else if (!process.noDeprecation) {\n var msg = 'fs: missing callback ' + (err.stack || err.message);\n if (process.traceDeprecation)\n console.trace(msg);\n else\n console.error(msg);\n }\n }\n }\n}\n\nfunction maybeCallback(cb) {\n return typeof cb === 'function' ? cb : rethrow();\n}\n\nvar normalize = pathModule.normalize;\n\n// Regexp that finds the next partion of a (partial) path\n// result is [base_with_slash, base], e.g. ['somedir/', 'somedir']\nif (isWindows) {\n var nextPartRe = /(.*?)(?:[\\/\\\\]+|$)/g;\n} else {\n var nextPartRe = /(.*?)(?:[\\/]+|$)/g;\n}\n\n// Regex to find the device root, including trailing slash. E.g. 'c:\\\\'.\nif (isWindows) {\n var splitRootRe = /^(?:[a-zA-Z]:|[\\\\\\/]{2}[^\\\\\\/]+[\\\\\\/][^\\\\\\/]+)?[\\\\\\/]*/;\n} else {\n var splitRootRe = /^[\\/]*/;\n}\n\nexports.realpathSync = function realpathSync(p, cache) {\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return cache[p];\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstatSync(base);\n knownHard[base] = true;\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n // NB: p.length changes.\n while (pos < p.length) {\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n continue;\n }\n\n var resolvedLink;\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // some known symbolic link. no need to stat again.\n resolvedLink = cache[base];\n } else {\n var stat = fs.lstatSync(base);\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n continue;\n }\n\n // read the link if it wasn't read before\n // dev/ino always return 0 on windows, so skip the check.\n var linkTarget = null;\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n linkTarget = seenLinks[id];\n }\n }\n if (linkTarget === null) {\n fs.statSync(base);\n linkTarget = fs.readlinkSync(base);\n }\n resolvedLink = pathModule.resolve(previous, linkTarget);\n // track this, if given a cache.\n if (cache) cache[base] = resolvedLink;\n if (!isWindows) seenLinks[id] = linkTarget;\n }\n\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n\n if (cache) cache[original] = p;\n\n return p;\n};\n\n\nexports.realpath = function realpath(p, cache, cb) {\n if (typeof cb !== 'function') {\n cb = maybeCallback(cache);\n cache = null;\n }\n\n // make p is absolute\n p = pathModule.resolve(p);\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, p)) {\n return process.nextTick(cb.bind(null, null, cache[p]));\n }\n\n var original = p,\n seenLinks = {},\n knownHard = {};\n\n // current character position in p\n var pos;\n // the partial path so far, including a trailing slash if any\n var current;\n // the partial path without a trailing slash (except when pointing at a root)\n var base;\n // the partial path scanned in the previous round, with slash\n var previous;\n\n start();\n\n function start() {\n // Skip over roots\n var m = splitRootRe.exec(p);\n pos = m[0].length;\n current = m[0];\n base = m[0];\n previous = '';\n\n // On windows, check that the root exists. On unix there is no need.\n if (isWindows && !knownHard[base]) {\n fs.lstat(base, function(err) {\n if (err) return cb(err);\n knownHard[base] = true;\n LOOP();\n });\n } else {\n process.nextTick(LOOP);\n }\n }\n\n // walk down the path, swapping out linked pathparts for their real\n // values\n function LOOP() {\n // stop if scanned past end of path\n if (pos >= p.length) {\n if (cache) cache[original] = p;\n return cb(null, p);\n }\n\n // find the next part\n nextPartRe.lastIndex = pos;\n var result = nextPartRe.exec(p);\n previous = current;\n current += result[0];\n base = previous + result[1];\n pos = nextPartRe.lastIndex;\n\n // continue if not a symlink\n if (knownHard[base] || (cache && cache[base] === base)) {\n return process.nextTick(LOOP);\n }\n\n if (cache && Object.prototype.hasOwnProperty.call(cache, base)) {\n // known symbolic link. no need to stat again.\n return gotResolvedLink(cache[base]);\n }\n\n return fs.lstat(base, gotStat);\n }\n\n function gotStat(err, stat) {\n if (err) return cb(err);\n\n // if not a symlink, skip to the next path part\n if (!stat.isSymbolicLink()) {\n knownHard[base] = true;\n if (cache) cache[base] = base;\n return process.nextTick(LOOP);\n }\n\n // stat & read the link if not read before\n // call gotTarget as soon as the link target is known\n // dev/ino always return 0 on windows, so skip the check.\n if (!isWindows) {\n var id = stat.dev.toString(32) + ':' + stat.ino.toString(32);\n if (seenLinks.hasOwnProperty(id)) {\n return gotTarget(null, seenLinks[id], base);\n }\n }\n fs.stat(base, function(err) {\n if (err) return cb(err);\n\n fs.readlink(base, function(err, target) {\n if (!isWindows) seenLinks[id] = target;\n gotTarget(err, target);\n });\n });\n }\n\n function gotTarget(err, target, base) {\n if (err) return cb(err);\n\n var resolvedLink = pathModule.resolve(previous, target);\n if (cache) cache[base] = resolvedLink;\n gotResolvedLink(resolvedLink);\n }\n\n function gotResolvedLink(resolvedLink) {\n // resolve the link, then start over\n p = pathModule.resolve(resolvedLink, p.slice(pos));\n start();\n }\n};\n","exports.alphasort = alphasort\nexports.alphasorti = alphasorti\nexports.setopts = setopts\nexports.ownProp = ownProp\nexports.makeAbs = makeAbs\nexports.finish = finish\nexports.mark = mark\nexports.isIgnored = isIgnored\nexports.childrenIgnored = childrenIgnored\n\nfunction ownProp (obj, field) {\n return Object.prototype.hasOwnProperty.call(obj, field)\n}\n\nvar path = require(\"path\")\nvar minimatch = require(\"minimatch\")\nvar isAbsolute = require(\"path-is-absolute\")\nvar Minimatch = minimatch.Minimatch\n\nfunction alphasorti (a, b) {\n return a.toLowerCase().localeCompare(b.toLowerCase())\n}\n\nfunction alphasort (a, b) {\n return a.localeCompare(b)\n}\n\nfunction setupIgnores (self, options) {\n self.ignore = options.ignore || []\n\n if (!Array.isArray(self.ignore))\n self.ignore = [self.ignore]\n\n if (self.ignore.length) {\n self.ignore = self.ignore.map(ignoreMap)\n }\n}\n\n// ignore patterns are always in dot:true mode.\nfunction ignoreMap (pattern) {\n var gmatcher = null\n if (pattern.slice(-3) === '/**') {\n var gpattern = pattern.replace(/(\\/\\*\\*)+$/, '')\n gmatcher = new Minimatch(gpattern, { dot: true })\n }\n\n return {\n matcher: new Minimatch(pattern, { dot: true }),\n gmatcher: gmatcher\n }\n}\n\nfunction setopts (self, pattern, options) {\n if (!options)\n options = {}\n\n // base-matching: just use globstar for that.\n if (options.matchBase && -1 === pattern.indexOf(\"/\")) {\n if (options.noglobstar) {\n throw new Error(\"base matching requires globstar\")\n }\n pattern = \"**/\" + pattern\n }\n\n self.silent = !!options.silent\n self.pattern = pattern\n self.strict = options.strict !== false\n self.realpath = !!options.realpath\n self.realpathCache = options.realpathCache || Object.create(null)\n self.follow = !!options.follow\n self.dot = !!options.dot\n self.mark = !!options.mark\n self.nodir = !!options.nodir\n if (self.nodir)\n self.mark = true\n self.sync = !!options.sync\n self.nounique = !!options.nounique\n self.nonull = !!options.nonull\n self.nosort = !!options.nosort\n self.nocase = !!options.nocase\n self.stat = !!options.stat\n self.noprocess = !!options.noprocess\n self.absolute = !!options.absolute\n\n self.maxLength = options.maxLength || Infinity\n self.cache = options.cache || Object.create(null)\n self.statCache = options.statCache || Object.create(null)\n self.symlinks = options.symlinks || Object.create(null)\n\n setupIgnores(self, options)\n\n self.changedCwd = false\n var cwd = process.cwd()\n if (!ownProp(options, \"cwd\"))\n self.cwd = cwd\n else {\n self.cwd = path.resolve(options.cwd)\n self.changedCwd = self.cwd !== cwd\n }\n\n self.root = options.root || path.resolve(self.cwd, \"/\")\n self.root = path.resolve(self.root)\n if (process.platform === \"win32\")\n self.root = self.root.replace(/\\\\/g, \"/\")\n\n // TODO: is an absolute `cwd` supposed to be resolved against `root`?\n // e.g. { cwd: '/test', root: __dirname } === path.join(__dirname, '/test')\n self.cwdAbs = isAbsolute(self.cwd) ? self.cwd : makeAbs(self, self.cwd)\n if (process.platform === \"win32\")\n self.cwdAbs = self.cwdAbs.replace(/\\\\/g, \"/\")\n self.nomount = !!options.nomount\n\n // disable comments and negation in Minimatch.\n // Note that they are not supported in Glob itself anyway.\n options.nonegate = true\n options.nocomment = true\n\n self.minimatch = new Minimatch(pattern, options)\n self.options = self.minimatch.options\n}\n\nfunction finish (self) {\n var nou = self.nounique\n var all = nou ? [] : Object.create(null)\n\n for (var i = 0, l = self.matches.length; i < l; i ++) {\n var matches = self.matches[i]\n if (!matches || Object.keys(matches).length === 0) {\n if (self.nonull) {\n // do like the shell, and spit out the literal glob\n var literal = self.minimatch.globSet[i]\n if (nou)\n all.push(literal)\n else\n all[literal] = true\n }\n } else {\n // had matches\n var m = Object.keys(matches)\n if (nou)\n all.push.apply(all, m)\n else\n m.forEach(function (m) {\n all[m] = true\n })\n }\n }\n\n if (!nou)\n all = Object.keys(all)\n\n if (!self.nosort)\n all = all.sort(self.nocase ? alphasorti : alphasort)\n\n // at *some* point we statted all of these\n if (self.mark) {\n for (var i = 0; i < all.length; i++) {\n all[i] = self._mark(all[i])\n }\n if (self.nodir) {\n all = all.filter(function (e) {\n var notDir = !(/\\/$/.test(e))\n var c = self.cache[e] || self.cache[makeAbs(self, e)]\n if (notDir && c)\n notDir = c !== 'DIR' && !Array.isArray(c)\n return notDir\n })\n }\n }\n\n if (self.ignore.length)\n all = all.filter(function(m) {\n return !isIgnored(self, m)\n })\n\n self.found = all\n}\n\nfunction mark (self, p) {\n var abs = makeAbs(self, p)\n var c = self.cache[abs]\n var m = p\n if (c) {\n var isDir = c === 'DIR' || Array.isArray(c)\n var slash = p.slice(-1) === '/'\n\n if (isDir && !slash)\n m += '/'\n else if (!isDir && slash)\n m = m.slice(0, -1)\n\n if (m !== p) {\n var mabs = makeAbs(self, m)\n self.statCache[mabs] = self.statCache[abs]\n self.cache[mabs] = self.cache[abs]\n }\n }\n\n return m\n}\n\n// lotta situps...\nfunction makeAbs (self, f) {\n var abs = f\n if (f.charAt(0) === '/') {\n abs = path.join(self.root, f)\n } else if (isAbsolute(f) || f === '') {\n abs = f\n } else if (self.changedCwd) {\n abs = path.resolve(self.cwd, f)\n } else {\n abs = path.resolve(f)\n }\n\n if (process.platform === 'win32')\n abs = abs.replace(/\\\\/g, '/')\n\n return abs\n}\n\n\n// Return true, if pattern ends with globstar '**', for the accompanying parent directory.\n// Ex:- If node_modules/** is the pattern, add 'node_modules' to ignore list along with it's contents\nfunction isIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return item.matcher.match(path) || !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n\nfunction childrenIgnored (self, path) {\n if (!self.ignore.length)\n return false\n\n return self.ignore.some(function(item) {\n return !!(item.gmatcher && item.gmatcher.match(path))\n })\n}\n","// Approach:\n//\n// 1. Get the minimatch set\n// 2. For each pattern in the set, PROCESS(pattern, false)\n// 3. Store matches per-set, then uniq them\n//\n// PROCESS(pattern, inGlobStar)\n// Get the first [n] items from pattern that are all strings\n// Join these together. This is PREFIX.\n// If there is no more remaining, then stat(PREFIX) and\n// add to matches if it succeeds. END.\n//\n// If inGlobStar and PREFIX is symlink and points to dir\n// set ENTRIES = []\n// else readdir(PREFIX) as ENTRIES\n// If fail, END\n//\n// with ENTRIES\n// If pattern[n] is GLOBSTAR\n// // handle the case where the globstar match is empty\n// // by pruning it out, and testing the resulting pattern\n// PROCESS(pattern[0..n] + pattern[n+1 .. $], false)\n// // handle other cases.\n// for ENTRY in ENTRIES (not dotfiles)\n// // attach globstar + tail onto the entry\n// // Mark that this entry is a globstar match\n// PROCESS(pattern[0..n] + ENTRY + pattern[n .. $], true)\n//\n// else // not globstar\n// for ENTRY in ENTRIES (not dotfiles, unless pattern[n] is dot)\n// Test ENTRY against pattern[n]\n// If fails, continue\n// If passes, PROCESS(pattern[0..n] + item + pattern[n+1 .. $])\n//\n// Caveat:\n// Cache all stats and readdirs results to minimize syscall. Since all\n// we ever care about is existence and directory-ness, we can just keep\n// `true` for files, and [children,...] for directories, or `false` for\n// things that don't exist.\n\nmodule.exports = glob\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar inherits = require('inherits')\nvar EE = require('events').EventEmitter\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar globSync = require('./sync.js')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar inflight = require('inflight')\nvar util = require('util')\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nvar once = require('once')\n\nfunction glob (pattern, options, cb) {\n if (typeof options === 'function') cb = options, options = {}\n if (!options) options = {}\n\n if (options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return globSync(pattern, options)\n }\n\n return new Glob(pattern, options, cb)\n}\n\nglob.sync = globSync\nvar GlobSync = glob.GlobSync = globSync.GlobSync\n\n// old api surface\nglob.glob = glob\n\nfunction extend (origin, add) {\n if (add === null || typeof add !== 'object') {\n return origin\n }\n\n var keys = Object.keys(add)\n var i = keys.length\n while (i--) {\n origin[keys[i]] = add[keys[i]]\n }\n return origin\n}\n\nglob.hasMagic = function (pattern, options_) {\n var options = extend({}, options_)\n options.noprocess = true\n\n var g = new Glob(pattern, options)\n var set = g.minimatch.set\n\n if (!pattern)\n return false\n\n if (set.length > 1)\n return true\n\n for (var j = 0; j < set[0].length; j++) {\n if (typeof set[0][j] !== 'string')\n return true\n }\n\n return false\n}\n\nglob.Glob = Glob\ninherits(Glob, EE)\nfunction Glob (pattern, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n\n if (options && options.sync) {\n if (cb)\n throw new TypeError('callback provided to sync glob')\n return new GlobSync(pattern, options)\n }\n\n if (!(this instanceof Glob))\n return new Glob(pattern, options, cb)\n\n setopts(this, pattern, options)\n this._didRealPath = false\n\n // process each pattern in the minimatch set\n var n = this.minimatch.set.length\n\n // The matches are stored as {: true,...} so that\n // duplicates are automagically pruned.\n // Later, we do an Object.keys() on these.\n // Keep them as a list so we can fill in when nonull is set.\n this.matches = new Array(n)\n\n if (typeof cb === 'function') {\n cb = once(cb)\n this.on('error', cb)\n this.on('end', function (matches) {\n cb(null, matches)\n })\n }\n\n var self = this\n this._processing = 0\n\n this._emitQueue = []\n this._processQueue = []\n this.paused = false\n\n if (this.noprocess)\n return this\n\n if (n === 0)\n return done()\n\n var sync = true\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false, done)\n }\n sync = false\n\n function done () {\n --self._processing\n if (self._processing <= 0) {\n if (sync) {\n process.nextTick(function () {\n self._finish()\n })\n } else {\n self._finish()\n }\n }\n }\n}\n\nGlob.prototype._finish = function () {\n assert(this instanceof Glob)\n if (this.aborted)\n return\n\n if (this.realpath && !this._didRealpath)\n return this._realpath()\n\n common.finish(this)\n this.emit('end', this.found)\n}\n\nGlob.prototype._realpath = function () {\n if (this._didRealpath)\n return\n\n this._didRealpath = true\n\n var n = this.matches.length\n if (n === 0)\n return this._finish()\n\n var self = this\n for (var i = 0; i < this.matches.length; i++)\n this._realpathSet(i, next)\n\n function next () {\n if (--n === 0)\n self._finish()\n }\n}\n\nGlob.prototype._realpathSet = function (index, cb) {\n var matchset = this.matches[index]\n if (!matchset)\n return cb()\n\n var found = Object.keys(matchset)\n var self = this\n var n = found.length\n\n if (n === 0)\n return cb()\n\n var set = this.matches[index] = Object.create(null)\n found.forEach(function (p, i) {\n // If there's a problem with the stat, then it means that\n // one or more of the links in the realpath couldn't be\n // resolved. just return the abs value in that case.\n p = self._makeAbs(p)\n rp.realpath(p, self.realpathCache, function (er, real) {\n if (!er)\n set[real] = true\n else if (er.syscall === 'stat')\n set[p] = true\n else\n self.emit('error', er) // srsly wtf right here\n\n if (--n === 0) {\n self.matches[index] = set\n cb()\n }\n })\n })\n}\n\nGlob.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlob.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n\nGlob.prototype.abort = function () {\n this.aborted = true\n this.emit('abort')\n}\n\nGlob.prototype.pause = function () {\n if (!this.paused) {\n this.paused = true\n this.emit('pause')\n }\n}\n\nGlob.prototype.resume = function () {\n if (this.paused) {\n this.emit('resume')\n this.paused = false\n if (this._emitQueue.length) {\n var eq = this._emitQueue.slice(0)\n this._emitQueue.length = 0\n for (var i = 0; i < eq.length; i ++) {\n var e = eq[i]\n this._emitMatch(e[0], e[1])\n }\n }\n if (this._processQueue.length) {\n var pq = this._processQueue.slice(0)\n this._processQueue.length = 0\n for (var i = 0; i < pq.length; i ++) {\n var p = pq[i]\n this._processing--\n this._process(p[0], p[1], p[2], p[3])\n }\n }\n }\n}\n\nGlob.prototype._process = function (pattern, index, inGlobStar, cb) {\n assert(this instanceof Glob)\n assert(typeof cb === 'function')\n\n if (this.aborted)\n return\n\n this._processing++\n if (this.paused) {\n this._processQueue.push([pattern, index, inGlobStar, cb])\n return\n }\n\n //console.error('PROCESS %d', this._processing, pattern)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // see if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index, cb)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip _processing\n if (childrenIgnored(this, read))\n return cb()\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar, cb)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar, cb)\n}\n\nGlob.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n return self._processReaddir2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\nGlob.prototype._processReaddir2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return cb()\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n //console.error('prd2', prefix, entries, remain[0]._glob, matchedEntries)\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return cb()\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return cb()\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix) {\n if (prefix !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n this._process([e].concat(remain), index, inGlobStar, cb)\n }\n cb()\n}\n\nGlob.prototype._emitMatch = function (index, e) {\n if (this.aborted)\n return\n\n if (isIgnored(this, e))\n return\n\n if (this.paused) {\n this._emitQueue.push([index, e])\n return\n }\n\n var abs = isAbsolute(e) ? e : this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute)\n e = abs\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n var st = this.statCache[abs]\n if (st)\n this.emit('stat', e, st)\n\n this.emit('match', e)\n}\n\nGlob.prototype._readdirInGlobStar = function (abs, cb) {\n if (this.aborted)\n return\n\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false, cb)\n\n var lstatkey = 'lstat\\0' + abs\n var self = this\n var lstatcb = inflight(lstatkey, lstatcb_)\n\n if (lstatcb)\n fs.lstat(abs, lstatcb)\n\n function lstatcb_ (er, lstat) {\n if (er && er.code === 'ENOENT')\n return cb()\n\n var isSym = lstat && lstat.isSymbolicLink()\n self.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory()) {\n self.cache[abs] = 'FILE'\n cb()\n } else\n self._readdir(abs, false, cb)\n }\n}\n\nGlob.prototype._readdir = function (abs, inGlobStar, cb) {\n if (this.aborted)\n return\n\n cb = inflight('readdir\\0'+abs+'\\0'+inGlobStar, cb)\n if (!cb)\n return\n\n //console.error('RD %j %j', +inGlobStar, abs)\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs, cb)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return cb()\n\n if (Array.isArray(c))\n return cb(null, c)\n }\n\n var self = this\n fs.readdir(abs, readdirCb(this, abs, cb))\n}\n\nfunction readdirCb (self, abs, cb) {\n return function (er, entries) {\n if (er)\n self._readdirError(abs, er, cb)\n else\n self._readdirEntries(abs, entries, cb)\n }\n}\n\nGlob.prototype._readdirEntries = function (abs, entries, cb) {\n if (this.aborted)\n return\n\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n return cb(null, entries)\n}\n\nGlob.prototype._readdirError = function (f, er, cb) {\n if (this.aborted)\n return\n\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n this.emit('error', error)\n this.abort()\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict) {\n this.emit('error', er)\n // If the error is handled, then we abort\n // if not, we threw out of here\n this.abort()\n }\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n\n return cb()\n}\n\nGlob.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar, cb) {\n var self = this\n this._readdir(abs, inGlobStar, function (er, entries) {\n self._processGlobStar2(prefix, read, abs, remain, index, inGlobStar, entries, cb)\n })\n}\n\n\nGlob.prototype._processGlobStar2 = function (prefix, read, abs, remain, index, inGlobStar, entries, cb) {\n //console.error('pgs2', prefix, remain[0], entries)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return cb()\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false, cb)\n\n var isSym = this.symlinks[abs]\n var len = entries.length\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return cb()\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true, cb)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true, cb)\n }\n\n cb()\n}\n\nGlob.prototype._processSimple = function (prefix, index, cb) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var self = this\n this._stat(prefix, function (er, exists) {\n self._processSimple2(prefix, index, er, exists, cb)\n })\n}\nGlob.prototype._processSimple2 = function (prefix, index, er, exists, cb) {\n\n //console.error('ps2', prefix, exists)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return cb()\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n cb()\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlob.prototype._stat = function (f, cb) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return cb()\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return cb(null, c)\n\n if (needDir && c === 'FILE')\n return cb()\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (stat !== undefined) {\n if (stat === false)\n return cb(null, stat)\n else {\n var type = stat.isDirectory() ? 'DIR' : 'FILE'\n if (needDir && type === 'FILE')\n return cb()\n else\n return cb(null, type, stat)\n }\n }\n\n var self = this\n var statcb = inflight('stat\\0' + abs, lstatcb_)\n if (statcb)\n fs.lstat(abs, statcb)\n\n function lstatcb_ (er, lstat) {\n if (lstat && lstat.isSymbolicLink()) {\n // If it's a symlink, then treat it as the target, unless\n // the target does not exist, then treat it as a file.\n return fs.stat(abs, function (er, stat) {\n if (er)\n self._stat2(f, abs, null, lstat, cb)\n else\n self._stat2(f, abs, er, stat, cb)\n })\n } else {\n self._stat2(f, abs, er, lstat, cb)\n }\n }\n}\n\nGlob.prototype._stat2 = function (f, abs, er, stat, cb) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return cb()\n }\n\n var needDir = f.slice(-1) === '/'\n this.statCache[abs] = stat\n\n if (abs.slice(-1) === '/' && stat && !stat.isDirectory())\n return cb(null, false, stat)\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return cb()\n\n return cb(null, c, stat)\n}\n","module.exports = globSync\nglobSync.GlobSync = GlobSync\n\nvar fs = require('fs')\nvar rp = require('fs.realpath')\nvar minimatch = require('minimatch')\nvar Minimatch = minimatch.Minimatch\nvar Glob = require('./glob.js').Glob\nvar util = require('util')\nvar path = require('path')\nvar assert = require('assert')\nvar isAbsolute = require('path-is-absolute')\nvar common = require('./common.js')\nvar alphasort = common.alphasort\nvar alphasorti = common.alphasorti\nvar setopts = common.setopts\nvar ownProp = common.ownProp\nvar childrenIgnored = common.childrenIgnored\nvar isIgnored = common.isIgnored\n\nfunction globSync (pattern, options) {\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n return new GlobSync(pattern, options).found\n}\n\nfunction GlobSync (pattern, options) {\n if (!pattern)\n throw new Error('must provide pattern')\n\n if (typeof options === 'function' || arguments.length === 3)\n throw new TypeError('callback provided to sync glob\\n'+\n 'See: https://github.com/isaacs/node-glob/issues/167')\n\n if (!(this instanceof GlobSync))\n return new GlobSync(pattern, options)\n\n setopts(this, pattern, options)\n\n if (this.noprocess)\n return this\n\n var n = this.minimatch.set.length\n this.matches = new Array(n)\n for (var i = 0; i < n; i ++) {\n this._process(this.minimatch.set[i], i, false)\n }\n this._finish()\n}\n\nGlobSync.prototype._finish = function () {\n assert(this instanceof GlobSync)\n if (this.realpath) {\n var self = this\n this.matches.forEach(function (matchset, index) {\n var set = self.matches[index] = Object.create(null)\n for (var p in matchset) {\n try {\n p = self._makeAbs(p)\n var real = rp.realpathSync(p, self.realpathCache)\n set[real] = true\n } catch (er) {\n if (er.syscall === 'stat')\n set[self._makeAbs(p)] = true\n else\n throw er\n }\n }\n })\n }\n common.finish(this)\n}\n\n\nGlobSync.prototype._process = function (pattern, index, inGlobStar) {\n assert(this instanceof GlobSync)\n\n // Get the first [n] parts of pattern that are all strings.\n var n = 0\n while (typeof pattern[n] === 'string') {\n n ++\n }\n // now n is the index of the first one that is *not* a string.\n\n // See if there's anything else\n var prefix\n switch (n) {\n // if not, then this is rather simple\n case pattern.length:\n this._processSimple(pattern.join('/'), index)\n return\n\n case 0:\n // pattern *starts* with some non-trivial item.\n // going to readdir(cwd), but not include the prefix in matches.\n prefix = null\n break\n\n default:\n // pattern has some string bits in the front.\n // whatever it starts with, whether that's 'absolute' like /foo/bar,\n // or 'relative' like '../baz'\n prefix = pattern.slice(0, n).join('/')\n break\n }\n\n var remain = pattern.slice(n)\n\n // get the list of entries.\n var read\n if (prefix === null)\n read = '.'\n else if (isAbsolute(prefix) || isAbsolute(pattern.join('/'))) {\n if (!prefix || !isAbsolute(prefix))\n prefix = '/' + prefix\n read = prefix\n } else\n read = prefix\n\n var abs = this._makeAbs(read)\n\n //if ignored, skip processing\n if (childrenIgnored(this, read))\n return\n\n var isGlobStar = remain[0] === minimatch.GLOBSTAR\n if (isGlobStar)\n this._processGlobStar(prefix, read, abs, remain, index, inGlobStar)\n else\n this._processReaddir(prefix, read, abs, remain, index, inGlobStar)\n}\n\n\nGlobSync.prototype._processReaddir = function (prefix, read, abs, remain, index, inGlobStar) {\n var entries = this._readdir(abs, inGlobStar)\n\n // if the abs isn't a dir, then nothing can match!\n if (!entries)\n return\n\n // It will only match dot entries if it starts with a dot, or if\n // dot is set. Stuff like @(.foo|.bar) isn't allowed.\n var pn = remain[0]\n var negate = !!this.minimatch.negate\n var rawGlob = pn._glob\n var dotOk = this.dot || rawGlob.charAt(0) === '.'\n\n var matchedEntries = []\n for (var i = 0; i < entries.length; i++) {\n var e = entries[i]\n if (e.charAt(0) !== '.' || dotOk) {\n var m\n if (negate && !prefix) {\n m = !e.match(pn)\n } else {\n m = e.match(pn)\n }\n if (m)\n matchedEntries.push(e)\n }\n }\n\n var len = matchedEntries.length\n // If there are no matched entries, then nothing matches.\n if (len === 0)\n return\n\n // if this is the last remaining pattern bit, then no need for\n // an additional stat *unless* the user has specified mark or\n // stat explicitly. We know they exist, since readdir returned\n // them.\n\n if (remain.length === 1 && !this.mark && !this.stat) {\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n if (prefix) {\n if (prefix.slice(-1) !== '/')\n e = prefix + '/' + e\n else\n e = prefix + e\n }\n\n if (e.charAt(0) === '/' && !this.nomount) {\n e = path.join(this.root, e)\n }\n this._emitMatch(index, e)\n }\n // This was the last one, and no stats were needed\n return\n }\n\n // now test all matched entries as stand-ins for that part\n // of the pattern.\n remain.shift()\n for (var i = 0; i < len; i ++) {\n var e = matchedEntries[i]\n var newPattern\n if (prefix)\n newPattern = [prefix, e]\n else\n newPattern = [e]\n this._process(newPattern.concat(remain), index, inGlobStar)\n }\n}\n\n\nGlobSync.prototype._emitMatch = function (index, e) {\n if (isIgnored(this, e))\n return\n\n var abs = this._makeAbs(e)\n\n if (this.mark)\n e = this._mark(e)\n\n if (this.absolute) {\n e = abs\n }\n\n if (this.matches[index][e])\n return\n\n if (this.nodir) {\n var c = this.cache[abs]\n if (c === 'DIR' || Array.isArray(c))\n return\n }\n\n this.matches[index][e] = true\n\n if (this.stat)\n this._stat(e)\n}\n\n\nGlobSync.prototype._readdirInGlobStar = function (abs) {\n // follow all symlinked directories forever\n // just proceed as if this is a non-globstar situation\n if (this.follow)\n return this._readdir(abs, false)\n\n var entries\n var lstat\n var stat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er.code === 'ENOENT') {\n // lstat failed, doesn't exist\n return null\n }\n }\n\n var isSym = lstat && lstat.isSymbolicLink()\n this.symlinks[abs] = isSym\n\n // If it's not a symlink or a dir, then it's definitely a regular file.\n // don't bother doing a readdir in that case.\n if (!isSym && lstat && !lstat.isDirectory())\n this.cache[abs] = 'FILE'\n else\n entries = this._readdir(abs, false)\n\n return entries\n}\n\nGlobSync.prototype._readdir = function (abs, inGlobStar) {\n var entries\n\n if (inGlobStar && !ownProp(this.symlinks, abs))\n return this._readdirInGlobStar(abs)\n\n if (ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n if (!c || c === 'FILE')\n return null\n\n if (Array.isArray(c))\n return c\n }\n\n try {\n return this._readdirEntries(abs, fs.readdirSync(abs))\n } catch (er) {\n this._readdirError(abs, er)\n return null\n }\n}\n\nGlobSync.prototype._readdirEntries = function (abs, entries) {\n // if we haven't asked to stat everything, then just\n // assume that everything in there exists, so we can avoid\n // having to stat it a second time.\n if (!this.mark && !this.stat) {\n for (var i = 0; i < entries.length; i ++) {\n var e = entries[i]\n if (abs === '/')\n e = abs + e\n else\n e = abs + '/' + e\n this.cache[e] = true\n }\n }\n\n this.cache[abs] = entries\n\n // mark and cache dir-ness\n return entries\n}\n\nGlobSync.prototype._readdirError = function (f, er) {\n // handle errors, and cache the information\n switch (er.code) {\n case 'ENOTSUP': // https://github.com/isaacs/node-glob/issues/205\n case 'ENOTDIR': // totally normal. means it *does* exist.\n var abs = this._makeAbs(f)\n this.cache[abs] = 'FILE'\n if (abs === this.cwdAbs) {\n var error = new Error(er.code + ' invalid cwd ' + this.cwd)\n error.path = this.cwd\n error.code = er.code\n throw error\n }\n break\n\n case 'ENOENT': // not terribly unusual\n case 'ELOOP':\n case 'ENAMETOOLONG':\n case 'UNKNOWN':\n this.cache[this._makeAbs(f)] = false\n break\n\n default: // some unusual error. Treat as failure.\n this.cache[this._makeAbs(f)] = false\n if (this.strict)\n throw er\n if (!this.silent)\n console.error('glob error', er)\n break\n }\n}\n\nGlobSync.prototype._processGlobStar = function (prefix, read, abs, remain, index, inGlobStar) {\n\n var entries = this._readdir(abs, inGlobStar)\n\n // no entries means not a dir, so it can never have matches\n // foo.txt/** doesn't match foo.txt\n if (!entries)\n return\n\n // test without the globstar, and with every child both below\n // and replacing the globstar.\n var remainWithoutGlobStar = remain.slice(1)\n var gspref = prefix ? [ prefix ] : []\n var noGlobStar = gspref.concat(remainWithoutGlobStar)\n\n // the noGlobStar pattern exits the inGlobStar state\n this._process(noGlobStar, index, false)\n\n var len = entries.length\n var isSym = this.symlinks[abs]\n\n // If it's a symlink, and we're in a globstar, then stop\n if (isSym && inGlobStar)\n return\n\n for (var i = 0; i < len; i++) {\n var e = entries[i]\n if (e.charAt(0) === '.' && !this.dot)\n continue\n\n // these two cases enter the inGlobStar state\n var instead = gspref.concat(entries[i], remainWithoutGlobStar)\n this._process(instead, index, true)\n\n var below = gspref.concat(entries[i], remain)\n this._process(below, index, true)\n }\n}\n\nGlobSync.prototype._processSimple = function (prefix, index) {\n // XXX review this. Shouldn't it be doing the mounting etc\n // before doing stat? kinda weird?\n var exists = this._stat(prefix)\n\n if (!this.matches[index])\n this.matches[index] = Object.create(null)\n\n // If it doesn't exist, then just mark the lack of results\n if (!exists)\n return\n\n if (prefix && isAbsolute(prefix) && !this.nomount) {\n var trail = /[\\/\\\\]$/.test(prefix)\n if (prefix.charAt(0) === '/') {\n prefix = path.join(this.root, prefix)\n } else {\n prefix = path.resolve(this.root, prefix)\n if (trail)\n prefix += '/'\n }\n }\n\n if (process.platform === 'win32')\n prefix = prefix.replace(/\\\\/g, '/')\n\n // Mark this as a match\n this._emitMatch(index, prefix)\n}\n\n// Returns either 'DIR', 'FILE', or false\nGlobSync.prototype._stat = function (f) {\n var abs = this._makeAbs(f)\n var needDir = f.slice(-1) === '/'\n\n if (f.length > this.maxLength)\n return false\n\n if (!this.stat && ownProp(this.cache, abs)) {\n var c = this.cache[abs]\n\n if (Array.isArray(c))\n c = 'DIR'\n\n // It exists, but maybe not how we need it\n if (!needDir || c === 'DIR')\n return c\n\n if (needDir && c === 'FILE')\n return false\n\n // otherwise we have to stat, because maybe c=true\n // if we know it exists, but not what it is.\n }\n\n var exists\n var stat = this.statCache[abs]\n if (!stat) {\n var lstat\n try {\n lstat = fs.lstatSync(abs)\n } catch (er) {\n if (er && (er.code === 'ENOENT' || er.code === 'ENOTDIR')) {\n this.statCache[abs] = false\n return false\n }\n }\n\n if (lstat && lstat.isSymbolicLink()) {\n try {\n stat = fs.statSync(abs)\n } catch (er) {\n stat = lstat\n }\n } else {\n stat = lstat\n }\n }\n\n this.statCache[abs] = stat\n\n var c = true\n if (stat)\n c = stat.isDirectory() ? 'DIR' : 'FILE'\n\n this.cache[abs] = this.cache[abs] || c\n\n if (needDir && c === 'FILE')\n return false\n\n return c\n}\n\nGlobSync.prototype._mark = function (p) {\n return common.mark(this, p)\n}\n\nGlobSync.prototype._makeAbs = function (f) {\n return common.makeAbs(this, f)\n}\n","var wrappy = require('wrappy')\nvar reqs = Object.create(null)\nvar once = require('once')\n\nmodule.exports = wrappy(inflight)\n\nfunction inflight (key, cb) {\n if (reqs[key]) {\n reqs[key].push(cb)\n return null\n } else {\n reqs[key] = [cb]\n return makeres(key)\n }\n}\n\nfunction makeres (key) {\n return once(function RES () {\n var cbs = reqs[key]\n var len = cbs.length\n var args = slice(arguments)\n\n // XXX It's somewhat ambiguous whether a new callback added in this\n // pass should be queued for later execution if something in the\n // list of callbacks throws, or if it should just be discarded.\n // However, it's such an edge case that it hardly matters, and either\n // choice is likely as surprising as the other.\n // As it happens, we do go ahead and schedule it for later execution.\n try {\n for (var i = 0; i < len; i++) {\n cbs[i].apply(null, args)\n }\n } finally {\n if (cbs.length > len) {\n // added more in the interim.\n // de-zalgo, just in case, but don't call again.\n cbs.splice(0, len)\n process.nextTick(function () {\n RES.apply(null, args)\n })\n } else {\n delete reqs[key]\n }\n }\n })\n}\n\nfunction slice (args) {\n var length = args.length\n var array = []\n\n for (var i = 0; i < length; i++) array[i] = args[i]\n return array\n}\n","try {\n var util = require('util');\n /* istanbul ignore next */\n if (typeof util.inherits !== 'function') throw '';\n module.exports = util.inherits;\n} catch (e) {\n /* istanbul ignore next */\n module.exports = require('./inherits_browser.js');\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '