{"version":3,"sources":["webpack:///./node_modules/aws-sdk/clients/athena.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/set.js","webpack:///./node_modules/aws-sdk/lib/protocol/json.js","webpack:///./node_modules/aws-sdk/lib/util.js","webpack:///./node_modules/aws-sdk/lib/signers/request_signer.js","webpack:///./node_modules/aws-sdk/clients/inspector.js","webpack:///./node_modules/aws-sdk/lib/xml/browser_parser.js","webpack:///./node_modules/jmespath/jmespath.js","webpack:///./node_modules/aws-sdk/lib/model/resource_waiter.js","webpack:///./node_modules/url/url.js","webpack:///./node_modules/core-js/internals/get-substitution.js","webpack:///./node_modules/aws-sdk/clients/directconnect.js","webpack:///./node_modules/aws-sdk/clients/translate.js","webpack:///./node_modules/aws-sdk/clients/iam.js","webpack:///./node_modules/aws-sdk/lib/signers/v2.js","webpack:///./node_modules/aws-sdk/clients/cloudhsmv2.js","webpack:///./node_modules/aws-sdk/clients/dynamodbstreams.js","webpack:///./node_modules/aws-sdk/clients/apigateway.js","webpack:///./node_modules/aws-sdk/vendor/endpoint-cache/index.js","webpack:///./node_modules/aws-sdk/lib/signers/v4_credentials.js","webpack:///./node_modules/aws-sdk/lib/services/iotdata.js","webpack:///./node_modules/aws-sdk/clients/iotanalytics.js","webpack:///./node_modules/aws-sdk/lib/signers/presign.js","webpack:///./node_modules/node-libs-browser/node_modules/punycode/punycode.js","webpack:///./node_modules/aws-sdk/clients/marketplacecatalog.js","webpack:///./node_modules/aws-sdk/clients/elb.js","webpack:///./node_modules/aws-sdk/lib/services/machinelearning.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/converter.js","webpack:///./node_modules/aws-sdk/clients/browser_default.js","webpack:///./node_modules/aws-sdk/clients/codepipeline.js","webpack:///./node_modules/aws-sdk/clients/kinesis.js","webpack:///./node_modules/core-js/modules/es.string.includes.js","webpack:///./node_modules/aws-sdk/lib/json/builder.js","webpack:///./node_modules/aws-sdk/clients/emr.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest.js","webpack:///./node_modules/aws-sdk/lib/signers/v4.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/aws-sdk/clients/comprehend.js","webpack:///./node_modules/aws-sdk/clients/forecastservice.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/numberValue.js","webpack:///./node_modules/aws-sdk/lib/services/ec2.js","webpack:///./node_modules/aws-sdk/lib/http/xhr.js","webpack:///./node_modules/aws-sdk/clients/codebuild.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/aws-sdk/clients/lexruntime.js","webpack:///./node_modules/aws-sdk/lib/services/lambda.js","webpack:///./node_modules/aws-sdk/clients/firehose.js","webpack:///./node_modules/aws-sdk/clients/kinesisvideomedia.js","webpack:///./node_modules/aws-sdk/lib/event-stream/buffered-create-event-stream.js","webpack:///./node_modules/url/util.js","webpack:///./node_modules/aws-sdk/lib/signers/v3.js","webpack:///./node_modules/aws-sdk/clients/location.js","webpack:///./node_modules/aws-sdk/clients/resourcegroups.js","webpack:///./node_modules/aws-sdk/clients/cloudhsm.js","webpack:///./node_modules/aws-sdk/lib/services/apigateway.js","webpack:///./node_modules/aws-sdk/lib/http.js","webpack:///./node_modules/aws-sdk/clients/configservice.js","webpack:///./node_modules/aws-sdk/clients/cloudwatchlogs.js","webpack:///./node_modules/aws-sdk/lib/core.js","webpack:///./node_modules/aws-sdk/lib/signers/bearer.js","webpack:///./node_modules/aws-sdk/lib/xml/escape-element.js","webpack:///./node_modules/aws-sdk/lib/browser.js","webpack:///./node_modules/aws-sdk/lib/signers/s3.js","webpack:///./node_modules/aws-sdk/lib/credentials/temporary_credentials.js","webpack:///./node_modules/aws-sdk/clients/mediastoredata.js","webpack:///./node_modules/aws-sdk/lib/region/utils.js","webpack:///./node_modules/aws-sdk/clients/xray.js","webpack:///./node_modules/aws-sdk/lib/model/paginator.js","webpack:///./node_modules/aws-sdk/lib/model/collection.js","webpack:///./node_modules/aws-sdk/lib/param_validator.js","webpack:///./node_modules/aws-sdk/clients/personalize.js","webpack:///./node_modules/aws-sdk/lib/services/s3.js","webpack:///./node_modules/aws-sdk/clients/gamelift.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/aws-sdk/lib/signers/v3https.js","webpack:///./node_modules/aws-sdk/lib/discover_endpoint.js","webpack:///./node_modules/aws-sdk/lib/services/route53.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/translator.js","webpack:///./node_modules/aws-sdk/lib/credentials/web_identity_credentials.js","webpack:///./node_modules/core-js/internals/not-a-regexp.js","webpack:///./node_modules/aws-sdk/clients/devicefarm.js","webpack:///./node_modules/aws-sdk/lib/services/cloudfront.js","webpack:///./node_modules/aws-sdk/clients/waf.js","webpack:///./node_modules/aws-sdk/clients/connect.js","webpack:///./node_modules/aws-sdk/clients/efs.js","webpack:///./node_modules/aws-sdk/clients/cloudfront.js","webpack:///./node_modules/aws-sdk/lib/api_loader.js","webpack:///./node_modules/aws-sdk/lib/polly/presigner.js","webpack:///./node_modules/aws-sdk/clients/lexmodelbuildingservice.js","webpack:///./node_modules/aws-sdk/lib/config_regional_endpoint.js","webpack:///./node_modules/aws-sdk/lib/xml/xml-node.js","webpack:///./node_modules/aws-sdk/lib/response.js","webpack:///./node_modules/aws-sdk/clients/kinesisvideosignalingchannels.js","webpack:///./node_modules/aws-sdk/clients/route53domains.js","webpack:///./node_modules/aws-sdk/lib/services/rdsutil.js","webpack:///./node_modules/aws-sdk/clients/mobileanalytics.js","webpack:///./node_modules/aws-sdk/clients/iotdata.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/rng.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/bytesToUuid.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/v1.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/v35.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/md5.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/v3.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/v4.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/sha1.js","webpack:///./node_modules/aws-sdk/node_modules/uuid/dist/esm-browser/v5.js","webpack:///./node_modules/aws-sdk/lib/config.js","webpack:///./node_modules/aws-sdk/clients/ecr.js","webpack:///./node_modules/aws-sdk/lib/xml/xml-text.js","webpack:///./node_modules/aws-sdk/clients/rekognition.js","webpack:///./node_modules/aws-sdk/lib/event-stream/parse-event.js","webpack:///./node_modules/aws-sdk/clients/costexplorer.js","webpack:///./node_modules/aws-sdk/clients/route53.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest_xml.js","webpack:///./node_modules/aws-sdk/lib/sequential_executor.js","webpack:///./node_modules/aws-sdk/lib/query/query_param_serializer.js","webpack:///./node_modules/aws-sdk/clients/lexruntimev2.js","webpack:///./node_modules/aws-sdk/clients/opsworks.js","webpack:///./node_modules/aws-sdk/vendor/endpoint-cache/utils/LRU.js","webpack:///./node_modules/aws-sdk/lib/json/parser.js","webpack:///./node_modules/aws-sdk/clients/comprehendmedical.js","webpack:///./node_modules/aws-sdk/lib/request.js","webpack:///./node_modules/aws-sdk/clients/ecs.js","webpack:///./node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js","webpack:///./node_modules/aws-sdk/lib/service.js","webpack:///./node_modules/querystring-es3/decode.js","webpack:///./node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js","webpack:///./node_modules/aws-sdk/clients/rds.js","webpack:///./node_modules/aws-sdk/clients/cognitoidentity.js","webpack:///./node_modules/aws-sdk/lib/protocol/helpers.js","webpack:///./node_modules/aws-sdk/clients/redshift.js","webpack:///./node_modules/aws-sdk/clients/lambda.js","webpack:///./node_modules/aws-sdk/clients/secretsmanager.js","webpack:///./node_modules/aws-sdk/clients/ssm.js","webpack:///./node_modules/aws-sdk/clients/polly.js","webpack:///./node_modules/aws-sdk/lib/services/sqs.js","webpack:///./node_modules/aws-sdk/lib/browser_loader.js","webpack:///./node_modules/aws-sdk/lib/event-stream/split-message.js","webpack:///./node_modules/aws-sdk/lib/xml/escape-attribute.js","webpack:///./node_modules/aws-sdk/clients/servicecatalog.js","webpack:///./node_modules/aws-sdk/clients/personalizeevents.js","webpack:///./node_modules/aws-sdk/clients/dynamodb.js","webpack:///./node_modules/aws-sdk/lib/model/shape.js","webpack:///./node_modules/aws-sdk/lib/event-stream/int64.js","webpack:///./node_modules/aws-sdk/lib/browserHashUtils.js","webpack:///./node_modules/aws-sdk/lib/services/polly.js","webpack:///./node_modules/aws-sdk/clients/machinelearning.js","webpack:///./node_modules/aws-sdk/clients/codecommit.js","webpack:///./node_modules/vue-simple-progress/dist/vue-simple-progress.js","webpack:///./node_modules/aws-sdk/clients/cloudtrail.js","webpack:///./node_modules/core-js/internals/correct-is-regexp-logic.js","webpack:///./node_modules/aws-sdk/lib/resource_waiter.js","webpack:///./node_modules/aws-sdk/clients/cognitosync.js","webpack:///./node_modules/aws-sdk/clients/autoscaling.js","webpack:///./node_modules/aws-sdk/lib/s3/managed_upload.js","webpack:///./node_modules/aws-sdk/lib/services/dynamodb.js","webpack:///./node_modules/aws-sdk/clients/storagegateway.js","webpack:///./node_modules/querystring-es3/index.js","webpack:///./node_modules/aws-sdk/lib/credentials/chainable_temporary_credentials.js","webpack:///./node_modules/aws-sdk/clients/personalizeruntime.js","webpack:///./node_modules/aws-sdk/clients/s3.js","webpack:///./node_modules/aws-sdk/clients/elbv2.js","webpack:///./node_modules/aws-sdk/lib/event_listeners.js","webpack:///./node_modules/aws-sdk/clients/cloudformation.js","webpack:///./node_modules/aws-sdk/lib/credentials/credential_provider_chain.js","webpack:///./node_modules/aws-sdk/clients/acm.js","webpack:///./node_modules/aws-sdk/lib/credentials/saml_credentials.js","webpack:///./node_modules/aws-sdk/clients/kinesisvideoarchivedmedia.js","webpack:///./node_modules/aws-sdk/clients/sns.js","webpack:///./node_modules/aws-sdk/clients/mturk.js","webpack:///./node_modules/aws-sdk/lib/rds/signer.js","webpack:///./node_modules/aws-sdk/lib/xml/builder.js","webpack:///./node_modules/aws-sdk/clients/cloudwatch.js","webpack:///./node_modules/aws-sdk/lib/browserSha1.js","webpack:///./node_modules/aws-sdk/clients/forecastqueryservice.js","webpack:///./node_modules/aws-sdk/lib/browserMd5.js","webpack:///./node_modules/aws-sdk/lib/services/sts.js","webpack:///./node_modules/aws-sdk/lib/browserSha256.js","webpack:///./node_modules/core-js/modules/es.array.includes.js","webpack:///./node_modules/aws-sdk/lib/services/s3util.js","webpack:///./node_modules/aws-sdk/lib/protocol/query.js","webpack:///./node_modules/aws-sdk/clients/pricing.js","webpack:///./node_modules/aws-sdk/clients/workdocs.js","webpack:///./node_modules/aws-sdk/lib/cloudfront/signer.js","webpack:///./node_modules/aws-sdk/clients/cloudwatchevents.js","webpack:///./node_modules/aws-sdk/clients/kms.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/aws-sdk/clients/kinesisvideo.js","webpack:///./node_modules/aws-sdk/lib/model/operation.js","webpack:///./node_modules/aws-sdk/lib/realclock/browserClock.js","webpack:///./node_modules/aws-sdk/clients/iot.js","webpack:///./node_modules/aws-sdk/clients/applicationautoscaling.js","webpack:///./node_modules/aws-sdk/lib/region_config.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/document_client.js","webpack:///./node_modules/querystring-es3/encode.js","webpack:///./node_modules/aws-sdk/lib/dynamodb/types.js","webpack:///./node_modules/aws-sdk/clients/ec2.js","webpack:///./node_modules/aws-sdk/lib/event-stream/parse-message.js","webpack:///./node_modules/aws-sdk/clients/elastictranscoder.js","webpack:///./node_modules/aws-sdk/clients/cur.js","webpack:///./node_modules/aws-sdk/lib/browserCryptoLib.js","webpack:///./node_modules/aws-sdk/clients/marketplacecommerceanalytics.js","webpack:///./node_modules/aws-sdk/lib/services/rds.js","webpack:///./node_modules/aws-sdk/lib/model/api.js","webpack:///./node_modules/aws-sdk/lib/event-stream/event-message-chunker.js","webpack:///./node_modules/aws-sdk/clients/codedeploy.js","webpack:///./node_modules/aws-sdk/clients/sts.js","webpack:///./node_modules/aws-sdk/lib/credentials.js","webpack:///./node_modules/aws-sdk/clients/sqs.js","webpack:///./node_modules/aws-sdk/lib/state_machine.js","webpack:///./node_modules/aws-sdk/lib/protocol/rest_json.js","webpack:///./node_modules/aws-sdk/clients/elasticache.js","webpack:///./node_modules/aws-sdk/clients/elasticbeanstalk.js","webpack:///./node_modules/aws-sdk/lib/browserHmac.js","webpack:///./node_modules/aws-sdk/clients/ses.js"],"names":["AWS","Service","apiLoader","services","Athena","defineService","Object","defineProperty","get","model","paginators","pagination","enumerable","configurable","module","exports","util","typeOf","memberTypeToSetType","DynamoDBSet","inherit","constructor","list","options","this","wrapperName","initialize","validate","self","values","concat","detectType","type","error","Error","code","message","length","i","toJSON","JsonBuilder","JsonParser","populateHostPrefix","buildRequest","req","httpRequest","api","service","target","targetPrefix","operations","operation","name","version","jsonVersion","input","builder","body","build","params","headers","extractError","resp","httpResponse","split","e","JSON","parse","toString","__type","Code","pop","Message","statusCode","statusMessage","extractData","request","config","convertResponseTypes","data","shape","output","parser","environment","engine","isBrowser","navigator","userAgent","process","platform","AWS_EXECUTION_ENV","agent","VERSION","uriEscape","string","encodeURIComponent","replace","escape","ch","charCodeAt","toUpperCase","uriEscapePath","parts","arrayEach","part","push","join","urlParse","url","urlFormat","format","queryStringParse","qs","querystring","queryParamsToString","items","sortedKeys","keys","sort","value","ename","result","Array","isArray","vals","item","undefined","readFileSync","path","base64","encode","buf","buffer","toBuffer","decode","encoding","Buffer","from","Uint8Array","alloc","size","fill","toStream","isBuffer","readable","stream","pos","_read","end","slice","buffers","offset","copy","byteLength","lstatSync","object","upperFirst","substr","lowerFirst","toLowerCase","ini","currentSection","map","line","trim","isSection","substring","indexOfEqualsSign","indexOf","start","isAssignment","fn","noop","callback","err","makeAsync","expectedArgs","args","prototype","call","arguments","apply","date","getDate","systemClockOffset","Date","getTime","iso8601","toISOString","rfc822","toUTCString","unixTimestamp","formatter","parseTimestamp","match","crypto","crc32Table","crc32","tbl","crc","readUInt8","hmac","key","digest","lib","createHmac","update","md5","hash","sha256","algorithm","createHash","sliceFn","arraySliceFn","ArrayBuffer","on","chunk","FileReader","out","index","reader","onerror","onload","_continueReading","back","readAsArrayBuffer","toHex","abort","each","iterFunction","hasOwnProperty","ret","array","idx","parseInt","obj1","obj2","merge","dupe","isEmpty","obj","prop","webkitSlice","mozSlice","isType","typeName","str","originalError","stack","writable","String","time","klass","features","newObject","ctor","__super__","mixin","hideProperties","props","property","isValue","opts","memoizedProperty","cachedValue","hoistPayloadMember","operationName","payload","hasEventOutput","payloadMember","members","responsePayload","computeSha256","done","isNode","Stream","fs","settings","createReadStream","sha","isClockSkewed","serverTime","Math","abs","applyClockOffset","extractRequestId","requestId","ResponseMetadata","RequestId","addPromises","constructors","PromiseDependency","deletePromises","getPromisesDependency","Promise","ind","deletePromisesFromClass","addPromisesToClass","promisifyMethod","methodName","resolve","reject","isDualstackAvailable","metadata","serviceIdentifier","dualstackAvailable","calculateRetryDelay","retryCount","retryDelayOptions","customBackoff","base","delay","random","pow","handleRequestWithRetries","cb","http","HttpClient","getInstance","httpOptions","errCallback","maxRetries","retryable","setTimeout","sendRequest","retryAfter","handleRequest","defer","uuid","v4","convertPayloadToString","rules","nextTick","setImmediate","getRequestPayloadShape","getProfilesFromSharedConfig","iniLoader","filename","profiles","profilesFromConfig","configOptInEnv","loadFrom","isConfig","sharedConfigFileEnv","profilesFromCreds","sharedCredentialsFileEnv","profileNames","objectAssign","source","ARN","arn","matched","partition","region","accountId","resource","arnObject","defaultProfile","imdsDisabledEnv","Signers","RequestSigner","setServiceClientId","id","serviceClientId","getServiceClientId","getVersion","V2","V3","V4","S3","V3Https","Bearer","Inspector","Shape","DomXmlParser","getElementByTagName","xml","tag","elements","getElementsByTagName","iLen","parentNode","parseXml","parseStructure","parseMap","parseList","parseUnknown","parseScalar","memberName","memberShape","isXmlAttribute","attributes","textContent","xmlChild","flattened","xmlNoDefaultLists","defaultValue","xmlKey","xmlValue","tagName","child","firstElementChild","nodeName","nextElementSibling","member","getAttribute","create","text","toType","childNodes","window","DOMParser","parseFromString","syntaxError","documentElement","isError","errorElement","ActiveXObject","async","loadXML","isObject","strictDeepEqual","first","second","firstType","keysSeen","key2","isFalse","objValues","trimLeft","TYPE_NUMBER","TYPE_ANY","TYPE_STRING","TYPE_ARRAY","TYPE_OBJECT","TYPE_BOOLEAN","TYPE_EXPREF","TYPE_NULL","TYPE_ARRAY_NUMBER","TYPE_ARRAY_STRING","TYPE_NAME_TABLE","0","1","2","3","4","5","6","7","8","9","TOK_EOF","TOK_UNQUOTEDIDENTIFIER","TOK_QUOTEDIDENTIFIER","TOK_RBRACKET","TOK_RPAREN","TOK_COMMA","TOK_COLON","TOK_RBRACE","TOK_NUMBER","TOK_CURRENT","TOK_EXPREF","TOK_PIPE","TOK_OR","TOK_AND","TOK_EQ","TOK_GT","TOK_LT","TOK_GTE","TOK_LTE","TOK_NE","TOK_FLATTEN","TOK_STAR","TOK_FILTER","TOK_DOT","TOK_NOT","TOK_LBRACE","TOK_LBRACKET","TOK_LPAREN","TOK_LITERAL","basicTokens","operatorStartToken","skipChars","isAlpha","isNum","isAlphaNum","Lexer","tokenize","identifier","token","tokens","_current","_consumeUnquotedIdentifier","_consumeNumber","_consumeLBracket","_consumeQuotedIdentifier","_consumeRawStringLiteral","literal","_consumeLiteral","_consumeOperator","maxLength","current","startingChar","literalString","_looksLikeJSON","startingChars","jsonLiterals","numberLooking","ex","bindingPower","Parser","TreeInterpreter","runtime","Runtime","interpreter","_interpreter","functionTable","_func","_functionAbs","_signature","types","avg","_functionAvg","ceil","_functionCeil","contains","_functionContains","_functionEndsWith","floor","_functionFloor","_functionLength","_functionMap","max","_functionMax","_functionMerge","variadic","_functionMaxBy","sum","_functionSum","_functionStartsWith","min","_functionMin","_functionMinBy","_functionType","_functionKeys","_functionValues","_functionSort","_functionSortBy","_functionJoin","reverse","_functionReverse","_functionToArray","_functionToString","_functionToNumber","_functionNotNull","compile","ast","lexer","search","expression","node","_loadTokens","_lookahead","t","_lookaheadToken","rbp","leftToken","_advance","left","nud","currentToken","led","number","right","Not","children","_parseProjectionRHS","Star","_parseMultiselectHash","Flatten","_parseIndexExpression","_projectIfSlice","_parseMultiselectList","Expref","_match","_errorToken","tokenName","Dot","_parseDotRHS","Pipe","Or","And","condition","Filter","leftNode","rightNode","_parseComparator","tokenType","_parseSliceExpression","indexExpr","comparator","lookahead","exprTokens","expressions","keyToken","keyName","pairs","identifierTypes","visit","field","collected","sliceParams","computed","computeSliceParams","stop","step","filtered","finalResults","j","original","merged","resolvedArgs","callFunction","refNode","jmespathType","arrayLength","stepValueNegative","capSliceRange","actualValue","functionEntry","_validateArgs","signature","pluralized","currentSpec","actualType","typeMatched","_getTypeName","_typeMatches","expected","typeIdentifier","actual","argValue","subtype","lastIndexOf","searchStr","suffix","originalStr","reversedStr","reversedArray","inputArray","mapped","exprefNode","maxElement","localeCompare","minElement","listToSum","joinChar","listJoin","stringify","convertedValue","isNaN","sortedArray","requiredType","that","decorated","a","b","exprA","exprB","maxRecord","resolvedArray","keyFunction","createKeyFunction","maxNumber","Infinity","minRecord","minNumber","allowedTypes","keyFunc","x","msg","ResourceWaiter","waiter","forEach","punycode","Url","protocol","slashes","auth","host","port","hostname","query","pathname","href","urlResolve","resolveObject","urlResolveObject","protocolPattern","portPattern","simplePathPattern","delims","unwise","autoEscape","nonHostChars","hostEndingChars","hostnameMaxLen","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","parseQueryString","slashesDenoteHost","u","isString","relative","TypeError","queryIndex","splitter","uSplit","slashRegex","rest","simplePath","exec","proto","lowerProto","atSign","hostEnd","hec","decodeURIComponent","parseHost","ipv6Hostname","hostparts","l","newpart","k","validParts","notHost","bit","unshift","toASCII","p","h","ae","esc","qm","s","charAt","rel","tkeys","tk","tkey","rkeys","rk","rkey","v","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","last","hasTrailingSlash","up","splice","isAbsolute","toObject","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","position","captures","namedCaptures","replacement","tailPos","m","symbols","capture","n","f","DirectConnect","Translate","IAM","waiters","addAuthorization","credentials","r","Timestamp","SignatureVersion","SignatureMethod","AWSAccessKeyId","accessKeyId","sessionToken","SecurityToken","Signature","secretAccessKey","stringToSign","method","endpoint","CloudHSMV2","DynamoDBStreams","APIGateway","LRU_1","CACHE_SIZE","EndpointCache","maxSize","cache","LRUCache","put","keyString","getKeyString","endpointRecord","populateValue","now","records","record","Expire","remove","identifiers","identifierNames","identifierName","endpoints","Address","CachePeriodInMinutes","empty","cachedSecret","cacheQueue","maxCacheEntries","v4Identifier","createScope","serviceName","getSigningKey","shouldCache","credsIdentifier","cacheKey","kDate","kRegion","kService","signingKey","emptyCache","blobPayloadOutputOps","IotData","validateService","setupRequestListeners","addListener","validateResponseBody","bodyCheck","IoTAnalytics","expiresHeader","signedUrlBuilder","expires","signerClass","getSignerClass","getSkewCorrectedDate","signedUrlSigner","parsedUrl","queryParams","Presign","sign","expireTime","removeListener","EventListeners","Core","SET_CONTENT_LENGTH","COMPUTE_SHA256","emit","response","root","nodeType","freeGlobal","global","maxInt","tMin","tMax","skew","damp","initialBias","initialN","delimiter","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","fromCharCode","RangeError","mapDomain","labels","encoded","ucs2decode","extra","counter","ucs2encode","basicToDigit","codePoint","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","basic","oldi","w","baseMinusT","inputLength","bias","handledCPCount","basicLength","q","currentValue","handledCPCountPlusOne","qMinusT","toUnicode","test","MarketplaceCatalog","ELB","MachineLearning","buildEndpoint","PredictEndpoint","Endpoint","NumberValue","formatList","L","DynamoDB","Converter","convertNumber","wrapNumbers","Number","formatMap","M","formatted","formatSet","convertEmptyValues","filterEmptySetValues","set","nonEmptyValues","potentiallyEmptyTypes","Binary","convertInput","S","N","B","BOOL","NULL","marshall","convertOutput","unmarshall","ACM","ApplicationAutoScaling","AutoScaling","CloudFormation","CloudFront","CloudHSM","CloudTrail","CloudWatch","CloudWatchEvents","CloudWatchLogs","CodeBuild","CodeCommit","CodeDeploy","CodePipeline","CognitoIdentity","CognitoIdentityServiceProvider","CognitoSync","ConfigService","CUR","DeviceFarm","EC2","ECR","ECS","EFS","ElastiCache","ElasticBeanstalk","ELBv2","EMR","ElasticTranscoder","Firehose","GameLift","Iot","Kinesis","KMS","Lambda","LexRuntime","MarketplaceCommerceAnalytics","MTurk","MobileAnalytics","OpsWorks","Polly","RDS","Redshift","Rekognition","Route53","Route53Domains","ServiceCatalog","SES","SNS","SQS","SSM","StorageGateway","STS","XRay","WAF","WorkDocs","LexModelBuildingService","Pricing","CostExplorer","MediaStoreData","Comprehend","KinesisVideoArchivedMedia","KinesisVideoMedia","KinesisVideo","ResourceGroups","Connect","SecretsManager","ComprehendMedical","Personalize","PersonalizeEvents","PersonalizeRuntime","ForecastService","ForecastQueryService","KinesisVideoSignalingChannels","Location","LexRuntimeV2","$","notARegExp","requireObjectCoercible","correctIsRegExpLogic","forced","includes","searchString","translate","translateStructure","translateMap","translateList","translateScalar","structure","isDocument","struct","location","locationName","isLocationName","toWireFormat","populateMethod","httpMethod","generateURI","endpointPath","operationPath","uri","queryString","queryStringSet","paramValue","regex","RegExp","_","plus","val","populateURI","httpPath","populateHeaders","memberValue","isJsonValue","header","pattern","v4Credentials","signatureCache","signatureVersion","datetime","isPresigned","updateForPresigned","addHeaders","authorization","credString","credentialString","signedHeaders","isSignableHeader","lowerKey","sep","hexEncodedHash","canonicalString","canonicalHeaders","hexEncodedBodyHash","canonicalHeaderValues","unsignableHeaders","superCtor","super_","TempCtor","DynamoDBNumberValue","toNumber","Query","EXTRACT_ERROR","onAsync","buildCopySnapshotPresignedUrl","PresignedUrl","_subRequest","DestinationRegion","SourceRegion","svc","newReq","presign","XML","Errors","RequestID","EventEmitter","XHRClient","emitter","xhr","XMLHttpRequest","headersEmitted","addEventListener","status","readyState","HEADERS_RECEIVED","parseHeaders","getAllResponseHeaders","statusText","DONE","finishRequest","upload","evt","open","xhrAsync","setRequestHeader","timeout","xhrWithCredentials","withCredentials","responseType","send","rawHeaders","ab","view","responseText","streamsApiVersion","getOwnPropertyDescriptors","descriptors","getOwnPropertyDescriptor","formatRegExp","objects","inspect","len","deprecate","noDeprecation","warned","deprecated","throwDeprecation","traceDeprecation","console","trace","debugEnviron","debugs","ctx","seen","stylize","stylizeNoColor","depth","colors","isBoolean","showHidden","_extend","isUndefined","customInspect","stylizeWithColor","formatValue","styleType","style","styles","arrayToHash","recurseTimes","isFunction","primitive","formatPrimitive","visibleKeys","getOwnPropertyNames","formatError","isRegExp","isDate","braces","formatArray","formatProperty","reduceToSingleString","simple","isNumber","desc","reduce","prev","cur","numLinesEst","ar","arg","isSymbol","re","objectToString","d","isPrimitive","o","pad","debuglog","NODE_DEBUG","pid","months","timestamp","getHours","getMinutes","getSeconds","getMonth","log","inherits","origin","add","kCustomPromisifiedSymbol","Symbol","callbackifyOnRejected","reason","newReason","callbackify","callbackified","maybeCb","then","rej","setPrototypeOf","getPrototypeOf","defineProperties","promisify","promiseResolve","promiseReject","promise","custom","eventMessageChunker","parseEvent","createEventStream","eventMessages","events","headersToSign","setAcceptHeader","Accept","exportType","useSSL","sslEnabled","HttpRequest","_userAgent","setUserAgent","getUserAgentHeaderName","prefix","appendToUserAgent","agentPartial","getUserAgent","updateEndpoint","endpointStr","newEndpoint","HttpResponse","streaming","createUnbufferedStream","singleton","_hidden","Protocol","Json","Rest","RestJson","RestXml","Builder","Model","Api","Operation","Paginator","SequentialExecutor","endpointCacheSize","escapeElement","subResources","responseHeaders","canonicalizedAmzHeaders","canonicalizedResource","amzHeaders","virtualHostedBucket","resources","param","subresource","res","secret","TemporaryCredentials","Credentials","masterCredentials","loadMasterCredentials","expired","RoleArn","RoleSessionName","refresh","coalesceRefresh","load","createClients","assumeRole","getSessionToken","credentialsFrom","isFipsRegion","startsWith","endsWith","isGlobalRegion","getRealRegion","paginator","input_token","limit_key","more_results","output_token","result_key","memoize","factory","nameTr","Collection","iterable","ParamValidator","validation","context","validateMember","fail","validateStructure","paramName","validateType","required","memberContext","validateList","validateMap","validateScalar","validateRange","mapCount","validateString","validatePayload","validateNumber","validTypes","validateEnum","validatePattern","validateUri","descriptor","acceptedTypes","foundInvalidType","acceptedType","vowel","castedValue","parseFloat","Blob","resolveRegionalEndpointsFlag","s3util","regionUtil","operationsWith200StatusCodeError","regionRedirectErrorCodes","OBJECT_LAMBDA_SERVICE","getSignatureVersion","defaultApiVersion","userDefinedVersion","_originalConfig","regionDefinedVersion","getSigningName","_super","_parsedArn","messages","s3BucketEndpoint","shouldDisableBodySigning","s3DisableBodySigning","prependListener","validateScheme","validateBucketName","optInUsEast1RegionalEndpoint","VALIDATE_REGION","addContentType","computeContentMd5","computeSseCustomerKeyMd5","addExpect100Continue","extractErrorFrom200Response","prepareSignedUrl","disableBodySigning","isArnInParam","Bucket","validateS3AccessPointArn","validateArnResourceType","validateArnRegion","validateOutpostsAccessPointArn","validateOutpostsArn","validateArnAccount","validateArnService","populateUriFromAccessPointArn","validatePopulateUriFromArn","validateBucketEndpoint","correctBucketRegionFromCache","requestBucketRegion","reqRegionForNetworkingError","scheme","sensitive","SSECustomerKey","CopySourceSSECustomerKey","allowFipsEndpoint","bucket","Key","slashIndex","isValidAccelerateOperation","invalidOperations","s3UsEast1RegionalEndpoint","env","sharedConfig","clientConfig","insertPoint","regionalEndpoint","pathStyleBucketName","useAccelerateEndpoint","useDualstackEndpoint","removeVirtualHostedBucketFromPath","encodedS3Key","accessPointArn","isOutpostArn","isObjectLambdaArn","outpostsSuffix","outpostId","fipsSuffix","useFipsEndpoint","dualStackSuffix","dnsSuffix","getEndpointSuffix","useArnRegion","s3UseArnRegion","accessPoint","accesspointName","encodedArn","Body","contentType","replaceFn","charsetName","charset","willComputeChecksums","needsContentMD5","computeChecksums","ContentMD5","bucketName","s3ForcePathStyle","dnsCompatibleBucketName","retryableError","_requestRegionForBucket","bucketRegionCache","updateReqBucketRegion","s3Config","newConfig","Host","_asm","currentState","LocationConstraint","createBucketConfiguration","CreateBucketConfiguration","clearBucketRegionCache","extractRequestIds","cachedRegion","codes","304","403","400","404","Region","reqOperation","reqParams","MaxKeys","regionReq","getRegionReq","listObjects","buckets","requestRegion","extendedRequestId","cfId","getSignedUrl","Expires","makeRequest","createPresignedPost","boundParams","finalizePost","fields","preparePostFields","Fields","Conditions","getCredentials","conditions","expiresInSeconds","signingDate","shortDate","scope","credential","Policy","preparePostPolicy","valueOf","expiration","noPresignedContentLength","ContentLength","createBucket","copiedParams","globalEndpoint","writeGetObjectResponse","uploader","ManagedUpload","getSignedUrlPromise","fixRegExpWellKnownSymbolLogic","fails","anObject","toInteger","toLength","advanceStringIndex","getSubstitution","regExpExec","wellKnownSymbol","REPLACE","maybeToString","it","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_SUPPORTS_NAMED_GROUPS","groups","nativeReplace","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","O","replacer","rx","functionalReplace","fullUnicode","unicode","lastIndex","results","matchStr","accumulatedResult","nextSourcePosition","replacerArgs","endpointDiscoveryEnabledEnvs","getCacheKey","serviceId","marshallCustomIdentifiersHelper","endpointDiscoveryId","marshallCustomIdentifiers","optionalDiscoverEndpoint","operationModel","inputShape","endpointCache","endpointRequest","endpointOperation","Identifiers","addApiVersionHeader","VALIDATE_PARAMETERS","RETRY_CHECK","Endpoints","requestQueue","requiredDiscoverEndpoint","cacheKeyStr","pendingRequests","requestContext","apiVersion","invalidateCachedEndpoints","hasCustomEndpoint","client","endpointDiscoveryEnabled","svcConfig","Boolean","isFalsy","resolveEndpointDiscoveryConfig","configFile","sharedFileConfig","AWS_PROFILE","endpoint_discovery_enabled","discoverEndpoint","isEndpointDiscoveryRequired","endpointDiscoveryRequired","isEnabled","hasRequiredEndpointDiscovery","addNamedListener","className","invalidateCachedEndpoint","sanitizeUrl","convert","Translator","attrValue","translateInput","mode","translateOutput","WebIdentityCredentials","_clientConfig","assumeRoleWithWebIdentity","stsConfig","Presigner","bindServiceObject","_operations","modifyInputMembers","modifiedInput","convertPostToGet","getSynthesizeSpeechUrl","removeAllListeners","validateRegionalEndpointsFlagValue","configValue","errorOptions","originalConfig","resolved","envFlag","profile","fileFlag","escapeAttribute","XmlNode","addAttribute","addChildNode","removeAttribute","hasChildren","xmlText","attributeNames","attributeName","attribute","c","jmespath","Response","redirectCount","numRetries","maxRedirects","nextPage","paginationConfig","hasNextPage","nextPageTokens","inputTokens","inputToken","cacheNextPageTokens","moreResults","exprs","outputToken","expr","rdsutil","crossRegionOperations","PreSignedUrl","doesParamValidation","paramValidation","buildCrossRegionPresignedUrl","destinationRegion","getRandomValues","bind","msCrypto","rnds8","rng","byteToHex","bytesToUuid","bth","_nodeId","_clockseq","_lastMSecs","_lastNSecs","v1","clockseq","seedBytes","msecs","nsecs","dt","tl","tmh","uuidToBytes","bytes","hex","stringToBytes","unescape","DNS","URL","generateUUID","namespace","off","hashfunc","md5ToHexEncodedArray","wordsToMd5","bytesToWords","length32","hexTab","olda","oldb","oldc","oldd","md5ff","md5gg","md5hh","md5ii","safeAdd","length8","y","lsw","msw","bitRotateLeft","num","cnt","md5cmn","v3","v35","rnds","ii","z","ROTL","sha1","K","H","W","T","v5","PromisesDependency","Config","extractCredentials","finish","credError","getAsyncCredentials","getStaticCredentials","credentialProvider","creds","getToken","tokenError","getAsyncToken","getStaticToken","tokenProvider","allowUnknownKeys","hasService","loadFromPath","clear","fileSystemCreds","FileSystemCredentials","chain","CredentialProviderChain","providers","logger","apiVersions","correctClockSkew","customUserAgent","dynamoDbCrc32","clientSideMonitoring","hostPrefixEnabled","stsRegionalEndpoints","setPromisesDependency","dep","Request","XmlText","parseMessage","parsedMessage","messageType","parseError","eventType","eventModel","eventPayloadMemberName","payloadShape","eventHeaderNames","eventHeaderMemberNames","errorCode","errorMessage","populateBody","rootElement","toXML","isEventStream","isStreaming","_events","listeners","eventName","listener","toHead","_isAsync","eventArgs","doneCallback","count","callListeners","prevError","callNextListener","_haltHandlersOnError","addListeners","event","callbacks","addNamedAsyncListener","addNamedListeners","QueryParamSerializer","ucfirst","isQueryName","serializeStructure","serializeMember","serializeMap","valueName","serializeList","memberRules","serialize","LinkedListNode","nodeMap","sizeLimit","prependToList","headerNode","next","tailNode","removeFromTail","prevNode","detachFromList","key_1","newNode","shapeMembers","AcceptorStateMachine","domain","hardErrorStates","success","complete","isTerminalState","machine","fsm","setupStates","transition","Domain","domainEmitter","domainThrown","addState","signingRegion","isGlobalEndpoint","active","startTime","states","emitEvent","runTo","state","didCallback","_abortCallback","eachPage","wrappedCallback","eachItem","resultKey","continueIteration","isPageable","streams","PassThrough","sent","HTTP_DATA","HTTP_ERROR","expectedLen","shouldCheckContentLength","receivedLen","checkContentLengthAndEmit","httpStream","lengthAccumulator","_write","unpipe","pipe","eventParameters","origEmit","toGet","toUnauthenticated","_unAuthenticated","VALIDATE_CREDENTIALS","SIGN","buildAsGet","haltHandlersOnError","CognitoIdentityCredentials","localStorageKey","_identityId","loadCachedId","IdentityId","identityId","getId","clearIdOnNotAuthorized","getCredentialsFromSTS","getCredentialsForIdentity","clearCachedId","poolId","IdentityPoolId","loginId","LoginId","storage","cognito","loadCredentials","AccessKeyId","SecretKey","SessionToken","Expiration","cacheId","getOpenIdToken","WebIdentityToken","Token","webIdentityCredentials","webErr","sts","getStorage","Logins","actualProviders","cachedProviders","intersect","filter","cognitoConfig","setStorage","localStorage","regionConfig","clientCount","region_utils","loadServiceClass","useDualstack","ServiceClass","_clientId","configureEndpoint","endpointFromTemplate","setEndpoint","addDefaultMonitoringListeners","_clientSideMonitoring","publisher","eventHandler","serviceConfig","apiConfig","defineServiceApi","getLatestServiceClass","getLatestServiceVersion","selectedVersion","defaultRetryCount","customizeRequests","customRequestHandler","addAllRequestListeners","attachMonitoringEmitter","makeUnauthenticatedRequest","waitFor","wait","serviceInterface","CorePost","Logger","apiCallEvent","monitoringEvent","Type","Version","endpointPrefix","MaxRetriesExceeded","UserAgent","FinalHttpStatusCode","FinalAwsException","FinalAwsExceptionMessage","FinalSdkException","FinalSdkExceptionMessage","apiAttemptEvent","Fqdn","HttpStatusCode","AccessKey","XAmznRequestId","XAmzRequestId","XAmzId2","attemptFailEvent","AwsException","AwsExceptionMessage","SdkException","SdkExceptionMessage","attemptTimestamp","attemptStartRealTime","attemptLatency","callStartRealTime","callTimestamp","attemptCount","addToHead","realClock","round","AttemptLatency","AttemptCount","latency","Latency","signingName","authtype","successfulResponse","retryDelays","timeoutError","networkingError","expiredCredentialsError","throttledError","clockSkewError","newServerTime","throwException","defineMethods","versions","_serviceMap","addVersions","Publisher","configProvider","publisherConfig","enabled","superclass","setApi","isApi","attachOn","baseClass","eq","regexp","maxKeys","kstr","vstr","xs","hasEndpointDiscover","hostPrefix","hostPrefixNotation","expandHostPrefix","prependEndpointPrefix","validateHostname","isEndpointOperation","hostLabel","hostPattern","label","verifySendMessageChecksum","verifySendMessageBatchChecksum","verifyReceiveMessageChecksum","MD5OfMessageBody","MessageBody","calculatedMd5","calculateChecksum","throwInvalidChecksumError","MessageId","entries","messageIds","Successful","entry","Id","Entries","isChecksumValid","Messages","MD5OfBody","ids","checksum","QueueUrl","matches","browser","PRELUDE_MEMBER_LENGTH","PRELUDE_LENGTH","CHECKSUM_LENGTH","MINIMUM_MESSAGE_LENGTH","splitMessage","readUInt32BE","expectedPreludeChecksum","expectedMessageChecksum","headersStart","headersEnd","enum","xmlName","queryName","requiresLength","isComposite","idempotencyToken","jsonvalue","eventstream","eventpayload","eventheader","timestampFormat","isTimestampFormatSet","endpointdiscoveryid","documentation","documentationUrl","xmlAttribute","CompositeShape","StructureShape","requiredMap","firstInit","isShape","document","xmlOrder","memberNames","isEventPayload","isEventHeader","resultWrapper","xmlNamespace","ListShape","oldName","MapShape","TimestampShape","StringShape","nullLessProtocols","FloatShape","IntegerShape","BinaryShape","isSensitive","secureBuf","Base64Shape","BooleanShape","normalizedTypes","character","double","long","short","biginteger","bigdecimal","blob","refShape","shapes","filteredKeys","InlineShape","origType","Int64","negate","fromNumber","remaining","negative","isView","viewStrings","isEmptyData","convertToBuffer","byteOffset","BYTES_PER_ELEMENT","modules","installedModules","__webpack_require__","moduleId","getter","__esModule","VueSimpleProgress","_Progress","_Progress2","_interopRequireDefault","default","Vue","component","Component","rawScriptExports","compiledTemplate","scopeId","cssModules","esModule","scriptExports","render","staticRenderFns","_scopeId","isFinite","pct","toFixed","size_px","text_padding","spacing","text_font_size","fontSize","progress_style","bgColor","textPosition","barBorderRadius","bar_style","barColor","barTransition","text_style","textFgColor","textAlign","_vm","_h","$createElement","_c","_self","staticClass","_v","_s","_e","staticStyle","MATCH","METHOD_NAME","error1","error2","CHECK_ACCEPTORS","_waiter","acceptors","acceptorMatched","acceptor","matcher","matchers","argument","setSuccess","setError","loadWaiterConfig","pathAll","numResults","pathAny","retryDelay","$waiter","maxAttempts","completeInfo","fillQueue","configure","partSize","minPartSize","queueSize","leavePartsOnError","tags","validateBody","adjustTotalBytes","maxTotalParts","failed","runFill","fillBuffer","fillStream","partBuffers","cleanup","isDoneChunking","numParts","totalPartNumbers","doneParts","finishMultiPart","singlePart","totalBytes","newPartSize","partPos","totalChunkedBytes","totalUploadedBytes","activeParts","multipartReq","partBufferLength","bodyLen","nextChunk","endPos","read","pbuf","isDoneSending","partNumber","Tagging","getTaggingHeader","putObject","_managedUpload","progress","finishSinglePart","ETag","UploadId","uploadPart","queueChunks","createMultipartUpload","kvPairStrings","Value","partParams","PartNumber","partInfo","_lastUploadedBytes","resume","abortMultipartUpload","completeParams","MultipartUpload","Parts","completeMultipartUpload","putObjectTagging","TagSet","httpReq","info","loaded","total","EXTRACT_DATA","checkCrc32","crc32IsValid","ChainableTemporaryCredentials","tokenCodeFn","SerialNumber","getTokenCode","tokenCode","TokenCode","DISCOVER_ENDPOINT","getOperationAuthtype","getIdentityType","addAsync","identityType","dnsHostRegex","idempotentMembers","isNonStreamingPayload","httpChecksumRequired","traceIdHeaderName","ENV_LAMBDA_FUNCTION_NAME","ENV_TRACE_ID","functionName","traceId","SignerClass","signer","signedAt","awsQueryCompatible","queryErrorCode","httpResp","errCode","executeSend","timeDiff","numBytes","dateHeader","redirect","willRetry","isDNSError","errno","getSystemErrorName","buildMessage","write","filterSensitiveLog","subShapeName","subShape","ansi","isTTY","censoredParams","unsetContentLength","defaultProviders","resolveCallbacks","resolveNext","provider","getErr","resolvePromise","SAMLCredentials","assumeRoleWithSAML","requiredAuthTokenOptions","username","Signer","convertUrlToAuthToken","getAuthToken","hasCallback","optionsValidation","validateAuthTokenOptions","serviceOptions","modifyRequestForAuthToken","Action","DBUser","XmlBuilder","serializeScalar","element","applyNamespaces","entryKey","entryValue","isRoot","xmlNamespaceUri","xmlNamespacePrefix","noEmpty","hashUtils","BLOCK_SIZE","DIGEST_LENGTH","Uint32Array","Sha1","h0","h1","h2","h3","h4","block","totalLength","finished","byte","processBlock","outView","DataView","setUint32","temp","Md5","bufferLength","bytesHashed","cmn","ff","gg","hh","sourceData","setUint8","hashBuffer","_a","undecoratedLength","bitsHashed","buff","getUint32","ENV_REGIONAL_ENDPOINT_ENABLED","CONFIG_REGIONAL_ENDPOINT_ENABLED","SecretAccessKey","optInRegionalEndpoint","KEY","MAX_HASHABLE_LENGTH","Sha256","Int32Array","bufferView","state0","state1","state2","state3","state4","state5","state6","state7","t1_1","t2_1","t1","t2","$includes","addToUnscopables","el","inputMembers","parsedArn","accessPointPrefix","loadUseArnRegionConfig","regionFromArn","clientRegion","envName","configName","ipAddress","dots","origRules","tmp","_XAMZRequestId","requestIdShape","base64Encode","queryEncode","replacements","signPolicy","policy","privateKey","createSign","signWithCannedPolicy","keyPairId","Statement","Resource","Condition","DateLessThan","signWithCustomPolicy","determineScheme","getRtmpUrl","rtmpUrl","parsed","getResource","handleError","handleSuccess","getSignedCookie","signatureHash","cookieHash","signedUrl","requestUri","endpointdiscovery","httpChecksum","requestChecksumRequired","isIdempotent","hasEventStream","topLevelShape","performance","generateRegionPrefix","derivedKeys","regionPrefix","applyConfig","dualstackFipsRules","fipsRules","dualstackRules","patterns","useBearer","assign","regionRegexes","defaultSuffix","regexes","regionPattern","DocumentClient","putItem","Item","makeServiceRequest","setupRequest","setupResponse","serviceClientOperationsMap","batchGet","batchWrite","delete","scan","transactGet","transactWrite","createSet","getTranslator","translator","rawParams","outputShape","stringifyPrimitive","objectKeys","ks","isBinary","BOOLEAN_TAG","BYTE_TAG","SHORT_TAG","INT_TAG","LONG_TAG","BINARY_TAG","STRING_TAG","TIMESTAMP_TAG","UUID_TAG","nameLength","readInt8","readInt16BE","readInt32BE","binaryLength","readUInt16BE","stringLength","uuidChars","Hmac","alg","addEndpointOperation","endpointoperation","serviceAbbreviation","serviceFullName","refreshCallbacks","expiryWindow","needsRefresh","currentTime","adjustedTime","sync","getPromise","refreshPromise","finalState","bindObject","inputError","accept","acceptState","failState","METHODS_WITHOUT_BODY","applyContentTypeHeader","hashCtor","outer","inner","bufferFromSecret","bufferHash","toHash"],"mappings":"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","file":"js/chunk-c75ce4c6.563efd1e.js","sourcesContent":["require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['athena'] = {};\nAWS.Athena = Service.defineService('athena', ['2017-05-18']);\nObject.defineProperty(apiLoader.services['athena'], '2017-05-18', {\n get: function get() {\n var model = require('../apis/athena-2017-05-18.min.json');\n model.paginators = require('../apis/athena-2017-05-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Athena;\n","var util = require('../core').util;\nvar typeOf = require('./types').typeOf;\n\n/**\n * @api private\n */\nvar memberTypeToSetType = {\n 'String': 'String',\n 'Number': 'Number',\n 'NumberValue': 'Number',\n 'Binary': 'Binary'\n};\n\n/**\n * @api private\n */\nvar DynamoDBSet = util.inherit({\n\n constructor: function Set(list, options) {\n options = options || {};\n this.wrapperName = 'Set';\n this.initialize(list, options.validate);\n },\n\n initialize: function(list, validate) {\n var self = this;\n self.values = [].concat(list);\n self.detectType();\n if (validate) {\n self.validate();\n }\n },\n\n detectType: function() {\n this.type = memberTypeToSetType[typeOf(this.values[0])];\n if (!this.type) {\n throw util.error(new Error(), {\n code: 'InvalidSetType',\n message: 'Sets can contain string, number, or binary values'\n });\n }\n },\n\n validate: function() {\n var self = this;\n var length = self.values.length;\n var values = self.values;\n for (var i = 0; i < length; i++) {\n if (memberTypeToSetType[typeOf(values[i])] !== self.type) {\n throw util.error(new Error(), {\n code: 'InvalidType',\n message: self.type + ' Set contains ' + typeOf(values[i]) + ' value'\n });\n }\n }\n },\n\n /**\n * Render the underlying values only when converting to JSON.\n */\n toJSON: function() {\n var self = this;\n return self.values;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBSet;\n","var util = require('../util');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var httpRequest = req.httpRequest;\n var api = req.service.api;\n var target = api.targetPrefix + '.' + api.operations[req.operation].name;\n var version = api.jsonVersion || '1.0';\n var input = api.operations[req.operation].input;\n var builder = new JsonBuilder();\n\n if (version === 1) version = '1.0';\n httpRequest.body = builder.build(req.params || {}, input);\n httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version;\n httpRequest.headers['X-Amz-Target'] = target;\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var error = {};\n var httpResponse = resp.httpResponse;\n\n error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError';\n if (typeof error.code === 'string') {\n error.code = error.code.split(':')[0];\n }\n\n if (httpResponse.body.length > 0) {\n try {\n var e = JSON.parse(httpResponse.body.toString());\n var code = e.__type || e.code || e.Code;\n if (code) {\n error.code = code.split('#').pop();\n }\n if (error.code === 'RequestEntityTooLarge') {\n error.message = 'Request body must be less than 1 MB';\n } else {\n error.message = (e.message || e.Message || null);\n }\n } catch (e) {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusMessage;\n }\n } else {\n error.statusCode = httpResponse.statusCode;\n error.message = httpResponse.statusCode.toString();\n }\n\n resp.error = util.error(new Error(), error);\n}\n\nfunction extractData(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n if (resp.request.service.config.convertResponseTypes === false) {\n resp.data = JSON.parse(body);\n } else {\n var operation = resp.request.service.api.operations[resp.request.operation];\n var shape = operation.output || {};\n var parser = new JsonParser();\n resp.data = parser.parse(body, shape);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","/* eslint guard-for-in:0 */\nvar AWS;\n\n/**\n * A set of utility methods for use with the AWS SDK.\n *\n * @!attribute abort\n * Return this value from an iterator function {each} or {arrayEach}\n * to break out of the iteration.\n * @example Breaking out of an iterator function\n * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) {\n * if (key == 'b') return AWS.util.abort;\n * });\n * @see each\n * @see arrayEach\n * @api private\n */\nvar util = {\n environment: 'nodejs',\n engine: function engine() {\n if (util.isBrowser() && typeof navigator !== 'undefined') {\n return navigator.userAgent;\n } else {\n var engine = process.platform + '/' + process.version;\n if (process.env.AWS_EXECUTION_ENV) {\n engine += ' exec-env/' + process.env.AWS_EXECUTION_ENV;\n }\n return engine;\n }\n },\n\n userAgent: function userAgent() {\n var name = util.environment;\n var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION;\n if (name === 'nodejs') agent += ' ' + util.engine();\n return agent;\n },\n\n uriEscape: function uriEscape(string) {\n var output = encodeURIComponent(string);\n output = output.replace(/[^A-Za-z0-9_.~\\-%]+/g, escape);\n\n // AWS percent-encodes some extra non-standard characters in a URI\n output = output.replace(/[*]/g, function(ch) {\n return '%' + ch.charCodeAt(0).toString(16).toUpperCase();\n });\n\n return output;\n },\n\n uriEscapePath: function uriEscapePath(string) {\n var parts = [];\n util.arrayEach(string.split('/'), function (part) {\n parts.push(util.uriEscape(part));\n });\n return parts.join('/');\n },\n\n urlParse: function urlParse(url) {\n return util.url.parse(url);\n },\n\n urlFormat: function urlFormat(url) {\n return util.url.format(url);\n },\n\n queryStringParse: function queryStringParse(qs) {\n return util.querystring.parse(qs);\n },\n\n queryParamsToString: function queryParamsToString(params) {\n var items = [];\n var escape = util.uriEscape;\n var sortedKeys = Object.keys(params).sort();\n\n util.arrayEach(sortedKeys, function(name) {\n var value = params[name];\n var ename = escape(name);\n var result = ename + '=';\n if (Array.isArray(value)) {\n var vals = [];\n util.arrayEach(value, function(item) { vals.push(escape(item)); });\n result = ename + '=' + vals.sort().join('&' + ename + '=');\n } else if (value !== undefined && value !== null) {\n result = ename + '=' + escape(value);\n }\n items.push(result);\n });\n\n return items.join('&');\n },\n\n readFileSync: function readFileSync(path) {\n if (util.isBrowser()) return null;\n return require('fs').readFileSync(path, 'utf-8');\n },\n\n base64: {\n encode: function encode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 encode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n var buf = util.buffer.toBuffer(string);\n return buf.toString('base64');\n },\n\n decode: function decode64(string) {\n if (typeof string === 'number') {\n throw util.error(new Error('Cannot base64 decode number ' + string));\n }\n if (string === null || typeof string === 'undefined') {\n return string;\n }\n return util.buffer.toBuffer(string, 'base64');\n }\n\n },\n\n buffer: {\n /**\n * Buffer constructor for Node buffer and buffer pollyfill\n */\n toBuffer: function(data, encoding) {\n return (typeof util.Buffer.from === 'function' && util.Buffer.from !== Uint8Array.from) ?\n util.Buffer.from(data, encoding) : new util.Buffer(data, encoding);\n },\n\n alloc: function(size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new Error('size passed to alloc must be a number.');\n }\n if (typeof util.Buffer.alloc === 'function') {\n return util.Buffer.alloc(size, fill, encoding);\n } else {\n var buf = new util.Buffer(size);\n if (fill !== undefined && typeof buf.fill === 'function') {\n buf.fill(fill, undefined, undefined, encoding);\n }\n return buf;\n }\n },\n\n toStream: function toStream(buffer) {\n if (!util.Buffer.isBuffer(buffer)) buffer = util.buffer.toBuffer(buffer);\n\n var readable = new (util.stream.Readable)();\n var pos = 0;\n readable._read = function(size) {\n if (pos >= buffer.length) return readable.push(null);\n\n var end = pos + size;\n if (end > buffer.length) end = buffer.length;\n readable.push(buffer.slice(pos, end));\n pos = end;\n };\n\n return readable;\n },\n\n /**\n * Concatenates a list of Buffer objects.\n */\n concat: function(buffers) {\n var length = 0,\n offset = 0,\n buffer = null, i;\n\n for (i = 0; i < buffers.length; i++) {\n length += buffers[i].length;\n }\n\n buffer = util.buffer.alloc(length);\n\n for (i = 0; i < buffers.length; i++) {\n buffers[i].copy(buffer, offset);\n offset += buffers[i].length;\n }\n\n return buffer;\n }\n },\n\n string: {\n byteLength: function byteLength(string) {\n if (string === null || string === undefined) return 0;\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n\n if (typeof string.byteLength === 'number') {\n return string.byteLength;\n } else if (typeof string.length === 'number') {\n return string.length;\n } else if (typeof string.size === 'number') {\n return string.size;\n } else if (typeof string.path === 'string') {\n return require('fs').lstatSync(string.path).size;\n } else {\n throw util.error(new Error('Cannot determine length of ' + string),\n { object: string });\n }\n },\n\n upperFirst: function upperFirst(string) {\n return string[0].toUpperCase() + string.substr(1);\n },\n\n lowerFirst: function lowerFirst(string) {\n return string[0].toLowerCase() + string.substr(1);\n }\n },\n\n ini: {\n parse: function string(ini) {\n var currentSection, map = {};\n util.arrayEach(ini.split(/\\r?\\n/), function(line) {\n line = line.split(/(^|\\s)[;#]/)[0].trim(); // remove comments and trim\n var isSection = line[0] === '[' && line[line.length - 1] === ']';\n if (isSection) {\n currentSection = line.substring(1, line.length - 1);\n if (currentSection === '__proto__' || currentSection.split(/\\s/)[1] === '__proto__') {\n throw util.error(\n new Error('Cannot load profile name \\'' + currentSection + '\\' from shared ini file.')\n );\n }\n } else if (currentSection) {\n var indexOfEqualsSign = line.indexOf('=');\n var start = 0;\n var end = line.length - 1;\n var isAssignment =\n indexOfEqualsSign !== -1 && indexOfEqualsSign !== start && indexOfEqualsSign !== end;\n\n if (isAssignment) {\n var name = line.substring(0, indexOfEqualsSign).trim();\n var value = line.substring(indexOfEqualsSign + 1).trim();\n\n map[currentSection] = map[currentSection] || {};\n map[currentSection][name] = value;\n }\n }\n });\n\n return map;\n }\n },\n\n fn: {\n noop: function() {},\n callback: function (err) { if (err) throw err; },\n\n /**\n * Turn a synchronous function into as \"async\" function by making it call\n * a callback. The underlying function is called with all but the last argument,\n * which is treated as the callback. The callback is passed passed a first argument\n * of null on success to mimick standard node callbacks.\n */\n makeAsync: function makeAsync(fn, expectedArgs) {\n if (expectedArgs && expectedArgs <= fn.length) {\n return fn;\n }\n\n return function() {\n var args = Array.prototype.slice.call(arguments, 0);\n var callback = args.pop();\n var result = fn.apply(null, args);\n callback(result);\n };\n }\n },\n\n /**\n * Date and time utility functions.\n */\n date: {\n\n /**\n * @return [Date] the current JavaScript date object. Since all\n * AWS services rely on this date object, you can override\n * this function to provide a special time value to AWS service\n * requests.\n */\n getDate: function getDate() {\n if (!AWS) AWS = require('./core');\n if (AWS.config.systemClockOffset) { // use offset when non-zero\n return new Date(new Date().getTime() + AWS.config.systemClockOffset);\n } else {\n return new Date();\n }\n },\n\n /**\n * @return [String] the date in ISO-8601 format\n */\n iso8601: function iso8601(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toISOString().replace(/\\.\\d{3}Z$/, 'Z');\n },\n\n /**\n * @return [String] the date in RFC 822 format\n */\n rfc822: function rfc822(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.toUTCString();\n },\n\n /**\n * @return [Integer] the UNIX timestamp value for the current time\n */\n unixTimestamp: function unixTimestamp(date) {\n if (date === undefined) { date = util.date.getDate(); }\n return date.getTime() / 1000;\n },\n\n /**\n * @param [String,number,Date] date\n * @return [Date]\n */\n from: function format(date) {\n if (typeof date === 'number') {\n return new Date(date * 1000); // unix timestamp\n } else {\n return new Date(date);\n }\n },\n\n /**\n * Given a Date or date-like value, this function formats the\n * date into a string of the requested value.\n * @param [String,number,Date] date\n * @param [String] formatter Valid formats are:\n # * 'iso8601'\n # * 'rfc822'\n # * 'unixTimestamp'\n * @return [String]\n */\n format: function format(date, formatter) {\n if (!formatter) formatter = 'iso8601';\n return util.date[formatter](util.date.from(date));\n },\n\n parseTimestamp: function parseTimestamp(value) {\n if (typeof value === 'number') { // unix timestamp (number)\n return new Date(value * 1000);\n } else if (value.match(/^\\d+$/)) { // unix timestamp\n return new Date(value * 1000);\n } else if (value.match(/^\\d{4}/)) { // iso8601\n return new Date(value);\n } else if (value.match(/^\\w{3},/)) { // rfc822\n return new Date(value);\n } else {\n throw util.error(\n new Error('unhandled timestamp format: ' + value),\n {code: 'TimestampParserError'});\n }\n }\n\n },\n\n crypto: {\n crc32Table: [\n 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419,\n 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4,\n 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07,\n 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE,\n 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856,\n 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9,\n 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4,\n 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B,\n 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3,\n 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A,\n 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599,\n 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924,\n 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190,\n 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F,\n 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E,\n 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01,\n 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED,\n 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950,\n 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3,\n 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2,\n 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A,\n 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5,\n 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010,\n 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F,\n 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17,\n 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6,\n 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615,\n 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8,\n 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344,\n 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB,\n 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A,\n 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5,\n 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1,\n 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C,\n 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF,\n 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236,\n 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE,\n 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31,\n 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C,\n 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713,\n 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B,\n 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242,\n 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1,\n 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C,\n 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278,\n 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7,\n 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66,\n 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9,\n 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605,\n 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8,\n 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B,\n 0x2D02EF8D],\n\n crc32: function crc32(data) {\n var tbl = util.crypto.crc32Table;\n var crc = 0 ^ -1;\n\n if (typeof data === 'string') {\n data = util.buffer.toBuffer(data);\n }\n\n for (var i = 0; i < data.length; i++) {\n var code = data.readUInt8(i);\n crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF];\n }\n return (crc ^ -1) >>> 0;\n },\n\n hmac: function hmac(key, string, digest, fn) {\n if (!digest) digest = 'binary';\n if (digest === 'buffer') { digest = undefined; }\n if (!fn) fn = 'sha256';\n if (typeof string === 'string') string = util.buffer.toBuffer(string);\n return util.crypto.lib.createHmac(fn, key).update(string).digest(digest);\n },\n\n md5: function md5(data, digest, callback) {\n return util.crypto.hash('md5', data, digest, callback);\n },\n\n sha256: function sha256(data, digest, callback) {\n return util.crypto.hash('sha256', data, digest, callback);\n },\n\n hash: function(algorithm, data, digest, callback) {\n var hash = util.crypto.createHash(algorithm);\n if (!digest) { digest = 'binary'; }\n if (digest === 'buffer') { digest = undefined; }\n if (typeof data === 'string') data = util.buffer.toBuffer(data);\n var sliceFn = util.arraySliceFn(data);\n var isBuffer = util.Buffer.isBuffer(data);\n //Identifying objects with an ArrayBuffer as buffers\n if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true;\n\n if (callback && typeof data === 'object' &&\n typeof data.on === 'function' && !isBuffer) {\n data.on('data', function(chunk) { hash.update(chunk); });\n data.on('error', function(err) { callback(err); });\n data.on('end', function() { callback(null, hash.digest(digest)); });\n } else if (callback && sliceFn && !isBuffer &&\n typeof FileReader !== 'undefined') {\n // this might be a File/Blob\n var index = 0, size = 1024 * 512;\n var reader = new FileReader();\n reader.onerror = function() {\n callback(new Error('Failed to read data.'));\n };\n reader.onload = function() {\n var buf = new util.Buffer(new Uint8Array(reader.result));\n hash.update(buf);\n index += buf.length;\n reader._continueReading();\n };\n reader._continueReading = function() {\n if (index >= data.size) {\n callback(null, hash.digest(digest));\n return;\n }\n\n var back = index + size;\n if (back > data.size) back = data.size;\n reader.readAsArrayBuffer(sliceFn.call(data, index, back));\n };\n\n reader._continueReading();\n } else {\n if (util.isBrowser() && typeof data === 'object' && !isBuffer) {\n data = new util.Buffer(new Uint8Array(data));\n }\n var out = hash.update(data).digest(digest);\n if (callback) callback(null, out);\n return out;\n }\n },\n\n toHex: function toHex(data) {\n var out = [];\n for (var i = 0; i < data.length; i++) {\n out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2));\n }\n return out.join('');\n },\n\n createHash: function createHash(algorithm) {\n return util.crypto.lib.createHash(algorithm);\n }\n\n },\n\n /** @!ignore */\n\n /* Abort constant */\n abort: {},\n\n each: function each(object, iterFunction) {\n for (var key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n var ret = iterFunction.call(this, key, object[key]);\n if (ret === util.abort) break;\n }\n }\n },\n\n arrayEach: function arrayEach(array, iterFunction) {\n for (var idx in array) {\n if (Object.prototype.hasOwnProperty.call(array, idx)) {\n var ret = iterFunction.call(this, array[idx], parseInt(idx, 10));\n if (ret === util.abort) break;\n }\n }\n },\n\n update: function update(obj1, obj2) {\n util.each(obj2, function iterator(key, item) {\n obj1[key] = item;\n });\n return obj1;\n },\n\n merge: function merge(obj1, obj2) {\n return util.update(util.copy(obj1), obj2);\n },\n\n copy: function copy(object) {\n if (object === null || object === undefined) return object;\n var dupe = {};\n // jshint forin:false\n for (var key in object) {\n dupe[key] = object[key];\n }\n return dupe;\n },\n\n isEmpty: function isEmpty(obj) {\n for (var prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) {\n return false;\n }\n }\n return true;\n },\n\n arraySliceFn: function arraySliceFn(obj) {\n var fn = obj.slice || obj.webkitSlice || obj.mozSlice;\n return typeof fn === 'function' ? fn : null;\n },\n\n isType: function isType(obj, type) {\n // handle cross-\"frame\" objects\n if (typeof type === 'function') type = util.typeName(type);\n return Object.prototype.toString.call(obj) === '[object ' + type + ']';\n },\n\n typeName: function typeName(type) {\n if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name;\n var str = type.toString();\n var match = str.match(/^\\s*function (.+)\\(/);\n return match ? match[1] : str;\n },\n\n error: function error(err, options) {\n var originalError = null;\n if (typeof err.message === 'string' && err.message !== '') {\n if (typeof options === 'string' || (options && options.message)) {\n originalError = util.copy(err);\n originalError.message = err.message;\n }\n }\n err.message = err.message || null;\n\n if (typeof options === 'string') {\n err.message = options;\n } else if (typeof options === 'object' && options !== null) {\n util.update(err, options);\n if (options.message)\n err.message = options.message;\n if (options.code || options.name)\n err.code = options.code || options.name;\n if (options.stack)\n err.stack = options.stack;\n }\n\n if (typeof Object.defineProperty === 'function') {\n Object.defineProperty(err, 'name', {writable: true, enumerable: false});\n Object.defineProperty(err, 'message', {enumerable: true});\n }\n\n err.name = String(options && options.name || err.name || err.code || 'Error');\n err.time = new Date();\n\n if (originalError) err.originalError = originalError;\n\n return err;\n },\n\n /**\n * @api private\n */\n inherit: function inherit(klass, features) {\n var newObject = null;\n if (features === undefined) {\n features = klass;\n klass = Object;\n newObject = {};\n } else {\n var ctor = function ConstructorWrapper() {};\n ctor.prototype = klass.prototype;\n newObject = new ctor();\n }\n\n // constructor not supplied, create pass-through ctor\n if (features.constructor === Object) {\n features.constructor = function() {\n if (klass !== Object) {\n return klass.apply(this, arguments);\n }\n };\n }\n\n features.constructor.prototype = newObject;\n util.update(features.constructor.prototype, features);\n features.constructor.__super__ = klass;\n return features.constructor;\n },\n\n /**\n * @api private\n */\n mixin: function mixin() {\n var klass = arguments[0];\n for (var i = 1; i < arguments.length; i++) {\n // jshint forin:false\n for (var prop in arguments[i].prototype) {\n var fn = arguments[i].prototype[prop];\n if (prop !== 'constructor') {\n klass.prototype[prop] = fn;\n }\n }\n }\n return klass;\n },\n\n /**\n * @api private\n */\n hideProperties: function hideProperties(obj, props) {\n if (typeof Object.defineProperty !== 'function') return;\n\n util.arrayEach(props, function (key) {\n Object.defineProperty(obj, key, {\n enumerable: false, writable: true, configurable: true });\n });\n },\n\n /**\n * @api private\n */\n property: function property(obj, name, value, enumerable, isValue) {\n var opts = {\n configurable: true,\n enumerable: enumerable !== undefined ? enumerable : true\n };\n if (typeof value === 'function' && !isValue) {\n opts.get = value;\n }\n else {\n opts.value = value; opts.writable = true;\n }\n\n Object.defineProperty(obj, name, opts);\n },\n\n /**\n * @api private\n */\n memoizedProperty: function memoizedProperty(obj, name, get, enumerable) {\n var cachedValue = null;\n\n // build enumerable attribute for each value with lazy accessor.\n util.property(obj, name, function() {\n if (cachedValue === null) {\n cachedValue = get();\n }\n return cachedValue;\n }, enumerable);\n },\n\n /**\n * TODO Remove in major version revision\n * This backfill populates response data without the\n * top-level payload name.\n *\n * @api private\n */\n hoistPayloadMember: function hoistPayloadMember(resp) {\n var req = resp.request;\n var operationName = req.operation;\n var operation = req.service.api.operations[operationName];\n var output = operation.output;\n if (output.payload && !operation.hasEventOutput) {\n var payloadMember = output.members[output.payload];\n var responsePayload = resp.data[output.payload];\n if (payloadMember.type === 'structure') {\n util.each(responsePayload, function(key, value) {\n util.property(resp.data, key, value, false);\n });\n }\n }\n },\n\n /**\n * Compute SHA-256 checksums of streams\n *\n * @api private\n */\n computeSha256: function computeSha256(body, done) {\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n var fs = require('fs');\n if (typeof Stream === 'function' && body instanceof Stream) {\n if (typeof body.path === 'string') { // assume file object\n var settings = {};\n if (typeof body.start === 'number') {\n settings.start = body.start;\n }\n if (typeof body.end === 'number') {\n settings.end = body.end;\n }\n body = fs.createReadStream(body.path, settings);\n } else { // TODO support other stream types\n return done(new Error('Non-file stream objects are ' +\n 'not supported with SigV4'));\n }\n }\n }\n\n util.crypto.sha256(body, 'hex', function(err, sha) {\n if (err) done(err);\n else done(null, sha);\n });\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(serverTime) {\n if (serverTime) {\n util.property(AWS.config, 'isClockSkewed',\n Math.abs(new Date().getTime() - serverTime) >= 300000, false);\n return AWS.config.isClockSkewed;\n }\n },\n\n applyClockOffset: function applyClockOffset(serverTime) {\n if (serverTime)\n AWS.config.systemClockOffset = serverTime - new Date().getTime();\n },\n\n /**\n * @api private\n */\n extractRequestId: function extractRequestId(resp) {\n var requestId = resp.httpResponse.headers['x-amz-request-id'] ||\n resp.httpResponse.headers['x-amzn-requestid'];\n\n if (!requestId && resp.data && resp.data.ResponseMetadata) {\n requestId = resp.data.ResponseMetadata.RequestId;\n }\n\n if (requestId) {\n resp.requestId = requestId;\n }\n\n if (resp.error) {\n resp.error.requestId = requestId;\n }\n },\n\n /**\n * @api private\n */\n addPromises: function addPromises(constructors, PromiseDependency) {\n var deletePromises = false;\n if (PromiseDependency === undefined && AWS && AWS.config) {\n PromiseDependency = AWS.config.getPromisesDependency();\n }\n if (PromiseDependency === undefined && typeof Promise !== 'undefined') {\n PromiseDependency = Promise;\n }\n if (typeof PromiseDependency !== 'function') deletePromises = true;\n if (!Array.isArray(constructors)) constructors = [constructors];\n\n for (var ind = 0; ind < constructors.length; ind++) {\n var constructor = constructors[ind];\n if (deletePromises) {\n if (constructor.deletePromisesFromClass) {\n constructor.deletePromisesFromClass();\n }\n } else if (constructor.addPromisesToClass) {\n constructor.addPromisesToClass(PromiseDependency);\n }\n }\n },\n\n /**\n * @api private\n * Return a function that will return a promise whose fate is decided by the\n * callback behavior of the given method with `methodName`. The method to be\n * promisified should conform to node.js convention of accepting a callback as\n * last argument and calling that callback with error as the first argument\n * and success value on the second argument.\n */\n promisifyMethod: function promisifyMethod(methodName, PromiseDependency) {\n return function promise() {\n var self = this;\n var args = Array.prototype.slice.call(arguments);\n return new PromiseDependency(function(resolve, reject) {\n args.push(function(err, data) {\n if (err) {\n reject(err);\n } else {\n resolve(data);\n }\n });\n self[methodName].apply(self, args);\n });\n };\n },\n\n /**\n * @api private\n */\n isDualstackAvailable: function isDualstackAvailable(service) {\n if (!service) return false;\n var metadata = require('../apis/metadata.json');\n if (typeof service !== 'string') service = service.serviceIdentifier;\n if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false;\n return !!metadata[service].dualstackAvailable;\n },\n\n /**\n * @api private\n */\n calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions, err) {\n if (!retryDelayOptions) retryDelayOptions = {};\n var customBackoff = retryDelayOptions.customBackoff || null;\n if (typeof customBackoff === 'function') {\n return customBackoff(retryCount, err);\n }\n var base = typeof retryDelayOptions.base === 'number' ? retryDelayOptions.base : 100;\n var delay = Math.random() * (Math.pow(2, retryCount) * base);\n return delay;\n },\n\n /**\n * @api private\n */\n handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) {\n if (!options) options = {};\n var http = AWS.HttpClient.getInstance();\n var httpOptions = options.httpOptions || {};\n var retryCount = 0;\n\n var errCallback = function(err) {\n var maxRetries = options.maxRetries || 0;\n if (err && err.code === 'TimeoutError') err.retryable = true;\n\n // Call `calculateRetryDelay()` only when relevant, see #3401\n if (err && err.retryable && retryCount < maxRetries) {\n var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions, err);\n if (delay >= 0) {\n retryCount++;\n setTimeout(sendRequest, delay + (err.retryAfter || 0));\n return;\n }\n }\n cb(err);\n };\n\n var sendRequest = function() {\n var data = '';\n http.handleRequest(httpRequest, httpOptions, function(httpResponse) {\n httpResponse.on('data', function(chunk) { data += chunk.toString(); });\n httpResponse.on('end', function() {\n var statusCode = httpResponse.statusCode;\n if (statusCode < 300) {\n cb(null, data);\n } else {\n var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0;\n var err = util.error(new Error(),\n {\n statusCode: statusCode,\n retryable: statusCode >= 500 || statusCode === 429\n }\n );\n if (retryAfter && err.retryable) err.retryAfter = retryAfter;\n errCallback(err);\n }\n });\n }, errCallback);\n };\n\n AWS.util.defer(sendRequest);\n },\n\n /**\n * @api private\n */\n uuid: {\n v4: function uuidV4() {\n return require('uuid').v4();\n }\n },\n\n /**\n * @api private\n */\n convertPayloadToString: function convertPayloadToString(resp) {\n var req = resp.request;\n var operation = req.operation;\n var rules = req.service.api.operations[operation].output || {};\n if (rules.payload && resp.data[rules.payload]) {\n resp.data[rules.payload] = resp.data[rules.payload].toString();\n }\n },\n\n /**\n * @api private\n */\n defer: function defer(callback) {\n if (typeof process === 'object' && typeof process.nextTick === 'function') {\n process.nextTick(callback);\n } else if (typeof setImmediate === 'function') {\n setImmediate(callback);\n } else {\n setTimeout(callback, 0);\n }\n },\n\n /**\n * @api private\n */\n getRequestPayloadShape: function getRequestPayloadShape(req) {\n var operations = req.service.api.operations;\n if (!operations) return undefined;\n var operation = (operations || {})[req.operation];\n if (!operation || !operation.input || !operation.input.payload) return undefined;\n return operation.input.members[operation.input.payload];\n },\n\n getProfilesFromSharedConfig: function getProfilesFromSharedConfig(iniLoader, filename) {\n var profiles = {};\n var profilesFromConfig = {};\n if (process.env[util.configOptInEnv]) {\n var profilesFromConfig = iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[util.sharedConfigFileEnv]\n });\n }\n var profilesFromCreds= {};\n try {\n var profilesFromCreds = iniLoader.loadFrom({\n filename: filename ||\n (process.env[util.configOptInEnv] && process.env[util.sharedCredentialsFileEnv])\n });\n } catch (error) {\n // if using config, assume it is fully descriptive without a credentials file:\n if (!process.env[util.configOptInEnv]) throw error;\n }\n for (var i = 0, profileNames = Object.keys(profilesFromConfig); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromConfig[profileNames[i]]);\n }\n for (var i = 0, profileNames = Object.keys(profilesFromCreds); i < profileNames.length; i++) {\n profiles[profileNames[i]] = objectAssign(profiles[profileNames[i]] || {}, profilesFromCreds[profileNames[i]]);\n }\n return profiles;\n\n /**\n * Roughly the semantics of `Object.assign(target, source)`\n */\n function objectAssign(target, source) {\n for (var i = 0, keys = Object.keys(source); i < keys.length; i++) {\n target[keys[i]] = source[keys[i]];\n }\n return target;\n }\n },\n\n /**\n * @api private\n */\n ARN: {\n validate: function validateARN(str) {\n return str && str.indexOf('arn:') === 0 && str.split(':').length >= 6;\n },\n parse: function parseARN(arn) {\n var matched = arn.split(':');\n return {\n partition: matched[1],\n service: matched[2],\n region: matched[3],\n accountId: matched[4],\n resource: matched.slice(5).join(':')\n };\n },\n build: function buildARN(arnObject) {\n if (\n arnObject.service === undefined ||\n arnObject.region === undefined ||\n arnObject.accountId === undefined ||\n arnObject.resource === undefined\n ) throw util.error(new Error('Input ARN object is invalid'));\n return 'arn:'+ (arnObject.partition || 'aws') + ':' + arnObject.service +\n ':' + arnObject.region + ':' + arnObject.accountId + ':' + arnObject.resource;\n }\n },\n\n /**\n * @api private\n */\n defaultProfile: 'default',\n\n /**\n * @api private\n */\n configOptInEnv: 'AWS_SDK_LOAD_CONFIG',\n\n /**\n * @api private\n */\n sharedCredentialsFileEnv: 'AWS_SHARED_CREDENTIALS_FILE',\n\n /**\n * @api private\n */\n sharedConfigFileEnv: 'AWS_CONFIG_FILE',\n\n /**\n * @api private\n */\n imdsDisabledEnv: 'AWS_EC2_METADATA_DISABLED'\n};\n\n/**\n * @api private\n */\nmodule.exports = util;\n","var AWS = require('../core');\n\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.RequestSigner = inherit({\n constructor: function RequestSigner(request) {\n this.request = request;\n },\n\n setServiceClientId: function setServiceClientId(id) {\n this.serviceClientId = id;\n },\n\n getServiceClientId: function getServiceClientId() {\n return this.serviceClientId;\n }\n});\n\nAWS.Signers.RequestSigner.getVersion = function getVersion(version) {\n switch (version) {\n case 'v2': return AWS.Signers.V2;\n case 'v3': return AWS.Signers.V3;\n case 's3v4': return AWS.Signers.V4;\n case 'v4': return AWS.Signers.V4;\n case 's3': return AWS.Signers.S3;\n case 'v3https': return AWS.Signers.V3Https;\n case 'bearer': return AWS.Signers.Bearer;\n }\n throw new Error('Unknown signing version ' + version);\n};\n\nrequire('./v2');\nrequire('./v3');\nrequire('./v3https');\nrequire('./v4');\nrequire('./s3');\nrequire('./presign');\nrequire('./bearer');\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['inspector'] = {};\nAWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']);\nObject.defineProperty(apiLoader.services['inspector'], '2016-02-16', {\n get: function get() {\n var model = require('../apis/inspector-2016-02-16.min.json');\n model.paginators = require('../apis/inspector-2016-02-16.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Inspector;\n","var util = require('../util');\nvar Shape = require('../model/shape');\n\nfunction DomXmlParser() { }\n\nDomXmlParser.prototype.parse = function(xml, shape) {\n if (xml.replace(/^\\s+/, '') === '') return {};\n\n var result, error;\n try {\n if (window.DOMParser) {\n try {\n var parser = new DOMParser();\n result = parser.parseFromString(xml, 'text/xml');\n } catch (syntaxError) {\n throw util.error(new Error('Parse error in document'),\n {\n originalError: syntaxError,\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n if (result.documentElement === null) {\n throw util.error(new Error('Cannot parse empty document.'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n\n var isError = result.getElementsByTagName('parsererror')[0];\n if (isError && (isError.parentNode === result ||\n isError.parentNode.nodeName === 'body' ||\n isError.parentNode.parentNode === result ||\n isError.parentNode.parentNode.nodeName === 'body')) {\n var errorElement = isError.getElementsByTagName('div')[0] || isError;\n throw util.error(new Error(errorElement.textContent || 'Parser error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else if (window.ActiveXObject) {\n result = new window.ActiveXObject('Microsoft.XMLDOM');\n result.async = false;\n\n if (!result.loadXML(xml)) {\n throw util.error(new Error('Parse error in document'),\n {\n code: 'XMLParserError',\n retryable: true\n });\n }\n } else {\n throw new Error('Cannot load XML parser');\n }\n } catch (e) {\n error = e;\n }\n\n if (result && result.documentElement && !error) {\n var data = parseXml(result.documentElement, shape);\n var metadata = getElementByTagName(result.documentElement, 'ResponseMetadata');\n if (metadata) {\n data.ResponseMetadata = parseXml(metadata, {});\n }\n return data;\n } else if (error) {\n throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true});\n } else { // empty xml document\n return {};\n }\n};\n\nfunction getElementByTagName(xml, tag) {\n var elements = xml.getElementsByTagName(tag);\n for (var i = 0, iLen = elements.length; i < iLen; i++) {\n if (elements[i].parentNode === xml) {\n return elements[i];\n }\n }\n}\n\nfunction parseXml(xml, shape) {\n if (!shape) shape = {};\n switch (shape.type) {\n case 'structure': return parseStructure(xml, shape);\n case 'map': return parseMap(xml, shape);\n case 'list': return parseList(xml, shape);\n case undefined: case null: return parseUnknown(xml);\n default: return parseScalar(xml, shape);\n }\n}\n\nfunction parseStructure(xml, shape) {\n var data = {};\n if (xml === null) return data;\n\n util.each(shape.members, function(memberName, memberShape) {\n if (memberShape.isXmlAttribute) {\n if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) {\n var value = xml.attributes[memberShape.name].value;\n data[memberName] = parseXml({textContent: value}, memberShape);\n }\n } else {\n var xmlChild = memberShape.flattened ? xml :\n getElementByTagName(xml, memberShape.name);\n if (xmlChild) {\n data[memberName] = parseXml(xmlChild, memberShape);\n } else if (\n !memberShape.flattened &&\n memberShape.type === 'list' &&\n !shape.api.xmlNoDefaultLists) {\n data[memberName] = memberShape.defaultValue;\n }\n }\n });\n\n return data;\n}\n\nfunction parseMap(xml, shape) {\n var data = {};\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n var tagName = shape.flattened ? shape.name : 'entry';\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n var key = getElementByTagName(child, xmlKey).textContent;\n var value = getElementByTagName(child, xmlValue);\n data[key] = parseXml(value, shape.value);\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseList(xml, shape) {\n var data = [];\n var tagName = shape.flattened ? shape.name : (shape.member.name || 'member');\n\n var child = xml.firstElementChild;\n while (child) {\n if (child.nodeName === tagName) {\n data.push(parseXml(child, shape.member));\n }\n child = child.nextElementSibling;\n }\n return data;\n}\n\nfunction parseScalar(xml, shape) {\n if (xml.getAttribute) {\n var encoding = xml.getAttribute('encoding');\n if (encoding === 'base64') {\n shape = new Shape.create({type: encoding});\n }\n }\n\n var text = xml.textContent;\n if (text === '') text = null;\n if (typeof shape.toType === 'function') {\n return shape.toType(text);\n } else {\n return text;\n }\n}\n\nfunction parseUnknown(xml) {\n if (xml === undefined || xml === null) return '';\n\n // empty object\n if (!xml.firstElementChild) {\n if (xml.parentNode.parentNode === null) return {};\n if (xml.childNodes.length === 0) return '';\n else return xml.textContent;\n }\n\n // object, parse as structure\n var shape = {type: 'structure', members: {}};\n var child = xml.firstElementChild;\n while (child) {\n var tag = child.nodeName;\n if (Object.prototype.hasOwnProperty.call(shape.members, tag)) {\n // multiple tags of the same name makes it a list\n shape.members[tag].type = 'list';\n } else {\n shape.members[tag] = {name: tag};\n }\n child = child.nextElementSibling;\n }\n return parseStructure(xml, shape);\n}\n\n/**\n * @api private\n */\nmodule.exports = DomXmlParser;\n","(function(exports) {\n \"use strict\";\n\n function isArray(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Array]\";\n } else {\n return false;\n }\n }\n\n function isObject(obj) {\n if (obj !== null) {\n return Object.prototype.toString.call(obj) === \"[object Object]\";\n } else {\n return false;\n }\n }\n\n function strictDeepEqual(first, second) {\n // Check the scalar case first.\n if (first === second) {\n return true;\n }\n\n // Check if they are the same type.\n var firstType = Object.prototype.toString.call(first);\n if (firstType !== Object.prototype.toString.call(second)) {\n return false;\n }\n // We know that first and second have the same type so we can just check the\n // first type from now on.\n if (isArray(first) === true) {\n // Short circuit if they're not the same length;\n if (first.length !== second.length) {\n return false;\n }\n for (var i = 0; i < first.length; i++) {\n if (strictDeepEqual(first[i], second[i]) === false) {\n return false;\n }\n }\n return true;\n }\n if (isObject(first) === true) {\n // An object is equal if it has the same key/value pairs.\n var keysSeen = {};\n for (var key in first) {\n if (hasOwnProperty.call(first, key)) {\n if (strictDeepEqual(first[key], second[key]) === false) {\n return false;\n }\n keysSeen[key] = true;\n }\n }\n // Now check that there aren't any keys in second that weren't\n // in first.\n for (var key2 in second) {\n if (hasOwnProperty.call(second, key2)) {\n if (keysSeen[key2] !== true) {\n return false;\n }\n }\n }\n return true;\n }\n return false;\n }\n\n function isFalse(obj) {\n // From the spec:\n // A false value corresponds to the following values:\n // Empty list\n // Empty object\n // Empty string\n // False boolean\n // null value\n\n // First check the scalar values.\n if (obj === \"\" || obj === false || obj === null) {\n return true;\n } else if (isArray(obj) && obj.length === 0) {\n // Check for an empty array.\n return true;\n } else if (isObject(obj)) {\n // Check for an empty object.\n for (var key in obj) {\n // If there are any keys, then\n // the object is not empty so the object\n // is not false.\n if (obj.hasOwnProperty(key)) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n }\n\n function objValues(obj) {\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n }\n\n function merge(a, b) {\n var merged = {};\n for (var key in a) {\n merged[key] = a[key];\n }\n for (var key2 in b) {\n merged[key2] = b[key2];\n }\n return merged;\n }\n\n var trimLeft;\n if (typeof String.prototype.trimLeft === \"function\") {\n trimLeft = function(str) {\n return str.trimLeft();\n };\n } else {\n trimLeft = function(str) {\n return str.match(/^\\s*(.*)/)[1];\n };\n }\n\n // Type constants used to define functions.\n var TYPE_NUMBER = 0;\n var TYPE_ANY = 1;\n var TYPE_STRING = 2;\n var TYPE_ARRAY = 3;\n var TYPE_OBJECT = 4;\n var TYPE_BOOLEAN = 5;\n var TYPE_EXPREF = 6;\n var TYPE_NULL = 7;\n var TYPE_ARRAY_NUMBER = 8;\n var TYPE_ARRAY_STRING = 9;\n var TYPE_NAME_TABLE = {\n 0: 'number',\n 1: 'any',\n 2: 'string',\n 3: 'array',\n 4: 'object',\n 5: 'boolean',\n 6: 'expression',\n 7: 'null',\n 8: 'Array',\n 9: 'Array'\n };\n\n var TOK_EOF = \"EOF\";\n var TOK_UNQUOTEDIDENTIFIER = \"UnquotedIdentifier\";\n var TOK_QUOTEDIDENTIFIER = \"QuotedIdentifier\";\n var TOK_RBRACKET = \"Rbracket\";\n var TOK_RPAREN = \"Rparen\";\n var TOK_COMMA = \"Comma\";\n var TOK_COLON = \"Colon\";\n var TOK_RBRACE = \"Rbrace\";\n var TOK_NUMBER = \"Number\";\n var TOK_CURRENT = \"Current\";\n var TOK_EXPREF = \"Expref\";\n var TOK_PIPE = \"Pipe\";\n var TOK_OR = \"Or\";\n var TOK_AND = \"And\";\n var TOK_EQ = \"EQ\";\n var TOK_GT = \"GT\";\n var TOK_LT = \"LT\";\n var TOK_GTE = \"GTE\";\n var TOK_LTE = \"LTE\";\n var TOK_NE = \"NE\";\n var TOK_FLATTEN = \"Flatten\";\n var TOK_STAR = \"Star\";\n var TOK_FILTER = \"Filter\";\n var TOK_DOT = \"Dot\";\n var TOK_NOT = \"Not\";\n var TOK_LBRACE = \"Lbrace\";\n var TOK_LBRACKET = \"Lbracket\";\n var TOK_LPAREN= \"Lparen\";\n var TOK_LITERAL= \"Literal\";\n\n // The \"&\", \"[\", \"<\", \">\" tokens\n // are not in basicToken because\n // there are two token variants\n // (\"&&\", \"[?\", \"<=\", \">=\"). This is specially handled\n // below.\n\n var basicTokens = {\n \".\": TOK_DOT,\n \"*\": TOK_STAR,\n \",\": TOK_COMMA,\n \":\": TOK_COLON,\n \"{\": TOK_LBRACE,\n \"}\": TOK_RBRACE,\n \"]\": TOK_RBRACKET,\n \"(\": TOK_LPAREN,\n \")\": TOK_RPAREN,\n \"@\": TOK_CURRENT\n };\n\n var operatorStartToken = {\n \"<\": true,\n \">\": true,\n \"=\": true,\n \"!\": true\n };\n\n var skipChars = {\n \" \": true,\n \"\\t\": true,\n \"\\n\": true\n };\n\n\n function isAlpha(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n ch === \"_\";\n }\n\n function isNum(ch) {\n return (ch >= \"0\" && ch <= \"9\") ||\n ch === \"-\";\n }\n function isAlphaNum(ch) {\n return (ch >= \"a\" && ch <= \"z\") ||\n (ch >= \"A\" && ch <= \"Z\") ||\n (ch >= \"0\" && ch <= \"9\") ||\n ch === \"_\";\n }\n\n function Lexer() {\n }\n Lexer.prototype = {\n tokenize: function(stream) {\n var tokens = [];\n this._current = 0;\n var start;\n var identifier;\n var token;\n while (this._current < stream.length) {\n if (isAlpha(stream[this._current])) {\n start = this._current;\n identifier = this._consumeUnquotedIdentifier(stream);\n tokens.push({type: TOK_UNQUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (basicTokens[stream[this._current]] !== undefined) {\n tokens.push({type: basicTokens[stream[this._current]],\n value: stream[this._current],\n start: this._current});\n this._current++;\n } else if (isNum(stream[this._current])) {\n token = this._consumeNumber(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"[\") {\n // No need to increment this._current. This happens\n // in _consumeLBracket\n token = this._consumeLBracket(stream);\n tokens.push(token);\n } else if (stream[this._current] === \"\\\"\") {\n start = this._current;\n identifier = this._consumeQuotedIdentifier(stream);\n tokens.push({type: TOK_QUOTEDIDENTIFIER,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"'\") {\n start = this._current;\n identifier = this._consumeRawStringLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: identifier,\n start: start});\n } else if (stream[this._current] === \"`\") {\n start = this._current;\n var literal = this._consumeLiteral(stream);\n tokens.push({type: TOK_LITERAL,\n value: literal,\n start: start});\n } else if (operatorStartToken[stream[this._current]] !== undefined) {\n tokens.push(this._consumeOperator(stream));\n } else if (skipChars[stream[this._current]] !== undefined) {\n // Ignore whitespace.\n this._current++;\n } else if (stream[this._current] === \"&\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"&\") {\n this._current++;\n tokens.push({type: TOK_AND, value: \"&&\", start: start});\n } else {\n tokens.push({type: TOK_EXPREF, value: \"&\", start: start});\n }\n } else if (stream[this._current] === \"|\") {\n start = this._current;\n this._current++;\n if (stream[this._current] === \"|\") {\n this._current++;\n tokens.push({type: TOK_OR, value: \"||\", start: start});\n } else {\n tokens.push({type: TOK_PIPE, value: \"|\", start: start});\n }\n } else {\n var error = new Error(\"Unknown character:\" + stream[this._current]);\n error.name = \"LexerError\";\n throw error;\n }\n }\n return tokens;\n },\n\n _consumeUnquotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n while (this._current < stream.length && isAlphaNum(stream[this._current])) {\n this._current++;\n }\n return stream.slice(start, this._current);\n },\n\n _consumeQuotedIdentifier: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"\\\"\" && this._current < maxLength) {\n // You can escape a double quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"\\\"\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n return JSON.parse(stream.slice(start, this._current));\n },\n\n _consumeRawStringLiteral: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (stream[this._current] !== \"'\" && this._current < maxLength) {\n // You can escape a single quote and you can escape an escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"'\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n this._current++;\n var literal = stream.slice(start + 1, this._current - 1);\n return literal.replace(\"\\\\'\", \"'\");\n },\n\n _consumeNumber: function(stream) {\n var start = this._current;\n this._current++;\n var maxLength = stream.length;\n while (isNum(stream[this._current]) && this._current < maxLength) {\n this._current++;\n }\n var value = parseInt(stream.slice(start, this._current));\n return {type: TOK_NUMBER, value: value, start: start};\n },\n\n _consumeLBracket: function(stream) {\n var start = this._current;\n this._current++;\n if (stream[this._current] === \"?\") {\n this._current++;\n return {type: TOK_FILTER, value: \"[?\", start: start};\n } else if (stream[this._current] === \"]\") {\n this._current++;\n return {type: TOK_FLATTEN, value: \"[]\", start: start};\n } else {\n return {type: TOK_LBRACKET, value: \"[\", start: start};\n }\n },\n\n _consumeOperator: function(stream) {\n var start = this._current;\n var startingChar = stream[start];\n this._current++;\n if (startingChar === \"!\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_NE, value: \"!=\", start: start};\n } else {\n return {type: TOK_NOT, value: \"!\", start: start};\n }\n } else if (startingChar === \"<\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_LTE, value: \"<=\", start: start};\n } else {\n return {type: TOK_LT, value: \"<\", start: start};\n }\n } else if (startingChar === \">\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_GTE, value: \">=\", start: start};\n } else {\n return {type: TOK_GT, value: \">\", start: start};\n }\n } else if (startingChar === \"=\") {\n if (stream[this._current] === \"=\") {\n this._current++;\n return {type: TOK_EQ, value: \"==\", start: start};\n }\n }\n },\n\n _consumeLiteral: function(stream) {\n this._current++;\n var start = this._current;\n var maxLength = stream.length;\n var literal;\n while(stream[this._current] !== \"`\" && this._current < maxLength) {\n // You can escape a literal char or you can escape the escape.\n var current = this._current;\n if (stream[current] === \"\\\\\" && (stream[current + 1] === \"\\\\\" ||\n stream[current + 1] === \"`\")) {\n current += 2;\n } else {\n current++;\n }\n this._current = current;\n }\n var literalString = trimLeft(stream.slice(start, this._current));\n literalString = literalString.replace(\"\\\\`\", \"`\");\n if (this._looksLikeJSON(literalString)) {\n literal = JSON.parse(literalString);\n } else {\n // Try to JSON parse it as \"\"\n literal = JSON.parse(\"\\\"\" + literalString + \"\\\"\");\n }\n // +1 gets us to the ending \"`\", +1 to move on to the next char.\n this._current++;\n return literal;\n },\n\n _looksLikeJSON: function(literalString) {\n var startingChars = \"[{\\\"\";\n var jsonLiterals = [\"true\", \"false\", \"null\"];\n var numberLooking = \"-0123456789\";\n\n if (literalString === \"\") {\n return false;\n } else if (startingChars.indexOf(literalString[0]) >= 0) {\n return true;\n } else if (jsonLiterals.indexOf(literalString) >= 0) {\n return true;\n } else if (numberLooking.indexOf(literalString[0]) >= 0) {\n try {\n JSON.parse(literalString);\n return true;\n } catch (ex) {\n return false;\n }\n } else {\n return false;\n }\n }\n };\n\n var bindingPower = {};\n bindingPower[TOK_EOF] = 0;\n bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_QUOTEDIDENTIFIER] = 0;\n bindingPower[TOK_RBRACKET] = 0;\n bindingPower[TOK_RPAREN] = 0;\n bindingPower[TOK_COMMA] = 0;\n bindingPower[TOK_RBRACE] = 0;\n bindingPower[TOK_NUMBER] = 0;\n bindingPower[TOK_CURRENT] = 0;\n bindingPower[TOK_EXPREF] = 0;\n bindingPower[TOK_PIPE] = 1;\n bindingPower[TOK_OR] = 2;\n bindingPower[TOK_AND] = 3;\n bindingPower[TOK_EQ] = 5;\n bindingPower[TOK_GT] = 5;\n bindingPower[TOK_LT] = 5;\n bindingPower[TOK_GTE] = 5;\n bindingPower[TOK_LTE] = 5;\n bindingPower[TOK_NE] = 5;\n bindingPower[TOK_FLATTEN] = 9;\n bindingPower[TOK_STAR] = 20;\n bindingPower[TOK_FILTER] = 21;\n bindingPower[TOK_DOT] = 40;\n bindingPower[TOK_NOT] = 45;\n bindingPower[TOK_LBRACE] = 50;\n bindingPower[TOK_LBRACKET] = 55;\n bindingPower[TOK_LPAREN] = 60;\n\n function Parser() {\n }\n\n Parser.prototype = {\n parse: function(expression) {\n this._loadTokens(expression);\n this.index = 0;\n var ast = this.expression(0);\n if (this._lookahead(0) !== TOK_EOF) {\n var t = this._lookaheadToken(0);\n var error = new Error(\n \"Unexpected token type: \" + t.type + \", value: \" + t.value);\n error.name = \"ParserError\";\n throw error;\n }\n return ast;\n },\n\n _loadTokens: function(expression) {\n var lexer = new Lexer();\n var tokens = lexer.tokenize(expression);\n tokens.push({type: TOK_EOF, value: \"\", start: expression.length});\n this.tokens = tokens;\n },\n\n expression: function(rbp) {\n var leftToken = this._lookaheadToken(0);\n this._advance();\n var left = this.nud(leftToken);\n var currentToken = this._lookahead(0);\n while (rbp < bindingPower[currentToken]) {\n this._advance();\n left = this.led(currentToken, left);\n currentToken = this._lookahead(0);\n }\n return left;\n },\n\n _lookahead: function(number) {\n return this.tokens[this.index + number].type;\n },\n\n _lookaheadToken: function(number) {\n return this.tokens[this.index + number];\n },\n\n _advance: function() {\n this.index++;\n },\n\n nud: function(token) {\n var left;\n var right;\n var expression;\n switch (token.type) {\n case TOK_LITERAL:\n return {type: \"Literal\", value: token.value};\n case TOK_UNQUOTEDIDENTIFIER:\n return {type: \"Field\", name: token.value};\n case TOK_QUOTEDIDENTIFIER:\n var node = {type: \"Field\", name: token.value};\n if (this._lookahead(0) === TOK_LPAREN) {\n throw new Error(\"Quoted identifier not allowed for function names.\");\n }\n return node;\n case TOK_NOT:\n right = this.expression(bindingPower.Not);\n return {type: \"NotExpression\", children: [right]};\n case TOK_STAR:\n left = {type: \"Identity\"};\n right = null;\n if (this._lookahead(0) === TOK_RBRACKET) {\n // This can happen in a multiselect,\n // [a, b, *]\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Star);\n }\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_FILTER:\n return this.led(token.type, {type: \"Identity\"});\n case TOK_LBRACE:\n return this._parseMultiselectHash();\n case TOK_FLATTEN:\n left = {type: TOK_FLATTEN, children: [{type: \"Identity\"}]};\n right = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [left, right]};\n case TOK_LBRACKET:\n if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice({type: \"Identity\"}, right);\n } else if (this._lookahead(0) === TOK_STAR &&\n this._lookahead(1) === TOK_RBRACKET) {\n this._advance();\n this._advance();\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\",\n children: [{type: \"Identity\"}, right]};\n }\n return this._parseMultiselectList();\n case TOK_CURRENT:\n return {type: TOK_CURRENT};\n case TOK_EXPREF:\n expression = this.expression(bindingPower.Expref);\n return {type: \"ExpressionReference\", children: [expression]};\n case TOK_LPAREN:\n var args = [];\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n return args[0];\n default:\n this._errorToken(token);\n }\n },\n\n led: function(tokenName, left) {\n var right;\n switch(tokenName) {\n case TOK_DOT:\n var rbp = bindingPower.Dot;\n if (this._lookahead(0) !== TOK_STAR) {\n right = this._parseDotRHS(rbp);\n return {type: \"Subexpression\", children: [left, right]};\n }\n // Creating a projection.\n this._advance();\n right = this._parseProjectionRHS(rbp);\n return {type: \"ValueProjection\", children: [left, right]};\n case TOK_PIPE:\n right = this.expression(bindingPower.Pipe);\n return {type: TOK_PIPE, children: [left, right]};\n case TOK_OR:\n right = this.expression(bindingPower.Or);\n return {type: \"OrExpression\", children: [left, right]};\n case TOK_AND:\n right = this.expression(bindingPower.And);\n return {type: \"AndExpression\", children: [left, right]};\n case TOK_LPAREN:\n var name = left.name;\n var args = [];\n var expression, node;\n while (this._lookahead(0) !== TOK_RPAREN) {\n if (this._lookahead(0) === TOK_CURRENT) {\n expression = {type: TOK_CURRENT};\n this._advance();\n } else {\n expression = this.expression(0);\n }\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n }\n args.push(expression);\n }\n this._match(TOK_RPAREN);\n node = {type: \"Function\", name: name, children: args};\n return node;\n case TOK_FILTER:\n var condition = this.expression(0);\n this._match(TOK_RBRACKET);\n if (this._lookahead(0) === TOK_FLATTEN) {\n right = {type: \"Identity\"};\n } else {\n right = this._parseProjectionRHS(bindingPower.Filter);\n }\n return {type: \"FilterProjection\", children: [left, right, condition]};\n case TOK_FLATTEN:\n var leftNode = {type: TOK_FLATTEN, children: [left]};\n var rightNode = this._parseProjectionRHS(bindingPower.Flatten);\n return {type: \"Projection\", children: [leftNode, rightNode]};\n case TOK_EQ:\n case TOK_NE:\n case TOK_GT:\n case TOK_GTE:\n case TOK_LT:\n case TOK_LTE:\n return this._parseComparator(left, tokenName);\n case TOK_LBRACKET:\n var token = this._lookaheadToken(0);\n if (token.type === TOK_NUMBER || token.type === TOK_COLON) {\n right = this._parseIndexExpression();\n return this._projectIfSlice(left, right);\n }\n this._match(TOK_STAR);\n this._match(TOK_RBRACKET);\n right = this._parseProjectionRHS(bindingPower.Star);\n return {type: \"Projection\", children: [left, right]};\n default:\n this._errorToken(this._lookaheadToken(0));\n }\n },\n\n _match: function(tokenType) {\n if (this._lookahead(0) === tokenType) {\n this._advance();\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Expected \" + tokenType + \", got: \" + t.type);\n error.name = \"ParserError\";\n throw error;\n }\n },\n\n _errorToken: function(token) {\n var error = new Error(\"Invalid token (\" +\n token.type + \"): \\\"\" +\n token.value + \"\\\"\");\n error.name = \"ParserError\";\n throw error;\n },\n\n\n _parseIndexExpression: function() {\n if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) {\n return this._parseSliceExpression();\n } else {\n var node = {\n type: \"Index\",\n value: this._lookaheadToken(0).value};\n this._advance();\n this._match(TOK_RBRACKET);\n return node;\n }\n },\n\n _projectIfSlice: function(left, right) {\n var indexExpr = {type: \"IndexExpression\", children: [left, right]};\n if (right.type === \"Slice\") {\n return {\n type: \"Projection\",\n children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)]\n };\n } else {\n return indexExpr;\n }\n },\n\n _parseSliceExpression: function() {\n // [start:end:step] where each part is optional, as well as the last\n // colon.\n var parts = [null, null, null];\n var index = 0;\n var currentToken = this._lookahead(0);\n while (currentToken !== TOK_RBRACKET && index < 3) {\n if (currentToken === TOK_COLON) {\n index++;\n this._advance();\n } else if (currentToken === TOK_NUMBER) {\n parts[index] = this._lookaheadToken(0).value;\n this._advance();\n } else {\n var t = this._lookahead(0);\n var error = new Error(\"Syntax error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"Parsererror\";\n throw error;\n }\n currentToken = this._lookahead(0);\n }\n this._match(TOK_RBRACKET);\n return {\n type: \"Slice\",\n children: parts\n };\n },\n\n _parseComparator: function(left, comparator) {\n var right = this.expression(bindingPower[comparator]);\n return {type: \"Comparator\", name: comparator, children: [left, right]};\n },\n\n _parseDotRHS: function(rbp) {\n var lookahead = this._lookahead(0);\n var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR];\n if (exprTokens.indexOf(lookahead) >= 0) {\n return this.expression(rbp);\n } else if (lookahead === TOK_LBRACKET) {\n this._match(TOK_LBRACKET);\n return this._parseMultiselectList();\n } else if (lookahead === TOK_LBRACE) {\n this._match(TOK_LBRACE);\n return this._parseMultiselectHash();\n }\n },\n\n _parseProjectionRHS: function(rbp) {\n var right;\n if (bindingPower[this._lookahead(0)] < 10) {\n right = {type: \"Identity\"};\n } else if (this._lookahead(0) === TOK_LBRACKET) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_FILTER) {\n right = this.expression(rbp);\n } else if (this._lookahead(0) === TOK_DOT) {\n this._match(TOK_DOT);\n right = this._parseDotRHS(rbp);\n } else {\n var t = this._lookaheadToken(0);\n var error = new Error(\"Sytanx error, unexpected token: \" +\n t.value + \"(\" + t.type + \")\");\n error.name = \"ParserError\";\n throw error;\n }\n return right;\n },\n\n _parseMultiselectList: function() {\n var expressions = [];\n while (this._lookahead(0) !== TOK_RBRACKET) {\n var expression = this.expression(0);\n expressions.push(expression);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n if (this._lookahead(0) === TOK_RBRACKET) {\n throw new Error(\"Unexpected token Rbracket\");\n }\n }\n }\n this._match(TOK_RBRACKET);\n return {type: \"MultiSelectList\", children: expressions};\n },\n\n _parseMultiselectHash: function() {\n var pairs = [];\n var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER];\n var keyToken, keyName, value, node;\n for (;;) {\n keyToken = this._lookaheadToken(0);\n if (identifierTypes.indexOf(keyToken.type) < 0) {\n throw new Error(\"Expecting an identifier token, got: \" +\n keyToken.type);\n }\n keyName = keyToken.value;\n this._advance();\n this._match(TOK_COLON);\n value = this.expression(0);\n node = {type: \"KeyValuePair\", name: keyName, value: value};\n pairs.push(node);\n if (this._lookahead(0) === TOK_COMMA) {\n this._match(TOK_COMMA);\n } else if (this._lookahead(0) === TOK_RBRACE) {\n this._match(TOK_RBRACE);\n break;\n }\n }\n return {type: \"MultiSelectHash\", children: pairs};\n }\n };\n\n\n function TreeInterpreter(runtime) {\n this.runtime = runtime;\n }\n\n TreeInterpreter.prototype = {\n search: function(node, value) {\n return this.visit(node, value);\n },\n\n visit: function(node, value) {\n var matched, current, result, first, second, field, left, right, collected, i;\n switch (node.type) {\n case \"Field\":\n if (value !== null && isObject(value)) {\n field = value[node.name];\n if (field === undefined) {\n return null;\n } else {\n return field;\n }\n }\n return null;\n case \"Subexpression\":\n result = this.visit(node.children[0], value);\n for (i = 1; i < node.children.length; i++) {\n result = this.visit(node.children[1], result);\n if (result === null) {\n return null;\n }\n }\n return result;\n case \"IndexExpression\":\n left = this.visit(node.children[0], value);\n right = this.visit(node.children[1], left);\n return right;\n case \"Index\":\n if (!isArray(value)) {\n return null;\n }\n var index = node.value;\n if (index < 0) {\n index = value.length + index;\n }\n result = value[index];\n if (result === undefined) {\n result = null;\n }\n return result;\n case \"Slice\":\n if (!isArray(value)) {\n return null;\n }\n var sliceParams = node.children.slice(0);\n var computed = this.computeSliceParams(value.length, sliceParams);\n var start = computed[0];\n var stop = computed[1];\n var step = computed[2];\n result = [];\n if (step > 0) {\n for (i = start; i < stop; i += step) {\n result.push(value[i]);\n }\n } else {\n for (i = start; i > stop; i += step) {\n result.push(value[i]);\n }\n }\n return result;\n case \"Projection\":\n // Evaluate left child.\n var base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n collected = [];\n for (i = 0; i < base.length; i++) {\n current = this.visit(node.children[1], base[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"ValueProjection\":\n // Evaluate left child.\n base = this.visit(node.children[0], value);\n if (!isObject(base)) {\n return null;\n }\n collected = [];\n var values = objValues(base);\n for (i = 0; i < values.length; i++) {\n current = this.visit(node.children[1], values[i]);\n if (current !== null) {\n collected.push(current);\n }\n }\n return collected;\n case \"FilterProjection\":\n base = this.visit(node.children[0], value);\n if (!isArray(base)) {\n return null;\n }\n var filtered = [];\n var finalResults = [];\n for (i = 0; i < base.length; i++) {\n matched = this.visit(node.children[2], base[i]);\n if (!isFalse(matched)) {\n filtered.push(base[i]);\n }\n }\n for (var j = 0; j < filtered.length; j++) {\n current = this.visit(node.children[1], filtered[j]);\n if (current !== null) {\n finalResults.push(current);\n }\n }\n return finalResults;\n case \"Comparator\":\n first = this.visit(node.children[0], value);\n second = this.visit(node.children[1], value);\n switch(node.name) {\n case TOK_EQ:\n result = strictDeepEqual(first, second);\n break;\n case TOK_NE:\n result = !strictDeepEqual(first, second);\n break;\n case TOK_GT:\n result = first > second;\n break;\n case TOK_GTE:\n result = first >= second;\n break;\n case TOK_LT:\n result = first < second;\n break;\n case TOK_LTE:\n result = first <= second;\n break;\n default:\n throw new Error(\"Unknown comparator: \" + node.name);\n }\n return result;\n case TOK_FLATTEN:\n var original = this.visit(node.children[0], value);\n if (!isArray(original)) {\n return null;\n }\n var merged = [];\n for (i = 0; i < original.length; i++) {\n current = original[i];\n if (isArray(current)) {\n merged.push.apply(merged, current);\n } else {\n merged.push(current);\n }\n }\n return merged;\n case \"Identity\":\n return value;\n case \"MultiSelectList\":\n if (value === null) {\n return null;\n }\n collected = [];\n for (i = 0; i < node.children.length; i++) {\n collected.push(this.visit(node.children[i], value));\n }\n return collected;\n case \"MultiSelectHash\":\n if (value === null) {\n return null;\n }\n collected = {};\n var child;\n for (i = 0; i < node.children.length; i++) {\n child = node.children[i];\n collected[child.name] = this.visit(child.value, value);\n }\n return collected;\n case \"OrExpression\":\n matched = this.visit(node.children[0], value);\n if (isFalse(matched)) {\n matched = this.visit(node.children[1], value);\n }\n return matched;\n case \"AndExpression\":\n first = this.visit(node.children[0], value);\n\n if (isFalse(first) === true) {\n return first;\n }\n return this.visit(node.children[1], value);\n case \"NotExpression\":\n first = this.visit(node.children[0], value);\n return isFalse(first);\n case \"Literal\":\n return node.value;\n case TOK_PIPE:\n left = this.visit(node.children[0], value);\n return this.visit(node.children[1], left);\n case TOK_CURRENT:\n return value;\n case \"Function\":\n var resolvedArgs = [];\n for (i = 0; i < node.children.length; i++) {\n resolvedArgs.push(this.visit(node.children[i], value));\n }\n return this.runtime.callFunction(node.name, resolvedArgs);\n case \"ExpressionReference\":\n var refNode = node.children[0];\n // Tag the node with a specific attribute so the type\n // checker verify the type.\n refNode.jmespathType = TOK_EXPREF;\n return refNode;\n default:\n throw new Error(\"Unknown node type: \" + node.type);\n }\n },\n\n computeSliceParams: function(arrayLength, sliceParams) {\n var start = sliceParams[0];\n var stop = sliceParams[1];\n var step = sliceParams[2];\n var computed = [null, null, null];\n if (step === null) {\n step = 1;\n } else if (step === 0) {\n var error = new Error(\"Invalid slice, step cannot be 0\");\n error.name = \"RuntimeError\";\n throw error;\n }\n var stepValueNegative = step < 0 ? true : false;\n\n if (start === null) {\n start = stepValueNegative ? arrayLength - 1 : 0;\n } else {\n start = this.capSliceRange(arrayLength, start, step);\n }\n\n if (stop === null) {\n stop = stepValueNegative ? -1 : arrayLength;\n } else {\n stop = this.capSliceRange(arrayLength, stop, step);\n }\n computed[0] = start;\n computed[1] = stop;\n computed[2] = step;\n return computed;\n },\n\n capSliceRange: function(arrayLength, actualValue, step) {\n if (actualValue < 0) {\n actualValue += arrayLength;\n if (actualValue < 0) {\n actualValue = step < 0 ? -1 : 0;\n }\n } else if (actualValue >= arrayLength) {\n actualValue = step < 0 ? arrayLength - 1 : arrayLength;\n }\n return actualValue;\n }\n\n };\n\n function Runtime(interpreter) {\n this._interpreter = interpreter;\n this.functionTable = {\n // name: [function, ]\n // The can be:\n //\n // {\n // args: [[type1, type2], [type1, type2]],\n // variadic: true|false\n // }\n //\n // Each arg in the arg list is a list of valid types\n // (if the function is overloaded and supports multiple\n // types. If the type is \"any\" then no type checking\n // occurs on the argument. Variadic is optional\n // and if not provided is assumed to be false.\n abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]},\n avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]},\n contains: {\n _func: this._functionContains,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]},\n {types: [TYPE_ANY]}]},\n \"ends_with\": {\n _func: this._functionEndsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]},\n length: {\n _func: this._functionLength,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]},\n map: {\n _func: this._functionMap,\n _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]},\n max: {\n _func: this._functionMax,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"merge\": {\n _func: this._functionMerge,\n _signature: [{types: [TYPE_OBJECT], variadic: true}]\n },\n \"max_by\": {\n _func: this._functionMaxBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]},\n \"starts_with\": {\n _func: this._functionStartsWith,\n _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]},\n min: {\n _func: this._functionMin,\n _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]},\n \"min_by\": {\n _func: this._functionMinBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]},\n keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]},\n values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]},\n sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]},\n \"sort_by\": {\n _func: this._functionSortBy,\n _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}]\n },\n join: {\n _func: this._functionJoin,\n _signature: [\n {types: [TYPE_STRING]},\n {types: [TYPE_ARRAY_STRING]}\n ]\n },\n reverse: {\n _func: this._functionReverse,\n _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]},\n \"to_array\": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]},\n \"to_string\": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]},\n \"to_number\": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]},\n \"not_null\": {\n _func: this._functionNotNull,\n _signature: [{types: [TYPE_ANY], variadic: true}]\n }\n };\n }\n\n Runtime.prototype = {\n callFunction: function(name, resolvedArgs) {\n var functionEntry = this.functionTable[name];\n if (functionEntry === undefined) {\n throw new Error(\"Unknown function: \" + name + \"()\");\n }\n this._validateArgs(name, resolvedArgs, functionEntry._signature);\n return functionEntry._func.call(this, resolvedArgs);\n },\n\n _validateArgs: function(name, args, signature) {\n // Validating the args requires validating\n // the correct arity and the correct type of each arg.\n // If the last argument is declared as variadic, then we need\n // a minimum number of args to be required. Otherwise it has to\n // be an exact amount.\n var pluralized;\n if (signature[signature.length - 1].variadic) {\n if (args.length < signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes at least\" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n } else if (args.length !== signature.length) {\n pluralized = signature.length === 1 ? \" argument\" : \" arguments\";\n throw new Error(\"ArgumentError: \" + name + \"() \" +\n \"takes \" + signature.length + pluralized +\n \" but received \" + args.length);\n }\n var currentSpec;\n var actualType;\n var typeMatched;\n for (var i = 0; i < signature.length; i++) {\n typeMatched = false;\n currentSpec = signature[i].types;\n actualType = this._getTypeName(args[i]);\n for (var j = 0; j < currentSpec.length; j++) {\n if (this._typeMatches(actualType, currentSpec[j], args[i])) {\n typeMatched = true;\n break;\n }\n }\n if (!typeMatched) {\n var expected = currentSpec\n .map(function(typeIdentifier) {\n return TYPE_NAME_TABLE[typeIdentifier];\n })\n .join(',');\n throw new Error(\"TypeError: \" + name + \"() \" +\n \"expected argument \" + (i + 1) +\n \" to be type \" + expected +\n \" but received type \" +\n TYPE_NAME_TABLE[actualType] + \" instead.\");\n }\n }\n },\n\n _typeMatches: function(actual, expected, argValue) {\n if (expected === TYPE_ANY) {\n return true;\n }\n if (expected === TYPE_ARRAY_STRING ||\n expected === TYPE_ARRAY_NUMBER ||\n expected === TYPE_ARRAY) {\n // The expected type can either just be array,\n // or it can require a specific subtype (array of numbers).\n //\n // The simplest case is if \"array\" with no subtype is specified.\n if (expected === TYPE_ARRAY) {\n return actual === TYPE_ARRAY;\n } else if (actual === TYPE_ARRAY) {\n // Otherwise we need to check subtypes.\n // I think this has potential to be improved.\n var subtype;\n if (expected === TYPE_ARRAY_NUMBER) {\n subtype = TYPE_NUMBER;\n } else if (expected === TYPE_ARRAY_STRING) {\n subtype = TYPE_STRING;\n }\n for (var i = 0; i < argValue.length; i++) {\n if (!this._typeMatches(\n this._getTypeName(argValue[i]), subtype,\n argValue[i])) {\n return false;\n }\n }\n return true;\n }\n } else {\n return actual === expected;\n }\n },\n _getTypeName: function(obj) {\n switch (Object.prototype.toString.call(obj)) {\n case \"[object String]\":\n return TYPE_STRING;\n case \"[object Number]\":\n return TYPE_NUMBER;\n case \"[object Array]\":\n return TYPE_ARRAY;\n case \"[object Boolean]\":\n return TYPE_BOOLEAN;\n case \"[object Null]\":\n return TYPE_NULL;\n case \"[object Object]\":\n // Check if it's an expref. If it has, it's been\n // tagged with a jmespathType attr of 'Expref';\n if (obj.jmespathType === TOK_EXPREF) {\n return TYPE_EXPREF;\n } else {\n return TYPE_OBJECT;\n }\n }\n },\n\n _functionStartsWith: function(resolvedArgs) {\n return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0;\n },\n\n _functionEndsWith: function(resolvedArgs) {\n var searchStr = resolvedArgs[0];\n var suffix = resolvedArgs[1];\n return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1;\n },\n\n _functionReverse: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n if (typeName === TYPE_STRING) {\n var originalStr = resolvedArgs[0];\n var reversedStr = \"\";\n for (var i = originalStr.length - 1; i >= 0; i--) {\n reversedStr += originalStr[i];\n }\n return reversedStr;\n } else {\n var reversedArray = resolvedArgs[0].slice(0);\n reversedArray.reverse();\n return reversedArray;\n }\n },\n\n _functionAbs: function(resolvedArgs) {\n return Math.abs(resolvedArgs[0]);\n },\n\n _functionCeil: function(resolvedArgs) {\n return Math.ceil(resolvedArgs[0]);\n },\n\n _functionAvg: function(resolvedArgs) {\n var sum = 0;\n var inputArray = resolvedArgs[0];\n for (var i = 0; i < inputArray.length; i++) {\n sum += inputArray[i];\n }\n return sum / inputArray.length;\n },\n\n _functionContains: function(resolvedArgs) {\n return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0;\n },\n\n _functionFloor: function(resolvedArgs) {\n return Math.floor(resolvedArgs[0]);\n },\n\n _functionLength: function(resolvedArgs) {\n if (!isObject(resolvedArgs[0])) {\n return resolvedArgs[0].length;\n } else {\n // As far as I can tell, there's no way to get the length\n // of an object without O(n) iteration through the object.\n return Object.keys(resolvedArgs[0]).length;\n }\n },\n\n _functionMap: function(resolvedArgs) {\n var mapped = [];\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[0];\n var elements = resolvedArgs[1];\n for (var i = 0; i < elements.length; i++) {\n mapped.push(interpreter.visit(exprefNode, elements[i]));\n }\n return mapped;\n },\n\n _functionMerge: function(resolvedArgs) {\n var merged = {};\n for (var i = 0; i < resolvedArgs.length; i++) {\n var current = resolvedArgs[i];\n for (var key in current) {\n merged[key] = current[key];\n }\n }\n return merged;\n },\n\n _functionMax: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.max.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var maxElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (maxElement.localeCompare(elements[i]) < 0) {\n maxElement = elements[i];\n }\n }\n return maxElement;\n }\n } else {\n return null;\n }\n },\n\n _functionMin: function(resolvedArgs) {\n if (resolvedArgs[0].length > 0) {\n var typeName = this._getTypeName(resolvedArgs[0][0]);\n if (typeName === TYPE_NUMBER) {\n return Math.min.apply(Math, resolvedArgs[0]);\n } else {\n var elements = resolvedArgs[0];\n var minElement = elements[0];\n for (var i = 1; i < elements.length; i++) {\n if (elements[i].localeCompare(minElement) < 0) {\n minElement = elements[i];\n }\n }\n return minElement;\n }\n } else {\n return null;\n }\n },\n\n _functionSum: function(resolvedArgs) {\n var sum = 0;\n var listToSum = resolvedArgs[0];\n for (var i = 0; i < listToSum.length; i++) {\n sum += listToSum[i];\n }\n return sum;\n },\n\n _functionType: function(resolvedArgs) {\n switch (this._getTypeName(resolvedArgs[0])) {\n case TYPE_NUMBER:\n return \"number\";\n case TYPE_STRING:\n return \"string\";\n case TYPE_ARRAY:\n return \"array\";\n case TYPE_OBJECT:\n return \"object\";\n case TYPE_BOOLEAN:\n return \"boolean\";\n case TYPE_EXPREF:\n return \"expref\";\n case TYPE_NULL:\n return \"null\";\n }\n },\n\n _functionKeys: function(resolvedArgs) {\n return Object.keys(resolvedArgs[0]);\n },\n\n _functionValues: function(resolvedArgs) {\n var obj = resolvedArgs[0];\n var keys = Object.keys(obj);\n var values = [];\n for (var i = 0; i < keys.length; i++) {\n values.push(obj[keys[i]]);\n }\n return values;\n },\n\n _functionJoin: function(resolvedArgs) {\n var joinChar = resolvedArgs[0];\n var listJoin = resolvedArgs[1];\n return listJoin.join(joinChar);\n },\n\n _functionToArray: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) {\n return resolvedArgs[0];\n } else {\n return [resolvedArgs[0]];\n }\n },\n\n _functionToString: function(resolvedArgs) {\n if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) {\n return resolvedArgs[0];\n } else {\n return JSON.stringify(resolvedArgs[0]);\n }\n },\n\n _functionToNumber: function(resolvedArgs) {\n var typeName = this._getTypeName(resolvedArgs[0]);\n var convertedValue;\n if (typeName === TYPE_NUMBER) {\n return resolvedArgs[0];\n } else if (typeName === TYPE_STRING) {\n convertedValue = +resolvedArgs[0];\n if (!isNaN(convertedValue)) {\n return convertedValue;\n }\n }\n return null;\n },\n\n _functionNotNull: function(resolvedArgs) {\n for (var i = 0; i < resolvedArgs.length; i++) {\n if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) {\n return resolvedArgs[i];\n }\n }\n return null;\n },\n\n _functionSort: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n sortedArray.sort();\n return sortedArray;\n },\n\n _functionSortBy: function(resolvedArgs) {\n var sortedArray = resolvedArgs[0].slice(0);\n if (sortedArray.length === 0) {\n return sortedArray;\n }\n var interpreter = this._interpreter;\n var exprefNode = resolvedArgs[1];\n var requiredType = this._getTypeName(\n interpreter.visit(exprefNode, sortedArray[0]));\n if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) {\n throw new Error(\"TypeError\");\n }\n var that = this;\n // In order to get a stable sort out of an unstable\n // sort algorithm, we decorate/sort/undecorate (DSU)\n // by creating a new list of [index, element] pairs.\n // In the cmp function, if the evaluated elements are\n // equal, then the index will be used as the tiebreaker.\n // After the decorated list has been sorted, it will be\n // undecorated to extract the original elements.\n var decorated = [];\n for (var i = 0; i < sortedArray.length; i++) {\n decorated.push([i, sortedArray[i]]);\n }\n decorated.sort(function(a, b) {\n var exprA = interpreter.visit(exprefNode, a[1]);\n var exprB = interpreter.visit(exprefNode, b[1]);\n if (that._getTypeName(exprA) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprA));\n } else if (that._getTypeName(exprB) !== requiredType) {\n throw new Error(\n \"TypeError: expected \" + requiredType + \", received \" +\n that._getTypeName(exprB));\n }\n if (exprA > exprB) {\n return 1;\n } else if (exprA < exprB) {\n return -1;\n } else {\n // If they're equal compare the items by their\n // order to maintain relative order of equal keys\n // (i.e. to get a stable sort).\n return a[0] - b[0];\n }\n });\n // Undecorate: extract out the original list elements.\n for (var j = 0; j < decorated.length; j++) {\n sortedArray[j] = decorated[j][1];\n }\n return sortedArray;\n },\n\n _functionMaxBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var maxNumber = -Infinity;\n var maxRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current > maxNumber) {\n maxNumber = current;\n maxRecord = resolvedArray[i];\n }\n }\n return maxRecord;\n },\n\n _functionMinBy: function(resolvedArgs) {\n var exprefNode = resolvedArgs[1];\n var resolvedArray = resolvedArgs[0];\n var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]);\n var minNumber = Infinity;\n var minRecord;\n var current;\n for (var i = 0; i < resolvedArray.length; i++) {\n current = keyFunction(resolvedArray[i]);\n if (current < minNumber) {\n minNumber = current;\n minRecord = resolvedArray[i];\n }\n }\n return minRecord;\n },\n\n createKeyFunction: function(exprefNode, allowedTypes) {\n var that = this;\n var interpreter = this._interpreter;\n var keyFunc = function(x) {\n var current = interpreter.visit(exprefNode, x);\n if (allowedTypes.indexOf(that._getTypeName(current)) < 0) {\n var msg = \"TypeError: expected one of \" + allowedTypes +\n \", received \" + that._getTypeName(current);\n throw new Error(msg);\n }\n return current;\n };\n return keyFunc;\n }\n\n };\n\n function compile(stream) {\n var parser = new Parser();\n var ast = parser.parse(stream);\n return ast;\n }\n\n function tokenize(stream) {\n var lexer = new Lexer();\n return lexer.tokenize(stream);\n }\n\n function search(data, expression) {\n var parser = new Parser();\n // This needs to be improved. Both the interpreter and runtime depend on\n // each other. The runtime needs the interpreter to support exprefs.\n // There's likely a clean way to avoid the cyclic dependency.\n var runtime = new Runtime();\n var interpreter = new TreeInterpreter(runtime);\n runtime._interpreter = interpreter;\n var node = parser.parse(expression);\n return interpreter.search(node, data);\n }\n\n exports.tokenize = tokenize;\n exports.compile = compile;\n exports.search = search;\n exports.strictDeepEqual = strictDeepEqual;\n})(typeof exports === \"undefined\" ? this.jmespath = {} : exports);\n","var util = require('../util');\nvar property = util.property;\n\nfunction ResourceWaiter(name, waiter, options) {\n options = options || {};\n property(this, 'name', name);\n property(this, 'api', options.api, false);\n\n if (waiter.operation) {\n property(this, 'operation', util.string.lowerFirst(waiter.operation));\n }\n\n var self = this;\n var keys = [\n 'type',\n 'description',\n 'delay',\n 'maxAttempts',\n 'acceptors'\n ];\n\n keys.forEach(function(key) {\n var value = waiter[key];\n if (value) {\n property(self, key, value);\n }\n });\n}\n\n/**\n * @api private\n */\nmodule.exports = ResourceWaiter;\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\n'use strict';\n\nvar punycode = require('punycode');\nvar util = require('./util');\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n// define these here so at least they only have to be\n// compiled once on the first module load.\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^\\?\\s]*)(\\?[^\\s]*)?$/,\n\n // RFC 2396: characters reserved for delimiting URLs.\n // We actually just auto-escape these.\n delims = ['<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = ['{', '}', '|', '\\\\', '^', '`'].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n // Characters that are never ever allowed in a hostname.\n // Note that any invalid chars are also handled, but these\n // are the ones that are *expected* to be seen, so we fast-path\n // them.\n nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),\n hostEndingChars = ['/', '?', '#'],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n 'javascript': true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n 'http': true,\n 'https': true,\n 'ftp': true,\n 'gopher': true,\n 'file': true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('querystring');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && util.isObject(url) && url instanceof Url) return url;\n\n var u = new Url;\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {\n if (!util.isString(url)) {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n // Copy chrome, IE, opera backslash-handling behavior.\n // Back slashes before the query string get converted to forward slashes\n // See: https://code.google.com/p/chromium/issues/detail?id=25916\n var queryIndex = url.indexOf('?'),\n splitter =\n (queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n // trim before proceeding.\n // This is to support parse stuff like \" http://foo.com \\n\"\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n // figure out if it's got a host\n // user@server is *always* interpreted as a hostname, and url\n // resolution will treat //foo/bar as host=foo,path=bar because that's\n // how the browser resolves relative URLs.\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@\\/]+@[^@\\/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] &&\n (slashes || (proto && !slashedProtocol[proto]))) {\n\n // there's a hostname.\n // the first instance of /, ?, ;, or # ends the host.\n //\n // If there is an @ in the hostname, then non-host chars *are* allowed\n // to the left of the last @ sign, unless some host-ending character\n // comes *before* the @-sign.\n // URLs are obnoxious.\n //\n // ex:\n // http://a@b@c/ => user:a@b host:c\n // http://a@b?@c => user:a host:c path:/?@c\n\n // v0.12 TODO(isaacs): This is not quite how Chrome does things.\n // Review our test case against browsers more comprehensively.\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n\n // at this point, either we have an explicit point where the\n // auth portion cannot go past, or the last @ char is the decider.\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n // atSign must be in auth portion.\n // http://a@b/c@d => host:b auth:a path:/c@d\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n // Now we have a portion which is definitely the auth.\n // Pull that off.\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))\n hostEnd = hec;\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1)\n hostEnd = rest.length;\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n // we've indicated that there is a hostname,\n // so even if it's empty, it has to be present.\n this.hostname = this.hostname || '';\n\n // if hostname begins with [ and ends with ]\n // assume that it's an IPv6 address.\n var ipv6Hostname = this.hostname[0] === '[' &&\n this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) continue;\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n // we replace non-ASCII char with a temporary placeholder\n // we need this to make sure size of hostname is not\n // broken by replacing non-ASCII by nothing\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n // IDNA Support: Returns a punycoded representation of \"domain\".\n // It only converts parts of the domain name that\n // have non-ASCII characters, i.e. it doesn't matter if\n // you call it with a domain that already is ASCII-only.\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n // strip [ and ] from the hostname\n // the host field still retains them, though\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n // now rest is set to the post-host stuff.\n // chop off any delim chars.\n if (!unsafeProtocol[lowerProto]) {\n\n // First, make 100% sure that any \"autoEscape\" chars get\n // escaped, even if encodeURIComponent doesn't think they\n // need to be.\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1)\n continue;\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) this.pathname = rest;\n if (slashedProtocol[lowerProto] &&\n this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n //to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n // ensure it's an object, and not a string url.\n // If it's an obj, this is a no-op.\n // this way, you can call url_format() on strings\n // to clean up potentially wonky urls.\n if (util.isString(obj)) obj = urlParse(obj);\n if (!(obj instanceof Url)) return Url.prototype.format.call(obj);\n return obj.format();\n}\n\nUrl.prototype.format = function() {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ?\n this.hostname :\n '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query &&\n util.isObject(this.query) &&\n Object.keys(this.query).length) {\n query = querystring.stringify(this.query);\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') protocol += ':';\n\n // only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n // unless they had them to begin with.\n if (this.slashes ||\n (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') hash = '#' + hash;\n if (search && search.charAt(0) !== '?') search = '?' + search;\n\n pathname = pathname.replace(/[?#]/g, function(match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function(relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) return relative;\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function(relative) {\n if (util.isString(relative)) {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n // hash is always overridden, no matter what.\n // even href=\"\" will remove it.\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol')\n result[rkey] = relative[rkey];\n }\n\n //urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] &&\n result.hostname && !result.pathname) {\n result.path = result.pathname = '/';\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n // if it's a known url protocol, then changing\n // the protocol does weird things\n // first, if it's not file:, then we MUST have a host,\n // and if there was a path\n // to begin with, then we MUST have a path.\n // if it is file:, then the host is dropped,\n // because that's known to be hostless.\n // anything else is assumed to be absolute.\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift()));\n if (!relative.host) relative.host = '';\n if (!relative.hostname) relative.hostname = '';\n if (relPath[0] !== '') relPath.unshift('');\n if (relPath.length < 2) relPath.unshift('');\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),\n isRelAbs = (\n relative.host ||\n relative.pathname && relative.pathname.charAt(0) === '/'\n ),\n mustEndAbs = (isRelAbs || isSourceAbs ||\n (result.host && relative.pathname)),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n // if the url is a non-slashed url, then relative\n // links like ../.. should be able\n // to crawl up to the hostname, as well. This is strange.\n // result.protocol has already been set by now.\n // Later on, put the first path part into the host field.\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') srcPath[0] = result.host;\n else srcPath.unshift(result.host);\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') relPath[0] = relative.host;\n else relPath.unshift(relative.host);\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = (relative.host || relative.host === '') ?\n relative.host : result.host;\n result.hostname = (relative.hostname || relative.hostname === '') ?\n relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n // it's relative\n // throw away the existing file, and take the new path instead.\n if (!srcPath) srcPath = [];\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (!util.isNullOrUndefined(relative.search)) {\n // just pull out the search.\n // like href='?foo'.\n // Put this after the other two cases because it simplifies the booleans\n if (psychotic) {\n result.hostname = result.host = srcPath.shift();\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n //to support http.request\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n // no path at all. easy.\n // we've already handled the other stuff above.\n result.pathname = null;\n //to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n // if a url ENDs in . or .., then it must get a trailing slash.\n // however, if it ends in anything else non-slashy,\n // then it must NOT get a trailing slash.\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (\n (result.host || relative.host || srcPath.length > 1) &&\n (last === '.' || last === '..') || last === '');\n\n // strip single dots, resolve double dots to parent dir\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' &&\n (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' ||\n (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = result.host = isAbsolute ? '' :\n srcPath.length ? srcPath.shift() : '';\n //occationaly the auth can get stuck only in host\n //this especially happens in cases like\n //url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n var authInHost = result.host && result.host.indexOf('@') > 0 ?\n result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.host = result.hostname = authInHost.shift();\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (!srcPath.length) {\n result.pathname = null;\n result.path = null;\n } else {\n result.pathname = srcPath.join('/');\n }\n\n //to support request.http\n if (!util.isNull(result.pathname) || !util.isNull(result.search)) {\n result.path = (result.pathname ? result.pathname : '') +\n (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function() {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) this.hostname = host;\n};\n","var toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar replace = ''.replace;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['directconnect'] = {};\nAWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']);\nObject.defineProperty(apiLoader.services['directconnect'], '2012-10-25', {\n get: function get() {\n var model = require('../apis/directconnect-2012-10-25.min.json');\n model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DirectConnect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['translate'] = {};\nAWS.Translate = Service.defineService('translate', ['2017-07-01']);\nObject.defineProperty(apiLoader.services['translate'], '2017-07-01', {\n get: function get() {\n var model = require('../apis/translate-2017-07-01.min.json');\n model.paginators = require('../apis/translate-2017-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Translate;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iam'] = {};\nAWS.IAM = Service.defineService('iam', ['2010-05-08']);\nObject.defineProperty(apiLoader.services['iam'], '2010-05-08', {\n get: function get() {\n var model = require('../apis/iam-2010-05-08.min.json');\n model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination;\n model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IAM;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n if (!date) date = AWS.util.date.getDate();\n\n var r = this.request;\n\n r.params.Timestamp = AWS.util.date.iso8601(date);\n r.params.SignatureVersion = '2';\n r.params.SignatureMethod = 'HmacSHA256';\n r.params.AWSAccessKeyId = credentials.accessKeyId;\n\n if (credentials.sessionToken) {\n r.params.SecurityToken = credentials.sessionToken;\n }\n\n delete r.params.Signature; // delete old Signature for re-signing\n r.params.Signature = this.signature(credentials);\n\n r.body = AWS.util.queryParamsToString(r.params);\n r.headers['Content-Length'] = r.body.length;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push(this.request.endpoint.host.toLowerCase());\n parts.push(this.request.pathname());\n parts.push(AWS.util.queryParamsToString(this.request.params));\n return parts.join('\\n');\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsmv2'] = {};\nAWS.CloudHSMV2 = Service.defineService('cloudhsmv2', ['2017-04-28']);\nObject.defineProperty(apiLoader.services['cloudhsmv2'], '2017-04-28', {\n get: function get() {\n var model = require('../apis/cloudhsmv2-2017-04-28.min.json');\n model.paginators = require('../apis/cloudhsmv2-2017-04-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSMV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodbstreams'] = {};\nAWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']);\nObject.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/streams.dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/streams.dynamodb-2012-08-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDBStreams;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['apigateway'] = {};\nAWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']);\nrequire('../lib/services/apigateway');\nObject.defineProperty(apiLoader.services['apigateway'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/apigateway-2015-07-09.min.json');\n model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.APIGateway;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LRU_1 = require(\"./utils/LRU\");\nvar CACHE_SIZE = 1000;\n/**\n * Inspired node-lru-cache[https://github.com/isaacs/node-lru-cache]\n */\nvar EndpointCache = /** @class */ (function () {\n function EndpointCache(maxSize) {\n if (maxSize === void 0) { maxSize = CACHE_SIZE; }\n this.maxSize = maxSize;\n this.cache = new LRU_1.LRUCache(maxSize);\n }\n ;\n Object.defineProperty(EndpointCache.prototype, \"size\", {\n get: function () {\n return this.cache.length;\n },\n enumerable: true,\n configurable: true\n });\n EndpointCache.prototype.put = function (key, value) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var endpointRecord = this.populateValue(value);\n this.cache.put(keyString, endpointRecord);\n };\n EndpointCache.prototype.get = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n var now = Date.now();\n var records = this.cache.get(keyString);\n if (records) {\n for (var i = records.length-1; i >= 0; i--) {\n var record = records[i];\n if (record.Expire < now) {\n records.splice(i, 1);\n }\n }\n if (records.length === 0) {\n this.cache.remove(keyString);\n return undefined;\n }\n }\n return records;\n };\n EndpointCache.getKeyString = function (key) {\n var identifiers = [];\n var identifierNames = Object.keys(key).sort();\n for (var i = 0; i < identifierNames.length; i++) {\n var identifierName = identifierNames[i];\n if (key[identifierName] === undefined)\n continue;\n identifiers.push(key[identifierName]);\n }\n return identifiers.join(' ');\n };\n EndpointCache.prototype.populateValue = function (endpoints) {\n var now = Date.now();\n return endpoints.map(function (endpoint) { return ({\n Address: endpoint.Address || '',\n Expire: now + (endpoint.CachePeriodInMinutes || 1) * 60 * 1000\n }); });\n };\n EndpointCache.prototype.empty = function () {\n this.cache.empty();\n };\n EndpointCache.prototype.remove = function (key) {\n var keyString = typeof key !== 'string' ? EndpointCache.getKeyString(key) : key;\n this.cache.remove(keyString);\n };\n return EndpointCache;\n}());\nexports.EndpointCache = EndpointCache;","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar cachedSecret = {};\n\n/**\n * @api private\n */\nvar cacheQueue = [];\n\n/**\n * @api private\n */\nvar maxCacheEntries = 50;\n\n/**\n * @api private\n */\nvar v4Identifier = 'aws4_request';\n\n/**\n * @api private\n */\nmodule.exports = {\n /**\n * @api private\n *\n * @param date [String]\n * @param region [String]\n * @param serviceName [String]\n * @return [String]\n */\n createScope: function createScope(date, region, serviceName) {\n return [\n date.substr(0, 8),\n region,\n serviceName,\n v4Identifier\n ].join('/');\n },\n\n /**\n * @api private\n *\n * @param credentials [Credentials]\n * @param date [String]\n * @param region [String]\n * @param service [String]\n * @param shouldCache [Boolean]\n * @return [String]\n */\n getSigningKey: function getSigningKey(\n credentials,\n date,\n region,\n service,\n shouldCache\n ) {\n var credsIdentifier = AWS.util.crypto\n .hmac(credentials.secretAccessKey, credentials.accessKeyId, 'base64');\n var cacheKey = [credsIdentifier, date, region, service].join('_');\n shouldCache = shouldCache !== false;\n if (shouldCache && (cacheKey in cachedSecret)) {\n return cachedSecret[cacheKey];\n }\n\n var kDate = AWS.util.crypto.hmac(\n 'AWS4' + credentials.secretAccessKey,\n date,\n 'buffer'\n );\n var kRegion = AWS.util.crypto.hmac(kDate, region, 'buffer');\n var kService = AWS.util.crypto.hmac(kRegion, service, 'buffer');\n\n var signingKey = AWS.util.crypto.hmac(kService, v4Identifier, 'buffer');\n if (shouldCache) {\n cachedSecret[cacheKey] = signingKey;\n cacheQueue.push(cacheKey);\n if (cacheQueue.length > maxCacheEntries) {\n // remove the oldest entry (not the least recently used)\n delete cachedSecret[cacheQueue.shift()];\n }\n }\n\n return signingKey;\n },\n\n /**\n * @api private\n *\n * Empties the derived signing key cache. Made available for testing purposes\n * only.\n */\n emptyCache: function emptyCache() {\n cachedSecret = {};\n cacheQueue = [];\n }\n};\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar blobPayloadOutputOps = [\n 'deleteThingShadow',\n 'getThingShadow',\n 'updateThingShadow'\n];\n\n/**\n * Constructs a service interface object. Each API operation is exposed as a\n * function on service.\n *\n * ### Sending a Request Using IotData\n *\n * ```javascript\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * iotdata.getThingShadow(params, function (err, data) {\n * if (err) console.log(err, err.stack); // an error occurred\n * else console.log(data); // successful response\n * });\n * ```\n *\n * ### Locking the API Version\n *\n * In order to ensure that the IotData object uses this specific API,\n * you can construct the object by passing the `apiVersion` option to the\n * constructor:\n *\n * ```javascript\n * var iotdata = new AWS.IotData({\n * endpoint: 'my.host.tld',\n * apiVersion: '2015-05-28'\n * });\n * ```\n *\n * You can also set the API version globally in `AWS.config.apiVersions` using\n * the **iotdata** service identifier:\n *\n * ```javascript\n * AWS.config.apiVersions = {\n * iotdata: '2015-05-28',\n * // other service API versions\n * };\n *\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * ```\n *\n * @note You *must* provide an `endpoint` configuration parameter when\n * constructing this service. See {constructor} for more information.\n *\n * @!method constructor(options = {})\n * Constructs a service object. This object has one method for each\n * API operation.\n *\n * @example Constructing a IotData object\n * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'});\n * @note You *must* provide an `endpoint` when constructing this service.\n * @option (see AWS.Config.constructor)\n *\n * @service iotdata\n * @version 2015-05-28\n */\nAWS.util.update(AWS.IotData.prototype, {\n /**\n * @api private\n */\n validateService: function validateService() {\n if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) {\n var msg = 'AWS.IotData requires an explicit ' +\n '`endpoint\\' configuration option.';\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validateResponse', this.validateResponseBody);\n if (blobPayloadOutputOps.indexOf(request.operation) > -1) {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n },\n\n /**\n * @api private\n */\n validateResponseBody: function validateResponseBody(resp) {\n var body = resp.httpResponse.body.toString() || '{}';\n var bodyCheck = body.trim();\n if (!bodyCheck || bodyCheck.charAt(0) !== '{') {\n resp.httpResponse.body = '';\n }\n }\n\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotanalytics'] = {};\nAWS.IoTAnalytics = Service.defineService('iotanalytics', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['iotanalytics'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/iotanalytics-2017-11-27.min.json');\n model.paginators = require('../apis/iotanalytics-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IoTAnalytics;\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nfunction signedUrlBuilder(request) {\n var expires = request.httpRequest.headers[expiresHeader];\n var signerClass = request.service.getSignerClass(request);\n\n delete request.httpRequest.headers['User-Agent'];\n delete request.httpRequest.headers['X-Amz-User-Agent'];\n\n if (signerClass === AWS.Signers.V4) {\n if (expires > 604800) { // one week expiry is invalid\n var message = 'Presigning does not support expiry time greater ' +\n 'than a week with SigV4 signing.';\n throw AWS.util.error(new Error(), {\n code: 'InvalidExpiryTime', message: message, retryable: false\n });\n }\n request.httpRequest.headers[expiresHeader] = expires;\n } else if (signerClass === AWS.Signers.S3) {\n var now = request.service ? request.service.getSkewCorrectedDate() : AWS.util.date.getDate();\n request.httpRequest.headers[expiresHeader] = parseInt(\n AWS.util.date.unixTimestamp(now) + expires, 10).toString();\n } else {\n throw AWS.util.error(new Error(), {\n message: 'Presigning only supports S3 or SigV4 signing.',\n code: 'UnsupportedSigner', retryable: false\n });\n }\n}\n\n/**\n * @api private\n */\nfunction signedUrlSigner(request) {\n var endpoint = request.httpRequest.endpoint;\n var parsedUrl = AWS.util.urlParse(request.httpRequest.path);\n var queryParams = {};\n\n if (parsedUrl.search) {\n queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1));\n }\n\n var auth = request.httpRequest.headers['Authorization'].split(' ');\n if (auth[0] === 'AWS') {\n auth = auth[1].split(':');\n queryParams['Signature'] = auth.pop();\n queryParams['AWSAccessKeyId'] = auth.join(':');\n\n AWS.util.each(request.httpRequest.headers, function (key, value) {\n if (key === expiresHeader) key = 'Expires';\n if (key.indexOf('x-amz-meta-') === 0) {\n // Delete existing, potentially not normalized key\n delete queryParams[key];\n key = key.toLowerCase();\n }\n queryParams[key] = value;\n });\n delete request.httpRequest.headers[expiresHeader];\n delete queryParams['Authorization'];\n delete queryParams['Host'];\n } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing\n auth.shift();\n var rest = auth.join(' ');\n var signature = rest.match(/Signature=(.*?)(?:,|\\s|\\r?\\n|$)/)[1];\n queryParams['X-Amz-Signature'] = signature;\n delete queryParams['Expires'];\n }\n\n // build URL\n endpoint.pathname = parsedUrl.pathname;\n endpoint.search = AWS.util.queryParamsToString(queryParams);\n}\n\n/**\n * @api private\n */\nAWS.Signers.Presign = inherit({\n /**\n * @api private\n */\n sign: function sign(request, expireTime, callback) {\n request.httpRequest.headers[expiresHeader] = expireTime || 3600;\n request.on('build', signedUrlBuilder);\n request.on('sign', signedUrlSigner);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.SET_CONTENT_LENGTH);\n request.removeListener('afterBuild',\n AWS.EventListeners.Core.COMPUTE_SHA256);\n\n request.emit('beforePresign', [request]);\n\n if (callback) {\n request.build(function() {\n if (this.response.error) callback(this.response.error);\n else {\n callback(null, AWS.util.urlFormat(request.httpRequest.endpoint));\n }\n });\n } else {\n request.build();\n if (request.response.error) throw request.response.error;\n return AWS.util.urlFormat(request.httpRequest.endpoint);\n }\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.Presign;\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see \n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see \n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecatalog'] = {};\nAWS.MarketplaceCatalog = Service.defineService('marketplacecatalog', ['2018-09-17']);\nObject.defineProperty(apiLoader.services['marketplacecatalog'], '2018-09-17', {\n get: function get() {\n var model = require('../apis/marketplace-catalog-2018-09-17.min.json');\n model.paginators = require('../apis/marketplace-catalog-2018-09-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elb'] = {};\nAWS.ELB = Service.defineService('elb', ['2012-06-01']);\nObject.defineProperty(apiLoader.services['elb'], '2012-06-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancing-2012-06-01.min.json');\n model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELB;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.MachineLearning.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'predict') {\n request.addListener('build', this.buildEndpoint);\n }\n },\n\n /**\n * Updates request endpoint from PredictEndpoint\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.params.PredictEndpoint;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n }\n }\n\n});\n","var AWS = require('../core');\nvar util = AWS.util;\nvar typeOf = require('./types').typeOf;\nvar DynamoDBSet = require('./set');\nvar NumberValue = require('./numberValue');\n\nAWS.DynamoDB.Converter = {\n /**\n * Convert a JavaScript value to its equivalent DynamoDB AttributeValue type\n *\n * @param data [any] The data to convert to a DynamoDB AttributeValue\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n * @return [map] An object in the Amazon DynamoDB AttributeValue format\n *\n * @see AWS.DynamoDB.Converter.marshall AWS.DynamoDB.Converter.marshall to\n * convert entire records (rather than individual attributes)\n */\n input: function convertInput(data, options) {\n options = options || {};\n var type = typeOf(data);\n if (type === 'Object') {\n return formatMap(data, options);\n } else if (type === 'Array') {\n return formatList(data, options);\n } else if (type === 'Set') {\n return formatSet(data, options);\n } else if (type === 'String') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { S: data };\n } else if (type === 'Number' || type === 'NumberValue') {\n return { N: data.toString() };\n } else if (type === 'Binary') {\n if (data.length === 0 && options.convertEmptyValues) {\n return convertInput(null);\n }\n return { B: data };\n } else if (type === 'Boolean') {\n return { BOOL: data };\n } else if (type === 'null') {\n return { NULL: true };\n } else if (type !== 'undefined' && type !== 'Function') {\n // this value has a custom constructor\n return formatMap(data, options);\n }\n },\n\n /**\n * Convert a JavaScript object into a DynamoDB record.\n *\n * @param data [any] The data to convert to a DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object in the DynamoDB record format.\n *\n * @example Convert a JavaScript object into a DynamoDB record\n * var marshalled = AWS.DynamoDB.Converter.marshall({\n * string: 'foo',\n * list: ['fizz', 'buzz', 'pop'],\n * map: {\n * nestedMap: {\n * key: 'value',\n * }\n * },\n * number: 123,\n * nullValue: null,\n * boolValue: true,\n * stringSet: new DynamoDBSet(['foo', 'bar', 'baz'])\n * });\n */\n marshall: function marshallItem(data, options) {\n return AWS.DynamoDB.Converter.input(data, options).M;\n },\n\n /**\n * Convert a DynamoDB AttributeValue object to its equivalent JavaScript type.\n *\n * @param data [map] An object in the Amazon DynamoDB AttributeValue format\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [Object|Array|String|Number|Boolean|null]\n *\n * @see AWS.DynamoDB.Converter.unmarshall AWS.DynamoDB.Converter.unmarshall to\n * convert entire records (rather than individual attributes)\n */\n output: function convertOutput(data, options) {\n options = options || {};\n var list, map, i;\n for (var type in data) {\n var values = data[type];\n if (type === 'M') {\n map = {};\n for (var key in values) {\n map[key] = convertOutput(values[key], options);\n }\n return map;\n } else if (type === 'L') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertOutput(values[i], options));\n }\n return list;\n } else if (type === 'SS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(values[i] + '');\n }\n return new DynamoDBSet(list);\n } else if (type === 'NS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(convertNumber(values[i], options.wrapNumbers));\n }\n return new DynamoDBSet(list);\n } else if (type === 'BS') {\n list = [];\n for (i = 0; i < values.length; i++) {\n list.push(AWS.util.buffer.toBuffer(values[i]));\n }\n return new DynamoDBSet(list);\n } else if (type === 'S') {\n return values + '';\n } else if (type === 'N') {\n return convertNumber(values, options.wrapNumbers);\n } else if (type === 'B') {\n return util.buffer.toBuffer(values);\n } else if (type === 'BOOL') {\n return (values === 'true' || values === 'TRUE' || values === true);\n } else if (type === 'NULL') {\n return null;\n }\n }\n },\n\n /**\n * Convert a DynamoDB record into a JavaScript object.\n *\n * @param data [any] The DynamoDB record\n * @param options [map]\n * @option options convertEmptyValues [Boolean] Whether to automatically\n * convert empty strings, blobs,\n * and sets to `null`\n * @option options wrapNumbers [Boolean] Whether to return numbers as a\n * NumberValue object instead of\n * converting them to native JavaScript\n * numbers. This allows for the safe\n * round-trip transport of numbers of\n * arbitrary size.\n *\n * @return [map] An object whose properties have been converted from\n * DynamoDB's AttributeValue format into their corresponding native\n * JavaScript types.\n *\n * @example Convert a record received from a DynamoDB stream\n * var unmarshalled = AWS.DynamoDB.Converter.unmarshall({\n * string: {S: 'foo'},\n * list: {L: [{S: 'fizz'}, {S: 'buzz'}, {S: 'pop'}]},\n * map: {\n * M: {\n * nestedMap: {\n * M: {\n * key: {S: 'value'}\n * }\n * }\n * }\n * },\n * number: {N: '123'},\n * nullValue: {NULL: true},\n * boolValue: {BOOL: true}\n * });\n */\n unmarshall: function unmarshall(data, options) {\n return AWS.DynamoDB.Converter.output({M: data}, options);\n }\n};\n\n/**\n * @api private\n * @param data [Array]\n * @param options [map]\n */\nfunction formatList(data, options) {\n var list = {L: []};\n for (var i = 0; i < data.length; i++) {\n list['L'].push(AWS.DynamoDB.Converter.input(data[i], options));\n }\n return list;\n}\n\n/**\n * @api private\n * @param value [String]\n * @param wrapNumbers [Boolean]\n */\nfunction convertNumber(value, wrapNumbers) {\n return wrapNumbers ? new NumberValue(value) : Number(value);\n}\n\n/**\n * @api private\n * @param data [map]\n * @param options [map]\n */\nfunction formatMap(data, options) {\n var map = {M: {}};\n for (var key in data) {\n var formatted = AWS.DynamoDB.Converter.input(data[key], options);\n if (formatted !== void 0) {\n map['M'][key] = formatted;\n }\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction formatSet(data, options) {\n options = options || {};\n var values = data.values;\n if (options.convertEmptyValues) {\n values = filterEmptySetValues(data);\n if (values.length === 0) {\n return AWS.DynamoDB.Converter.input(null);\n }\n }\n\n var map = {};\n switch (data.type) {\n case 'String': map['SS'] = values; break;\n case 'Binary': map['BS'] = values; break;\n case 'Number': map['NS'] = values.map(function (value) {\n return value.toString();\n });\n }\n return map;\n}\n\n/**\n * @api private\n */\nfunction filterEmptySetValues(set) {\n var nonEmptyValues = [];\n var potentiallyEmptyTypes = {\n String: true,\n Binary: true,\n Number: false\n };\n if (potentiallyEmptyTypes[set.type]) {\n for (var i = 0; i < set.values.length; i++) {\n if (set.values[i].length === 0) {\n continue;\n }\n nonEmptyValues.push(set.values[i]);\n }\n\n return nonEmptyValues;\n }\n\n return set.values;\n}\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.Converter;\n","require('../lib/node_loader');\nmodule.exports = {\n ACM: require('./acm'),\n APIGateway: require('./apigateway'),\n ApplicationAutoScaling: require('./applicationautoscaling'),\n AutoScaling: require('./autoscaling'),\n CloudFormation: require('./cloudformation'),\n CloudFront: require('./cloudfront'),\n CloudHSM: require('./cloudhsm'),\n CloudTrail: require('./cloudtrail'),\n CloudWatch: require('./cloudwatch'),\n CloudWatchEvents: require('./cloudwatchevents'),\n CloudWatchLogs: require('./cloudwatchlogs'),\n CodeBuild: require('./codebuild'),\n CodeCommit: require('./codecommit'),\n CodeDeploy: require('./codedeploy'),\n CodePipeline: require('./codepipeline'),\n CognitoIdentity: require('./cognitoidentity'),\n CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'),\n CognitoSync: require('./cognitosync'),\n ConfigService: require('./configservice'),\n CUR: require('./cur'),\n DeviceFarm: require('./devicefarm'),\n DirectConnect: require('./directconnect'),\n DynamoDB: require('./dynamodb'),\n DynamoDBStreams: require('./dynamodbstreams'),\n EC2: require('./ec2'),\n ECR: require('./ecr'),\n ECS: require('./ecs'),\n EFS: require('./efs'),\n ElastiCache: require('./elasticache'),\n ElasticBeanstalk: require('./elasticbeanstalk'),\n ELB: require('./elb'),\n ELBv2: require('./elbv2'),\n EMR: require('./emr'),\n ElasticTranscoder: require('./elastictranscoder'),\n Firehose: require('./firehose'),\n GameLift: require('./gamelift'),\n IAM: require('./iam'),\n Inspector: require('./inspector'),\n Iot: require('./iot'),\n IotData: require('./iotdata'),\n Kinesis: require('./kinesis'),\n KMS: require('./kms'),\n Lambda: require('./lambda'),\n LexRuntime: require('./lexruntime'),\n MachineLearning: require('./machinelearning'),\n MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'),\n MTurk: require('./mturk'),\n MobileAnalytics: require('./mobileanalytics'),\n OpsWorks: require('./opsworks'),\n Polly: require('./polly'),\n RDS: require('./rds'),\n Redshift: require('./redshift'),\n Rekognition: require('./rekognition'),\n Route53: require('./route53'),\n Route53Domains: require('./route53domains'),\n S3: require('./s3'),\n ServiceCatalog: require('./servicecatalog'),\n SES: require('./ses'),\n SNS: require('./sns'),\n SQS: require('./sqs'),\n SSM: require('./ssm'),\n StorageGateway: require('./storagegateway'),\n STS: require('./sts'),\n XRay: require('./xray'),\n WAF: require('./waf'),\n WorkDocs: require('./workdocs'),\n LexModelBuildingService: require('./lexmodelbuildingservice'),\n Athena: require('./athena'),\n CloudHSMV2: require('./cloudhsmv2'),\n Pricing: require('./pricing'),\n CostExplorer: require('./costexplorer'),\n MediaStoreData: require('./mediastoredata'),\n Comprehend: require('./comprehend'),\n KinesisVideoArchivedMedia: require('./kinesisvideoarchivedmedia'),\n KinesisVideoMedia: require('./kinesisvideomedia'),\n KinesisVideo: require('./kinesisvideo'),\n Translate: require('./translate'),\n ResourceGroups: require('./resourcegroups'),\n Connect: require('./connect'),\n SecretsManager: require('./secretsmanager'),\n IoTAnalytics: require('./iotanalytics'),\n ComprehendMedical: require('./comprehendmedical'),\n Personalize: require('./personalize'),\n PersonalizeEvents: require('./personalizeevents'),\n PersonalizeRuntime: require('./personalizeruntime'),\n ForecastService: require('./forecastservice'),\n ForecastQueryService: require('./forecastqueryservice'),\n MarketplaceCatalog: require('./marketplacecatalog'),\n KinesisVideoSignalingChannels: require('./kinesisvideosignalingchannels'),\n Location: require('./location'),\n LexRuntimeV2: require('./lexruntimev2')\n};","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codepipeline'] = {};\nAWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']);\nObject.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', {\n get: function get() {\n var model = require('../apis/codepipeline-2015-07-09.min.json');\n model.paginators = require('../apis/codepipeline-2015-07-09.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodePipeline;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesis'] = {};\nAWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']);\nObject.defineProperty(apiLoader.services['kinesis'], '2013-12-02', {\n get: function get() {\n var model = require('../apis/kinesis-2013-12-02.min.json');\n model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination;\n model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Kinesis;\n","'use strict';\nvar $ = require('../internals/export');\nvar notARegExp = require('../internals/not-a-regexp');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar correctIsRegExpLogic = require('../internals/correct-is-regexp-logic');\n\n// `String.prototype.includes` method\n// https://tc39.es/ecma262/#sec-string.prototype.includes\n$({ target: 'String', proto: true, forced: !correctIsRegExpLogic('includes') }, {\n includes: function includes(searchString /* , position = 0 */) {\n return !!~toString(requireObjectCoercible(this))\n .indexOf(toString(notARegExp(searchString)), arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var util = require('../util');\n\nfunction JsonBuilder() { }\n\nJsonBuilder.prototype.build = function(value, shape) {\n return JSON.stringify(translate(value, shape));\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined || value === null) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (shape.isDocument) {\n return structure;\n }\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n if (memberShape.location !== 'body') return;\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n var result = translate(value, memberShape);\n if (result !== undefined) struct[locationName] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result !== undefined) out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result !== undefined) out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toWireFormat(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonBuilder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['emr'] = {};\nAWS.EMR = Service.defineService('emr', ['2009-03-31']);\nObject.defineProperty(apiLoader.services['emr'], '2009-03-31', {\n get: function get() {\n var model = require('../apis/elasticmapreduce-2009-03-31.min.json');\n model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination;\n model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EMR;\n","var util = require('../util');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction populateMethod(req) {\n req.httpRequest.method = req.service.api.operations[req.operation].httpMethod;\n}\n\nfunction generateURI(endpointPath, operationPath, input, params) {\n var uri = [endpointPath, operationPath].join('/');\n uri = uri.replace(/\\/+/g, '/');\n\n var queryString = {}, queryStringSet = false;\n util.each(input.members, function (name, member) {\n var paramValue = params[name];\n if (paramValue === null || paramValue === undefined) return;\n if (member.location === 'uri') {\n var regex = new RegExp('\\\\{' + member.name + '(\\\\+)?\\\\}');\n uri = uri.replace(regex, function(_, plus) {\n var fn = plus ? util.uriEscapePath : util.uriEscape;\n return fn(String(paramValue));\n });\n } else if (member.location === 'querystring') {\n queryStringSet = true;\n\n if (member.type === 'list') {\n queryString[member.name] = paramValue.map(function(val) {\n return util.uriEscape(member.member.toWireFormat(val).toString());\n });\n } else if (member.type === 'map') {\n util.each(paramValue, function(key, value) {\n if (Array.isArray(value)) {\n queryString[key] = value.map(function(val) {\n return util.uriEscape(String(val));\n });\n } else {\n queryString[key] = util.uriEscape(String(value));\n }\n });\n } else {\n queryString[member.name] = util.uriEscape(member.toWireFormat(paramValue).toString());\n }\n }\n });\n\n if (queryStringSet) {\n uri += (uri.indexOf('?') >= 0 ? '&' : '?');\n var parts = [];\n util.arrayEach(Object.keys(queryString).sort(), function(key) {\n if (!Array.isArray(queryString[key])) {\n queryString[key] = [queryString[key]];\n }\n for (var i = 0; i < queryString[key].length; i++) {\n parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]);\n }\n });\n uri += parts.join('&');\n }\n\n return uri;\n}\n\nfunction populateURI(req) {\n var operation = req.service.api.operations[req.operation];\n var input = operation.input;\n\n var uri = generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n req.httpRequest.path = uri;\n}\n\nfunction populateHeaders(req) {\n var operation = req.service.api.operations[req.operation];\n util.each(operation.input.members, function (name, member) {\n var value = req.params[name];\n if (value === null || value === undefined) return;\n\n if (member.location === 'headers' && member.type === 'map') {\n util.each(value, function(key, memberValue) {\n req.httpRequest.headers[member.name + key] = memberValue;\n });\n } else if (member.location === 'header') {\n value = member.toWireFormat(value).toString();\n if (member.isJsonValue) {\n value = util.base64.encode(value);\n }\n req.httpRequest.headers[member.name] = value;\n }\n });\n}\n\nfunction buildRequest(req) {\n populateMethod(req);\n populateURI(req);\n populateHeaders(req);\n populateHostPrefix(req);\n}\n\nfunction extractError() {\n}\n\nfunction extractData(resp) {\n var req = resp.request;\n var data = {};\n var r = resp.httpResponse;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n // normalize headers names to lower-cased keys for matching\n var headers = {};\n util.each(r.headers, function (k, v) {\n headers[k.toLowerCase()] = v;\n });\n\n util.each(output.members, function(name, member) {\n var header = (member.name || name).toLowerCase();\n if (member.location === 'headers' && member.type === 'map') {\n data[name] = {};\n var location = member.isLocationName ? member.name : '';\n var pattern = new RegExp('^' + location + '(.+)', 'i');\n util.each(r.headers, function (k, v) {\n var result = k.match(pattern);\n if (result !== null) {\n data[name][result[1]] = v;\n }\n });\n } else if (member.location === 'header') {\n if (headers[header] !== undefined) {\n var value = member.isJsonValue ?\n util.base64.decode(headers[header]) :\n headers[header];\n data[name] = member.toType(value);\n }\n } else if (member.location === 'statusCode') {\n data[name] = parseInt(r.statusCode, 10);\n }\n });\n\n resp.data = data;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n generateURI: generateURI\n};\n","var AWS = require('../core');\nvar v4Credentials = require('./v4_credentials');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nvar expiresHeader = 'presigned-expires';\n\n/**\n * @api private\n */\nAWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, {\n constructor: function V4(request, serviceName, options) {\n AWS.Signers.RequestSigner.call(this, request);\n this.serviceName = serviceName;\n options = options || {};\n this.signatureCache = typeof options.signatureCache === 'boolean' ? options.signatureCache : true;\n this.operation = options.operation;\n this.signatureVersion = options.signatureVersion;\n },\n\n algorithm: 'AWS4-HMAC-SHA256',\n\n addAuthorization: function addAuthorization(credentials, date) {\n var datetime = AWS.util.date.iso8601(date).replace(/[:\\-]|\\.\\d{3}/g, '');\n\n if (this.isPresigned()) {\n this.updateForPresigned(credentials, datetime);\n } else {\n this.addHeaders(credentials, datetime);\n }\n\n this.request.headers['Authorization'] =\n this.authorization(credentials, datetime);\n },\n\n addHeaders: function addHeaders(credentials, datetime) {\n this.request.headers['X-Amz-Date'] = datetime;\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n },\n\n updateForPresigned: function updateForPresigned(credentials, datetime) {\n var credString = this.credentialString(datetime);\n var qs = {\n 'X-Amz-Date': datetime,\n 'X-Amz-Algorithm': this.algorithm,\n 'X-Amz-Credential': credentials.accessKeyId + '/' + credString,\n 'X-Amz-Expires': this.request.headers[expiresHeader],\n 'X-Amz-SignedHeaders': this.signedHeaders()\n };\n\n if (credentials.sessionToken) {\n qs['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n\n if (this.request.headers['Content-Type']) {\n qs['Content-Type'] = this.request.headers['Content-Type'];\n }\n if (this.request.headers['Content-MD5']) {\n qs['Content-MD5'] = this.request.headers['Content-MD5'];\n }\n if (this.request.headers['Cache-Control']) {\n qs['Cache-Control'] = this.request.headers['Cache-Control'];\n }\n\n // need to pull in any other X-Amz-* headers\n AWS.util.each.call(this, this.request.headers, function(key, value) {\n if (key === expiresHeader) return;\n if (this.isSignableHeader(key)) {\n var lowerKey = key.toLowerCase();\n // Metadata should be normalized\n if (lowerKey.indexOf('x-amz-meta-') === 0) {\n qs[lowerKey] = value;\n } else if (lowerKey.indexOf('x-amz-') === 0) {\n qs[key] = value;\n }\n }\n });\n\n var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?';\n this.request.path += sep + AWS.util.queryParamsToString(qs);\n },\n\n authorization: function authorization(credentials, datetime) {\n var parts = [];\n var credString = this.credentialString(datetime);\n parts.push(this.algorithm + ' Credential=' +\n credentials.accessKeyId + '/' + credString);\n parts.push('SignedHeaders=' + this.signedHeaders());\n parts.push('Signature=' + this.signature(credentials, datetime));\n return parts.join(', ');\n },\n\n signature: function signature(credentials, datetime) {\n var signingKey = v4Credentials.getSigningKey(\n credentials,\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName,\n this.signatureCache\n );\n return AWS.util.crypto.hmac(signingKey, this.stringToSign(datetime), 'hex');\n },\n\n stringToSign: function stringToSign(datetime) {\n var parts = [];\n parts.push('AWS4-HMAC-SHA256');\n parts.push(datetime);\n parts.push(this.credentialString(datetime));\n parts.push(this.hexEncodedHash(this.canonicalString()));\n return parts.join('\\n');\n },\n\n canonicalString: function canonicalString() {\n var parts = [], pathname = this.request.pathname();\n if (this.serviceName !== 's3' && this.signatureVersion !== 's3v4') pathname = AWS.util.uriEscapePath(pathname);\n\n parts.push(this.request.method);\n parts.push(pathname);\n parts.push(this.request.search());\n parts.push(this.canonicalHeaders() + '\\n');\n parts.push(this.signedHeaders());\n parts.push(this.hexEncodedBodyHash());\n return parts.join('\\n');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = [];\n AWS.util.each.call(this, this.request.headers, function (key, item) {\n headers.push([key, item]);\n });\n headers.sort(function (a, b) {\n return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1;\n });\n var parts = [];\n AWS.util.arrayEach.call(this, headers, function (item) {\n var key = item[0].toLowerCase();\n if (this.isSignableHeader(key)) {\n var value = item[1];\n if (typeof value === 'undefined' || value === null || typeof value.toString !== 'function') {\n throw AWS.util.error(new Error('Header ' + key + ' contains invalid value'), {\n code: 'InvalidHeader'\n });\n }\n parts.push(key + ':' +\n this.canonicalHeaderValues(value.toString()));\n }\n });\n return parts.join('\\n');\n },\n\n canonicalHeaderValues: function canonicalHeaderValues(values) {\n return values.replace(/\\s+/g, ' ').replace(/^\\s+|\\s+$/g, '');\n },\n\n signedHeaders: function signedHeaders() {\n var keys = [];\n AWS.util.each.call(this, this.request.headers, function (key) {\n key = key.toLowerCase();\n if (this.isSignableHeader(key)) keys.push(key);\n });\n return keys.sort().join(';');\n },\n\n credentialString: function credentialString(datetime) {\n return v4Credentials.createScope(\n datetime.substr(0, 8),\n this.request.region,\n this.serviceName\n );\n },\n\n hexEncodedHash: function hash(string) {\n return AWS.util.crypto.sha256(string, 'hex');\n },\n\n hexEncodedBodyHash: function hexEncodedBodyHash() {\n var request = this.request;\n if (this.isPresigned() && (['s3', 's3-object-lambda'].indexOf(this.serviceName) > -1) && !request.body) {\n return 'UNSIGNED-PAYLOAD';\n } else if (request.headers['X-Amz-Content-Sha256']) {\n return request.headers['X-Amz-Content-Sha256'];\n } else {\n return this.hexEncodedHash(this.request.body || '');\n }\n },\n\n unsignableHeaders: [\n 'authorization',\n 'content-type',\n 'content-length',\n 'user-agent',\n expiresHeader,\n 'expect',\n 'x-amzn-trace-id'\n ],\n\n isSignableHeader: function isSignableHeader(key) {\n if (key.toLowerCase().indexOf('x-amz-') === 0) return true;\n return this.unsignableHeaders.indexOf(key) < 0;\n },\n\n isPresigned: function isPresigned() {\n return this.request.headers[expiresHeader] ? true : false;\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V4;\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, 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} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, 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","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehend'] = {};\nAWS.Comprehend = Service.defineService('comprehend', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['comprehend'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/comprehend-2017-11-27.min.json');\n model.paginators = require('../apis/comprehend-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Comprehend;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastservice'] = {};\nAWS.ForecastService = Service.defineService('forecastservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecast-2018-06-26.min.json');\n model.paginators = require('../apis/forecast-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastService;\n","var util = require('../core').util;\n\n/**\n * An object recognizable as a numeric value that stores the underlying number\n * as a string.\n *\n * Intended to be a deserialization target for the DynamoDB Document Client when\n * the `wrapNumbers` flag is set. This allows for numeric values that lose\n * precision when converted to JavaScript's `number` type.\n */\nvar DynamoDBNumberValue = util.inherit({\n constructor: function NumberValue(value) {\n this.wrapperName = 'NumberValue';\n this.value = value.toString();\n },\n\n /**\n * Render the underlying value as a number when converting to JSON.\n */\n toJSON: function () {\n return this.toNumber();\n },\n\n /**\n * Convert the underlying value to a JavaScript number.\n */\n toNumber: function () {\n return Number(this.value);\n },\n\n /**\n * Return a string representing the unaltered value provided to the\n * constructor.\n */\n toString: function () {\n return this.value;\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = DynamoDBNumberValue;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.EC2.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR);\n request.addListener('extractError', this.extractError);\n\n if (request.operation === 'copySnapshot') {\n request.onAsync('validate', this.buildCopySnapshotPresignedUrl);\n }\n },\n\n /**\n * @api private\n */\n buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) {\n if (req.params.PresignedUrl || req._subRequest) {\n return done();\n }\n\n req.params = AWS.util.copy(req.params);\n req.params.DestinationRegion = req.service.config.region;\n\n var config = AWS.util.copy(req.service.config);\n delete config.endpoint;\n config.region = req.params.SourceRegion;\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](req.params);\n newReq._subRequest = true;\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PresignedUrl = url;\n done();\n }\n });\n },\n\n /**\n * @api private\n */\n extractError: function extractError(resp) {\n // EC2 nests the error code and message deeper than other AWS Query services.\n var httpResponse = resp.httpResponse;\n var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || '');\n if (data.Errors) {\n resp.error = AWS.util.error(new Error(), {\n code: data.Errors.Error.Code,\n message: data.Errors.Error.Message\n });\n } else {\n resp.error = AWS.util.error(new Error(), {\n code: httpResponse.statusCode,\n message: null\n });\n }\n resp.error.requestId = data.RequestID || null;\n }\n});\n","var AWS = require('../core');\nvar EventEmitter = require('events').EventEmitter;\nrequire('../http');\n\n/**\n * @api private\n */\nAWS.XHRClient = AWS.util.inherit({\n handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) {\n var self = this;\n var endpoint = httpRequest.endpoint;\n var emitter = new EventEmitter();\n var href = endpoint.protocol + '//' + endpoint.hostname;\n if (endpoint.port !== 80 && endpoint.port !== 443) {\n href += ':' + endpoint.port;\n }\n href += httpRequest.path;\n\n var xhr = new XMLHttpRequest(), headersEmitted = false;\n httpRequest.stream = xhr;\n\n xhr.addEventListener('readystatechange', function() {\n try {\n if (xhr.status === 0) return; // 0 code is invalid\n } catch (e) { return; }\n\n if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) {\n emitter.statusCode = xhr.status;\n emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders());\n emitter.emit(\n 'headers',\n emitter.statusCode,\n emitter.headers,\n xhr.statusText\n );\n headersEmitted = true;\n }\n if (this.readyState === this.DONE) {\n self.finishRequest(xhr, emitter);\n }\n }, false);\n xhr.upload.addEventListener('progress', function (evt) {\n emitter.emit('sendProgress', evt);\n });\n xhr.addEventListener('progress', function (evt) {\n emitter.emit('receiveProgress', evt);\n }, false);\n xhr.addEventListener('timeout', function () {\n errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'}));\n }, false);\n xhr.addEventListener('error', function () {\n errCallback(AWS.util.error(new Error('Network Failure'), {\n code: 'NetworkingError'\n }));\n }, false);\n xhr.addEventListener('abort', function () {\n errCallback(AWS.util.error(new Error('Request aborted'), {\n code: 'RequestAbortedError'\n }));\n }, false);\n\n callback(emitter);\n xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false);\n AWS.util.each(httpRequest.headers, function (key, value) {\n if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') {\n xhr.setRequestHeader(key, value);\n }\n });\n\n if (httpOptions.timeout && httpOptions.xhrAsync !== false) {\n xhr.timeout = httpOptions.timeout;\n }\n\n if (httpOptions.xhrWithCredentials) {\n xhr.withCredentials = true;\n }\n try { xhr.responseType = 'arraybuffer'; } catch (e) {}\n\n try {\n if (httpRequest.body) {\n xhr.send(httpRequest.body);\n } else {\n xhr.send();\n }\n } catch (err) {\n if (httpRequest.body && typeof httpRequest.body.buffer === 'object') {\n xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly\n } else {\n throw err;\n }\n }\n\n return emitter;\n },\n\n parseHeaders: function parseHeaders(rawHeaders) {\n var headers = {};\n AWS.util.arrayEach(rawHeaders.split(/\\r?\\n/), function (line) {\n var key = line.split(':', 1)[0];\n var value = line.substring(key.length + 2);\n if (key.length > 0) headers[key.toLowerCase()] = value;\n });\n return headers;\n },\n\n finishRequest: function finishRequest(xhr, emitter) {\n var buffer;\n if (xhr.responseType === 'arraybuffer' && xhr.response) {\n var ab = xhr.response;\n buffer = new AWS.util.Buffer(ab.byteLength);\n var view = new Uint8Array(ab);\n for (var i = 0; i < buffer.length; ++i) {\n buffer[i] = view[i];\n }\n }\n\n try {\n if (!buffer && typeof xhr.responseText === 'string') {\n buffer = new AWS.util.Buffer(xhr.responseText);\n }\n } catch (e) {}\n\n if (buffer) emitter.emit('data', buffer);\n emitter.emit('end');\n }\n});\n\n/**\n * @api private\n */\nAWS.HttpClient.prototype = AWS.XHRClient.prototype;\n\n/**\n * @api private\n */\nAWS.HttpClient.streamsApiVersion = 1;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codebuild'] = {};\nAWS.CodeBuild = Service.defineService('codebuild', ['2016-10-06']);\nObject.defineProperty(apiLoader.services['codebuild'], '2016-10-06', {\n get: function get() {\n var model = require('../apis/codebuild-2016-10-06.min.json');\n model.paginators = require('../apis/codebuild-2016-10-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeBuild;\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 getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n function getOwnPropertyDescriptors(obj) {\n var keys = Object.keys(obj);\n var descriptors = {};\n for (var i = 0; i < keys.length; i++) {\n descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n }\n return descriptors;\n };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n if (typeof process !== 'undefined' && process.noDeprecation === true) {\n return fn;\n }\n\n // Allow for deprecating things in the process of starting up.\n if (typeof process === 'undefined') {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\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\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n if (typeof original !== 'function')\n throw new TypeError('The \"original\" argument must be of type Function');\n\n if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n var fn = original[kCustomPromisifiedSymbol];\n if (typeof fn !== 'function') {\n throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n }\n Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return fn;\n }\n\n function fn() {\n var promiseResolve, promiseReject;\n var promise = new Promise(function (resolve, reject) {\n promiseResolve = resolve;\n promiseReject = reject;\n });\n\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n args.push(function (err, value) {\n if (err) {\n promiseReject(err);\n } else {\n promiseResolve(value);\n }\n });\n\n try {\n original.apply(this, args);\n } catch (err) {\n promiseReject(err);\n }\n\n return promise;\n }\n\n Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n value: fn, enumerable: false, writable: false, configurable: true\n });\n return Object.defineProperties(\n fn,\n getOwnPropertyDescriptors(original)\n );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n // Because `null` is a special error value in callbacks which means \"no error\n // occurred\", we error-wrap so the callback consumer can distinguish between\n // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n if (!reason) {\n var newReason = new Error('Promise was rejected with a falsy value');\n newReason.reason = reason;\n reason = newReason;\n }\n return cb(reason);\n}\n\nfunction callbackify(original) {\n if (typeof original !== 'function') {\n throw new TypeError('The \"original\" argument must be of type Function');\n }\n\n // We DO NOT return the promise as it gives the user a false sense that\n // the promise is actually somehow related to the callback's execution\n // and that the callback throwing will reject the promise.\n function callbackified() {\n var args = [];\n for (var i = 0; i < arguments.length; i++) {\n args.push(arguments[i]);\n }\n\n var maybeCb = args.pop();\n if (typeof maybeCb !== 'function') {\n throw new TypeError('The last argument must be of type Function');\n }\n var self = this;\n var cb = function() {\n return maybeCb.apply(self, arguments);\n };\n // In true node style we process the callback on `nextTick` with all the\n // implications (stack, `uncaughtException`, `async_hooks`)\n original.apply(this, args)\n .then(function(ret) { process.nextTick(cb, null, ret) },\n function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n }\n\n Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n Object.defineProperties(callbackified,\n getOwnPropertyDescriptors(original));\n return callbackified;\n}\nexports.callbackify = callbackify;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntime'] = {};\nAWS.LexRuntime = Service.defineService('lexruntime', ['2016-11-28']);\nObject.defineProperty(apiLoader.services['lexruntime'], '2016-11-28', {\n get: function get() {\n var model = require('../apis/runtime.lex-2016-11-28.min.json');\n model.paginators = require('../apis/runtime.lex-2016-11-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntime;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Lambda.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.operation === 'invoke') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n});\n\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['firehose'] = {};\nAWS.Firehose = Service.defineService('firehose', ['2015-08-04']);\nObject.defineProperty(apiLoader.services['firehose'], '2015-08-04', {\n get: function get() {\n var model = require('../apis/firehose-2015-08-04.min.json');\n model.paginators = require('../apis/firehose-2015-08-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Firehose;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideomedia'] = {};\nAWS.KinesisVideoMedia = Service.defineService('kinesisvideomedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideomedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoMedia;\n","var eventMessageChunker = require('../event-stream/event-message-chunker').eventMessageChunker;\nvar parseEvent = require('./parse-event').parseEvent;\n\nfunction createEventStream(body, parser, model) {\n var eventMessages = eventMessageChunker(body);\n\n var events = [];\n\n for (var i = 0; i < eventMessages.length; i++) {\n events.push(parseEvent(parser, eventMessages[i], model));\n }\n\n return events;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n createEventStream: createEventStream\n};\n","'use strict';\n\nmodule.exports = {\n isString: function(arg) {\n return typeof(arg) === 'string';\n },\n isObject: function(arg) {\n return typeof(arg) === 'object' && arg !== null;\n },\n isNull: function(arg) {\n return arg === null;\n },\n isNullOrUndefined: function(arg) {\n return arg == null;\n }\n};\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, {\n addAuthorization: function addAuthorization(credentials, date) {\n\n var datetime = AWS.util.date.rfc822(date);\n\n this.request.headers['X-Amz-Date'] = datetime;\n\n if (credentials.sessionToken) {\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n this.request.headers['X-Amzn-Authorization'] =\n this.authorization(credentials, datetime);\n\n },\n\n authorization: function authorization(credentials) {\n return 'AWS3 ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'SignedHeaders=' + this.signedHeaders() + ',' +\n 'Signature=' + this.signature(credentials);\n },\n\n signedHeaders: function signedHeaders() {\n var headers = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n headers.push(h.toLowerCase());\n });\n return headers.sort().join(';');\n },\n\n canonicalHeaders: function canonicalHeaders() {\n var headers = this.request.headers;\n var parts = [];\n AWS.util.arrayEach(this.headersToSign(), function iterator(h) {\n parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim());\n });\n return parts.sort().join('\\n') + '\\n';\n },\n\n headersToSign: function headersToSign() {\n var headers = [];\n AWS.util.each(this.request.headers, function iterator(k) {\n if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) {\n headers.push(k);\n }\n });\n return headers;\n },\n\n signature: function signature(credentials) {\n return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64');\n },\n\n stringToSign: function stringToSign() {\n var parts = [];\n parts.push(this.request.method);\n parts.push('/');\n parts.push('');\n parts.push(this.canonicalHeaders());\n parts.push(this.request.body);\n return AWS.util.crypto.sha256(parts.join('\\n'));\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['location'] = {};\nAWS.Location = Service.defineService('location', ['2020-11-19']);\nObject.defineProperty(apiLoader.services['location'], '2020-11-19', {\n get: function get() {\n var model = require('../apis/location-2020-11-19.min.json');\n model.paginators = require('../apis/location-2020-11-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Location;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['resourcegroups'] = {};\nAWS.ResourceGroups = Service.defineService('resourcegroups', ['2017-11-27']);\nObject.defineProperty(apiLoader.services['resourcegroups'], '2017-11-27', {\n get: function get() {\n var model = require('../apis/resource-groups-2017-11-27.min.json');\n model.paginators = require('../apis/resource-groups-2017-11-27.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ResourceGroups;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudhsm'] = {};\nAWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']);\nObject.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', {\n get: function get() {\n var model = require('../apis/cloudhsm-2014-05-30.min.json');\n model.paginators = require('../apis/cloudhsm-2014-05-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudHSM;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.APIGateway.prototype, {\n/**\n * Sets the Accept header to application/json.\n *\n * @api private\n */\n setAcceptHeader: function setAcceptHeader(req) {\n var httpRequest = req.httpRequest;\n if (!httpRequest.headers.Accept) {\n httpRequest.headers['Accept'] = 'application/json';\n }\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.setAcceptHeader);\n if (request.operation === 'getExport') {\n var params = request.params || {};\n if (params.exportType === 'swagger') {\n request.addListener('extractData', AWS.util.convertPayloadToString);\n }\n }\n }\n});\n\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\n\n/**\n * The endpoint that a service will talk to, for example,\n * `'https://ec2.ap-southeast-1.amazonaws.com'`. If\n * you need to override an endpoint for a service, you can\n * set the endpoint on a service by passing the endpoint\n * object with the `endpoint` option key:\n *\n * ```javascript\n * var ep = new AWS.Endpoint('awsproxy.example.com');\n * var s3 = new AWS.S3({endpoint: ep});\n * s3.service.endpoint.hostname == 'awsproxy.example.com'\n * ```\n *\n * Note that if you do not specify a protocol, the protocol will\n * be selected based on your current {AWS.config} configuration.\n *\n * @!attribute protocol\n * @return [String] the protocol (http or https) of the endpoint\n * URL\n * @!attribute hostname\n * @return [String] the host portion of the endpoint, e.g.,\n * example.com\n * @!attribute host\n * @return [String] the host portion of the endpoint including\n * the port, e.g., example.com:80\n * @!attribute port\n * @return [Integer] the port of the endpoint\n * @!attribute href\n * @return [String] the full URL of the endpoint\n */\nAWS.Endpoint = inherit({\n\n /**\n * @overload Endpoint(endpoint)\n * Constructs a new endpoint given an endpoint URL. If the\n * URL omits a protocol (http or https), the default protocol\n * set in the global {AWS.config} will be used.\n * @param endpoint [String] the URL to construct an endpoint from\n */\n constructor: function Endpoint(endpoint, config) {\n AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']);\n\n if (typeof endpoint === 'undefined' || endpoint === null) {\n throw new Error('Invalid endpoint: ' + endpoint);\n } else if (typeof endpoint !== 'string') {\n return AWS.util.copy(endpoint);\n }\n\n if (!endpoint.match(/^http/)) {\n var useSSL = config && config.sslEnabled !== undefined ?\n config.sslEnabled : AWS.config.sslEnabled;\n endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint;\n }\n\n AWS.util.update(this, AWS.util.urlParse(endpoint));\n\n // Ensure the port property is set as an integer\n if (this.port) {\n this.port = parseInt(this.port, 10);\n } else {\n this.port = this.protocol === 'https:' ? 443 : 80;\n }\n }\n\n});\n\n/**\n * The low level HTTP request object, encapsulating all HTTP header\n * and body data sent by a service request.\n *\n * @!attribute method\n * @return [String] the HTTP method of the request\n * @!attribute path\n * @return [String] the path portion of the URI, e.g.,\n * \"/list/?start=5&num=10\"\n * @!attribute headers\n * @return [map]\n * a map of header keys and their respective values\n * @!attribute body\n * @return [String] the request body payload\n * @!attribute endpoint\n * @return [AWS.Endpoint] the endpoint for the request\n * @!attribute region\n * @api private\n * @return [String] the region, for signing purposes only.\n */\nAWS.HttpRequest = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpRequest(endpoint, region) {\n endpoint = new AWS.Endpoint(endpoint);\n this.method = 'POST';\n this.path = endpoint.path || '/';\n this.headers = {};\n this.body = '';\n this.endpoint = endpoint;\n this.region = region;\n this._userAgent = '';\n this.setUserAgent();\n },\n\n /**\n * @api private\n */\n setUserAgent: function setUserAgent() {\n this._userAgent = this.headers[this.getUserAgentHeaderName()] = AWS.util.userAgent();\n },\n\n getUserAgentHeaderName: function getUserAgentHeaderName() {\n var prefix = AWS.util.isBrowser() ? 'X-Amz-' : '';\n return prefix + 'User-Agent';\n },\n\n /**\n * @api private\n */\n appendToUserAgent: function appendToUserAgent(agentPartial) {\n if (typeof agentPartial === 'string' && agentPartial) {\n this._userAgent += ' ' + agentPartial;\n }\n this.headers[this.getUserAgentHeaderName()] = this._userAgent;\n },\n\n /**\n * @api private\n */\n getUserAgent: function getUserAgent() {\n return this._userAgent;\n },\n\n /**\n * @return [String] the part of the {path} excluding the\n * query string\n */\n pathname: function pathname() {\n return this.path.split('?', 1)[0];\n },\n\n /**\n * @return [String] the query string portion of the {path}\n */\n search: function search() {\n var query = this.path.split('?', 2)[1];\n if (query) {\n query = AWS.util.queryStringParse(query);\n return AWS.util.queryParamsToString(query);\n }\n return '';\n },\n\n /**\n * @api private\n * update httpRequest endpoint with endpoint string\n */\n updateEndpoint: function updateEndpoint(endpointStr) {\n var newEndpoint = new AWS.Endpoint(endpointStr);\n this.endpoint = newEndpoint;\n this.path = newEndpoint.path || '/';\n if (this.headers['Host']) {\n this.headers['Host'] = newEndpoint.host;\n }\n }\n});\n\n/**\n * The low level HTTP response object, encapsulating all HTTP header\n * and body data returned from the request.\n *\n * @!attribute statusCode\n * @return [Integer] the HTTP status code of the response (e.g., 200, 404)\n * @!attribute headers\n * @return [map]\n * a map of response header keys and their respective values\n * @!attribute body\n * @return [String] the response body payload\n * @!attribute [r] streaming\n * @return [Boolean] whether this response is being streamed at a low-level.\n * Defaults to `false` (buffered reads). Do not modify this manually, use\n * {createUnbufferedStream} to convert the stream to unbuffered mode\n * instead.\n */\nAWS.HttpResponse = inherit({\n\n /**\n * @api private\n */\n constructor: function HttpResponse() {\n this.statusCode = undefined;\n this.headers = {};\n this.body = undefined;\n this.streaming = false;\n this.stream = null;\n },\n\n /**\n * Disables buffering on the HTTP response and returns the stream for reading.\n * @return [Stream, XMLHttpRequest, null] the underlying stream object.\n * Use this object to directly read data off of the stream.\n * @note This object is only available after the {AWS.Request~httpHeaders}\n * event has fired. This method must be called prior to\n * {AWS.Request~httpData}.\n * @example Taking control of a stream\n * request.on('httpHeaders', function(statusCode, headers) {\n * if (statusCode < 300) {\n * if (headers.etag === 'xyz') {\n * // pipe the stream, disabling buffering\n * var stream = this.response.httpResponse.createUnbufferedStream();\n * stream.pipe(process.stdout);\n * } else { // abort this request and set a better error message\n * this.abort();\n * this.response.error = new Error('Invalid ETag');\n * }\n * }\n * }).send(console.log);\n */\n createUnbufferedStream: function createUnbufferedStream() {\n this.streaming = true;\n return this.stream;\n }\n});\n\n\nAWS.HttpClient = inherit({});\n\n/**\n * @api private\n */\nAWS.HttpClient.getInstance = function getInstance() {\n if (this.singleton === undefined) {\n this.singleton = new this();\n }\n return this.singleton;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['configservice'] = {};\nAWS.ConfigService = Service.defineService('configservice', ['2014-11-12']);\nObject.defineProperty(apiLoader.services['configservice'], '2014-11-12', {\n get: function get() {\n var model = require('../apis/config-2014-11-12.min.json');\n model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ConfigService;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchlogs'] = {};\nAWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']);\nObject.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', {\n get: function get() {\n var model = require('../apis/logs-2014-03-28.min.json');\n model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchLogs;\n","/**\n * The main AWS namespace\n */\nvar AWS = { util: require('./util') };\n\n/**\n * @api private\n * @!macro [new] nobrowser\n * @note This feature is not supported in the browser environment of the SDK.\n */\nvar _hidden = {}; _hidden.toString(); // hack to parse macro\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nAWS.util.update(AWS, {\n\n /**\n * @constant\n */\n VERSION: '2.1273.0',\n\n /**\n * @api private\n */\n Signers: {},\n\n /**\n * @api private\n */\n Protocol: {\n Json: require('./protocol/json'),\n Query: require('./protocol/query'),\n Rest: require('./protocol/rest'),\n RestJson: require('./protocol/rest_json'),\n RestXml: require('./protocol/rest_xml')\n },\n\n /**\n * @api private\n */\n XML: {\n Builder: require('./xml/builder'),\n Parser: null // conditionally set based on environment\n },\n\n /**\n * @api private\n */\n JSON: {\n Builder: require('./json/builder'),\n Parser: require('./json/parser')\n },\n\n /**\n * @api private\n */\n Model: {\n Api: require('./model/api'),\n Operation: require('./model/operation'),\n Shape: require('./model/shape'),\n Paginator: require('./model/paginator'),\n ResourceWaiter: require('./model/resource_waiter')\n },\n\n /**\n * @api private\n */\n apiLoader: require('./api_loader'),\n\n /**\n * @api private\n */\n EndpointCache: require('../vendor/endpoint-cache').EndpointCache\n});\nrequire('./sequential_executor');\nrequire('./service');\nrequire('./config');\nrequire('./http');\nrequire('./event_listeners');\nrequire('./request');\nrequire('./response');\nrequire('./resource_waiter');\nrequire('./signers/request_signer');\nrequire('./param_validator');\n\n/**\n * @readonly\n * @return [AWS.SequentialExecutor] a collection of global event listeners that\n * are attached to every sent request.\n * @see AWS.Request AWS.Request for a list of events to listen for\n * @example Logging the time taken to send a request\n * AWS.events.on('send', function startSend(resp) {\n * resp.startTime = new Date().getTime();\n * }).on('complete', function calculateTime(resp) {\n * var time = (new Date().getTime() - resp.startTime) / 1000;\n * console.log('Request took ' + time + ' seconds');\n * });\n *\n * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds'\n */\nAWS.events = new AWS.SequentialExecutor();\n\n//create endpoint cache lazily\nAWS.util.memoizedProperty(AWS, 'endpointCache', function() {\n return new AWS.EndpointCache(AWS.config.endpointCacheSize);\n}, true);\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nAWS.Signers.Bearer = AWS.util.inherit(AWS.Signers.RequestSigner, {\n constructor: function Bearer(request) {\n AWS.Signers.RequestSigner.call(this, request);\n },\n\n addAuthorization: function addAuthorization(token) {\n this.request.headers['Authorization'] = 'Bearer ' + token.token;\n }\n});\n","/**\n * Escapes characters that can not be in an XML element.\n */\nfunction escapeElement(value) {\n return value.replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\r/g, ' ')\n .replace(/\\n/g, ' ')\n .replace(/\\u0085/g, '…')\n .replace(/\\u2028/, '
');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeElement: escapeElement\n};\n","require('./browser_loader');\n\nvar AWS = require('./core');\n\nif (typeof window !== 'undefined') window.AWS = AWS;\nif (typeof module !== 'undefined') {\n /**\n * @api private\n */\n module.exports = AWS;\n}\nif (typeof self !== 'undefined') self.AWS = AWS;\n\n/**\n * @private\n * DO NOT REMOVE\n * browser builder will strip out this line if services are supplied on the command line.\n */\nrequire('../clients/browser_default');\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\n/**\n * @api private\n */\nAWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, {\n /**\n * When building the stringToSign, these sub resource params should be\n * part of the canonical resource string with their NON-decoded values\n */\n subResources: {\n 'acl': 1,\n 'accelerate': 1,\n 'analytics': 1,\n 'cors': 1,\n 'lifecycle': 1,\n 'delete': 1,\n 'inventory': 1,\n 'location': 1,\n 'logging': 1,\n 'metrics': 1,\n 'notification': 1,\n 'partNumber': 1,\n 'policy': 1,\n 'requestPayment': 1,\n 'replication': 1,\n 'restore': 1,\n 'tagging': 1,\n 'torrent': 1,\n 'uploadId': 1,\n 'uploads': 1,\n 'versionId': 1,\n 'versioning': 1,\n 'versions': 1,\n 'website': 1\n },\n\n // when building the stringToSign, these querystring params should be\n // part of the canonical resource string with their NON-encoded values\n responseHeaders: {\n 'response-content-type': 1,\n 'response-content-language': 1,\n 'response-expires': 1,\n 'response-cache-control': 1,\n 'response-content-disposition': 1,\n 'response-content-encoding': 1\n },\n\n addAuthorization: function addAuthorization(credentials, date) {\n if (!this.request.headers['presigned-expires']) {\n this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date);\n }\n\n if (credentials.sessionToken) {\n // presigned URLs require this header to be lowercased\n this.request.headers['x-amz-security-token'] = credentials.sessionToken;\n }\n\n var signature = this.sign(credentials.secretAccessKey, this.stringToSign());\n var auth = 'AWS ' + credentials.accessKeyId + ':' + signature;\n\n this.request.headers['Authorization'] = auth;\n },\n\n stringToSign: function stringToSign() {\n var r = this.request;\n\n var parts = [];\n parts.push(r.method);\n parts.push(r.headers['Content-MD5'] || '');\n parts.push(r.headers['Content-Type'] || '');\n\n // This is the \"Date\" header, but we use X-Amz-Date.\n // The S3 signing mechanism requires us to pass an empty\n // string for this Date header regardless.\n parts.push(r.headers['presigned-expires'] || '');\n\n var headers = this.canonicalizedAmzHeaders();\n if (headers) parts.push(headers);\n parts.push(this.canonicalizedResource());\n\n return parts.join('\\n');\n\n },\n\n canonicalizedAmzHeaders: function canonicalizedAmzHeaders() {\n\n var amzHeaders = [];\n\n AWS.util.each(this.request.headers, function (name) {\n if (name.match(/^x-amz-/i))\n amzHeaders.push(name);\n });\n\n amzHeaders.sort(function (a, b) {\n return a.toLowerCase() < b.toLowerCase() ? -1 : 1;\n });\n\n var parts = [];\n AWS.util.arrayEach.call(this, amzHeaders, function (name) {\n parts.push(name.toLowerCase() + ':' + String(this.request.headers[name]));\n });\n\n return parts.join('\\n');\n\n },\n\n canonicalizedResource: function canonicalizedResource() {\n\n var r = this.request;\n\n var parts = r.path.split('?');\n var path = parts[0];\n var querystring = parts[1];\n\n var resource = '';\n\n if (r.virtualHostedBucket)\n resource += '/' + r.virtualHostedBucket;\n\n resource += path;\n\n if (querystring) {\n\n // collect a list of sub resources and query params that need to be signed\n var resources = [];\n\n AWS.util.arrayEach.call(this, querystring.split('&'), function (param) {\n var name = param.split('=')[0];\n var value = param.split('=')[1];\n if (this.subResources[name] || this.responseHeaders[name]) {\n var subresource = { name: name };\n if (value !== undefined) {\n if (this.subResources[name]) {\n subresource.value = value;\n } else {\n subresource.value = decodeURIComponent(value);\n }\n }\n resources.push(subresource);\n }\n });\n\n resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; });\n\n if (resources.length) {\n\n querystring = [];\n AWS.util.arrayEach(resources, function (res) {\n if (res.value === undefined) {\n querystring.push(res.name);\n } else {\n querystring.push(res.name + '=' + res.value);\n }\n });\n\n resource += '?' + querystring.join('&');\n }\n\n }\n\n return resource;\n\n },\n\n sign: function sign(secret, string) {\n return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1');\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.S3;\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * @note AWS.TemporaryCredentials is deprecated, but remains available for\n * backwards compatibility. {AWS.ChainableTemporaryCredentials} is the\n * preferred class for temporary credentials.\n *\n * To setup temporary credentials, configure a set of master credentials\n * using the standard credentials providers (environment, EC2 instance metadata,\n * or from the filesystem), then set the global credentials to a new\n * temporary credentials object:\n *\n * ```javascript\n * // Note that environment credentials are loaded by default,\n * // the following line is shown for clarity:\n * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS');\n *\n * // Now set temporary credentials seeded from the master credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n *\n * // subsequent requests will now use temporary credentials from AWS STS.\n * new AWS.S3().listBucket(function(err, data) { ... });\n * ```\n *\n * @!attribute masterCredentials\n * @return [AWS.Credentials] the master (non-temporary) credentials used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @note In order to create temporary credentials, you first need to have\n * \"master\" credentials configured in {AWS.Config.credentials}. These\n * master credentials are necessary to retrieve the temporary credentials,\n * as well as refresh the credentials when they expire.\n * @param params [map] a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role.\n * @param masterCredentials [AWS.Credentials] the master (non-temporary) credentials\n * used to get and refresh temporary credentials from AWS STS.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.TemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.TemporaryCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials',\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function TemporaryCredentials(params, masterCredentials) {\n AWS.Credentials.call(this);\n this.loadMasterCredentials(masterCredentials);\n this.expired = true;\n\n this.params = params || {};\n if (this.params.RoleArn) {\n this.params.RoleSessionName =\n this.params.RoleSessionName || 'temporary-credentials';\n }\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh (callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load (callback) {\n var self = this;\n self.createClients();\n self.masterCredentials.get(function () {\n self.service.config.credentials = self.masterCredentials;\n var operation = self.params.RoleArn ?\n self.service.assumeRole : self.service.getSessionToken;\n operation.call(self.service, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n loadMasterCredentials: function loadMasterCredentials (masterCredentials) {\n this.masterCredentials = masterCredentials || AWS.config.credentials;\n while (this.masterCredentials.masterCredentials) {\n this.masterCredentials = this.masterCredentials.masterCredentials;\n }\n\n if (typeof this.masterCredentials.get !== 'function') {\n this.masterCredentials = new AWS.Credentials(this.masterCredentials);\n }\n },\n\n /**\n * @api private\n */\n createClients: function () {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mediastoredata'] = {};\nAWS.MediaStoreData = Service.defineService('mediastoredata', ['2017-09-01']);\nObject.defineProperty(apiLoader.services['mediastoredata'], '2017-09-01', {\n get: function get() {\n var model = require('../apis/mediastore-data-2017-09-01.min.json');\n model.paginators = require('../apis/mediastore-data-2017-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MediaStoreData;\n","function isFipsRegion(region) {\n return typeof region === 'string' && (region.startsWith('fips-') || region.endsWith('-fips'));\n}\n\nfunction isGlobalRegion(region) {\n return typeof region === 'string' && ['aws-global', 'aws-us-gov-global'].includes(region);\n}\n\nfunction getRealRegion(region) {\n return ['fips-aws-global', 'aws-fips', 'aws-global'].includes(region)\n ? 'us-east-1'\n : ['fips-aws-us-gov-global', 'aws-us-gov-global'].includes(region)\n ? 'us-gov-west-1'\n : region.replace(/fips-(dkr-|prod-)?|-fips/, '');\n}\n\nmodule.exports = {\n isFipsRegion: isFipsRegion,\n isGlobalRegion: isGlobalRegion,\n getRealRegion: getRealRegion\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['xray'] = {};\nAWS.XRay = Service.defineService('xray', ['2016-04-12']);\nObject.defineProperty(apiLoader.services['xray'], '2016-04-12', {\n get: function get() {\n var model = require('../apis/xray-2016-04-12.min.json');\n model.paginators = require('../apis/xray-2016-04-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.XRay;\n","var property = require('../util').property;\n\nfunction Paginator(name, paginator) {\n property(this, 'inputToken', paginator.input_token);\n property(this, 'limitKey', paginator.limit_key);\n property(this, 'moreResults', paginator.more_results);\n property(this, 'outputToken', paginator.output_token);\n property(this, 'resultKey', paginator.result_key);\n}\n\n/**\n * @api private\n */\nmodule.exports = Paginator;\n","var memoizedProperty = require('../util').memoizedProperty;\n\nfunction memoize(name, value, factory, nameTr) {\n memoizedProperty(this, nameTr(name), function() {\n return factory(name, value);\n });\n}\n\nfunction Collection(iterable, options, factory, nameTr, callback) {\n nameTr = nameTr || String;\n var self = this;\n\n for (var id in iterable) {\n if (Object.prototype.hasOwnProperty.call(iterable, id)) {\n memoize.call(self, id, iterable[id], factory, nameTr);\n if (callback) callback(id, iterable[id]);\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = Collection;\n","var AWS = require('./core');\n\n/**\n * @api private\n */\nAWS.ParamValidator = AWS.util.inherit({\n /**\n * Create a new validator object.\n *\n * @param validation [Boolean|map] whether input parameters should be\n * validated against the operation description before sending the\n * request. Pass a map to enable any of the following specific\n * validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n */\n constructor: function ParamValidator(validation) {\n if (validation === true || validation === undefined) {\n validation = {'min': true};\n }\n this.validation = validation;\n },\n\n validate: function validate(shape, params, context) {\n this.errors = [];\n this.validateMember(shape, params || {}, context || 'params');\n\n if (this.errors.length > 1) {\n var msg = this.errors.join('\\n* ');\n msg = 'There were ' + this.errors.length +\n ' validation errors:\\n* ' + msg;\n throw AWS.util.error(new Error(msg),\n {code: 'MultipleValidationErrors', errors: this.errors});\n } else if (this.errors.length === 1) {\n throw this.errors[0];\n } else {\n return true;\n }\n },\n\n fail: function fail(code, message) {\n this.errors.push(AWS.util.error(new Error(message), {code: code}));\n },\n\n validateStructure: function validateStructure(shape, params, context) {\n if (shape.isDocument) return true;\n\n this.validateType(params, context, ['object'], 'structure');\n var paramName;\n for (var i = 0; shape.required && i < shape.required.length; i++) {\n paramName = shape.required[i];\n var value = params[paramName];\n if (value === undefined || value === null) {\n this.fail('MissingRequiredParameter',\n 'Missing required key \\'' + paramName + '\\' in ' + context);\n }\n }\n\n // validate hash members\n for (paramName in params) {\n if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue;\n\n var paramValue = params[paramName],\n memberShape = shape.members[paramName];\n\n if (memberShape !== undefined) {\n var memberContext = [context, paramName].join('.');\n this.validateMember(memberShape, paramValue, memberContext);\n } else if (paramValue !== undefined && paramValue !== null) {\n this.fail('UnexpectedParameter',\n 'Unexpected key \\'' + paramName + '\\' found in ' + context);\n }\n }\n\n return true;\n },\n\n validateMember: function validateMember(shape, param, context) {\n switch (shape.type) {\n case 'structure':\n return this.validateStructure(shape, param, context);\n case 'list':\n return this.validateList(shape, param, context);\n case 'map':\n return this.validateMap(shape, param, context);\n default:\n return this.validateScalar(shape, param, context);\n }\n },\n\n validateList: function validateList(shape, params, context) {\n if (this.validateType(params, context, [Array])) {\n this.validateRange(shape, params.length, context, 'list member count');\n // validate array members\n for (var i = 0; i < params.length; i++) {\n this.validateMember(shape.member, params[i], context + '[' + i + ']');\n }\n }\n },\n\n validateMap: function validateMap(shape, params, context) {\n if (this.validateType(params, context, ['object'], 'map')) {\n // Build up a count of map members to validate range traits.\n var mapCount = 0;\n for (var param in params) {\n if (!Object.prototype.hasOwnProperty.call(params, param)) continue;\n // Validate any map key trait constraints\n this.validateMember(shape.key, param,\n context + '[key=\\'' + param + '\\']');\n this.validateMember(shape.value, params[param],\n context + '[\\'' + param + '\\']');\n mapCount++;\n }\n this.validateRange(shape, mapCount, context, 'map member count');\n }\n },\n\n validateScalar: function validateScalar(shape, value, context) {\n switch (shape.type) {\n case null:\n case undefined:\n case 'string':\n return this.validateString(shape, value, context);\n case 'base64':\n case 'binary':\n return this.validatePayload(value, context);\n case 'integer':\n case 'float':\n return this.validateNumber(shape, value, context);\n case 'boolean':\n return this.validateType(value, context, ['boolean']);\n case 'timestamp':\n return this.validateType(value, context, [Date,\n /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?Z$/, 'number'],\n 'Date object, ISO-8601 string, or a UNIX timestamp');\n default:\n return this.fail('UnkownType', 'Unhandled type ' +\n shape.type + ' for ' + context);\n }\n },\n\n validateString: function validateString(shape, value, context) {\n var validTypes = ['string'];\n if (shape.isJsonValue) {\n validTypes = validTypes.concat(['number', 'object', 'boolean']);\n }\n if (value !== null && this.validateType(value, context, validTypes)) {\n this.validateEnum(shape, value, context);\n this.validateRange(shape, value.length, context, 'string length');\n this.validatePattern(shape, value, context);\n this.validateUri(shape, value, context);\n }\n },\n\n validateUri: function validateUri(shape, value, context) {\n if (shape['location'] === 'uri') {\n if (value.length === 0) {\n this.fail('UriParameterError', 'Expected uri parameter to have length >= 1,'\n + ' but found \"' + value +'\" for ' + context);\n }\n }\n },\n\n validatePattern: function validatePattern(shape, value, context) {\n if (this.validation['pattern'] && shape['pattern'] !== undefined) {\n if (!(new RegExp(shape['pattern'])).test(value)) {\n this.fail('PatternMatchError', 'Provided value \"' + value + '\" '\n + 'does not match regex pattern /' + shape['pattern'] + '/ for '\n + context);\n }\n }\n },\n\n validateRange: function validateRange(shape, value, context, descriptor) {\n if (this.validation['min']) {\n if (shape['min'] !== undefined && value < shape['min']) {\n this.fail('MinRangeError', 'Expected ' + descriptor + ' >= '\n + shape['min'] + ', but found ' + value + ' for ' + context);\n }\n }\n if (this.validation['max']) {\n if (shape['max'] !== undefined && value > shape['max']) {\n this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= '\n + shape['max'] + ', but found ' + value + ' for ' + context);\n }\n }\n },\n\n validateEnum: function validateRange(shape, value, context) {\n if (this.validation['enum'] && shape['enum'] !== undefined) {\n // Fail if the string value is not present in the enum list\n if (shape['enum'].indexOf(value) === -1) {\n this.fail('EnumError', 'Found string value of ' + value + ', but '\n + 'expected ' + shape['enum'].join('|') + ' for ' + context);\n }\n }\n },\n\n validateType: function validateType(value, context, acceptedTypes, type) {\n // We will not log an error for null or undefined, but we will return\n // false so that callers know that the expected type was not strictly met.\n if (value === null || value === undefined) return false;\n\n var foundInvalidType = false;\n for (var i = 0; i < acceptedTypes.length; i++) {\n if (typeof acceptedTypes[i] === 'string') {\n if (typeof value === acceptedTypes[i]) return true;\n } else if (acceptedTypes[i] instanceof RegExp) {\n if ((value || '').toString().match(acceptedTypes[i])) return true;\n } else {\n if (value instanceof acceptedTypes[i]) return true;\n if (AWS.util.isType(value, acceptedTypes[i])) return true;\n if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice();\n acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]);\n }\n foundInvalidType = true;\n }\n\n var acceptedType = type;\n if (!acceptedType) {\n acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1');\n }\n\n var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : '';\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' +\n vowel + ' ' + acceptedType);\n return false;\n },\n\n validateNumber: function validateNumber(shape, value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') {\n var castedValue = parseFloat(value);\n if (castedValue.toString() === value) value = castedValue;\n }\n if (this.validateType(value, context, ['number'])) {\n this.validateRange(shape, value, context, 'numeric value');\n }\n },\n\n validatePayload: function validatePayload(value, context) {\n if (value === null || value === undefined) return;\n if (typeof value === 'string') return;\n if (value && typeof value.byteLength === 'number') return; // typed arrays\n if (AWS.util.isNode()) { // special check for buffer/stream in Node.js\n var Stream = AWS.util.stream.Stream;\n if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return;\n } else {\n if (typeof Blob !== void 0 && value instanceof Blob) return;\n }\n\n var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView'];\n if (value) {\n for (var i = 0; i < types.length; i++) {\n if (AWS.util.isType(value, types[i])) return;\n if (AWS.util.typeName(value.constructor) === types[i]) return;\n }\n }\n\n this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' +\n 'string, Buffer, Stream, Blob, or typed array object');\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalize'] = {};\nAWS.Personalize = Service.defineService('personalize', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalize'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Personalize;\n","var AWS = require('../core');\nvar v4Credentials = require('../signers/v4_credentials');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar s3util = require('./s3util');\nvar regionUtil = require('../region_config');\n\n// Pull in managed upload extension\nrequire('../s3/managed_upload');\n\n/**\n * @api private\n */\nvar operationsWith200StatusCodeError = {\n 'completeMultipartUpload': true,\n 'copyObject': true,\n 'uploadPartCopy': true\n};\n\n/**\n * @api private\n */\n var regionRedirectErrorCodes = [\n 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints\n 'BadRequest', // head operations on virtual-hosted global bucket endpoints\n 'PermanentRedirect', // non-head operations on path-style or regional endpoints\n 301 // head operations on path-style or regional endpoints\n ];\n\nvar OBJECT_LAMBDA_SERVICE = 's3-object-lambda';\n\nAWS.util.update(AWS.S3.prototype, {\n /**\n * @api private\n */\n getSignatureVersion: function getSignatureVersion(request) {\n var defaultApiVersion = this.api.signatureVersion;\n var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null;\n var regionDefinedVersion = this.config.signatureVersion;\n var isPresigned = request ? request.isPresigned() : false;\n /*\n 1) User defined version specified:\n a) always return user defined version\n 2) No user defined version specified:\n a) If not using presigned urls, default to V4\n b) If using presigned urls, default to lowest version the region supports\n */\n if (userDefinedVersion) {\n userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion;\n return userDefinedVersion;\n }\n if (isPresigned !== true) {\n defaultApiVersion = 'v4';\n } else if (regionDefinedVersion) {\n defaultApiVersion = regionDefinedVersion;\n }\n return defaultApiVersion;\n },\n\n /**\n * @api private\n */\n getSigningName: function getSigningName(req) {\n if (req && req.operation === 'writeGetObjectResponse') {\n return OBJECT_LAMBDA_SERVICE;\n }\n\n var _super = AWS.Service.prototype.getSigningName;\n return (req && req._parsedArn && req._parsedArn.service)\n ? req._parsedArn.service\n : _super.call(this);\n },\n\n /**\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var signatureVersion = this.getSignatureVersion(request);\n return AWS.Signers.RequestSigner.getVersion(signatureVersion);\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n var msg;\n var messages = [];\n\n // default to us-east-1 when no region is provided\n if (!this.config.region) this.config.region = 'us-east-1';\n\n if (!this.config.endpoint && this.config.s3BucketEndpoint) {\n messages.push('An endpoint must be provided when configuring ' +\n '`s3BucketEndpoint` to true.');\n }\n if (messages.length === 1) {\n msg = messages[0];\n } else if (messages.length > 1) {\n msg = 'Multiple configuration errors:\\n' + messages.join('\\n');\n }\n if (msg) {\n throw AWS.util.error(new Error(),\n {name: 'InvalidEndpoint', message: msg});\n }\n },\n\n /**\n * @api private\n */\n shouldDisableBodySigning: function shouldDisableBodySigning(request) {\n var signerClass = this.getSignerClass();\n if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4\n && request.httpRequest.endpoint.protocol === 'https:') {\n return true;\n }\n return false;\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n var prependListener = true;\n request.addListener('validate', this.validateScheme);\n request.addListener('validate', this.validateBucketName, prependListener);\n request.addListener('validate', this.optInUsEast1RegionalEndpoint, prependListener);\n\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_REGION);\n request.addListener('build', this.addContentType);\n request.addListener('build', this.computeContentMd5);\n request.addListener('build', this.computeSseCustomerKeyMd5);\n request.addListener('build', this.populateURI);\n request.addListener('afterBuild', this.addExpect100Continue);\n request.addListener('extractError', this.extractError);\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n request.addListener('extractData', this.extractData);\n request.addListener('extractData', this.extractErrorFrom200Response);\n request.addListener('beforePresign', this.prepareSignedUrl);\n if (this.shouldDisableBodySigning(request)) {\n request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n request.addListener('afterBuild', this.disableBodySigning);\n }\n //deal with ARNs supplied to Bucket\n if (request.operation !== 'createBucket' && s3util.isArnInParam(request, 'Bucket')) {\n // avoid duplicate parsing in the future\n request._parsedArn = AWS.util.ARN.parse(request.params.Bucket);\n\n request.removeListener('validate', this.validateBucketName);\n request.removeListener('build', this.populateURI);\n if (request._parsedArn.service === 's3') {\n request.addListener('validate', s3util.validateS3AccessPointArn);\n request.addListener('validate', this.validateArnResourceType);\n request.addListener('validate', this.validateArnRegion);\n } else if (request._parsedArn.service === 's3-outposts') {\n request.addListener('validate', s3util.validateOutpostsAccessPointArn);\n request.addListener('validate', s3util.validateOutpostsArn);\n request.addListener('validate', s3util.validateArnRegion);\n }\n request.addListener('validate', s3util.validateArnAccount);\n request.addListener('validate', s3util.validateArnService);\n request.addListener('build', this.populateUriFromAccessPointArn);\n request.addListener('build', s3util.validatePopulateUriFromArn);\n return;\n }\n //listeners regarding region inference\n request.addListener('validate', this.validateBucketEndpoint);\n request.addListener('validate', this.correctBucketRegionFromCache);\n request.onAsync('extractError', this.requestBucketRegion);\n if (AWS.util.isBrowser()) {\n request.onAsync('retry', this.reqRegionForNetworkingError);\n }\n },\n\n /**\n * @api private\n */\n validateScheme: function(req) {\n var params = req.params,\n scheme = req.httpRequest.endpoint.protocol,\n sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey;\n if (sensitive && scheme !== 'https:') {\n var msg = 'Cannot send SSE keys over HTTP. Set \\'sslEnabled\\'' +\n 'to \\'true\\' in your configuration';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateBucketEndpoint: function(req) {\n if (!req.params.Bucket && req.service.config.s3BucketEndpoint) {\n var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.';\n throw AWS.util.error(new Error(),\n { code: 'ConfigError', message: msg });\n }\n },\n\n /**\n * @api private\n */\n validateArnRegion: function validateArnRegion(req) {\n s3util.validateArnRegion(req, { allowFipsEndpoint: true });\n },\n\n /**\n * Validate resource-type supplied in S3 ARN\n */\n validateArnResourceType: function validateArnResourceType(req) {\n var resource = req._parsedArn.resource;\n\n if (\n resource.indexOf('accesspoint:') !== 0 &&\n resource.indexOf('accesspoint/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'accesspoint/\\''\n });\n }\n },\n\n /**\n * @api private\n */\n validateBucketName: function validateBucketName(req) {\n var service = req.service;\n var signatureVersion = service.getSignatureVersion(req);\n var bucket = req.params && req.params.Bucket;\n var key = req.params && req.params.Key;\n var slashIndex = bucket && bucket.indexOf('/');\n if (bucket && slashIndex >= 0) {\n if (typeof key === 'string' && slashIndex > 0) {\n req.params = AWS.util.copy(req.params);\n // Need to include trailing slash to match sigv2 behavior\n var prefix = bucket.substr(slashIndex + 1) || '';\n req.params.Key = prefix + '/' + key;\n req.params.Bucket = bucket.substr(0, slashIndex);\n } else if (signatureVersion === 'v4') {\n var msg = 'Bucket names cannot contain forward slashes. Bucket: ' + bucket;\n throw AWS.util.error(new Error(),\n { code: 'InvalidBucket', message: msg });\n }\n }\n },\n\n /**\n * @api private\n */\n isValidAccelerateOperation: function isValidAccelerateOperation(operation) {\n var invalidOperations = [\n 'createBucket',\n 'deleteBucket',\n 'listBuckets'\n ];\n return invalidOperations.indexOf(operation) === -1;\n },\n\n /**\n * When us-east-1 region endpoint configuration is set, in stead of sending request to\n * global endpoint(e.g. 's3.amazonaws.com'), we will send request to\n * 's3.us-east-1.amazonaws.com'.\n * @api private\n */\n optInUsEast1RegionalEndpoint: function optInUsEast1RegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.s3UsEast1RegionalEndpoint = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: 'AWS_S3_US_EAST_1_REGIONAL_ENDPOINT',\n sharedConfig: 's3_us_east_1_regional_endpoint',\n clientConfig: 's3UsEast1RegionalEndpoint'\n });\n if (\n !(service._originalConfig || {}).endpoint &&\n req.httpRequest.region === 'us-east-1' &&\n config.s3UsEast1RegionalEndpoint === 'regional' &&\n req.httpRequest.endpoint.hostname.indexOf('s3.amazonaws.com') >= 0\n ) {\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.us-east-1' + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n }\n },\n\n /**\n * S3 prefers dns-compatible bucket names to be moved from the uri path\n * to the hostname as a sub-domain. This is not possible, even for dns-compat\n * buckets when using SSL and the bucket name contains a dot ('.'). The\n * ssl wildcard certificate is only 1-level deep.\n *\n * @api private\n */\n populateURI: function populateURI(req) {\n var httpRequest = req.httpRequest;\n var b = req.params.Bucket;\n var service = req.service;\n var endpoint = httpRequest.endpoint;\n if (b) {\n if (!service.pathStyleBucketName(b)) {\n if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) {\n if (service.config.useDualstackEndpoint) {\n endpoint.hostname = b + '.s3-accelerate.dualstack.amazonaws.com';\n } else {\n endpoint.hostname = b + '.s3-accelerate.amazonaws.com';\n }\n } else if (!service.config.s3BucketEndpoint) {\n endpoint.hostname =\n b + '.' + endpoint.hostname;\n }\n\n var port = endpoint.port;\n if (port !== 80 && port !== 443) {\n endpoint.host = endpoint.hostname + ':' +\n endpoint.port;\n } else {\n endpoint.host = endpoint.hostname;\n }\n\n httpRequest.virtualHostedBucket = b; // needed for signing the request\n service.removeVirtualHostedBucketFromPath(req);\n }\n }\n },\n\n /**\n * Takes the bucket name out of the path if bucket is virtual-hosted\n *\n * @api private\n */\n removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) {\n var httpRequest = req.httpRequest;\n var bucket = httpRequest.virtualHostedBucket;\n if (bucket && httpRequest.path) {\n if (req.params && req.params.Key) {\n var encodedS3Key = '/' + AWS.util.uriEscapePath(req.params.Key);\n if (httpRequest.path.indexOf(encodedS3Key) === 0 && (httpRequest.path.length === encodedS3Key.length || httpRequest.path[encodedS3Key.length] === '?')) {\n //path only contains key or path contains only key and querystring\n return;\n }\n }\n httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), '');\n if (httpRequest.path[0] !== '/') {\n httpRequest.path = '/' + httpRequest.path;\n }\n }\n },\n\n /**\n * When user supply an access point ARN in the Bucket parameter, we need to\n * populate the URI according to the ARN.\n */\n populateUriFromAccessPointArn: function populateUriFromAccessPointArn(req) {\n var accessPointArn = req._parsedArn;\n\n var isOutpostArn = accessPointArn.service === 's3-outposts';\n var isObjectLambdaArn = accessPointArn.service === 's3-object-lambda';\n\n var outpostsSuffix = isOutpostArn ? '.' + accessPointArn.outpostId: '';\n var serviceName = isOutpostArn ? 's3-outposts': 's3-accesspoint';\n var fipsSuffix = !isOutpostArn && req.service.config.useFipsEndpoint ? '-fips': '';\n var dualStackSuffix = !isOutpostArn &&\n req.service.config.useDualstackEndpoint ? '.dualstack' : '';\n\n var endpoint = req.httpRequest.endpoint;\n var dnsSuffix = regionUtil.getEndpointSuffix(accessPointArn.region);\n var useArnRegion = req.service.config.s3UseArnRegion;\n\n endpoint.hostname = [\n accessPointArn.accessPoint + '-' + accessPointArn.accountId + outpostsSuffix,\n serviceName + fipsSuffix + dualStackSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n\n if (isObjectLambdaArn) {\n // should be in the format: \"accesspoint/${accesspointName}\"\n var serviceName = 's3-object-lambda';\n var accesspointName = accessPointArn.resource.split('/')[1];\n var fipsSuffix = req.service.config.useFipsEndpoint ? '-fips': '';\n endpoint.hostname = [\n accesspointName + '-' + accessPointArn.accountId,\n serviceName + fipsSuffix,\n useArnRegion ? accessPointArn.region : req.service.config.region,\n dnsSuffix\n ].join('.');\n }\n endpoint.host = endpoint.hostname;\n var encodedArn = AWS.util.uriEscape(req.params.Bucket);\n var path = req.httpRequest.path;\n //remove the Bucket value from path\n req.httpRequest.path = path.replace(new RegExp('/' + encodedArn), '');\n if (req.httpRequest.path[0] !== '/') {\n req.httpRequest.path = '/' + req.httpRequest.path;\n }\n req.httpRequest.region = accessPointArn.region; //region used to sign\n },\n\n /**\n * Adds Expect: 100-continue header if payload is greater-or-equal 1MB\n * @api private\n */\n addExpect100Continue: function addExpect100Continue(req) {\n var len = req.httpRequest.headers['Content-Length'];\n if (AWS.util.isNode() && (len >= 1024 * 1024 || req.params.Body instanceof AWS.util.stream.Stream)) {\n req.httpRequest.headers['Expect'] = '100-continue';\n }\n },\n\n /**\n * Adds a default content type if none is supplied.\n *\n * @api private\n */\n addContentType: function addContentType(req) {\n var httpRequest = req.httpRequest;\n if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') {\n // Content-Type is not set in GET/HEAD requests\n delete httpRequest.headers['Content-Type'];\n return;\n }\n\n if (!httpRequest.headers['Content-Type']) { // always have a Content-Type\n httpRequest.headers['Content-Type'] = 'application/octet-stream';\n }\n\n var contentType = httpRequest.headers['Content-Type'];\n if (AWS.util.isBrowser()) {\n if (typeof httpRequest.body === 'string' && !contentType.match(/;\\s*charset=/)) {\n var charset = '; charset=UTF-8';\n httpRequest.headers['Content-Type'] += charset;\n } else {\n var replaceFn = function(_, prefix, charsetName) {\n return prefix + charsetName.toUpperCase();\n };\n\n httpRequest.headers['Content-Type'] =\n contentType.replace(/(;\\s*charset=)(.+)$/, replaceFn);\n }\n }\n },\n\n /**\n * Checks whether checksums should be computed for the request if it's not\n * already set by {AWS.EventListeners.Core.COMPUTE_CHECKSUM}. It depends on\n * whether {AWS.Config.computeChecksums} is set.\n *\n * @param req [AWS.Request] the request to check against\n * @return [Boolean] whether to compute checksums for a request.\n * @api private\n */\n willComputeChecksums: function willComputeChecksums(req) {\n var rules = req.service.api.operations[req.operation].input.members;\n var body = req.httpRequest.body;\n var needsContentMD5 = req.service.config.computeChecksums &&\n rules.ContentMD5 &&\n !req.params.ContentMD5 &&\n body &&\n (AWS.util.Buffer.isBuffer(req.httpRequest.body) || typeof req.httpRequest.body === 'string');\n\n // Sha256 signing disabled, and not a presigned url\n if (needsContentMD5 && req.service.shouldDisableBodySigning(req) && !req.isPresigned()) {\n return true;\n }\n\n // SigV2 and presign, for backwards compatibility purpose.\n if (needsContentMD5 && this.getSignatureVersion(req) === 's3' && req.isPresigned()) {\n return true;\n }\n\n return false;\n },\n\n /**\n * A listener that computes the Content-MD5 and sets it in the header.\n * This listener is to support S3-specific features like\n * s3DisableBodySigning and SigV2 presign. Content MD5 logic for SigV4 is\n * handled in AWS.EventListeners.Core.COMPUTE_CHECKSUM\n *\n * @api private\n */\n computeContentMd5: function computeContentMd5(req) {\n if (req.service.willComputeChecksums(req)) {\n var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64');\n req.httpRequest.headers['Content-MD5'] = md5;\n }\n },\n\n /**\n * @api private\n */\n computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) {\n var keys = {\n SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5',\n CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5'\n };\n AWS.util.each(keys, function(key, header) {\n if (req.params[key]) {\n var value = AWS.util.crypto.md5(req.params[key], 'base64');\n req.httpRequest.headers[header] = value;\n }\n });\n },\n\n /**\n * Returns true if the bucket name should be left in the URI path for\n * a request to S3. This function takes into account the current\n * endpoint protocol (e.g. http or https).\n *\n * @api private\n */\n pathStyleBucketName: function pathStyleBucketName(bucketName) {\n // user can force path style requests via the configuration\n if (this.config.s3ForcePathStyle) return true;\n if (this.config.s3BucketEndpoint) return false;\n\n if (s3util.dnsCompatibleBucketName(bucketName)) {\n return (this.config.sslEnabled && bucketName.match(/\\./)) ? true : false;\n } else {\n return true; // not dns compatible names must always use path style\n }\n },\n\n /**\n * For COPY operations, some can be error even with status code 200.\n * SDK treats the response as exception when response body indicates\n * an exception or body is empty.\n *\n * @api private\n */\n extractErrorFrom200Response: function extractErrorFrom200Response(resp) {\n if (!operationsWith200StatusCodeError[resp.request.operation]) return;\n var httpResponse = resp.httpResponse;\n if (httpResponse.body && httpResponse.body.toString().match('')) {\n // Response body with '...' indicates an exception.\n // Get S3 client object. In ManagedUpload, this.service refers to\n // S3 client object.\n resp.data = null;\n var service = this.service ? this.service : this;\n service.extractError(resp);\n throw resp.error;\n } else if (!httpResponse.body || !httpResponse.body.toString().match(/<[\\w_]/)) {\n // When body is empty or incomplete, S3 might stop the request on detecting client\n // side aborting the request.\n resp.data = null;\n throw AWS.util.error(new Error(), {\n code: 'InternalError',\n message: 'S3 aborted request'\n });\n }\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error, request) {\n if (operationsWith200StatusCodeError[request.operation] &&\n error.statusCode === 200) {\n return true;\n } else if (request._requestRegionForBucket &&\n request.service.bucketRegionCache[request._requestRegionForBucket]) {\n return false;\n } else if (error && error.code === 'RequestTimeout') {\n return true;\n } else if (error &&\n regionRedirectErrorCodes.indexOf(error.code) != -1 &&\n error.region && error.region != request.httpRequest.region) {\n request.httpRequest.region = error.region;\n if (error.statusCode === 301) {\n request.service.updateReqBucketRegion(request);\n }\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error, request);\n }\n },\n\n /**\n * Updates httpRequest with region. If region is not provided, then\n * the httpRequest will be updated based on httpRequest.region\n *\n * @api private\n */\n updateReqBucketRegion: function updateReqBucketRegion(request, region) {\n var httpRequest = request.httpRequest;\n if (typeof region === 'string' && region.length) {\n httpRequest.region = region;\n }\n if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\\.amazonaws\\.com$/)) {\n return;\n }\n var service = request.service;\n var s3Config = service.config;\n var s3BucketEndpoint = s3Config.s3BucketEndpoint;\n if (s3BucketEndpoint) {\n delete s3Config.s3BucketEndpoint;\n }\n var newConfig = AWS.util.copy(s3Config);\n delete newConfig.endpoint;\n newConfig.region = httpRequest.region;\n\n httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint;\n service.populateURI(request);\n s3Config.s3BucketEndpoint = s3BucketEndpoint;\n httpRequest.headers.Host = httpRequest.endpoint.host;\n\n if (request._asm.currentState === 'validate') {\n request.removeListener('build', service.populateURI);\n request.addListener('build', service.removeVirtualHostedBucketFromPath);\n }\n },\n\n /**\n * Provides a specialized parser for getBucketLocation -- all other\n * operations are parsed by the super class.\n *\n * @api private\n */\n extractData: function extractData(resp) {\n var req = resp.request;\n if (req.operation === 'getBucketLocation') {\n var match = resp.httpResponse.body.toString().match(/>(.+)<\\/Location/);\n delete resp.data['_'];\n if (match) {\n resp.data.LocationConstraint = match[1];\n } else {\n resp.data.LocationConstraint = '';\n }\n }\n var bucket = req.params.Bucket || null;\n if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) {\n req.service.clearBucketRegionCache(bucket);\n } else {\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n if (!region && req.operation === 'createBucket' && !resp.error) {\n var createBucketConfiguration = req.params.CreateBucketConfiguration;\n if (!createBucketConfiguration) {\n region = 'us-east-1';\n } else if (createBucketConfiguration.LocationConstraint === 'EU') {\n region = 'eu-west-1';\n } else {\n region = createBucketConfiguration.LocationConstraint;\n }\n }\n if (region) {\n if (bucket && region !== req.service.bucketRegionCache[bucket]) {\n req.service.bucketRegionCache[bucket] = region;\n }\n }\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * Extracts an error object from the http response.\n *\n * @api private\n */\n extractError: function extractError(resp) {\n var codes = {\n 304: 'NotModified',\n 403: 'Forbidden',\n 400: 'BadRequest',\n 404: 'NotFound'\n };\n\n var req = resp.request;\n var code = resp.httpResponse.statusCode;\n var body = resp.httpResponse.body || '';\n\n var headers = resp.httpResponse.headers || {};\n var region = headers['x-amz-bucket-region'] || null;\n var bucket = req.params.Bucket || null;\n var bucketRegionCache = req.service.bucketRegionCache;\n if (region && bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n\n var cachedRegion;\n if (codes[code] && body.length === 0) {\n if (bucket && !region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n resp.error = AWS.util.error(new Error(), {\n code: codes[code],\n message: null,\n region: region\n });\n } else {\n var data = new AWS.XML.Parser().parse(body.toString());\n\n if (data.Region && !region) {\n region = data.Region;\n if (bucket && region !== bucketRegionCache[bucket]) {\n bucketRegionCache[bucket] = region;\n }\n } else if (bucket && !region && !data.Region) {\n cachedRegion = bucketRegionCache[bucket] || null;\n if (cachedRegion !== req.httpRequest.region) {\n region = cachedRegion;\n }\n }\n\n resp.error = AWS.util.error(new Error(), {\n code: data.Code || code,\n message: data.Message || null,\n region: region\n });\n }\n req.service.extractRequestIds(resp);\n },\n\n /**\n * If region was not obtained synchronously, then send async request\n * to get bucket region for errors resulting from wrong region.\n *\n * @api private\n */\n requestBucketRegion: function requestBucketRegion(resp, done) {\n var error = resp.error;\n var req = resp.request;\n var bucket = req.params.Bucket || null;\n\n if (!error || !bucket || error.region || req.operation === 'listObjects' ||\n (AWS.util.isNode() && req.operation === 'headBucket') ||\n (error.statusCode === 400 && req.operation !== 'headObject') ||\n regionRedirectErrorCodes.indexOf(error.code) === -1) {\n return done();\n }\n var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects';\n var reqParams = {Bucket: bucket};\n if (reqOperation === 'listObjects') reqParams.MaxKeys = 0;\n var regionReq = req.service[reqOperation](reqParams);\n regionReq._requestRegionForBucket = bucket;\n regionReq.send(function() {\n var region = req.service.bucketRegionCache[bucket] || null;\n error.region = region;\n done();\n });\n },\n\n /**\n * For browser only. If NetworkingError received, will attempt to obtain\n * the bucket region.\n *\n * @api private\n */\n reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) {\n if (!AWS.util.isBrowser()) {\n return done();\n }\n var error = resp.error;\n var request = resp.request;\n var bucket = request.params.Bucket;\n if (!error || error.code !== 'NetworkingError' || !bucket ||\n request.httpRequest.region === 'us-east-1') {\n return done();\n }\n var service = request.service;\n var bucketRegionCache = service.bucketRegionCache;\n var cachedRegion = bucketRegionCache[bucket] || null;\n\n if (cachedRegion && cachedRegion !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, cachedRegion);\n done();\n } else if (!s3util.dnsCompatibleBucketName(bucket)) {\n service.updateReqBucketRegion(request, 'us-east-1');\n if (bucketRegionCache[bucket] !== 'us-east-1') {\n bucketRegionCache[bucket] = 'us-east-1';\n }\n done();\n } else if (request.httpRequest.virtualHostedBucket) {\n var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0});\n service.updateReqBucketRegion(getRegionReq, 'us-east-1');\n getRegionReq._requestRegionForBucket = bucket;\n\n getRegionReq.send(function() {\n var region = service.bucketRegionCache[bucket] || null;\n if (region && region !== request.httpRequest.region) {\n service.updateReqBucketRegion(request, region);\n }\n done();\n });\n } else {\n // DNS-compatible path-style\n // (s3ForcePathStyle or bucket name with dot over https)\n // Cannot obtain region information for this case\n done();\n }\n },\n\n /**\n * Cache for bucket region.\n *\n * @api private\n */\n bucketRegionCache: {},\n\n /**\n * Clears bucket region cache.\n *\n * @api private\n */\n clearBucketRegionCache: function(buckets) {\n var bucketRegionCache = this.bucketRegionCache;\n if (!buckets) {\n buckets = Object.keys(bucketRegionCache);\n } else if (typeof buckets === 'string') {\n buckets = [buckets];\n }\n for (var i = 0; i < buckets.length; i++) {\n delete bucketRegionCache[buckets[i]];\n }\n return bucketRegionCache;\n },\n\n /**\n * Corrects request region if bucket's cached region is different\n *\n * @api private\n */\n correctBucketRegionFromCache: function correctBucketRegionFromCache(req) {\n var bucket = req.params.Bucket || null;\n if (bucket) {\n var service = req.service;\n var requestRegion = req.httpRequest.region;\n var cachedRegion = service.bucketRegionCache[bucket];\n if (cachedRegion && cachedRegion !== requestRegion) {\n service.updateReqBucketRegion(req, cachedRegion);\n }\n }\n },\n\n /**\n * Extracts S3 specific request ids from the http response.\n *\n * @api private\n */\n extractRequestIds: function extractRequestIds(resp) {\n var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null;\n var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null;\n resp.extendedRequestId = extendedRequestId;\n resp.cfId = cfId;\n\n if (resp.error) {\n resp.error.requestId = resp.requestId || null;\n resp.error.extendedRequestId = extendedRequestId;\n resp.error.cfId = cfId;\n }\n },\n\n /**\n * Get a pre-signed URL for a given operation name.\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @note The default signer allows altering the request by adding corresponding\n * headers to set some parameters (e.g. Range) and these added parameters\n * won't be signed. You must use signatureVersion v4 to to include these\n * parameters in the signed portion of the URL and enforce exact matching\n * between headers and signed params in the URL.\n * @note This operation cannot be used with a promise. See note above regarding\n * asynchronous credentials and use with a callback.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @param callback [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @example Pre-signing a getObject operation (synchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url);\n * @example Pre-signing a putObject (asynchronously)\n * var params = {Bucket: 'bucket', Key: 'key'};\n * s3.getSignedUrl('putObject', params, function (err, url) {\n * console.log('The URL is', url);\n * });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var url = s3.getSignedUrl('putObject', params);\n * console.log('The URL is', url);\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var url = s3.getSignedUrl('getObject', params);\n * console.log('The URL is', url); // expires in 60 seconds\n */\n getSignedUrl: function getSignedUrl(operation, params, callback) {\n params = AWS.util.copy(params || {});\n var expires = params.Expires || 900;\n\n if (typeof expires !== 'number') {\n throw AWS.util.error(new Error(),\n { code: 'InvalidParameterException', message: 'The expiration must be a number, received ' + typeof expires });\n }\n\n delete params.Expires; // we can't validate this\n var request = this.makeRequest(operation, params);\n\n if (callback) {\n AWS.util.defer(function() {\n request.presign(expires, callback);\n });\n } else {\n return request.presign(expires, callback);\n }\n },\n\n /**\n * @!method getSignedUrlPromise()\n * Returns a 'thenable' promise that will be resolved with a pre-signed URL\n * for a given operation name.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @note Not all operation parameters are supported when using pre-signed\n * URLs. Certain parameters, such as `SSECustomerKey`, `ACL`, `Expires`,\n * `ContentLength`, or `Tagging` must be provided as headers when sending a\n * request. If you are using pre-signed URLs to upload from a browser and\n * need to use these fields, see {createPresignedPost}.\n * @param operation [String] the name of the operation to call\n * @param params [map] parameters to pass to the operation. See the given\n * operation for the expected operation parameters. In addition, you can\n * also pass the \"Expires\" parameter to inform S3 how long the URL should\n * work for.\n * @option params Expires [Integer] (900) the number of seconds to expire\n * the pre-signed URL operation in. Defaults to 15 minutes.\n * @callback fulfilledCallback function(url)\n * Called if the promise is fulfilled.\n * @param url [String] the signed url\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Pre-signing a getObject operation\n * var params = {Bucket: 'bucket', Key: 'key'};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Pre-signing a putObject operation with a specific payload\n * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'};\n * var promise = s3.getSignedUrlPromise('putObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n * @example Passing in a 1-minute expiry time for a pre-signed URL\n * var params = {Bucket: 'bucket', Key: 'key', Expires: 60};\n * var promise = s3.getSignedUrlPromise('getObject', params);\n * promise.then(function(url) {\n * console.log('The URL is', url);\n * }, function(err) { ... });\n */\n\n /**\n * Get a pre-signed POST policy to support uploading to S3 directly from an\n * HTML form.\n *\n * @param params [map]\n * @option params Bucket [String] The bucket to which the post should be\n * uploaded\n * @option params Expires [Integer] (3600) The number of seconds for which\n * the presigned policy should be valid.\n * @option params Conditions [Array] An array of conditions that must be met\n * for the presigned policy to allow the\n * upload. This can include required tags,\n * the accepted range for content lengths,\n * etc.\n * @see http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html\n * @option params Fields [map] Fields to include in the form. All\n * values passed in as fields will be\n * signed as exact match conditions.\n * @param callback [Function]\n *\n * @note All fields passed in when creating presigned post data will be signed\n * as exact match conditions. Any fields that will be interpolated by S3\n * must be added to the fields hash after signing, and an appropriate\n * condition for such fields must be explicitly added to the Conditions\n * array passed to this function before signing.\n *\n * @example Presiging post data with a known key\n * var params = {\n * Bucket: 'bucket',\n * Fields: {\n * key: 'key'\n * }\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * console.log('The post data is', data);\n * }\n * });\n *\n * @example Presigning post data with an interpolated key\n * var params = {\n * Bucket: 'bucket',\n * Conditions: [\n * ['starts-with', '$key', 'path/to/uploads/']\n * ]\n * };\n * s3.createPresignedPost(params, function(err, data) {\n * if (err) {\n * console.error('Presigning post data encountered an error', err);\n * } else {\n * data.Fields.key = 'path/to/uploads/${filename}';\n * console.log('The post data is', data);\n * }\n * });\n *\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @return [map] If called synchronously (with no callback), returns a hash\n * with the url to set as the form action and a hash of fields\n * to include in the form.\n * @return [null] Nothing is returned if a callback is provided.\n *\n * @callback callback function (err, data)\n * @param err [Error] the error object returned from the policy signer\n * @param data [map] The data necessary to construct an HTML form\n * @param data.url [String] The URL to use as the action of the form\n * @param data.fields [map] A hash of fields that must be included in the\n * form for the upload to succeed. This hash will\n * include the signed POST policy, your access key\n * ID and security token (if present), etc. These\n * may be safely included as input elements of type\n * 'hidden.'\n */\n createPresignedPost: function createPresignedPost(params, callback) {\n if (typeof params === 'function' && callback === undefined) {\n callback = params;\n params = null;\n }\n\n params = AWS.util.copy(params || {});\n var boundParams = this.config.params || {};\n var bucket = params.Bucket || boundParams.Bucket,\n self = this,\n config = this.config,\n endpoint = AWS.util.copy(this.endpoint);\n if (!config.s3BucketEndpoint) {\n endpoint.pathname = '/' + bucket;\n }\n\n function finalizePost() {\n return {\n url: AWS.util.urlFormat(endpoint),\n fields: self.preparePostFields(\n config.credentials,\n config.region,\n bucket,\n params.Fields,\n params.Conditions,\n params.Expires\n )\n };\n }\n\n if (callback) {\n config.getCredentials(function (err) {\n if (err) {\n callback(err);\n } else {\n try {\n callback(null, finalizePost());\n } catch (err) {\n callback(err);\n }\n }\n });\n } else {\n return finalizePost();\n }\n },\n\n /**\n * @api private\n */\n preparePostFields: function preparePostFields(\n credentials,\n region,\n bucket,\n fields,\n conditions,\n expiresInSeconds\n ) {\n var now = this.getSkewCorrectedDate();\n if (!credentials || !region || !bucket) {\n throw new Error('Unable to create a POST object policy without a bucket,'\n + ' region, and credentials');\n }\n fields = AWS.util.copy(fields || {});\n conditions = (conditions || []).slice(0);\n expiresInSeconds = expiresInSeconds || 3600;\n\n var signingDate = AWS.util.date.iso8601(now).replace(/[:\\-]|\\.\\d{3}/g, '');\n var shortDate = signingDate.substr(0, 8);\n var scope = v4Credentials.createScope(shortDate, region, 's3');\n var credential = credentials.accessKeyId + '/' + scope;\n\n fields['bucket'] = bucket;\n fields['X-Amz-Algorithm'] = 'AWS4-HMAC-SHA256';\n fields['X-Amz-Credential'] = credential;\n fields['X-Amz-Date'] = signingDate;\n if (credentials.sessionToken) {\n fields['X-Amz-Security-Token'] = credentials.sessionToken;\n }\n for (var field in fields) {\n if (fields.hasOwnProperty(field)) {\n var condition = {};\n condition[field] = fields[field];\n conditions.push(condition);\n }\n }\n\n fields.Policy = this.preparePostPolicy(\n new Date(now.valueOf() + expiresInSeconds * 1000),\n conditions\n );\n fields['X-Amz-Signature'] = AWS.util.crypto.hmac(\n v4Credentials.getSigningKey(credentials, shortDate, region, 's3', true),\n fields.Policy,\n 'hex'\n );\n\n return fields;\n },\n\n /**\n * @api private\n */\n preparePostPolicy: function preparePostPolicy(expiration, conditions) {\n return AWS.util.base64.encode(JSON.stringify({\n expiration: AWS.util.date.iso8601(expiration),\n conditions: conditions\n }));\n },\n\n /**\n * @api private\n */\n prepareSignedUrl: function prepareSignedUrl(request) {\n request.addListener('validate', request.service.noPresignedContentLength);\n request.removeListener('build', request.service.addContentType);\n if (!request.params.Body) {\n // no Content-MD5/SHA-256 if body is not provided\n request.removeListener('build', request.service.computeContentMd5);\n } else {\n request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256);\n }\n },\n\n /**\n * @api private\n * @param request\n */\n disableBodySigning: function disableBodySigning(request) {\n var headers = request.httpRequest.headers;\n // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined\n if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) {\n headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n }\n },\n\n /**\n * @api private\n */\n noPresignedContentLength: function noPresignedContentLength(request) {\n if (request.params.ContentLength !== undefined) {\n throw AWS.util.error(new Error(), {code: 'UnexpectedParameter',\n message: 'ContentLength is not supported in pre-signed URLs.'});\n }\n },\n\n createBucket: function createBucket(params, callback) {\n // When creating a bucket *outside* the classic region, the location\n // constraint must be set for the bucket and it must match the endpoint.\n // This chunk of code will set the location constraint param based\n // on the region (when possible), but it will not override a passed-in\n // location constraint.\n if (typeof params === 'function' || !params) {\n callback = callback || params;\n params = {};\n }\n var hostname = this.endpoint.hostname;\n // copy params so that appending keys does not unintentioinallly\n // mutate params object argument passed in by user\n var copiedParams = AWS.util.copy(params);\n\n if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) {\n copiedParams.CreateBucketConfiguration = { LocationConstraint: this.config.region };\n }\n return this.makeRequest('createBucket', copiedParams, callback);\n },\n\n writeGetObjectResponse: function writeGetObjectResponse(params, callback) {\n\n var request = this.makeRequest('writeGetObjectResponse', AWS.util.copy(params), callback);\n var hostname = this.endpoint.hostname;\n if (hostname.indexOf(this.config.region) !== -1) {\n // hostname specifies a region already\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.');\n } else {\n // Hostname doesn't have a region.\n // Object Lambda requires an explicit region.\n hostname = hostname.replace('s3.', OBJECT_LAMBDA_SERVICE + '.' + this.config.region + '.');\n }\n\n request.httpRequest.endpoint = new AWS.Endpoint(hostname, this.config);\n return request;\n },\n\n /**\n * @see AWS.S3.ManagedUpload\n * @overload upload(params = {}, [options], [callback])\n * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent\n * concurrent handling of parts if the payload is large enough. You can\n * configure the concurrent queue size by setting `options`. Note that this\n * is the only operation for which the SDK can retry requests with stream\n * bodies.\n *\n * @param (see AWS.S3.putObject)\n * @option (see AWS.S3.ManagedUpload.constructor)\n * @return [AWS.S3.ManagedUpload] the managed upload object that can call\n * `send()` or track progress.\n * @example Uploading a stream object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * s3.upload(params, function(err, data) {\n * console.log(err, data);\n * });\n * @example Uploading a stream with concurrency of 1 and partSize of 10mb\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var options = {partSize: 10 * 1024 * 1024, queueSize: 1};\n * s3.upload(params, options, function(err, data) {\n * console.log(err, data);\n * });\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * @param data.Location [String] the URL of the uploaded object\n * @param data.ETag [String] the ETag of the uploaded object\n * @param data.Bucket [String] the bucket to which the object was uploaded\n * @param data.Key [String] the key to which the object was uploaded\n */\n upload: function upload(params, options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = null;\n }\n\n options = options || {};\n options = AWS.util.merge(options || {}, {service: this, params: params});\n\n var uploader = new AWS.S3.ManagedUpload(options);\n if (typeof callback === 'function') uploader.send(callback);\n return uploader;\n }\n});\n\n/**\n * @api private\n */\nAWS.S3.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getSignedUrlPromise = AWS.util.promisifyMethod('getSignedUrl', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getSignedUrlPromise;\n};\n\nAWS.util.addPromises(AWS.S3);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['gamelift'] = {};\nAWS.GameLift = Service.defineService('gamelift', ['2015-10-01']);\nObject.defineProperty(apiLoader.services['gamelift'], '2015-10-01', {\n get: function get() {\n var model = require('../apis/gamelift-2015-10-01.min.json');\n model.paginators = require('../apis/gamelift-2015-10-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.GameLift;\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar toInteger = require('../internals/to-integer');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue === 'string' &&\n replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1 &&\n replaceValue.indexOf('$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = toString(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","var AWS = require('../core');\nvar inherit = AWS.util.inherit;\n\nrequire('./v3');\n\n/**\n * @api private\n */\nAWS.Signers.V3Https = inherit(AWS.Signers.V3, {\n authorization: function authorization(credentials) {\n return 'AWS3-HTTPS ' +\n 'AWSAccessKeyId=' + credentials.accessKeyId + ',' +\n 'Algorithm=HmacSHA256,' +\n 'Signature=' + this.signature(credentials);\n },\n\n stringToSign: function stringToSign() {\n return this.request.headers['X-Amz-Date'];\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.Signers.V3Https;\n","var AWS = require('./core');\nvar util = require('./util');\nvar endpointDiscoveryEnabledEnvs = ['AWS_ENABLE_ENDPOINT_DISCOVERY', 'AWS_ENDPOINT_DISCOVERY_ENABLED'];\n\n/**\n * Generate key (except resources and operation part) to index the endpoints in the cache\n * If input shape has endpointdiscoveryid trait then use\n * accessKey + operation + resources + region + service as cache key\n * If input shape doesn't have endpointdiscoveryid trait then use\n * accessKey + region + service as cache key\n * @return [map] object with keys to index endpoints.\n * @api private\n */\nfunction getCacheKey(request) {\n var service = request.service;\n var api = service.api || {};\n var operations = api.operations;\n var identifiers = {};\n if (service.config.region) {\n identifiers.region = service.config.region;\n }\n if (api.serviceId) {\n identifiers.serviceId = api.serviceId;\n }\n if (service.config.credentials.accessKeyId) {\n identifiers.accessKeyId = service.config.credentials.accessKeyId;\n }\n return identifiers;\n}\n\n/**\n * Recursive helper for marshallCustomIdentifiers().\n * Looks for required string input members that have 'endpointdiscoveryid' trait.\n * @api private\n */\nfunction marshallCustomIdentifiersHelper(result, params, shape) {\n if (!shape || params === undefined || params === null) return;\n if (shape.type === 'structure' && shape.required && shape.required.length > 0) {\n util.arrayEach(shape.required, function(name) {\n var memberShape = shape.members[name];\n if (memberShape.endpointDiscoveryId === true) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n result[locationName] = String(params[name]);\n } else {\n marshallCustomIdentifiersHelper(result, params[name], memberShape);\n }\n });\n }\n}\n\n/**\n * Get custom identifiers for cache key.\n * Identifies custom identifiers by checking each shape's `endpointDiscoveryId` trait.\n * @param [object] request object\n * @param [object] input shape of the given operation's api\n * @api private\n */\nfunction marshallCustomIdentifiers(request, shape) {\n var identifiers = {};\n marshallCustomIdentifiersHelper(identifiers, request.params, shape);\n return identifiers;\n}\n\n/**\n * Call endpoint discovery operation when it's optional.\n * When endpoint is available in cache then use the cached endpoints. If endpoints\n * are unavailable then use regional endpoints and call endpoint discovery operation\n * asynchronously. This is turned off by default.\n * @param [object] request object\n * @api private\n */\nfunction optionalDiscoverEndpoint(request) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var endpoints = AWS.endpointCache.get(cacheKey);\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //or endpoint operation just failed in 1 minute\n return;\n } else if (endpoints && endpoints.length > 0) {\n //found endpoint record from cache\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n } else {\n //endpoint record not in cache or outdated. make discovery operation\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n addApiVersionHeader(endpointRequest);\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n endpointRequest.removeListener('retry', AWS.EventListeners.Core.RETRY_CHECK);\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1\n }]);\n endpointRequest.send(function(err, data) {\n if (data && data.Endpoints) {\n AWS.endpointCache.put(cacheKey, data.Endpoints);\n } else if (err) {\n AWS.endpointCache.put(cacheKey, [{\n Address: '',\n CachePeriodInMinutes: 1 //not to make more endpoint operation in next 1 minute\n }]);\n }\n });\n }\n}\n\nvar requestQueue = {};\n\n/**\n * Call endpoint discovery operation when it's required.\n * When endpoint is available in cache then use cached ones. If endpoints are\n * unavailable then SDK should call endpoint operation then use returned new\n * endpoint for the api call. SDK will automatically attempt to do endpoint\n * discovery. This is turned off by default\n * @param [object] request object\n * @api private\n */\nfunction requiredDiscoverEndpoint(request, done) {\n var service = request.service;\n var api = service.api;\n var operationModel = api.operations ? api.operations[request.operation] : undefined;\n var inputShape = operationModel ? operationModel.input : undefined;\n\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operationModel) cacheKey.operation = operationModel.name;\n }\n var cacheKeyStr = AWS.EndpointCache.getKeyString(cacheKey);\n var endpoints = AWS.endpointCache.get(cacheKeyStr); //endpoint cache also accepts string keys\n if (endpoints && endpoints.length === 1 && endpoints[0].Address === '') {\n //endpoint operation is being made but response not yet received\n //push request object to a pending queue\n if (!requestQueue[cacheKeyStr]) requestQueue[cacheKeyStr] = [];\n requestQueue[cacheKeyStr].push({request: request, callback: done});\n return;\n } else if (endpoints && endpoints.length > 0) {\n request.httpRequest.updateEndpoint(endpoints[0].Address);\n done();\n } else {\n var endpointRequest = service.makeRequest(api.endpointOperation, {\n Operation: operationModel.name,\n Identifiers: identifiers,\n });\n endpointRequest.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n addApiVersionHeader(endpointRequest);\n\n //put in a placeholder for endpoints already requested, prevent\n //too much in-flight calls\n AWS.endpointCache.put(cacheKeyStr, [{\n Address: '',\n CachePeriodInMinutes: 60 //long-live cache\n }]);\n endpointRequest.send(function(err, data) {\n if (err) {\n request.response.error = util.error(err, { retryable: false });\n AWS.endpointCache.remove(cacheKey);\n\n //fail all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.response.error = util.error(err, { retryable: false });\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n } else if (data) {\n AWS.endpointCache.put(cacheKeyStr, data.Endpoints);\n request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n\n //update the endpoint for all the pending requests in batch\n if (requestQueue[cacheKeyStr]) {\n var pendingRequests = requestQueue[cacheKeyStr];\n util.arrayEach(pendingRequests, function(requestContext) {\n requestContext.request.httpRequest.updateEndpoint(data.Endpoints[0].Address);\n requestContext.callback();\n });\n delete requestQueue[cacheKeyStr];\n }\n }\n done();\n });\n }\n}\n\n/**\n * add api version header to endpoint operation\n * @api private\n */\nfunction addApiVersionHeader(endpointRequest) {\n var api = endpointRequest.service.api;\n var apiVersion = api.apiVersion;\n if (apiVersion && !endpointRequest.httpRequest.headers['x-amz-api-version']) {\n endpointRequest.httpRequest.headers['x-amz-api-version'] = apiVersion;\n }\n}\n\n/**\n * If api call gets invalid endpoint exception, SDK should attempt to remove the invalid\n * endpoint from cache.\n * @api private\n */\nfunction invalidateCachedEndpoints(response) {\n var error = response.error;\n var httpResponse = response.httpResponse;\n if (error &&\n (error.code === 'InvalidEndpointException' || httpResponse.statusCode === 421)\n ) {\n var request = response.request;\n var operations = request.service.api.operations || {};\n var inputShape = operations[request.operation] ? operations[request.operation].input : undefined;\n var identifiers = marshallCustomIdentifiers(request, inputShape);\n var cacheKey = getCacheKey(request);\n if (Object.keys(identifiers).length > 0) {\n cacheKey = util.update(cacheKey, identifiers);\n if (operations[request.operation]) cacheKey.operation = operations[request.operation].name;\n }\n AWS.endpointCache.remove(cacheKey);\n }\n}\n\n/**\n * If endpoint is explicitly configured, SDK should not do endpoint discovery in anytime.\n * @param [object] client Service client object.\n * @api private\n */\nfunction hasCustomEndpoint(client) {\n //if set endpoint is set for specific client, enable endpoint discovery will raise an error.\n if (client._originalConfig && client._originalConfig.endpoint && client._originalConfig.endpointDiscoveryEnabled === true) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Custom endpoint is supplied; endpointDiscoveryEnabled must not be true.'\n });\n };\n var svcConfig = AWS.config[client.serviceIdentifier] || {};\n return Boolean(AWS.config.endpoint || svcConfig.endpoint || (client._originalConfig && client._originalConfig.endpoint));\n}\n\n/**\n * @api private\n */\nfunction isFalsy(value) {\n return ['false', '0'].indexOf(value) >= 0;\n}\n\n/**\n * If endpoint discovery should perform for this request when no operation requires endpoint\n * discovery for the given service.\n * SDK performs config resolution in order like below:\n * 1. If set in client configuration.\n * 2. If set in env AWS_ENABLE_ENDPOINT_DISCOVERY.\n * 3. If set in shared ini config file with key 'endpoint_discovery_enabled'.\n * @param [object] request request object.\n * @returns [boolean|undefined] if endpoint discovery config is not set in any source, this\n * function returns undefined\n * @api private\n */\nfunction resolveEndpointDiscoveryConfig(request) {\n var service = request.service || {};\n if (service.config.endpointDiscoveryEnabled !== undefined) {\n return service.config.endpointDiscoveryEnabled;\n }\n\n //shared ini file is only available in Node\n //not to check env in browser\n if (util.isBrowser()) return undefined;\n\n // If any of recognized endpoint discovery config env is set\n for (var i = 0; i < endpointDiscoveryEnabledEnvs.length; i++) {\n var env = endpointDiscoveryEnabledEnvs[i];\n if (Object.prototype.hasOwnProperty.call(process.env, env)) {\n if (process.env[env] === '' || process.env[env] === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'environmental variable ' + env + ' cannot be set to nothing'\n });\n }\n return !isFalsy(process.env[env]);\n }\n }\n\n var configFile = {};\n try {\n configFile = AWS.util.iniLoader ? AWS.util.iniLoader.loadFrom({\n isConfig: true,\n filename: process.env[AWS.util.sharedConfigFileEnv]\n }) : {};\n } catch (e) {}\n var sharedFileConfig = configFile[\n process.env.AWS_PROFILE || AWS.util.defaultProfile\n ] || {};\n if (Object.prototype.hasOwnProperty.call(sharedFileConfig, 'endpoint_discovery_enabled')) {\n if (sharedFileConfig.endpoint_discovery_enabled === undefined) {\n throw util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'config file entry \\'endpoint_discovery_enabled\\' cannot be set to nothing'\n });\n }\n return !isFalsy(sharedFileConfig.endpoint_discovery_enabled);\n }\n return undefined;\n}\n\n/**\n * attach endpoint discovery logic to request object\n * @param [object] request\n * @api private\n */\nfunction discoverEndpoint(request, done) {\n var service = request.service || {};\n if (hasCustomEndpoint(service) || request.isPresigned()) return done();\n\n var operations = service.api.operations || {};\n var operationModel = operations[request.operation];\n var isEndpointDiscoveryRequired = operationModel ? operationModel.endpointDiscoveryRequired : 'NULL';\n var isEnabled = resolveEndpointDiscoveryConfig(request);\n var hasRequiredEndpointDiscovery = service.api.hasRequiredEndpointDiscovery;\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // Once a customer enables endpoint discovery, the SDK should start appending\n // the string endpoint-discovery to the user-agent on all requests.\n request.httpRequest.appendToUserAgent('endpoint-discovery');\n }\n switch (isEndpointDiscoveryRequired) {\n case 'OPTIONAL':\n if (isEnabled || hasRequiredEndpointDiscovery) {\n // For a given service; if at least one operation requires endpoint discovery then the SDK must enable endpoint discovery\n // by default for all operations of that service, including operations where endpoint discovery is optional.\n optionalDiscoverEndpoint(request);\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n }\n done();\n break;\n case 'REQUIRED':\n if (isEnabled === false) {\n // For a given operation; if endpoint discovery is required and it has been disabled on the SDK client,\n // then the SDK must return a clear and actionable exception.\n request.response.error = util.error(new Error(), {\n code: 'ConfigurationException',\n message: 'Endpoint Discovery is disabled but ' + service.api.className + '.' + request.operation +\n '() requires it. Please check your configurations.'\n });\n done();\n break;\n }\n request.addNamedListener('INVALIDATE_CACHED_ENDPOINTS', 'extractError', invalidateCachedEndpoints);\n requiredDiscoverEndpoint(request, done);\n break;\n case 'NULL':\n default:\n done();\n break;\n }\n}\n\nmodule.exports = {\n discoverEndpoint: discoverEndpoint,\n requiredDiscoverEndpoint: requiredDiscoverEndpoint,\n optionalDiscoverEndpoint: optionalDiscoverEndpoint,\n marshallCustomIdentifiers: marshallCustomIdentifiers,\n getCacheKey: getCacheKey,\n invalidateCachedEndpoint: invalidateCachedEndpoints,\n};\n","var AWS = require('../core');\n\nAWS.util.update(AWS.Route53.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.on('build', this.sanitizeUrl);\n },\n\n /**\n * @api private\n */\n sanitizeUrl: function sanitizeUrl(request) {\n var path = request.httpRequest.path;\n request.httpRequest.path = path.replace(/\\/%2F\\w+%2F/, '/');\n },\n\n /**\n * @return [Boolean] whether the error can be retried\n * @api private\n */\n retryableError: function retryableError(error) {\n if (error.code === 'PriorRequestNotComplete' &&\n error.statusCode === 400) {\n return true;\n } else {\n var _super = AWS.Service.prototype.retryableError;\n return _super.call(this, error);\n }\n }\n});\n","var util = require('../core').util;\nvar convert = require('./converter');\n\nvar Translator = function(options) {\n options = options || {};\n this.attrValue = options.attrValue;\n this.convertEmptyValues = Boolean(options.convertEmptyValues);\n this.wrapNumbers = Boolean(options.wrapNumbers);\n};\n\nTranslator.prototype.translateInput = function(value, shape) {\n this.mode = 'input';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translateOutput = function(value, shape) {\n this.mode = 'output';\n return this.translate(value, shape);\n};\n\nTranslator.prototype.translate = function(value, shape) {\n var self = this;\n if (!shape || value === undefined) return undefined;\n\n if (shape.shape === self.attrValue) {\n return convert[self.mode](value, {\n convertEmptyValues: self.convertEmptyValues,\n wrapNumbers: self.wrapNumbers,\n });\n }\n switch (shape.type) {\n case 'structure': return self.translateStructure(value, shape);\n case 'map': return self.translateMap(value, shape);\n case 'list': return self.translateList(value, shape);\n default: return self.translateScalar(value, shape);\n }\n};\n\nTranslator.prototype.translateStructure = function(structure, shape) {\n var self = this;\n if (structure == null) return undefined;\n\n var struct = {};\n util.each(structure, function(name, value) {\n var memberShape = shape.members[name];\n if (memberShape) {\n var result = self.translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n};\n\nTranslator.prototype.translateList = function(list, shape) {\n var self = this;\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = self.translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n};\n\nTranslator.prototype.translateMap = function(map, shape) {\n var self = this;\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = self.translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n};\n\nTranslator.prototype.translateScalar = function(value, shape) {\n return shape.toType(value);\n};\n\n/**\n * @api private\n */\nmodule.exports = Translator;\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given. In addition, the\n * `WebIdentityToken` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn` and `WebIdentityToken` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.WebIdentityToken = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n */\nAWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithWebIdentity)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.WebIdentityCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity',\n * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service\n * RoleSessionName: 'web' // optional name, defaults to web-identity\n * }, {\n * // optionally provide configuration to apply to the underlying AWS.STS service client\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.Config\n */\n constructor: function WebIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity';\n this.data = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithWebIdentity(function (err, data) {\n self.data = null;\n if (!err) {\n self.data = data;\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n if (!this.service) {\n var stsConfig = AWS.util.merge({}, this._clientConfig);\n stsConfig.params = this.params;\n this.service = new STS(stsConfig);\n }\n }\n\n});\n","var isRegExp = require('../internals/is-regexp');\n\nmodule.exports = function (it) {\n if (isRegExp(it)) {\n throw TypeError(\"The method doesn't accept regular expressions\");\n } return it;\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['devicefarm'] = {};\nAWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']);\nObject.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', {\n get: function get() {\n var model = require('../apis/devicefarm-2015-06-23.min.json');\n model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DeviceFarm;\n","var AWS = require('../core');\n\n// pull in CloudFront signer\nrequire('../cloudfront/signer');\n\nAWS.util.update(AWS.CloudFront.prototype, {\n\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('extractData', AWS.util.hoistPayloadMember);\n }\n\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['waf'] = {};\nAWS.WAF = Service.defineService('waf', ['2015-08-24']);\nObject.defineProperty(apiLoader.services['waf'], '2015-08-24', {\n get: function get() {\n var model = require('../apis/waf-2015-08-24.min.json');\n model.paginators = require('../apis/waf-2015-08-24.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.WAF;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['connect'] = {};\nAWS.Connect = Service.defineService('connect', ['2017-08-08']);\nObject.defineProperty(apiLoader.services['connect'], '2017-08-08', {\n get: function get() {\n var model = require('../apis/connect-2017-08-08.min.json');\n model.paginators = require('../apis/connect-2017-08-08.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Connect;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['efs'] = {};\nAWS.EFS = Service.defineService('efs', ['2015-02-01']);\nObject.defineProperty(apiLoader.services['efs'], '2015-02-01', {\n get: function get() {\n var model = require('../apis/elasticfilesystem-2015-02-01.min.json');\n model.paginators = require('../apis/elasticfilesystem-2015-02-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EFS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudfront'] = {};\nAWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07*', '2016-09-29*', '2016-11-25', '2016-11-25*', '2017-03-25', '2017-03-25*', '2017-10-30', '2017-10-30*', '2018-06-18', '2018-06-18*', '2018-11-05', '2018-11-05*', '2019-03-26', '2019-03-26*', '2020-05-31']);\nrequire('../lib/services/cloudfront');\nObject.defineProperty(apiLoader.services['cloudfront'], '2016-11-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2016-11-25.min.json');\n model.paginators = require('../apis/cloudfront-2016-11-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2016-11-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-03-25', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-03-25.min.json');\n model.paginators = require('../apis/cloudfront-2017-03-25.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-03-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2017-10-30', {\n get: function get() {\n var model = require('../apis/cloudfront-2017-10-30.min.json');\n model.paginators = require('../apis/cloudfront-2017-10-30.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2017-10-30.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-06-18', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-06-18.min.json');\n model.paginators = require('../apis/cloudfront-2018-06-18.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-06-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2018-11-05', {\n get: function get() {\n var model = require('../apis/cloudfront-2018-11-05.min.json');\n model.paginators = require('../apis/cloudfront-2018-11-05.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2018-11-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2019-03-26', {\n get: function get() {\n var model = require('../apis/cloudfront-2019-03-26.min.json');\n model.paginators = require('../apis/cloudfront-2019-03-26.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2019-03-26.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['cloudfront'], '2020-05-31', {\n get: function get() {\n var model = require('../apis/cloudfront-2020-05-31.min.json');\n model.paginators = require('../apis/cloudfront-2020-05-31.paginators.json').pagination;\n model.waiters = require('../apis/cloudfront-2020-05-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFront;\n","function apiLoader(svc, version) {\n if (!apiLoader.services.hasOwnProperty(svc)) {\n throw new Error('InvalidService: Failed to load api for ' + svc);\n }\n return apiLoader.services[svc][version];\n}\n\n/**\n * @api private\n *\n * This member of AWS.apiLoader is private, but changing it will necessitate a\n * change to ../scripts/services-table-generator.ts\n */\napiLoader.services = {};\n\n/**\n * @api private\n */\nmodule.exports = apiLoader;\n","var AWS = require('../core');\nvar rest = AWS.Protocol.Rest;\n\n/**\n * A presigner object can be used to generate presigned urls for the Polly service.\n */\nAWS.Polly.Presigner = AWS.util.inherit({\n /**\n * Creates a presigner object with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.Polly] An optional pre-configured instance\n * of the AWS.Polly service object to use for requests. The object may\n * bound parameters used by the presigner.\n * @see AWS.Polly.constructor\n */\n constructor: function Signer(options) {\n options = options || {};\n this.options = options;\n this.service = options.service;\n this.bindServiceObject(options);\n this._operations = {};\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n options = options || {};\n if (!this.service) {\n this.service = new AWS.Polly(options);\n } else {\n var config = AWS.util.copy(this.service.config);\n this.service = new this.service.constructor.__super__(config);\n this.service.config.params = AWS.util.merge(this.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n modifyInputMembers: function modifyInputMembers(input) {\n // make copies of the input so we don't overwrite the api\n // need to be careful to copy anything we access/modify\n var modifiedInput = AWS.util.copy(input);\n modifiedInput.members = AWS.util.copy(input.members);\n AWS.util.each(input.members, function(name, member) {\n modifiedInput.members[name] = AWS.util.copy(member);\n // update location and locationName\n if (!member.location || member.location === 'body') {\n modifiedInput.members[name].location = 'querystring';\n modifiedInput.members[name].locationName = name;\n }\n });\n return modifiedInput;\n },\n\n /**\n * @api private\n */\n convertPostToGet: function convertPostToGet(req) {\n // convert method\n req.httpRequest.method = 'GET';\n\n var operation = req.service.api.operations[req.operation];\n // get cached operation input first\n var input = this._operations[req.operation];\n if (!input) {\n // modify the original input\n this._operations[req.operation] = input = this.modifyInputMembers(operation.input);\n }\n\n var uri = rest.generateURI(req.httpRequest.endpoint.path, operation.httpPath, input, req.params);\n\n req.httpRequest.path = uri;\n req.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete req.httpRequest.headers['Content-Length'];\n delete req.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @overload getSynthesizeSpeechUrl(params = {}, [expires = 3600], [callback])\n * Generate a presigned url for {AWS.Polly.synthesizeSpeech}.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n * @param params [map] parameters to pass to the operation. See the {AWS.Polly.synthesizeSpeech}\n * operation for the expected operation parameters.\n * @param expires [Integer] (3600) the number of seconds to expire the pre-signed URL operation in.\n * Defaults to 1 hour.\n * @return [string] if called synchronously (with no callback), returns the signed URL.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, url)\n * If a callback is supplied, it is called when a signed URL has been generated.\n * @param err [Error] the error object returned from the presigner.\n * @param url [String] the signed URL.\n * @see AWS.Polly.synthesizeSpeech\n */\n getSynthesizeSpeechUrl: function getSynthesizeSpeechUrl(params, expires, callback) {\n var self = this;\n var request = this.service.makeRequest('synthesizeSpeech', params);\n // remove existing build listeners\n request.removeAllListeners('build');\n request.on('build', function(req) {\n self.convertPostToGet(req);\n });\n return request.presign(expires, callback);\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexmodelbuildingservice'] = {};\nAWS.LexModelBuildingService = Service.defineService('lexmodelbuildingservice', ['2017-04-19']);\nObject.defineProperty(apiLoader.services['lexmodelbuildingservice'], '2017-04-19', {\n get: function get() {\n var model = require('../apis/lex-models-2017-04-19.min.json');\n model.paginators = require('../apis/lex-models-2017-04-19.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexModelBuildingService;\n","var AWS = require('./core');\n/**\n * @api private\n */\nfunction validateRegionalEndpointsFlagValue(configValue, errorOptions) {\n if (typeof configValue !== 'string') return undefined;\n else if (['legacy', 'regional'].indexOf(configValue.toLowerCase()) >= 0) {\n return configValue.toLowerCase();\n } else {\n throw AWS.util.error(new Error(), errorOptions);\n }\n}\n\n/**\n * Resolve the configuration value for regional endpoint from difference sources: client\n * config, environmental variable, shared config file. Value can be case-insensitive\n * 'legacy' or 'reginal'.\n * @param originalConfig user-supplied config object to resolve\n * @param options a map of config property names from individual configuration source\n * - env: name of environmental variable that refers to the config\n * - sharedConfig: name of shared configuration file property that refers to the config\n * - clientConfig: name of client configuration property that refers to the config\n *\n * @api private\n */\nfunction resolveRegionalEndpointsFlag(originalConfig, options) {\n originalConfig = originalConfig || {};\n //validate config value\n var resolved;\n if (originalConfig[options.clientConfig]) {\n resolved = validateRegionalEndpointsFlagValue(originalConfig[options.clientConfig], {\n code: 'InvalidConfiguration',\n message: 'invalid \"' + options.clientConfig + '\" configuration. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + originalConfig[options.clientConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n if (!AWS.util.isNode()) return resolved;\n //validate environmental variable\n if (Object.prototype.hasOwnProperty.call(process.env, options.env)) {\n var envFlag = process.env[options.env];\n resolved = validateRegionalEndpointsFlagValue(envFlag, {\n code: 'InvalidEnvironmentalVariable',\n message: 'invalid ' + options.env + ' environmental variable. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + process.env[options.env] + '\".'\n });\n if (resolved) return resolved;\n }\n //validate shared config file\n var profile = {};\n try {\n var profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {};\n if (profile && Object.prototype.hasOwnProperty.call(profile, options.sharedConfig)) {\n var fileFlag = profile[options.sharedConfig];\n resolved = validateRegionalEndpointsFlagValue(fileFlag, {\n code: 'InvalidConfiguration',\n message: 'invalid ' + options.sharedConfig + ' profile config. Expect \"legacy\" ' +\n ' or \"regional\". Got \"' + profile[options.sharedConfig] + '\".'\n });\n if (resolved) return resolved;\n }\n return resolved;\n}\n\nmodule.exports = resolveRegionalEndpointsFlag;\n","var escapeAttribute = require('./escape-attribute').escapeAttribute;\n\n/**\n * Represents an XML node.\n * @api private\n */\nfunction XmlNode(name, children) {\n if (children === void 0) { children = []; }\n this.name = name;\n this.children = children;\n this.attributes = {};\n}\nXmlNode.prototype.addAttribute = function (name, value) {\n this.attributes[name] = value;\n return this;\n};\nXmlNode.prototype.addChildNode = function (child) {\n this.children.push(child);\n return this;\n};\nXmlNode.prototype.removeAttribute = function (name) {\n delete this.attributes[name];\n return this;\n};\nXmlNode.prototype.toString = function () {\n var hasChildren = Boolean(this.children.length);\n var xmlText = '<' + this.name;\n // add attributes\n var attributes = this.attributes;\n for (var i = 0, attributeNames = Object.keys(attributes); i < attributeNames.length; i++) {\n var attributeName = attributeNames[i];\n var attribute = attributes[attributeName];\n if (typeof attribute !== 'undefined' && attribute !== null) {\n xmlText += ' ' + attributeName + '=\\\"' + escapeAttribute('' + attribute) + '\\\"';\n }\n }\n return xmlText += !hasChildren ? '/>' : '>' + this.children.map(function (c) { return c.toString(); }).join('') + '';\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlNode: XmlNode\n};\n","var AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * This class encapsulates the response information\n * from a service request operation sent through {AWS.Request}.\n * The response object has two main properties for getting information\n * back from a request:\n *\n * ## The `data` property\n *\n * The `response.data` property contains the serialized object data\n * retrieved from the service request. For instance, for an\n * Amazon DynamoDB `listTables` method call, the response data might\n * look like:\n *\n * ```\n * > resp.data\n * { TableNames:\n * [ 'table1', 'table2', ... ] }\n * ```\n *\n * The `data` property can be null if an error occurs (see below).\n *\n * ## The `error` property\n *\n * In the event of a service error (or transfer error), the\n * `response.error` property will be filled with the given\n * error data in the form:\n *\n * ```\n * { code: 'SHORT_UNIQUE_ERROR_CODE',\n * message: 'Some human readable error message' }\n * ```\n *\n * In the case of an error, the `data` property will be `null`.\n * Note that if you handle events that can be in a failure state,\n * you should always check whether `response.error` is set\n * before attempting to access the `response.data` property.\n *\n * @!attribute data\n * @readonly\n * @!group Data Properties\n * @note Inside of a {AWS.Request~httpData} event, this\n * property contains a single raw packet instead of the\n * full de-serialized service response.\n * @return [Object] the de-serialized response data\n * from the service.\n *\n * @!attribute error\n * An structure containing information about a service\n * or networking error.\n * @readonly\n * @!group Data Properties\n * @note This attribute is only filled if a service or\n * networking error occurs.\n * @return [Error]\n * * code [String] a unique short code representing the\n * error that was emitted.\n * * message [String] a longer human readable error message\n * * retryable [Boolean] whether the error message is\n * retryable.\n * * statusCode [Numeric] in the case of a request that reached the service,\n * this value contains the response status code.\n * * time [Date] the date time object when the error occurred.\n * * hostname [String] set when a networking error occurs to easily\n * identify the endpoint of the request.\n * * region [String] set when a networking error occurs to easily\n * identify the region of the request.\n *\n * @!attribute requestId\n * @readonly\n * @!group Data Properties\n * @return [String] the unique request ID associated with the response.\n * Log this value when debugging requests for AWS support.\n *\n * @!attribute retryCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of retries that were\n * attempted before the request was completed.\n *\n * @!attribute redirectCount\n * @readonly\n * @!group Operation Properties\n * @return [Integer] the number of redirects that were\n * followed before the request was completed.\n *\n * @!attribute httpResponse\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpResponse] the raw HTTP response object\n * containing the response headers and body information\n * from the server.\n *\n * @see AWS.Request\n */\nAWS.Response = inherit({\n\n /**\n * @api private\n */\n constructor: function Response(request) {\n this.request = request;\n this.data = null;\n this.error = null;\n this.retryCount = 0;\n this.redirectCount = 0;\n this.httpResponse = new AWS.HttpResponse();\n if (request) {\n this.maxRetries = request.service.numRetries();\n this.maxRedirects = request.service.config.maxRedirects;\n }\n },\n\n /**\n * Creates a new request for the next page of response data, calling the\n * callback with the page data if a callback is provided.\n *\n * @callback callback function(err, data)\n * Called when a page of data is returned from the next request.\n *\n * @param err [Error] an error object, if an error occurred in the request\n * @param data [Object] the next page of data, or null, if there are no\n * more pages left.\n * @return [AWS.Request] the request object for the next page of data\n * @return [null] if no callback is provided and there are no pages left\n * to retrieve.\n * @since v1.4.0\n */\n nextPage: function nextPage(callback) {\n var config;\n var service = this.request.service;\n var operation = this.request.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { this.error = e; }\n\n if (!this.hasNextPage()) {\n if (callback) callback(this.error, null);\n else if (this.error) throw this.error;\n return null;\n }\n\n var params = AWS.util.copy(this.request.params);\n if (!this.nextPageTokens) {\n return callback ? callback(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = this.nextPageTokens[i];\n }\n return service.makeRequest(this.request.operation, params, callback);\n }\n },\n\n /**\n * @return [Boolean] whether more pages of data can be returned by further\n * requests\n * @since v1.4.0\n */\n hasNextPage: function hasNextPage() {\n this.cacheNextPageTokens();\n if (this.nextPageTokens) return true;\n if (this.nextPageTokens === undefined) return undefined;\n else return false;\n },\n\n /**\n * @api private\n */\n cacheNextPageTokens: function cacheNextPageTokens() {\n if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens;\n this.nextPageTokens = undefined;\n\n var config = this.request.service.paginationConfig(this.request.operation);\n if (!config) return this.nextPageTokens;\n\n this.nextPageTokens = null;\n if (config.moreResults) {\n if (!jmespath.search(this.data, config.moreResults)) {\n return this.nextPageTokens;\n }\n }\n\n var exprs = config.outputToken;\n if (typeof exprs === 'string') exprs = [exprs];\n AWS.util.arrayEach.call(this, exprs, function (expr) {\n var output = jmespath.search(this.data, expr);\n if (output) {\n this.nextPageTokens = this.nextPageTokens || [];\n this.nextPageTokens.push(output);\n }\n });\n\n return this.nextPageTokens;\n }\n\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideosignalingchannels'] = {};\nAWS.KinesisVideoSignalingChannels = Service.defineService('kinesisvideosignalingchannels', ['2019-12-04']);\nObject.defineProperty(apiLoader.services['kinesisvideosignalingchannels'], '2019-12-04', {\n get: function get() {\n var model = require('../apis/kinesis-video-signaling-2019-12-04.min.json');\n model.paginators = require('../apis/kinesis-video-signaling-2019-12-04.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoSignalingChannels;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53domains'] = {};\nAWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']);\nObject.defineProperty(apiLoader.services['route53domains'], '2014-05-15', {\n get: function get() {\n var model = require('../apis/route53domains-2014-05-15.min.json');\n model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53Domains;\n","var AWS = require('../core');\n\nvar rdsutil = {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(service, request, crossRegionOperations) {\n if (crossRegionOperations.indexOf(request.operation) !== -1 &&\n request.params.SourceRegion) {\n request.params = AWS.util.copy(request.params);\n if (request.params.PreSignedUrl ||\n request.params.SourceRegion === service.config.region) {\n delete request.params.SourceRegion;\n } else {\n var doesParamValidation = !!service.config.paramValidation;\n // remove the validate parameters listener so we can re-add it after we build the URL\n if (doesParamValidation) {\n request.removeListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n request.onAsync('validate', rdsutil.buildCrossRegionPresignedUrl);\n if (doesParamValidation) {\n request.addListener('validate', AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n }\n }\n },\n\n /**\n * @api private\n */\n buildCrossRegionPresignedUrl: function buildCrossRegionPresignedUrl(req, done) {\n var config = AWS.util.copy(req.service.config);\n config.region = req.params.SourceRegion;\n delete req.params.SourceRegion;\n delete config.endpoint;\n // relevant params for the operation will already be in req.params\n delete config.params;\n config.signatureVersion = 'v4';\n var destinationRegion = req.service.config.region;\n\n var svc = new req.service.constructor(config);\n var newReq = svc[req.operation](AWS.util.copy(req.params));\n newReq.on('build', function addDestinationRegionParam(request) {\n var httpRequest = request.httpRequest;\n httpRequest.params.DestinationRegion = destinationRegion;\n httpRequest.body = AWS.util.queryParamsToString(httpRequest.params);\n });\n newReq.presign(function(err, url) {\n if (err) done(err);\n else {\n req.params.PreSignedUrl = url;\n done();\n }\n });\n }\n};\n\n/**\n * @api private\n */\nmodule.exports = rdsutil;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mobileanalytics'] = {};\nAWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']);\nObject.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', {\n get: function get() {\n var model = require('../apis/mobileanalytics-2014-06-05.min.json');\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MobileAnalytics;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iotdata'] = {};\nAWS.IotData = Service.defineService('iotdata', ['2015-05-28']);\nrequire('../lib/services/iotdata');\nObject.defineProperty(apiLoader.services['iotdata'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-data-2015-05-28.min.json');\n model.paginators = require('../apis/iot-data-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.IotData;\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\n// getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n// find the complete implementation of crypto (msCrypto) on IE11.\nvar getRandomValues = typeof crypto != 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto != 'undefined' && typeof msCrypto.getRandomValues == 'function' && msCrypto.getRandomValues.bind(msCrypto);\nvar rnds8 = new Uint8Array(16); // eslint-disable-line no-undef\n\nexport default function rng() {\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n\n return getRandomValues(rnds8);\n}","/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex[i] = (i + 0x100).toString(16).substr(1);\n}\n\nfunction bytesToUuid(buf, offset) {\n var i = offset || 0;\n var bth = byteToHex; // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4\n\n return [bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], '-', bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]], bth[buf[i++]]].join('');\n}\n\nexport default bytesToUuid;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nvar _nodeId;\n\nvar _clockseq; // Previous uuid creation time\n\n\nvar _lastMSecs = 0;\nvar _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n var i = buf && offset || 0;\n var b = buf || [];\n options = options || {};\n var node = options.node || _nodeId;\n var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n var seedBytes = options.random || (options.rng || rng)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n var dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n var tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (var n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf ? buf : bytesToUuid(b);\n}\n\nexport default v1;","import bytesToUuid from './bytesToUuid.js';\n\nfunction uuidToBytes(uuid) {\n // Note: We assume we're being passed a valid uuid string\n var bytes = [];\n uuid.replace(/[a-fA-F0-9]{2}/g, function (hex) {\n bytes.push(parseInt(hex, 16));\n });\n return bytes;\n}\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n var bytes = new Array(str.length);\n\n for (var i = 0; i < str.length; i++) {\n bytes[i] = str.charCodeAt(i);\n }\n\n return bytes;\n}\n\nexport var DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport var URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function (name, version, hashfunc) {\n var generateUUID = function generateUUID(value, namespace, buf, offset) {\n var off = buf && offset || 0;\n if (typeof value == 'string') value = stringToBytes(value);\n if (typeof namespace == 'string') namespace = uuidToBytes(namespace);\n if (!Array.isArray(value)) throw TypeError('value must be an array of bytes');\n if (!Array.isArray(namespace) || namespace.length !== 16) throw TypeError('namespace must be uuid string or an Array of 16 byte values'); // Per 4.3\n\n var bytes = hashfunc(namespace.concat(value));\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n for (var idx = 0; idx < 16; ++idx) {\n buf[off + idx] = bytes[idx];\n }\n }\n\n return buf || bytesToUuid(bytes);\n }; // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name;\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n var i;\n var x;\n var output = [];\n var length32 = input.length * 32;\n var hexTab = '0123456789abcdef';\n var hex;\n\n for (i = 0; i < length32; i += 8) {\n x = input[i >> 5] >>> i % 32 & 0xff;\n hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[(len + 64 >>> 9 << 4) + 14] = len;\n var i;\n var olda;\n var oldb;\n var oldc;\n var oldd;\n var a = 1732584193;\n var b = -271733879;\n var c = -1732584194;\n var d = 271733878;\n\n for (i = 0; i < x.length; i += 16) {\n olda = a;\n oldb = b;\n oldc = c;\n oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n var i;\n var output = [];\n output[(input.length >> 2) - 1] = undefined;\n\n for (i = 0; i < output.length; i += 1) {\n output[i] = 0;\n }\n\n var length8 = input.length * 8;\n\n for (i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n var lsw = (x & 0xffff) + (y & 0xffff);\n var msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nexport default md5;","import v35 from './v35.js';\nimport md5 from './md5.js';\nvar v3 = v35('v3', 0x30, md5);\nexport default v3;","import rng from './rng.js';\nimport bytesToUuid from './bytesToUuid.js';\n\nfunction v4(options, buf, offset) {\n var i = buf && offset || 0;\n\n if (typeof options == 'string') {\n buf = options === 'binary' ? new Array(16) : null;\n options = null;\n }\n\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n for (var ii = 0; ii < 16; ++ii) {\n buf[i + ii] = rnds[ii];\n }\n }\n\n return buf || bytesToUuid(rnds);\n}\n\nexport default v4;","// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n var K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n var H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes == 'string') {\n var msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Array(msg.length);\n\n for (var i = 0; i < msg.length; i++) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n bytes.push(0x80);\n var l = bytes.length / 4 + 2;\n var N = Math.ceil(l / 16);\n var M = new Array(N);\n\n for (var i = 0; i < N; i++) {\n M[i] = new Array(16);\n\n for (var j = 0; j < 16; j++) {\n M[i][j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (var i = 0; i < N; i++) {\n var W = new Array(80);\n\n for (var t = 0; t < 16; t++) {\n W[t] = M[i][t];\n }\n\n for (var t = 16; t < 80; t++) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n var a = H[0];\n var b = H[1];\n var c = H[2];\n var d = H[3];\n var e = H[4];\n\n for (var t = 0; t < 80; t++) {\n var s = Math.floor(t / 20);\n var T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nexport default sha1;","import v35 from './v35.js';\nimport sha1 from './sha1.js';\nvar v5 = v35('v5', 0x50, sha1);\nexport default v5;","var AWS = require('./core');\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nvar PromisesDependency;\n\n/**\n * The main configuration class used by all service objects to set\n * the region, credentials, and other options for requests.\n *\n * By default, credentials and region settings are left unconfigured.\n * This should be configured by the application before using any\n * AWS service APIs.\n *\n * In order to set global configuration options, properties should\n * be assigned to the global {AWS.config} object.\n *\n * @see AWS.config\n *\n * @!group General Configuration Options\n *\n * @!attribute credentials\n * @return [AWS.Credentials] the AWS credentials to sign requests with.\n *\n * @!attribute region\n * @example Set the global region setting to us-west-2\n * AWS.config.update({region: 'us-west-2'});\n * @return [AWS.Credentials] The region to send service requests to.\n * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html\n * A list of available endpoints for each AWS service\n *\n * @!attribute maxRetries\n * @return [Integer] the maximum amount of retries to perform for a\n * service request. By default this value is calculated by the specific\n * service object that the request is being made to.\n *\n * @!attribute maxRedirects\n * @return [Integer] the maximum amount of redirects to follow for a\n * service request. Defaults to 10.\n *\n * @!attribute paramValidation\n * @return [Boolean|map] whether input parameters should be validated against\n * the operation description before sending the request. Defaults to true.\n * Pass a map to enable any of the following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n *\n * @!attribute computeChecksums\n * @return [Boolean] whether to compute checksums for payload bodies when\n * the service accepts it (currently supported in S3 and SQS only).\n *\n * @!attribute convertResponseTypes\n * @return [Boolean] whether types are converted when parsing response data.\n * Currently only supported for JSON based services. Turning this off may\n * improve performance on large response payloads. Defaults to `true`.\n *\n * @!attribute correctClockSkew\n * @return [Boolean] whether to apply a clock skew correction and retry\n * requests that fail because of an skewed client clock. Defaults to\n * `false`.\n *\n * @!attribute sslEnabled\n * @return [Boolean] whether SSL is enabled for requests\n *\n * @!attribute s3ForcePathStyle\n * @return [Boolean] whether to force path style URLs for S3 objects\n *\n * @!attribute s3BucketEndpoint\n * @note Setting this configuration option requires an `endpoint` to be\n * provided explicitly to the service constructor.\n * @return [Boolean] whether the provided endpoint addresses an individual\n * bucket (false if it addresses the root API endpoint).\n *\n * @!attribute s3DisableBodySigning\n * @return [Boolean] whether to disable S3 body signing when using signature version `v4`.\n * Body signing can only be disabled when using https. Defaults to `true`.\n *\n * @!attribute s3UsEast1RegionalEndpoint\n * @return ['legacy'|'regional'] when region is set to 'us-east-1', whether to send s3\n * request to global endpoints or 'us-east-1' regional endpoints. This config is only\n * applicable to S3 client;\n * Defaults to 'legacy'\n * @!attribute s3UseArnRegion\n * @return [Boolean] whether to override the request region with the region inferred\n * from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @!attribute useAccelerateEndpoint\n * @note This configuration option is only compatible with S3 while accessing\n * dns-compatible buckets.\n * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service.\n * Defaults to `false`.\n *\n * @!attribute retryDelayOptions\n * @example Set the base retry delay for all services to 300 ms\n * AWS.config.update({retryDelayOptions: {base: 300}});\n * // Delays with maxRetries = 3: 300, 600, 1200\n * @example Set a custom backoff function to provide delay values on retries\n * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount, err) {\n * // returns delay in ms\n * }}});\n * @return [map] A set of options to configure the retry delay on retryable errors.\n * Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all services except\n * DynamoDB, where it defaults to 50ms.\n *\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n *\n * @!attribute httpOptions\n * @return [map] A set of options to pass to the low-level HTTP request.\n * Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only supported in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — The number of milliseconds a request can\n * take before automatically being terminated.\n * Defaults to two minutes (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @!attribute logger\n * @return [#write,#log] an object that responds to .write() (like a stream)\n * or .log() (like the console object) in order to log information about\n * requests\n *\n * @!attribute systemClockOffset\n * @return [Number] an offset value in milliseconds to apply to all signing\n * times. Use this to compensate for clock skew when your system may be\n * out of sync with the service time. Note that this configuration option\n * can only be applied to the global `AWS.config` object and cannot be\n * overridden in service-specific configuration. Defaults to 0 milliseconds.\n *\n * @!attribute signatureVersion\n * @return [String] the signature version to sign requests with (overriding\n * the API configuration). Possible values are: 'v2', 'v3', 'v4'.\n *\n * @!attribute signatureCache\n * @return [Boolean] whether the signature to sign requests with (overriding\n * the API configuration) is cached. Only applies to the signature version 'v4'.\n * Defaults to `true`.\n *\n * @!attribute endpointDiscoveryEnabled\n * @return [Boolean|undefined] whether to call operations with endpoints\n * given by service dynamically. Setting this config to `true` will enable\n * endpoint discovery for all applicable operations. Setting it to `false`\n * will explicitly disable endpoint discovery even though operations that\n * require endpoint discovery will presumably fail. Leaving it to\n * `undefined` means SDK only do endpoint discovery when it's required.\n * Defaults to `undefined`\n *\n * @!attribute endpointCacheSize\n * @return [Number] the size of the global cache storing endpoints from endpoint\n * discovery operations. Once endpoint cache is created, updating this setting\n * cannot change existing cache size.\n * Defaults to 1000\n *\n * @!attribute hostPrefixEnabled\n * @return [Boolean] whether to marshal request parameters to the prefix of\n * hostname. Defaults to `true`.\n *\n * @!attribute stsRegionalEndpoints\n * @return ['legacy'|'regional'] whether to send sts request to global endpoints or\n * regional endpoints.\n * Defaults to 'legacy'.\n *\n * @!attribute useFipsEndpoint\n * @return [Boolean] Enables FIPS compatible endpoints. Defaults to `false`.\n *\n * @!attribute useDualstackEndpoint\n * @return [Boolean] Enables IPv6 dualstack endpoint. Defaults to `false`.\n */\nAWS.Config = AWS.util.inherit({\n /**\n * @!endgroup\n */\n\n /**\n * Creates a new configuration object. This is the object that passes\n * option data along to service requests, including credentials, security,\n * region information, and some service specific settings.\n *\n * @example Creating a new configuration object with credentials and region\n * var config = new AWS.Config({\n * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2'\n * });\n * @option options accessKeyId [String] your AWS access key ID.\n * @option options secretAccessKey [String] your AWS secret access key.\n * @option options sessionToken [AWS.Credentials] the optional AWS\n * session token to sign requests with.\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. You can either specify this object, or\n * specify the accessKeyId and secretAccessKey options directly.\n * @option options credentialProvider [AWS.CredentialProviderChain] the\n * provider chain used to resolve credentials if no static `credentials`\n * property is set.\n * @option options region [String] the region to send service requests to.\n * See {region} for more information.\n * @option options maxRetries [Integer] the maximum amount of retries to\n * attempt with a request. See {maxRetries} for more information.\n * @option options maxRedirects [Integer] the maximum amount of redirects to\n * follow with a request. See {maxRedirects} for more information.\n * @option options sslEnabled [Boolean] whether to enable SSL for\n * requests.\n * @option options paramValidation [Boolean|map] whether input parameters\n * should be validated against the operation description before sending\n * the request. Defaults to true. Pass a map to enable any of the\n * following specific validation features:\n *\n * * **min** [Boolean] — Validates that a value meets the min\n * constraint. This is enabled by default when paramValidation is set\n * to `true`.\n * * **max** [Boolean] — Validates that a value meets the max\n * constraint.\n * * **pattern** [Boolean] — Validates that a string value matches a\n * regular expression.\n * * **enum** [Boolean] — Validates that a string value matches one\n * of the allowable enum values.\n * @option options computeChecksums [Boolean] whether to compute checksums\n * for payload bodies when the service accepts it (currently supported\n * in S3 only)\n * @option options convertResponseTypes [Boolean] whether types are converted\n * when parsing response data. Currently only supported for JSON based\n * services. Turning this off may improve performance on large response\n * payloads. Defaults to `true`.\n * @option options correctClockSkew [Boolean] whether to apply a clock skew\n * correction and retry requests that fail because of an skewed client\n * clock. Defaults to `false`.\n * @option options s3ForcePathStyle [Boolean] whether to force path\n * style URLs for S3 objects.\n * @option options s3BucketEndpoint [Boolean] whether the provided endpoint\n * addresses an individual bucket (false if it addresses the root API\n * endpoint). Note that setting this configuration option requires an\n * `endpoint` to be provided explicitly to the service constructor.\n * @option options s3DisableBodySigning [Boolean] whether S3 body signing\n * should be disabled when using signature version `v4`. Body signing\n * can only be disabled when using https. Defaults to `true`.\n * @option options s3UsEast1RegionalEndpoint ['legacy'|'regional'] when region\n * is set to 'us-east-1', whether to send s3 request to global endpoints or\n * 'us-east-1' regional endpoints. This config is only applicable to S3 client.\n * Defaults to `legacy`\n * @option options s3UseArnRegion [Boolean] whether to override the request region\n * with the region inferred from requested resource's ARN. Only available for S3 buckets\n * Defaults to `true`\n *\n * @option options retryDelayOptions [map] A set of options to configure\n * the retry delay on retryable errors. Currently supported options are:\n *\n * * **base** [Integer] — The base number of milliseconds to use in the\n * exponential backoff for operation retries. Defaults to 100 ms for all\n * services except DynamoDB, where it defaults to 50ms.\n * * **customBackoff ** [function] — A custom function that accepts a\n * retry count and error and returns the amount of time to delay in\n * milliseconds. If the result is a non-zero negative value, no further\n * retry attempts will be made. The `base` option will be ignored if this\n * option is supplied. The function is only called for retryable errors.\n * @option options httpOptions [map] A set of options to pass to the low-level\n * HTTP request. Currently supported options are:\n *\n * * **proxy** [String] — the URL to proxy requests through\n * * **agent** [http.Agent, https.Agent] — the Agent object to perform\n * HTTP requests with. Used for connection pooling. Defaults to the global\n * agent (`http.globalAgent`) for non-SSL connections. Note that for\n * SSL connections, a special Agent object is used in order to enable\n * peer certificate verification. This feature is only available in the\n * Node.js environment.\n * * **connectTimeout** [Integer] — Sets the socket to timeout after\n * failing to establish a connection with the server after\n * `connectTimeout` milliseconds. This timeout has no effect once a socket\n * connection has been established.\n * * **timeout** [Integer] — Sets the socket to timeout after timeout\n * milliseconds of inactivity on the socket. Defaults to two minutes\n * (120000).\n * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous\n * HTTP requests. Used in the browser environment only. Set to false to\n * send requests synchronously. Defaults to true (async on).\n * * **xhrWithCredentials** [Boolean] — Sets the \"withCredentials\"\n * property of an XMLHttpRequest object. Used in the browser environment\n * only. Defaults to false.\n * @option options apiVersion [String, Date] a String in YYYY-MM-DD format\n * (or a date) that represents the latest possible API version that can be\n * used in all services (unless overridden by `apiVersions`). Specify\n * 'latest' to use the latest possible version.\n * @option options apiVersions [map] a map of service\n * identifiers (the lowercase service class name) with the API version to\n * use when instantiating a service. Specify 'latest' for each individual\n * that can use the latest available version.\n * @option options logger [#write,#log] an object that responds to .write()\n * (like a stream) or .log() (like the console object) in order to log\n * information about requests\n * @option options systemClockOffset [Number] an offset value in milliseconds\n * to apply to all signing times. Use this to compensate for clock skew\n * when your system may be out of sync with the service time. Note that\n * this configuration option can only be applied to the global `AWS.config`\n * object and cannot be overridden in service-specific configuration.\n * Defaults to 0 milliseconds.\n * @option options signatureVersion [String] the signature version to sign\n * requests with (overriding the API configuration). Possible values are:\n * 'v2', 'v3', 'v4'.\n * @option options signatureCache [Boolean] whether the signature to sign\n * requests with (overriding the API configuration) is cached. Only applies\n * to the signature version 'v4'. Defaults to `true`.\n * @option options dynamoDbCrc32 [Boolean] whether to validate the CRC32\n * checksum of HTTP response bodies returned by DynamoDB. Default: `true`.\n * @option options useAccelerateEndpoint [Boolean] Whether to use the\n * S3 Transfer Acceleration endpoint with the S3 service. Default: `false`.\n * @option options clientSideMonitoring [Boolean] whether to collect and\n * publish this client's performance metrics of all its API requests.\n * @option options endpointDiscoveryEnabled [Boolean|undefined] whether to\n * call operations with endpoints given by service dynamically. Setting this\n * config to `true` will enable endpoint discovery for all applicable operations.\n * Setting it to `false` will explicitly disable endpoint discovery even though\n * operations that require endpoint discovery will presumably fail. Leaving it\n * to `undefined` means SDK will only do endpoint discovery when it's required.\n * Defaults to `undefined`\n * @option options endpointCacheSize [Number] the size of the global cache storing\n * endpoints from endpoint discovery operations. Once endpoint cache is created,\n * updating this setting cannot change existing cache size.\n * Defaults to 1000\n * @option options hostPrefixEnabled [Boolean] whether to marshal request\n * parameters to the prefix of hostname.\n * Defaults to `true`.\n * @option options stsRegionalEndpoints ['legacy'|'regional'] whether to send sts request\n * to global endpoints or regional endpoints.\n * Defaults to 'legacy'.\n * @option options useFipsEndpoint [Boolean] Enables FIPS compatible endpoints.\n * Defaults to `false`.\n * @option options useDualstackEndpoint [Boolean] Enables IPv6 dualstack endpoint.\n * Defaults to `false`.\n */\n constructor: function Config(options) {\n if (options === undefined) options = {};\n options = this.extractCredentials(options);\n\n AWS.util.each.call(this, this.keys, function (key, value) {\n this.set(key, options[key], value);\n });\n },\n\n /**\n * @!group Managing Credentials\n */\n\n /**\n * Loads credentials from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Credentials} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your credentials are loaded prior to a request, you can use this method\n * directly to provide accurate credential data stored in the object.\n *\n * @note If you configure the SDK with static or environment credentials,\n * the credential data should already be present in {credentials} attribute.\n * This method is primarily necessary to load credentials from asynchronous\n * sources, or sources that can refresh credentials periodically.\n * @example Getting your access key\n * AWS.config.getCredentials(function(err) {\n * if (err) console.log(err.stack); // credentials not loaded\n * else console.log(\"Access Key:\", AWS.config.credentials.accessKeyId);\n * })\n * @callback callback function(err)\n * Called when the {credentials} have been properly set on the configuration\n * object.\n *\n * @param err [Error] if this is set, credentials were not successfully\n * loaded and this error provides information why.\n * @see credentials\n * @see Credentials\n */\n getCredentials: function getCredentials(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.credentials);\n }\n\n function credError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'CredentialsError',\n message: msg,\n name: 'CredentialsError'\n });\n }\n\n function getAsyncCredentials() {\n self.credentials.get(function(err) {\n if (err) {\n var msg = 'Could not load credentials from ' +\n self.credentials.constructor.name;\n err = credError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticCredentials() {\n var err = null;\n if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) {\n err = credError('Missing credentials');\n }\n finish(err);\n }\n\n if (self.credentials) {\n if (typeof self.credentials.get === 'function') {\n getAsyncCredentials();\n } else { // static credentials\n getStaticCredentials();\n }\n } else if (self.credentialProvider) {\n self.credentialProvider.resolve(function(err, creds) {\n if (err) {\n err = credError('Could not load credentials from any providers', err);\n }\n self.credentials = creds;\n finish(err);\n });\n } else {\n finish(credError('No credentials to load'));\n }\n },\n\n /**\n * Loads token from the configuration object. This is used internally\n * by the SDK to ensure that refreshable {Token} objects are properly\n * refreshed and loaded when sending a request. If you want to ensure that\n * your token is loaded prior to a request, you can use this method\n * directly to provide accurate token data stored in the object.\n *\n * @note If you configure the SDK with static token, the token data should\n * already be present in {token} attribute. This method is primarily necessary\n * to load token from asynchronous sources, or sources that can refresh\n * token periodically.\n * @example Getting your access token\n * AWS.config.getToken(function(err) {\n * if (err) console.log(err.stack); // token not loaded\n * else console.log(\"Token:\", AWS.config.token.token);\n * })\n * @callback callback function(err)\n * Called when the {token} have been properly set on the configuration object.\n *\n * @param err [Error] if this is set, token was not successfully loaded and\n * this error provides information why.\n * @see token\n */\n getToken: function getToken(callback) {\n var self = this;\n\n function finish(err) {\n callback(err, err ? null : self.token);\n }\n\n function tokenError(msg, err) {\n return new AWS.util.error(err || new Error(), {\n code: 'TokenError',\n message: msg,\n name: 'TokenError'\n });\n }\n\n function getAsyncToken() {\n self.token.get(function(err) {\n if (err) {\n var msg = 'Could not load token from ' +\n self.token.constructor.name;\n err = tokenError(msg, err);\n }\n finish(err);\n });\n }\n\n function getStaticToken() {\n var err = null;\n if (!self.token.token) {\n err = tokenError('Missing token');\n }\n finish(err);\n }\n\n if (self.token) {\n if (typeof self.token.get === 'function') {\n getAsyncToken();\n } else { // static token\n getStaticToken();\n }\n } else if (self.tokenProvider) {\n self.tokenProvider.resolve(function(err, token) {\n if (err) {\n err = tokenError('Could not load token from any providers', err);\n }\n self.token = token;\n finish(err);\n });\n } else {\n finish(tokenError('No token to load'));\n }\n },\n\n /**\n * @!group Loading and Setting Configuration Options\n */\n\n /**\n * @overload update(options, allowUnknownKeys = false)\n * Updates the current configuration object with new options.\n *\n * @example Update maxRetries property of a configuration object\n * config.update({maxRetries: 10});\n * @param [Object] options a map of option keys and values.\n * @param [Boolean] allowUnknownKeys whether unknown keys can be set on\n * the configuration object. Defaults to `false`.\n * @see constructor\n */\n update: function update(options, allowUnknownKeys) {\n allowUnknownKeys = allowUnknownKeys || false;\n options = this.extractCredentials(options);\n AWS.util.each.call(this, options, function (key, value) {\n if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) ||\n AWS.Service.hasService(key)) {\n this.set(key, value);\n }\n });\n },\n\n /**\n * Loads configuration data from a JSON file into this config object.\n * @note Loading configuration will reset all existing configuration\n * on the object.\n * @!macro nobrowser\n * @param path [String] the path relative to your process's current\n * working directory to load configuration from.\n * @return [AWS.Config] the same configuration object\n */\n loadFromPath: function loadFromPath(path) {\n this.clear();\n\n var options = JSON.parse(AWS.util.readFileSync(path));\n var fileSystemCreds = new AWS.FileSystemCredentials(path);\n var chain = new AWS.CredentialProviderChain();\n chain.providers.unshift(fileSystemCreds);\n chain.resolve(function (err, creds) {\n if (err) throw err;\n else options.credentials = creds;\n });\n\n this.constructor(options);\n\n return this;\n },\n\n /**\n * Clears configuration data on this object\n *\n * @api private\n */\n clear: function clear() {\n /*jshint forin:false */\n AWS.util.each.call(this, this.keys, function (key) {\n delete this[key];\n });\n\n // reset credential provider\n this.set('credentials', undefined);\n this.set('credentialProvider', undefined);\n },\n\n /**\n * Sets a property on the configuration object, allowing for a\n * default value\n * @api private\n */\n set: function set(property, value, defaultValue) {\n if (value === undefined) {\n if (defaultValue === undefined) {\n defaultValue = this.keys[property];\n }\n if (typeof defaultValue === 'function') {\n this[property] = defaultValue.call(this);\n } else {\n this[property] = defaultValue;\n }\n } else if (property === 'httpOptions' && this[property]) {\n // deep merge httpOptions\n this[property] = AWS.util.merge(this[property], value);\n } else {\n this[property] = value;\n }\n },\n\n /**\n * All of the keys with their default values.\n *\n * @constant\n * @api private\n */\n keys: {\n credentials: null,\n credentialProvider: null,\n region: null,\n logger: null,\n apiVersions: {},\n apiVersion: null,\n endpoint: undefined,\n httpOptions: {\n timeout: 120000\n },\n maxRetries: undefined,\n maxRedirects: 10,\n paramValidation: true,\n sslEnabled: true,\n s3ForcePathStyle: false,\n s3BucketEndpoint: false,\n s3DisableBodySigning: true,\n s3UsEast1RegionalEndpoint: 'legacy',\n s3UseArnRegion: undefined,\n computeChecksums: true,\n convertResponseTypes: true,\n correctClockSkew: false,\n customUserAgent: null,\n dynamoDbCrc32: true,\n systemClockOffset: 0,\n signatureVersion: null,\n signatureCache: true,\n retryDelayOptions: {},\n useAccelerateEndpoint: false,\n clientSideMonitoring: false,\n endpointDiscoveryEnabled: undefined,\n endpointCacheSize: 1000,\n hostPrefixEnabled: true,\n stsRegionalEndpoints: 'legacy',\n useFipsEndpoint: false,\n useDualstackEndpoint: false,\n token: null\n },\n\n /**\n * Extracts accessKeyId, secretAccessKey and sessionToken\n * from a configuration hash.\n *\n * @api private\n */\n extractCredentials: function extractCredentials(options) {\n if (options.accessKeyId && options.secretAccessKey) {\n options = AWS.util.copy(options);\n options.credentials = new AWS.Credentials(options);\n }\n return options;\n },\n\n /**\n * Sets the promise dependency the SDK will use wherever Promises are returned.\n * Passing `null` will force the SDK to use native Promises if they are available.\n * If native Promises are not available, passing `null` will have no effect.\n * @param [Constructor] dep A reference to a Promise constructor\n */\n setPromisesDependency: function setPromisesDependency(dep) {\n PromisesDependency = dep;\n // if null was passed in, we should try to use native promises\n if (dep === null && typeof Promise === 'function') {\n PromisesDependency = Promise;\n }\n var constructors = [AWS.Request, AWS.Credentials, AWS.CredentialProviderChain];\n if (AWS.S3) {\n constructors.push(AWS.S3);\n if (AWS.S3.ManagedUpload) {\n constructors.push(AWS.S3.ManagedUpload);\n }\n }\n AWS.util.addPromises(constructors, PromisesDependency);\n },\n\n /**\n * Gets the promise dependency set by `AWS.config.setPromisesDependency`.\n */\n getPromisesDependency: function getPromisesDependency() {\n return PromisesDependency;\n }\n});\n\n/**\n * @return [AWS.Config] The global configuration object singleton instance\n * @readonly\n * @see AWS.Config\n */\nAWS.config = new AWS.Config();\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecr'] = {};\nAWS.ECR = Service.defineService('ecr', ['2015-09-21']);\nObject.defineProperty(apiLoader.services['ecr'], '2015-09-21', {\n get: function get() {\n var model = require('../apis/ecr-2015-09-21.min.json');\n model.paginators = require('../apis/ecr-2015-09-21.paginators.json').pagination;\n model.waiters = require('../apis/ecr-2015-09-21.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECR;\n","var escapeElement = require('./escape-element').escapeElement;\n\n/**\n * Represents an XML text value.\n * @api private\n */\nfunction XmlText(value) {\n this.value = value;\n}\n\nXmlText.prototype.toString = function () {\n return escapeElement('' + this.value);\n};\n\n/**\n * @api private\n */\nmodule.exports = {\n XmlText: XmlText\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rekognition'] = {};\nAWS.Rekognition = Service.defineService('rekognition', ['2016-06-27']);\nObject.defineProperty(apiLoader.services['rekognition'], '2016-06-27', {\n get: function get() {\n var model = require('../apis/rekognition-2016-06-27.min.json');\n model.paginators = require('../apis/rekognition-2016-06-27.paginators.json').pagination;\n model.waiters = require('../apis/rekognition-2016-06-27.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Rekognition;\n","var parseMessage = require('./parse-message').parseMessage;\n\n/**\n *\n * @param {*} parser\n * @param {Buffer} message\n * @param {*} shape\n * @api private\n */\nfunction parseEvent(parser, message, shape) {\n var parsedMessage = parseMessage(message);\n\n // check if message is an event or error\n var messageType = parsedMessage.headers[':message-type'];\n if (messageType) {\n if (messageType.value === 'error') {\n throw parseError(parsedMessage);\n } else if (messageType.value !== 'event') {\n // not sure how to parse non-events/non-errors, ignore for now\n return;\n }\n }\n\n // determine event type\n var eventType = parsedMessage.headers[':event-type'];\n // check that the event type is modeled\n var eventModel = shape.members[eventType.value];\n if (!eventModel) {\n return;\n }\n\n var result = {};\n // check if an event payload exists\n var eventPayloadMemberName = eventModel.eventPayloadMemberName;\n if (eventPayloadMemberName) {\n var payloadShape = eventModel.members[eventPayloadMemberName];\n // if the shape is binary, return the byte array\n if (payloadShape.type === 'binary') {\n result[eventPayloadMemberName] = parsedMessage.body;\n } else {\n result[eventPayloadMemberName] = parser.parse(parsedMessage.body.toString(), payloadShape);\n }\n }\n\n // read event headers\n var eventHeaderNames = eventModel.eventHeaderMemberNames;\n for (var i = 0; i < eventHeaderNames.length; i++) {\n var name = eventHeaderNames[i];\n if (parsedMessage.headers[name]) {\n // parse the header!\n result[name] = eventModel.members[name].toType(parsedMessage.headers[name].value);\n }\n }\n\n var output = {};\n output[eventType.value] = result;\n return output;\n}\n\nfunction parseError(message) {\n var errorCode = message.headers[':error-code'];\n var errorMessage = message.headers[':error-message'];\n var error = new Error(errorMessage.value || errorMessage);\n error.code = error.name = errorCode.value || errorCode;\n return error;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseEvent: parseEvent\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['costexplorer'] = {};\nAWS.CostExplorer = Service.defineService('costexplorer', ['2017-10-25']);\nObject.defineProperty(apiLoader.services['costexplorer'], '2017-10-25', {\n get: function get() {\n var model = require('../apis/ce-2017-10-25.min.json');\n model.paginators = require('../apis/ce-2017-10-25.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CostExplorer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['route53'] = {};\nAWS.Route53 = Service.defineService('route53', ['2013-04-01']);\nrequire('../lib/services/route53');\nObject.defineProperty(apiLoader.services['route53'], '2013-04-01', {\n get: function get() {\n var model = require('../apis/route53-2013-04-01.min.json');\n model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination;\n model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Route53;\n","var AWS = require('../core');\nvar util = require('../util');\nvar Rest = require('./rest');\n\nfunction populateBody(req) {\n var input = req.service.api.operations[req.operation].input;\n var builder = new AWS.XML.Builder();\n var params = req.params;\n\n var payload = input.payload;\n if (payload) {\n var payloadMember = input.members[payload];\n params = params[payload];\n if (params === undefined) return;\n\n if (payloadMember.type === 'structure') {\n var rootElement = payloadMember.name;\n req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true);\n } else { // non-xml payload\n req.httpRequest.body = params;\n }\n } else {\n req.httpRequest.body = builder.toXML(params, input, input.name ||\n input.shape || util.string.upperFirst(req.operation) + 'Request');\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD\n if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Rest.extractError(resp);\n\n var data;\n try {\n data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString());\n } catch (e) {\n data = {\n Code: resp.httpResponse.statusCode,\n Message: resp.httpResponse.statusMessage\n };\n }\n\n if (data.Errors) data = data.Errors;\n if (data.Error) data = data.Error;\n if (data.Code) {\n resp.error = util.error(new Error(), {\n code: data.Code,\n message: data.Message\n });\n } else {\n resp.error = util.error(new Error(), {\n code: resp.httpResponse.statusCode,\n message: null\n });\n }\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var parser;\n var req = resp.request;\n var body = resp.httpResponse.body;\n var operation = req.service.api.operations[req.operation];\n var output = operation.output;\n\n var hasEventOutput = operation.hasEventOutput;\n\n var payload = output.payload;\n if (payload) {\n var payloadMember = output.members[payload];\n if (payloadMember.isEventStream) {\n parser = new AWS.XML.Parser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : resp.httpResponse.body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure') {\n parser = new AWS.XML.Parser();\n resp.data[payload] = parser.parse(body.toString(), payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[payload] = body;\n } else {\n resp.data[payload] = payloadMember.toType(body);\n }\n } else if (body.length > 0) {\n parser = new AWS.XML.Parser();\n var data = parser.parse(body.toString(), output);\n util.update(resp.data, data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData\n};\n","var AWS = require('./core');\n\n/**\n * @api private\n * @!method on(eventName, callback)\n * Registers an event listener callback for the event given by `eventName`.\n * Parameters passed to the callback function depend on the individual event\n * being triggered. See the event documentation for those parameters.\n *\n * @param eventName [String] the event name to register the listener for\n * @param callback [Function] the listener callback function\n * @param toHead [Boolean] attach the listener callback to the head of callback array if set to true.\n * Default to be false.\n * @return [AWS.SequentialExecutor] the same object for chaining\n */\nAWS.SequentialExecutor = AWS.util.inherit({\n\n constructor: function SequentialExecutor() {\n this._events = {};\n },\n\n /**\n * @api private\n */\n listeners: function listeners(eventName) {\n return this._events[eventName] ? this._events[eventName].slice(0) : [];\n },\n\n on: function on(eventName, listener, toHead) {\n if (this._events[eventName]) {\n toHead ?\n this._events[eventName].unshift(listener) :\n this._events[eventName].push(listener);\n } else {\n this._events[eventName] = [listener];\n }\n return this;\n },\n\n onAsync: function onAsync(eventName, listener, toHead) {\n listener._isAsync = true;\n return this.on(eventName, listener, toHead);\n },\n\n removeListener: function removeListener(eventName, listener) {\n var listeners = this._events[eventName];\n if (listeners) {\n var length = listeners.length;\n var position = -1;\n for (var i = 0; i < length; ++i) {\n if (listeners[i] === listener) {\n position = i;\n }\n }\n if (position > -1) {\n listeners.splice(position, 1);\n }\n }\n return this;\n },\n\n removeAllListeners: function removeAllListeners(eventName) {\n if (eventName) {\n delete this._events[eventName];\n } else {\n this._events = {};\n }\n return this;\n },\n\n /**\n * @api private\n */\n emit: function emit(eventName, eventArgs, doneCallback) {\n if (!doneCallback) doneCallback = function() { };\n var listeners = this.listeners(eventName);\n var count = listeners.length;\n this.callListeners(listeners, eventArgs, doneCallback);\n return count > 0;\n },\n\n /**\n * @api private\n */\n callListeners: function callListeners(listeners, args, doneCallback, prevError) {\n var self = this;\n var error = prevError || null;\n\n function callNextListener(err) {\n if (err) {\n error = AWS.util.error(error || new Error(), err);\n if (self._haltHandlersOnError) {\n return doneCallback.call(self, error);\n }\n }\n self.callListeners(listeners, args, doneCallback, error);\n }\n\n while (listeners.length > 0) {\n var listener = listeners.shift();\n if (listener._isAsync) { // asynchronous listener\n listener.apply(self, args.concat([callNextListener]));\n return; // stop here, callNextListener will continue\n } else { // synchronous listener\n try {\n listener.apply(self, args);\n } catch (err) {\n error = AWS.util.error(error || new Error(), err);\n }\n if (error && self._haltHandlersOnError) {\n doneCallback.call(self, error);\n return;\n }\n }\n }\n doneCallback.call(self, error);\n },\n\n /**\n * Adds or copies a set of listeners from another list of\n * listeners or SequentialExecutor object.\n *\n * @param listeners [map>, AWS.SequentialExecutor]\n * a list of events and callbacks, or an event emitter object\n * containing listeners to add to this emitter object.\n * @return [AWS.SequentialExecutor] the emitter object, for chaining.\n * @example Adding listeners from a map of listeners\n * emitter.addListeners({\n * event1: [function() { ... }, function() { ... }],\n * event2: [function() { ... }]\n * });\n * emitter.emit('event1'); // emitter has event1\n * emitter.emit('event2'); // emitter has event2\n * @example Adding listeners from another emitter object\n * var emitter1 = new AWS.SequentialExecutor();\n * emitter1.on('event1', function() { ... });\n * emitter1.on('event2', function() { ... });\n * var emitter2 = new AWS.SequentialExecutor();\n * emitter2.addListeners(emitter1);\n * emitter2.emit('event1'); // emitter2 has event1\n * emitter2.emit('event2'); // emitter2 has event2\n */\n addListeners: function addListeners(listeners) {\n var self = this;\n\n // extract listeners if parameter is an SequentialExecutor object\n if (listeners._events) listeners = listeners._events;\n\n AWS.util.each(listeners, function(event, callbacks) {\n if (typeof callbacks === 'function') callbacks = [callbacks];\n AWS.util.arrayEach(callbacks, function(callback) {\n self.on(event, callback);\n });\n });\n\n return self;\n },\n\n /**\n * Registers an event with {on} and saves the callback handle function\n * as a property on the emitter object using a given `name`.\n *\n * @param name [String] the property name to set on this object containing\n * the callback function handle so that the listener can be removed in\n * the future.\n * @param (see on)\n * @return (see on)\n * @example Adding a named listener DATA_CALLBACK\n * var listener = function() { doSomething(); };\n * emitter.addNamedListener('DATA_CALLBACK', 'data', listener);\n *\n * // the following prints: true\n * console.log(emitter.DATA_CALLBACK == listener);\n */\n addNamedListener: function addNamedListener(name, eventName, callback, toHead) {\n this[name] = callback;\n this.addListener(eventName, callback, toHead);\n return this;\n },\n\n /**\n * @api private\n */\n addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback, toHead) {\n callback._isAsync = true;\n return this.addNamedListener(name, eventName, callback, toHead);\n },\n\n /**\n * Helper method to add a set of named listeners using\n * {addNamedListener}. The callback contains a parameter\n * with a handle to the `addNamedListener` method.\n *\n * @callback callback function(add)\n * The callback function is called immediately in order to provide\n * the `add` function to the block. This simplifies the addition of\n * a large group of named listeners.\n * @param add [Function] the {addNamedListener} function to call\n * when registering listeners.\n * @example Adding a set of named listeners\n * emitter.addNamedListeners(function(add) {\n * add('DATA_CALLBACK', 'data', function() { ... });\n * add('OTHER', 'otherEvent', function() { ... });\n * add('LAST', 'lastEvent', function() { ... });\n * });\n *\n * // these properties are now set:\n * emitter.DATA_CALLBACK;\n * emitter.OTHER;\n * emitter.LAST;\n */\n addNamedListeners: function addNamedListeners(callback) {\n var self = this;\n callback(\n function() {\n self.addNamedListener.apply(self, arguments);\n },\n function() {\n self.addNamedAsyncListener.apply(self, arguments);\n }\n );\n return this;\n }\n});\n\n/**\n * {on} is the prefered method.\n * @api private\n */\nAWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on;\n\n/**\n * @api private\n */\nmodule.exports = AWS.SequentialExecutor;\n","var util = require('../util');\n\nfunction QueryParamSerializer() {\n}\n\nQueryParamSerializer.prototype.serialize = function(params, shape, fn) {\n serializeStructure('', params, shape, fn);\n};\n\nfunction ucfirst(shape) {\n if (shape.isQueryName || shape.api.protocol !== 'ec2') {\n return shape.name;\n } else {\n return shape.name[0].toUpperCase() + shape.name.substr(1);\n }\n}\n\nfunction serializeStructure(prefix, struct, rules, fn) {\n util.each(rules.members, function(name, member) {\n var value = struct[name];\n if (value === null || value === undefined) return;\n\n var memberName = ucfirst(member);\n memberName = prefix ? prefix + '.' + memberName : memberName;\n serializeMember(memberName, value, member, fn);\n });\n}\n\nfunction serializeMap(name, map, rules, fn) {\n var i = 1;\n util.each(map, function (key, value) {\n var prefix = rules.flattened ? '.' : '.entry.';\n var position = prefix + (i++) + '.';\n var keyName = position + (rules.key.name || 'key');\n var valueName = position + (rules.value.name || 'value');\n serializeMember(name + keyName, key, rules.key, fn);\n serializeMember(name + valueName, value, rules.value, fn);\n });\n}\n\nfunction serializeList(name, list, rules, fn) {\n var memberRules = rules.member || {};\n\n if (list.length === 0) {\n fn.call(this, name, null);\n return;\n }\n\n util.arrayEach(list, function (v, n) {\n var suffix = '.' + (n + 1);\n if (rules.api.protocol === 'ec2') {\n // Do nothing for EC2\n suffix = suffix + ''; // make linter happy\n } else if (rules.flattened) {\n if (memberRules.name) {\n var parts = name.split('.');\n parts.pop();\n parts.push(ucfirst(memberRules));\n name = parts.join('.');\n }\n } else {\n suffix = '.' + (memberRules.name ? memberRules.name : 'member') + suffix;\n }\n serializeMember(name + suffix, v, memberRules, fn);\n });\n}\n\nfunction serializeMember(name, value, rules, fn) {\n if (value === null || value === undefined) return;\n if (rules.type === 'structure') {\n serializeStructure(name, value, rules, fn);\n } else if (rules.type === 'list') {\n serializeList(name, value, rules, fn);\n } else if (rules.type === 'map') {\n serializeMap(name, value, rules, fn);\n } else {\n fn(name, rules.toWireFormat(value).toString());\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = QueryParamSerializer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lexruntimev2'] = {};\nAWS.LexRuntimeV2 = Service.defineService('lexruntimev2', ['2020-08-07']);\nObject.defineProperty(apiLoader.services['lexruntimev2'], '2020-08-07', {\n get: function get() {\n var model = require('../apis/runtime.lex.v2-2020-08-07.min.json');\n model.paginators = require('../apis/runtime.lex.v2-2020-08-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.LexRuntimeV2;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['opsworks'] = {};\nAWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']);\nObject.defineProperty(apiLoader.services['opsworks'], '2013-02-18', {\n get: function get() {\n var model = require('../apis/opsworks-2013-02-18.min.json');\n model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination;\n model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.OpsWorks;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedListNode = /** @class */ (function () {\n function LinkedListNode(key, value) {\n this.key = key;\n this.value = value;\n }\n return LinkedListNode;\n}());\nvar LRUCache = /** @class */ (function () {\n function LRUCache(size) {\n this.nodeMap = {};\n this.size = 0;\n if (typeof size !== 'number' || size < 1) {\n throw new Error('Cache size can only be positive number');\n }\n this.sizeLimit = size;\n }\n Object.defineProperty(LRUCache.prototype, \"length\", {\n get: function () {\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n LRUCache.prototype.prependToList = function (node) {\n if (!this.headerNode) {\n this.tailNode = node;\n }\n else {\n this.headerNode.prev = node;\n node.next = this.headerNode;\n }\n this.headerNode = node;\n this.size++;\n };\n LRUCache.prototype.removeFromTail = function () {\n if (!this.tailNode) {\n return undefined;\n }\n var node = this.tailNode;\n var prevNode = node.prev;\n if (prevNode) {\n prevNode.next = undefined;\n }\n node.prev = undefined;\n this.tailNode = prevNode;\n this.size--;\n return node;\n };\n LRUCache.prototype.detachFromList = function (node) {\n if (this.headerNode === node) {\n this.headerNode = node.next;\n }\n if (this.tailNode === node) {\n this.tailNode = node.prev;\n }\n if (node.prev) {\n node.prev.next = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n }\n node.next = undefined;\n node.prev = undefined;\n this.size--;\n };\n LRUCache.prototype.get = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n this.prependToList(node);\n return node.value;\n }\n };\n LRUCache.prototype.remove = function (key) {\n if (this.nodeMap[key]) {\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n LRUCache.prototype.put = function (key, value) {\n if (this.nodeMap[key]) {\n this.remove(key);\n }\n else if (this.size === this.sizeLimit) {\n var tailNode = this.removeFromTail();\n var key_1 = tailNode.key;\n delete this.nodeMap[key_1];\n }\n var newNode = new LinkedListNode(key, value);\n this.nodeMap[key] = newNode;\n this.prependToList(newNode);\n };\n LRUCache.prototype.empty = function () {\n var keys = Object.keys(this.nodeMap);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var node = this.nodeMap[key];\n this.detachFromList(node);\n delete this.nodeMap[key];\n }\n };\n return LRUCache;\n}());\nexports.LRUCache = LRUCache;","var util = require('../util');\n\nfunction JsonParser() { }\n\nJsonParser.prototype.parse = function(value, shape) {\n return translate(JSON.parse(value), shape);\n};\n\nfunction translate(value, shape) {\n if (!shape || value === undefined) return undefined;\n\n switch (shape.type) {\n case 'structure': return translateStructure(value, shape);\n case 'map': return translateMap(value, shape);\n case 'list': return translateList(value, shape);\n default: return translateScalar(value, shape);\n }\n}\n\nfunction translateStructure(structure, shape) {\n if (structure == null) return undefined;\n if (shape.isDocument) return structure;\n\n var struct = {};\n var shapeMembers = shape.members;\n util.each(shapeMembers, function(name, memberShape) {\n var locationName = memberShape.isLocationName ? memberShape.name : name;\n if (Object.prototype.hasOwnProperty.call(structure, locationName)) {\n var value = structure[locationName];\n var result = translate(value, memberShape);\n if (result !== undefined) struct[name] = result;\n }\n });\n return struct;\n}\n\nfunction translateList(list, shape) {\n if (list == null) return undefined;\n\n var out = [];\n util.arrayEach(list, function(value) {\n var result = translate(value, shape.member);\n if (result === undefined) out.push(null);\n else out.push(result);\n });\n return out;\n}\n\nfunction translateMap(map, shape) {\n if (map == null) return undefined;\n\n var out = {};\n util.each(map, function(key, value) {\n var result = translate(value, shape.value);\n if (result === undefined) out[key] = null;\n else out[key] = result;\n });\n return out;\n}\n\nfunction translateScalar(value, shape) {\n return shape.toType(value);\n}\n\n/**\n * @api private\n */\nmodule.exports = JsonParser;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['comprehendmedical'] = {};\nAWS.ComprehendMedical = Service.defineService('comprehendmedical', ['2018-10-30']);\nObject.defineProperty(apiLoader.services['comprehendmedical'], '2018-10-30', {\n get: function get() {\n var model = require('../apis/comprehendmedical-2018-10-30.min.json');\n model.paginators = require('../apis/comprehendmedical-2018-10-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ComprehendMedical;\n","var AWS = require('./core');\nvar AcceptorStateMachine = require('./state_machine');\nvar inherit = AWS.util.inherit;\nvar domain = AWS.util.domain;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nvar hardErrorStates = {success: 1, error: 1, complete: 1};\n\nfunction isTerminalState(machine) {\n return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState);\n}\n\nvar fsm = new AcceptorStateMachine();\nfsm.setupStates = function() {\n var transition = function(_, done) {\n var self = this;\n self._haltHandlersOnError = false;\n\n self.emit(self._asm.currentState, function(err) {\n if (err) {\n if (isTerminalState(self)) {\n if (domain && self.domain instanceof domain.Domain) {\n err.domainEmitter = self;\n err.domain = self.domain;\n err.domainThrown = false;\n self.domain.emit('error', err);\n } else {\n throw err;\n }\n } else {\n self.response.error = err;\n done(err);\n }\n } else {\n done(self.response.error);\n }\n });\n\n };\n\n this.addState('validate', 'build', 'error', transition);\n this.addState('build', 'afterBuild', 'restart', transition);\n this.addState('afterBuild', 'sign', 'restart', transition);\n this.addState('sign', 'send', 'retry', transition);\n this.addState('retry', 'afterRetry', 'afterRetry', transition);\n this.addState('afterRetry', 'sign', 'error', transition);\n this.addState('send', 'validateResponse', 'retry', transition);\n this.addState('validateResponse', 'extractData', 'extractError', transition);\n this.addState('extractError', 'extractData', 'retry', transition);\n this.addState('extractData', 'success', 'retry', transition);\n this.addState('restart', 'build', 'error', transition);\n this.addState('success', 'complete', 'complete', transition);\n this.addState('error', 'complete', 'complete', transition);\n this.addState('complete', null, null, transition);\n};\nfsm.setupStates();\n\n/**\n * ## Asynchronous Requests\n *\n * All requests made through the SDK are asynchronous and use a\n * callback interface. Each service method that kicks off a request\n * returns an `AWS.Request` object that you can use to register\n * callbacks.\n *\n * For example, the following service method returns the request\n * object as \"request\", which can be used to register callbacks:\n *\n * ```javascript\n * // request is an AWS.Request object\n * var request = ec2.describeInstances();\n *\n * // register callbacks on request to retrieve response data\n * request.on('success', function(response) {\n * console.log(response.data);\n * });\n * ```\n *\n * When a request is ready to be sent, the {send} method should\n * be called:\n *\n * ```javascript\n * request.send();\n * ```\n *\n * Since registered callbacks may or may not be idempotent, requests should only\n * be sent once. To perform the same operation multiple times, you will need to\n * create multiple request objects, each with its own registered callbacks.\n *\n * ## Removing Default Listeners for Events\n *\n * Request objects are built with default listeners for the various events,\n * depending on the service type. In some cases, you may want to remove\n * some built-in listeners to customize behaviour. Doing this requires\n * access to the built-in listener functions, which are exposed through\n * the {AWS.EventListeners.Core} namespace. For instance, you may\n * want to customize the HTTP handler used when sending a request. In this\n * case, you can remove the built-in listener associated with the 'send'\n * event, the {AWS.EventListeners.Core.SEND} listener and add your own.\n *\n * ## Multiple Callbacks and Chaining\n *\n * You can register multiple callbacks on any request object. The\n * callbacks can be registered for different events, or all for the\n * same event. In addition, you can chain callback registration, for\n * example:\n *\n * ```javascript\n * request.\n * on('success', function(response) {\n * console.log(\"Success!\");\n * }).\n * on('error', function(error, response) {\n * console.log(\"Error!\");\n * }).\n * on('complete', function(response) {\n * console.log(\"Always!\");\n * }).\n * send();\n * ```\n *\n * The above example will print either \"Success! Always!\", or \"Error! Always!\",\n * depending on whether the request succeeded or not.\n *\n * @!attribute httpRequest\n * @readonly\n * @!group HTTP Properties\n * @return [AWS.HttpRequest] the raw HTTP request object\n * containing request headers and body information\n * sent by the service.\n *\n * @!attribute startTime\n * @readonly\n * @!group Operation Properties\n * @return [Date] the time that the request started\n *\n * @!group Request Building Events\n *\n * @!event validate(request)\n * Triggered when a request is being validated. Listeners\n * should throw an error if the request should not be sent.\n * @param request [Request] the request object being sent\n * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS\n * @see AWS.EventListeners.Core.VALIDATE_REGION\n * @example Ensuring that a certain parameter is set before sending a request\n * var req = s3.putObject(params);\n * req.on('validate', function() {\n * if (!req.params.Body.match(/^Hello\\s/)) {\n * throw new Error('Body must start with \"Hello \"');\n * }\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event build(request)\n * Triggered when the request payload is being built. Listeners\n * should fill the necessary information to send the request\n * over HTTP.\n * @param (see AWS.Request~validate)\n * @example Add a custom HTTP header to a request\n * var req = s3.putObject(params);\n * req.on('build', function() {\n * req.httpRequest.headers['Custom-Header'] = 'value';\n * });\n * req.send(function(err, data) { ... });\n *\n * @!event sign(request)\n * Triggered when the request is being signed. Listeners should\n * add the correct authentication headers and/or adjust the body,\n * depending on the authentication mechanism being used.\n * @param (see AWS.Request~validate)\n *\n * @!group Request Sending Events\n *\n * @!event send(response)\n * Triggered when the request is ready to be sent. Listeners\n * should call the underlying transport layer to initiate\n * the sending of the request.\n * @param response [Response] the response object\n * @context [Request] the request object that was sent\n * @see AWS.EventListeners.Core.SEND\n *\n * @!event retry(response)\n * Triggered when a request failed and might need to be retried or redirected.\n * If the response is retryable, the listener should set the\n * `response.error.retryable` property to `true`, and optionally set\n * `response.error.retryDelay` to the millisecond delay for the next attempt.\n * In the case of a redirect, `response.error.redirect` should be set to\n * `true` with `retryDelay` set to an optional delay on the next request.\n *\n * If a listener decides that a request should not be retried,\n * it should set both `retryable` and `redirect` to false.\n *\n * Note that a retryable error will be retried at most\n * {AWS.Config.maxRetries} times (based on the service object's config).\n * Similarly, a request that is redirected will only redirect at most\n * {AWS.Config.maxRedirects} times.\n *\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @example Adding a custom retry for a 404 response\n * request.on('retry', function(response) {\n * // this resource is not yet available, wait 10 seconds to get it again\n * if (response.httpResponse.statusCode === 404 && response.error) {\n * response.error.retryable = true; // retry this error\n * response.error.retryDelay = 10000; // wait 10 seconds\n * }\n * });\n *\n * @!group Data Parsing Events\n *\n * @!event extractError(response)\n * Triggered on all non-2xx requests so that listeners can extract\n * error details from the response body. Listeners to this event\n * should set the `response.error` property.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event extractData(response)\n * Triggered in successful requests to allow listeners to\n * de-serialize the response body into `response.data`.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group Completion Events\n *\n * @!event success(response)\n * Triggered when the request completed successfully.\n * `response.data` will contain the response data and\n * `response.error` will be null.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event error(error, response)\n * Triggered when an error occurs at any point during the\n * request. `response.error` will contain details about the error\n * that occurred. `response.data` will be null.\n * @param error [Error] the error object containing details about\n * the error that occurred.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event complete(response)\n * Triggered whenever a request cycle completes. `response.error`\n * should be checked, since the request may have failed.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!group HTTP Events\n *\n * @!event httpHeaders(statusCode, headers, response, statusMessage)\n * Triggered when headers are sent by the remote server\n * @param statusCode [Integer] the HTTP response code\n * @param headers [map] the response headers\n * @param (see AWS.Request~send)\n * @param statusMessage [String] A status message corresponding to the HTTP\n * response code\n * @context (see AWS.Request~send)\n *\n * @!event httpData(chunk, response)\n * Triggered when data is sent by the remote server\n * @param chunk [Buffer] the buffer data containing the next data chunk\n * from the server\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @see AWS.EventListeners.Core.HTTP_DATA\n *\n * @!event httpUploadProgress(progress, response)\n * Triggered when the HTTP request has uploaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpDownloadProgress(progress, response)\n * Triggered when the HTTP request has downloaded more data\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request.\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n * @note This event will not be emitted in Node.js 0.8.x.\n *\n * @!event httpError(error, response)\n * Triggered when the HTTP request failed\n * @param error [Error] the error object that was thrown\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @!event httpDone(response)\n * Triggered when the server is finished sending data\n * @param (see AWS.Request~send)\n * @context (see AWS.Request~send)\n *\n * @see AWS.Response\n */\nAWS.Request = inherit({\n\n /**\n * Creates a request for an operation on a given service with\n * a set of input parameters.\n *\n * @param service [AWS.Service] the service to perform the operation on\n * @param operation [String] the operation to perform on the service\n * @param params [Object] parameters to send to the operation.\n * See the operation's documentation for the format of the\n * parameters.\n */\n constructor: function Request(service, operation, params) {\n var endpoint = service.endpoint;\n var region = service.config.region;\n var customUserAgent = service.config.customUserAgent;\n\n if (service.signingRegion) {\n region = service.signingRegion;\n } else if (service.isGlobalEndpoint) {\n region = 'us-east-1';\n }\n\n this.domain = domain && domain.active;\n this.service = service;\n this.operation = operation;\n this.params = params || {};\n this.httpRequest = new AWS.HttpRequest(endpoint, region);\n this.httpRequest.appendToUserAgent(customUserAgent);\n this.startTime = service.getSkewCorrectedDate();\n\n this.response = new AWS.Response(this);\n this._asm = new AcceptorStateMachine(fsm.states, 'validate');\n this._haltHandlersOnError = false;\n\n AWS.SequentialExecutor.call(this);\n this.emit = this.emitEvent;\n },\n\n /**\n * @!group Sending a Request\n */\n\n /**\n * @overload send(callback = null)\n * Sends the request object.\n *\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @context [AWS.Request] the request object being sent.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n * @example Sending a request with a callback\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.send(function(err, data) { console.log(err, data); });\n * @example Sending a request with no callback (using event handlers)\n * request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * request.on('complete', function(response) { ... }); // register a callback\n * request.send();\n */\n send: function send(callback) {\n if (callback) {\n // append to user agent\n this.httpRequest.appendToUserAgent('callback');\n this.on('complete', function (resp) {\n callback.call(resp, resp.error, resp.data);\n });\n }\n this.runTo();\n\n return this.response;\n },\n\n /**\n * @!method promise()\n * Sends the request and returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [Object] the de-serialized data returned from the request.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param error [Error] the error object returned from the request.\n * @return [Promise] A promise that represents the state of the request.\n * @example Sending a request using promises.\n * var request = s3.putObject({Bucket: 'bucket', Key: 'key'});\n * var result = request.promise();\n * result.then(function(data) { ... }, function(error) { ... });\n */\n\n /**\n * @api private\n */\n build: function build(callback) {\n return this.runTo('send', callback);\n },\n\n /**\n * @api private\n */\n runTo: function runTo(state, done) {\n this._asm.runTo(state, done, this);\n return this;\n },\n\n /**\n * Aborts a request, emitting the error and complete events.\n *\n * @!macro nobrowser\n * @example Aborting a request after sending\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 5) // 5MB payload\n * };\n * var request = s3.putObject(params);\n * request.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(request.abort.bind(request), 1000);\n *\n * // prints \"Error: RequestAbortedError Request aborted by user\"\n * @return [AWS.Request] the same request object, for chaining.\n * @since v1.4.0\n */\n abort: function abort() {\n this.removeAllListeners('validateResponse');\n this.removeAllListeners('extractError');\n this.on('validateResponse', function addAbortedError(resp) {\n resp.error = AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n });\n });\n\n if (this.httpRequest.stream && !this.httpRequest.stream.didCallback) { // abort HTTP stream\n this.httpRequest.stream.abort();\n if (this.httpRequest._abortCallback) {\n this.httpRequest._abortCallback();\n } else {\n this.removeAllListeners('send'); // haven't sent yet, so let's not\n }\n }\n\n return this;\n },\n\n /**\n * Iterates over each page of results given a pageable request, calling\n * the provided callback with each page of data. After all pages have been\n * retrieved, the callback is called with `null` data.\n *\n * @note This operation can generate multiple requests to a service.\n * @example Iterating over multiple pages of objects in an S3 bucket\n * var pages = 1;\n * s3.listObjects().eachPage(function(err, data) {\n * if (err) return;\n * console.log(\"Page\", pages++);\n * console.log(data);\n * });\n * @example Iterating over multiple pages with an asynchronous callback\n * s3.listObjects(params).eachPage(function(err, data, done) {\n * doSomethingAsyncAndOrExpensive(function() {\n * // The next page of results isn't fetched until done is called\n * done();\n * });\n * });\n * @callback callback function(err, data, [doneCallback])\n * Called with each page of resulting data from the request. If the\n * optional `doneCallback` is provided in the function, it must be called\n * when the callback is complete.\n *\n * @param err [Error] an error object, if an error occurred.\n * @param data [Object] a single page of response data. If there is no\n * more data, this object will be `null`.\n * @param doneCallback [Function] an optional done callback. If this\n * argument is defined in the function declaration, it should be called\n * when the next page is ready to be retrieved. This is useful for\n * controlling serial pagination across asynchronous operations.\n * @return [Boolean] if the callback returns `false`, pagination will\n * stop.\n *\n * @see AWS.Request.eachItem\n * @see AWS.Response.nextPage\n * @since v1.4.0\n */\n eachPage: function eachPage(callback) {\n // Make all callbacks async-ish\n callback = AWS.util.fn.makeAsync(callback, 3);\n\n function wrappedCallback(response) {\n callback.call(response, response.error, response.data, function (result) {\n if (result === false) return;\n\n if (response.hasNextPage()) {\n response.nextPage().on('complete', wrappedCallback).send();\n } else {\n callback.call(response, null, null, AWS.util.fn.noop);\n }\n });\n }\n\n this.on('complete', wrappedCallback).send();\n },\n\n /**\n * Enumerates over individual items of a request, paging the responses if\n * necessary.\n *\n * @api experimental\n * @since v1.4.0\n */\n eachItem: function eachItem(callback) {\n var self = this;\n function wrappedCallback(err, data) {\n if (err) return callback(err, null);\n if (data === null) return callback(null, null);\n\n var config = self.service.paginationConfig(self.operation);\n var resultKey = config.resultKey;\n if (Array.isArray(resultKey)) resultKey = resultKey[0];\n var items = jmespath.search(data, resultKey);\n var continueIteration = true;\n AWS.util.arrayEach(items, function(item) {\n continueIteration = callback(null, item);\n if (continueIteration === false) {\n return AWS.util.abort;\n }\n });\n return continueIteration;\n }\n\n this.eachPage(wrappedCallback);\n },\n\n /**\n * @return [Boolean] whether the operation can return multiple pages of\n * response data.\n * @see AWS.Response.eachPage\n * @since v1.4.0\n */\n isPageable: function isPageable() {\n return this.service.paginationConfig(this.operation) ? true : false;\n },\n\n /**\n * Sends the request and converts the request object into a readable stream\n * that can be read from or piped into a writable stream.\n *\n * @note The data read from a readable stream contains only\n * the raw HTTP body contents.\n * @example Manually reading from a stream\n * request.createReadStream().on('data', function(data) {\n * console.log(\"Got data:\", data.toString());\n * });\n * @example Piping a request body into a file\n * var out = fs.createWriteStream('/path/to/outfile.jpg');\n * s3.service.getObject(params).createReadStream().pipe(out);\n * @return [Stream] the readable stream object that can be piped\n * or read from (by registering 'data' event listeners).\n * @!macro nobrowser\n */\n createReadStream: function createReadStream() {\n var streams = AWS.util.stream;\n var req = this;\n var stream = null;\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n stream = new streams.PassThrough();\n process.nextTick(function() { req.send(); });\n } else {\n stream = new streams.Stream();\n stream.readable = true;\n\n stream.sent = false;\n stream.on('newListener', function(event) {\n if (!stream.sent && event === 'data') {\n stream.sent = true;\n process.nextTick(function() { req.send(); });\n }\n });\n }\n\n this.on('error', function(err) {\n stream.emit('error', err);\n });\n\n this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) {\n if (statusCode < 300) {\n req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA);\n req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR);\n req.on('httpError', function streamHttpError(error) {\n resp.error = error;\n resp.error.retryable = false;\n });\n\n var shouldCheckContentLength = false;\n var expectedLen;\n if (req.httpRequest.method !== 'HEAD') {\n expectedLen = parseInt(headers['content-length'], 10);\n }\n if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) {\n shouldCheckContentLength = true;\n var receivedLen = 0;\n }\n\n var checkContentLengthAndEmit = function checkContentLengthAndEmit() {\n if (shouldCheckContentLength && receivedLen !== expectedLen) {\n stream.emit('error', AWS.util.error(\n new Error('Stream content length mismatch. Received ' +\n receivedLen + ' of ' + expectedLen + ' bytes.'),\n { code: 'StreamContentLengthMismatch' }\n ));\n } else if (AWS.HttpClient.streamsApiVersion === 2) {\n stream.end();\n } else {\n stream.emit('end');\n }\n };\n\n var httpStream = resp.httpResponse.createUnbufferedStream();\n\n if (AWS.HttpClient.streamsApiVersion === 2) {\n if (shouldCheckContentLength) {\n var lengthAccumulator = new streams.PassThrough();\n lengthAccumulator._write = function(chunk) {\n if (chunk && chunk.length) {\n receivedLen += chunk.length;\n }\n return streams.PassThrough.prototype._write.apply(this, arguments);\n };\n\n lengthAccumulator.on('end', checkContentLengthAndEmit);\n stream.on('error', function(err) {\n shouldCheckContentLength = false;\n httpStream.unpipe(lengthAccumulator);\n lengthAccumulator.emit('end');\n lengthAccumulator.end();\n });\n httpStream.pipe(lengthAccumulator).pipe(stream, { end: false });\n } else {\n httpStream.pipe(stream);\n }\n } else {\n\n if (shouldCheckContentLength) {\n httpStream.on('data', function(arg) {\n if (arg && arg.length) {\n receivedLen += arg.length;\n }\n });\n }\n\n httpStream.on('data', function(arg) {\n stream.emit('data', arg);\n });\n httpStream.on('end', checkContentLengthAndEmit);\n }\n\n httpStream.on('error', function(err) {\n shouldCheckContentLength = false;\n stream.emit('error', err);\n });\n }\n });\n\n return stream;\n },\n\n /**\n * @param [Array,Response] args This should be the response object,\n * or an array of args to send to the event.\n * @api private\n */\n emitEvent: function emit(eventName, args, done) {\n if (typeof args === 'function') { done = args; args = null; }\n if (!done) done = function() { };\n if (!args) args = this.eventParameters(eventName, this.response);\n\n var origEmit = AWS.SequentialExecutor.prototype.emit;\n origEmit.call(this, eventName, args, function (err) {\n if (err) this.response.error = err;\n done.call(this, err);\n });\n },\n\n /**\n * @api private\n */\n eventParameters: function eventParameters(eventName) {\n switch (eventName) {\n case 'restart':\n case 'validate':\n case 'sign':\n case 'build':\n case 'afterValidate':\n case 'afterBuild':\n return [this];\n case 'error':\n return [this.response.error, this.response];\n default:\n return [this.response];\n }\n },\n\n /**\n * @api private\n */\n presign: function presign(expires, callback) {\n if (!callback && typeof expires === 'function') {\n callback = expires;\n expires = null;\n }\n return new AWS.Signers.Presign().sign(this.toGet(), expires, callback);\n },\n\n /**\n * @api private\n */\n isPresigned: function isPresigned() {\n return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires');\n },\n\n /**\n * @api private\n */\n toUnauthenticated: function toUnauthenticated() {\n this._unAuthenticated = true;\n this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS);\n this.removeListener('sign', AWS.EventListeners.Core.SIGN);\n return this;\n },\n\n /**\n * @api private\n */\n toGet: function toGet() {\n if (this.service.api.protocol === 'query' ||\n this.service.api.protocol === 'ec2') {\n this.removeListener('build', this.buildAsGet);\n this.addListener('build', this.buildAsGet);\n }\n return this;\n },\n\n /**\n * @api private\n */\n buildAsGet: function buildAsGet(request) {\n request.httpRequest.method = 'GET';\n request.httpRequest.path = request.service.endpoint.path +\n '?' + request.httpRequest.body;\n request.httpRequest.body = '';\n\n // don't need these headers on a GET request\n delete request.httpRequest.headers['Content-Length'];\n delete request.httpRequest.headers['Content-Type'];\n },\n\n /**\n * @api private\n */\n haltHandlersOnError: function haltHandlersOnError() {\n this._haltHandlersOnError = true;\n }\n});\n\n/**\n * @api private\n */\nAWS.Request.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = function promise() {\n var self = this;\n // append to user agent\n this.httpRequest.appendToUserAgent('promise');\n return new PromiseDependency(function(resolve, reject) {\n self.on('complete', function(resp) {\n if (resp.error) {\n reject(resp.error);\n } else {\n // define $response property so that it is not enumerable\n // this prevents circular reference errors when stringifying the JSON object\n resolve(Object.defineProperty(\n resp.data || {},\n '$response',\n {value: resp}\n ));\n }\n });\n self.runTo();\n });\n };\n};\n\n/**\n * @api private\n */\nAWS.Request.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.Request);\n\nAWS.util.mixin(AWS.Request, AWS.SequentialExecutor);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ecs'] = {};\nAWS.ECS = Service.defineService('ecs', ['2014-11-13']);\nObject.defineProperty(apiLoader.services['ecs'], '2014-11-13', {\n get: function get() {\n var model = require('../apis/ecs-2014-11-13.min.json');\n model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination;\n model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ECS;\n","var AWS = require('../core');\nvar CognitoIdentity = require('../../clients/cognitoidentity');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS Web Identity Federation using\n * the Amazon Cognito Identity service.\n *\n * By default this provider gets credentials using the\n * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which\n * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito\n * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to\n * obtain an `IdentityId`. If the identity or identity pool is not configured in\n * the Amazon Cognito Console to use IAM roles with the appropriate permissions,\n * then additionally a `RoleArn` is required containing the ARN of the IAM trust\n * policy for the Amazon Cognito role that the user will log into. If a `RoleArn`\n * is provided, then this provider gets credentials using the\n * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an\n * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}.\n *\n * In addition, if this credential provider is used to provide authenticated\n * login, the `Logins` map may be set to the tokens provided by the respective\n * identity providers. See {constructor} for an example on creating a credentials\n * object with proper property values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the WebIdentityToken, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.CognitoIdentity.getId},\n * {AWS.CognitoIdentity.getOpenIdToken}, and\n * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the\n * `params.WebIdentityToken` property.\n * @!attribute data\n * @return [map] the raw data response from the call to\n * {AWS.CognitoIdentity.getCredentialsForIdentity}, or\n * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get\n * access to other properties from the response.\n * @!attribute identityId\n * @return [String] the Cognito ID returned by the last call to\n * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual\n * final resolved identity ID from Amazon Cognito.\n */\nAWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * @api private\n */\n localStorageKey: {\n id: 'aws.cognito.identity-id.',\n providers: 'aws.cognito.identity-providers.'\n },\n\n /**\n * Creates a new credentials object.\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.CognitoIdentityCredentials({\n *\n * // either IdentityPoolId or IdentityId is required\n * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below)\n * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity\n * // or AWS.CognitoIdentity.getOpenIdToken (linked below)\n * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030',\n * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f'\n *\n * // optional, only necessary when the identity pool is not configured\n * // to use IAM roles in the Amazon Cognito Console\n * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity',\n *\n * // optional tokens, used for authenticated login\n * // See the Logins param for AWS.CognitoIdentity.getID (linked below)\n * Logins: {\n * 'graph.facebook.com': 'FBTOKEN',\n * 'www.amazon.com': 'AMAZONTOKEN',\n * 'accounts.google.com': 'GOOGLETOKEN',\n * 'api.twitter.com': 'TWITTERTOKEN',\n * 'www.digits.com': 'DIGITSTOKEN'\n * },\n *\n * // optional name, defaults to web-identity\n * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below)\n * RoleSessionName: 'web',\n *\n * // optional, only necessary when application runs in a browser\n * // and multiple users are signed in at once, used for caching\n * LoginId: 'example@gmail.com'\n *\n * }, {\n * // optionally provide configuration to apply to the underlying service clients\n * // if configuration is not provided, then configuration will be pulled from AWS.config\n *\n * // region should match the region your identity pool is located in\n * region: 'us-east-1',\n *\n * // specify timeout options\n * httpOptions: {\n * timeout: 100\n * }\n * });\n * @see AWS.CognitoIdentity.getId\n * @see AWS.CognitoIdentity.getCredentialsForIdentity\n * @see AWS.STS.assumeRoleWithWebIdentity\n * @see AWS.CognitoIdentity.getOpenIdToken\n * @see AWS.Config\n * @note If a region is not provided in the global AWS.config, or\n * specified in the `clientConfig` to the CognitoIdentityCredentials\n * constructor, you may encounter a 'Missing credentials in config' error\n * when calling making a service call.\n */\n constructor: function CognitoIdentityCredentials(params, clientConfig) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n this.data = null;\n this._identityId = null;\n this._clientConfig = AWS.util.copy(clientConfig || {});\n this.loadCachedId();\n var self = this;\n Object.defineProperty(this, 'identityId', {\n get: function() {\n self.loadCachedId();\n return self._identityId || self.params.IdentityId;\n },\n set: function(identityId) {\n self._identityId = identityId;\n }\n });\n },\n\n /**\n * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity},\n * or {AWS.STS.assumeRoleWithWebIdentity}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.data = null;\n self._identityId = null;\n self.getId(function(err) {\n if (!err) {\n if (!self.params.RoleArn) {\n self.getCredentialsForIdentity(callback);\n } else {\n self.getCredentialsFromSTS(callback);\n }\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * Clears the cached Cognito ID associated with the currently configured\n * identity pool ID. Use this to manually invalidate your cache if\n * the identity pool ID was deleted.\n */\n clearCachedId: function clearCache() {\n this._identityId = null;\n delete this.params.IdentityId;\n\n var poolId = this.params.IdentityPoolId;\n var loginId = this.params.LoginId || '';\n delete this.storage[this.localStorageKey.id + poolId + loginId];\n delete this.storage[this.localStorageKey.providers + poolId + loginId];\n },\n\n /**\n * @api private\n */\n clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) {\n var self = this;\n if (err.code == 'NotAuthorizedException') {\n self.clearCachedId();\n }\n },\n\n /**\n * Retrieves a Cognito ID, loading from cache if it was already retrieved\n * on this device.\n *\n * @callback callback function(err, identityId)\n * @param err [Error, null] an error object if the call failed or null if\n * it succeeded.\n * @param identityId [String, null] if successful, the callback will return\n * the Cognito ID.\n * @note If not loaded explicitly, the Cognito ID is loaded and stored in\n * localStorage in the browser environment of a device.\n * @api private\n */\n getId: function getId(callback) {\n var self = this;\n if (typeof self.params.IdentityId === 'string') {\n return callback(null, self.params.IdentityId);\n }\n\n self.cognito.getId(function(err, data) {\n if (!err && data.IdentityId) {\n self.params.IdentityId = data.IdentityId;\n callback(null, data.IdentityId);\n } else {\n callback(err);\n }\n });\n },\n\n\n /**\n * @api private\n */\n loadCredentials: function loadCredentials(data, credentials) {\n if (!data || !credentials) return;\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n },\n\n /**\n * @api private\n */\n getCredentialsForIdentity: function getCredentialsForIdentity(callback) {\n var self = this;\n self.cognito.getCredentialsForIdentity(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.data = data;\n self.loadCredentials(self.data, self);\n } else {\n self.clearIdOnNotAuthorized(err);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n getCredentialsFromSTS: function getCredentialsFromSTS(callback) {\n var self = this;\n self.cognito.getOpenIdToken(function(err, data) {\n if (!err) {\n self.cacheId(data);\n self.params.WebIdentityToken = data.Token;\n self.webIdentityCredentials.refresh(function(webErr) {\n if (!webErr) {\n self.data = self.webIdentityCredentials.data;\n self.sts.credentialsFrom(self.data, self);\n }\n callback(webErr);\n });\n } else {\n self.clearIdOnNotAuthorized(err);\n callback(err);\n }\n });\n },\n\n /**\n * @api private\n */\n loadCachedId: function loadCachedId() {\n var self = this;\n\n // in the browser we source default IdentityId from localStorage\n if (AWS.util.isBrowser() && !self.params.IdentityId) {\n var id = self.getStorage('id');\n if (id && self.params.Logins) {\n var actualProviders = Object.keys(self.params.Logins);\n var cachedProviders =\n (self.getStorage('providers') || '').split(',');\n\n // only load ID if at least one provider used this ID before\n var intersect = cachedProviders.filter(function(n) {\n return actualProviders.indexOf(n) !== -1;\n });\n if (intersect.length !== 0) {\n self.params.IdentityId = id;\n }\n } else if (id) {\n self.params.IdentityId = id;\n }\n }\n },\n\n /**\n * @api private\n */\n createClients: function() {\n var clientConfig = this._clientConfig;\n this.webIdentityCredentials = this.webIdentityCredentials ||\n new AWS.WebIdentityCredentials(this.params, clientConfig);\n if (!this.cognito) {\n var cognitoConfig = AWS.util.merge({}, clientConfig);\n cognitoConfig.params = this.params;\n this.cognito = new CognitoIdentity(cognitoConfig);\n }\n this.sts = this.sts || new STS(clientConfig);\n },\n\n /**\n * @api private\n */\n cacheId: function cacheId(data) {\n this._identityId = data.IdentityId;\n this.params.IdentityId = this._identityId;\n\n // cache this IdentityId in browser localStorage if possible\n if (AWS.util.isBrowser()) {\n this.setStorage('id', data.IdentityId);\n\n if (this.params.Logins) {\n this.setStorage('providers', Object.keys(this.params.Logins).join(','));\n }\n }\n },\n\n /**\n * @api private\n */\n getStorage: function getStorage(key) {\n return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')];\n },\n\n /**\n * @api private\n */\n setStorage: function setStorage(key, val) {\n try {\n this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val;\n } catch (_) {}\n },\n\n /**\n * @api private\n */\n storage: (function() {\n try {\n var storage = AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ?\n window.localStorage : {};\n\n // Test set/remove which would throw an error in Safari's private browsing\n storage['aws.test-storage'] = 'foobar';\n delete storage['aws.test-storage'];\n\n return storage;\n } catch (_) {\n return {};\n }\n })()\n});\n","var AWS = require('./core');\nvar Api = require('./model/api');\nvar regionConfig = require('./region_config');\n\nvar inherit = AWS.util.inherit;\nvar clientCount = 0;\nvar region_utils = require('./region/utils');\n\n/**\n * The service class representing an AWS service.\n *\n * @class_abstract This class is an abstract class.\n *\n * @!attribute apiVersions\n * @return [Array] the list of API versions supported by this service.\n * @readonly\n */\nAWS.Service = inherit({\n /**\n * Create a new service object with a configuration object\n *\n * @param config [map] a map of configuration options\n */\n constructor: function Service(config) {\n if (!this.loadServiceClass) {\n throw AWS.util.error(new Error(),\n 'Service must be constructed with `new\\' operator');\n }\n\n if (config) {\n if (config.region) {\n var region = config.region;\n if (region_utils.isFipsRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n config.useFipsEndpoint = true;\n }\n if (region_utils.isGlobalRegion(region)) {\n config.region = region_utils.getRealRegion(region);\n }\n }\n if (typeof config.useDualstack === 'boolean'\n && typeof config.useDualstackEndpoint !== 'boolean') {\n config.useDualstackEndpoint = config.useDualstack;\n }\n }\n\n var ServiceClass = this.loadServiceClass(config || {});\n if (ServiceClass) {\n var originalConfig = AWS.util.copy(config);\n var svc = new ServiceClass(config);\n Object.defineProperty(svc, '_originalConfig', {\n get: function() { return originalConfig; },\n enumerable: false,\n configurable: true\n });\n svc._clientId = ++clientCount;\n return svc;\n }\n this.initialize(config);\n },\n\n /**\n * @api private\n */\n initialize: function initialize(config) {\n var svcConfig = AWS.config[this.serviceIdentifier];\n this.config = new AWS.Config(AWS.config);\n if (svcConfig) this.config.update(svcConfig, true);\n if (config) this.config.update(config, true);\n\n this.validateService();\n if (!this.config.endpoint) regionConfig.configureEndpoint(this);\n\n this.config.endpoint = this.endpointFromTemplate(this.config.endpoint);\n this.setEndpoint(this.config.endpoint);\n //enable attaching listeners to service client\n AWS.SequentialExecutor.call(this);\n AWS.Service.addDefaultMonitoringListeners(this);\n if ((this.config.clientSideMonitoring || AWS.Service._clientSideMonitoring) && this.publisher) {\n var publisher = this.publisher;\n this.addNamedListener('PUBLISH_API_CALL', 'apiCall', function PUBLISH_API_CALL(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n this.addNamedListener('PUBLISH_API_ATTEMPT', 'apiCallAttempt', function PUBLISH_API_ATTEMPT(event) {\n process.nextTick(function() {publisher.eventHandler(event);});\n });\n }\n },\n\n /**\n * @api private\n */\n validateService: function validateService() {\n },\n\n /**\n * @api private\n */\n loadServiceClass: function loadServiceClass(serviceConfig) {\n var config = serviceConfig;\n if (!AWS.util.isEmpty(this.api)) {\n return null;\n } else if (config.apiConfig) {\n return AWS.Service.defineServiceApi(this.constructor, config.apiConfig);\n } else if (!this.constructor.services) {\n return null;\n } else {\n config = new AWS.Config(AWS.config);\n config.update(serviceConfig, true);\n var version = config.apiVersions[this.constructor.serviceIdentifier];\n version = version || config.apiVersion;\n return this.getLatestServiceClass(version);\n }\n },\n\n /**\n * @api private\n */\n getLatestServiceClass: function getLatestServiceClass(version) {\n version = this.getLatestServiceVersion(version);\n if (this.constructor.services[version] === null) {\n AWS.Service.defineServiceApi(this.constructor, version);\n }\n\n return this.constructor.services[version];\n },\n\n /**\n * @api private\n */\n getLatestServiceVersion: function getLatestServiceVersion(version) {\n if (!this.constructor.services || this.constructor.services.length === 0) {\n throw new Error('No services defined on ' +\n this.constructor.serviceIdentifier);\n }\n\n if (!version) {\n version = 'latest';\n } else if (AWS.util.isType(version, Date)) {\n version = AWS.util.date.iso8601(version).split('T')[0];\n }\n\n if (Object.hasOwnProperty(this.constructor.services, version)) {\n return version;\n }\n\n var keys = Object.keys(this.constructor.services).sort();\n var selectedVersion = null;\n for (var i = keys.length - 1; i >= 0; i--) {\n // versions that end in \"*\" are not available on disk and can be\n // skipped, so do not choose these as selectedVersions\n if (keys[i][keys[i].length - 1] !== '*') {\n selectedVersion = keys[i];\n }\n if (keys[i].substr(0, 10) <= version) {\n return selectedVersion;\n }\n }\n\n throw new Error('Could not find ' + this.constructor.serviceIdentifier +\n ' API to satisfy version constraint `' + version + '\\'');\n },\n\n /**\n * @api private\n */\n api: {},\n\n /**\n * @api private\n */\n defaultRetryCount: 3,\n\n /**\n * @api private\n */\n customizeRequests: function customizeRequests(callback) {\n if (!callback) {\n this.customRequestHandler = null;\n } else if (typeof callback === 'function') {\n this.customRequestHandler = callback;\n } else {\n throw new Error('Invalid callback type \\'' + typeof callback + '\\' provided in customizeRequests');\n }\n },\n\n /**\n * Calls an operation on a service with the given input parameters.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeRequest: function makeRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n params = params || {};\n if (this.config.params) { // copy only toplevel bound params\n var rules = this.api.operations[operation];\n if (rules) {\n params = AWS.util.copy(params);\n AWS.util.each(this.config.params, function(key, value) {\n if (rules.input.members[key]) {\n if (params[key] === undefined || params[key] === null) {\n params[key] = value;\n }\n }\n });\n }\n }\n\n var request = new AWS.Request(this, operation, params);\n this.addAllRequestListeners(request);\n this.attachMonitoringEmitter(request);\n if (callback) request.send(callback);\n return request;\n },\n\n /**\n * Calls an operation on a service with the given input parameters, without\n * any authentication data. This method is useful for \"public\" API operations.\n *\n * @param operation [String] the name of the operation to call on the service.\n * @param params [map] a map of input options for the operation\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n }\n\n var request = this.makeRequest(operation, params).toUnauthenticated();\n return callback ? request.send(callback) : request;\n },\n\n /**\n * Waits for a given state\n *\n * @param state [String] the state on the service to wait for\n * @param params [map] a map of parameters to pass with each request\n * @option params $waiter [map] a map of configuration options for the waiter\n * @option params $waiter.delay [Number] The number of seconds to wait between\n * requests\n * @option params $waiter.maxAttempts [Number] The maximum number of requests\n * to send while waiting\n * @callback callback function(err, data)\n * If a callback is supplied, it is called when a response is returned\n * from the service.\n * @param err [Error] the error object returned from the request.\n * Set to `null` if the request is successful.\n * @param data [Object] the de-serialized data returned from\n * the request. Set to `null` if a request error occurs.\n */\n waitFor: function waitFor(state, params, callback) {\n var waiter = new AWS.ResourceWaiter(this, state);\n return waiter.wait(params, callback);\n },\n\n /**\n * @api private\n */\n addAllRequestListeners: function addAllRequestListeners(request) {\n var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(),\n AWS.EventListeners.CorePost];\n for (var i = 0; i < list.length; i++) {\n if (list[i]) request.addListeners(list[i]);\n }\n\n // disable parameter validation\n if (!this.config.paramValidation) {\n request.removeListener('validate',\n AWS.EventListeners.Core.VALIDATE_PARAMETERS);\n }\n\n if (this.config.logger) { // add logging events\n request.addListeners(AWS.EventListeners.Logger);\n }\n\n this.setupRequestListeners(request);\n // call prototype's customRequestHandler\n if (typeof this.constructor.prototype.customRequestHandler === 'function') {\n this.constructor.prototype.customRequestHandler(request);\n }\n // call instance's customRequestHandler\n if (Object.prototype.hasOwnProperty.call(this, 'customRequestHandler') && typeof this.customRequestHandler === 'function') {\n this.customRequestHandler(request);\n }\n },\n\n /**\n * Event recording metrics for a whole API call.\n * @returns {object} a subset of api call metrics\n * @api private\n */\n apiCallEvent: function apiCallEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCall',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Region: request.httpRequest.region,\n MaxRetriesExceeded: 0,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.FinalHttpStatusCode = response.httpResponse.statusCode;\n }\n if (response.error) {\n var error = response.error;\n var statusCode = response.httpResponse.statusCode;\n if (statusCode > 299) {\n if (error.code) monitoringEvent.FinalAwsException = error.code;\n if (error.message) monitoringEvent.FinalAwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.FinalSdkException = error.code || error.name;\n if (error.message) monitoringEvent.FinalSdkExceptionMessage = error.message;\n }\n }\n return monitoringEvent;\n },\n\n /**\n * Event recording metrics for an API call attempt.\n * @returns {object} a subset of api call attempt metrics\n * @api private\n */\n apiAttemptEvent: function apiAttemptEvent(request) {\n var api = request.service.api.operations[request.operation];\n var monitoringEvent = {\n Type: 'ApiCallAttempt',\n Api: api ? api.name : request.operation,\n Version: 1,\n Service: request.service.api.serviceId || request.service.api.endpointPrefix,\n Fqdn: request.httpRequest.endpoint.hostname,\n UserAgent: request.httpRequest.getUserAgent(),\n };\n var response = request.response;\n if (response.httpResponse.statusCode) {\n monitoringEvent.HttpStatusCode = response.httpResponse.statusCode;\n }\n if (\n !request._unAuthenticated &&\n request.service.config.credentials &&\n request.service.config.credentials.accessKeyId\n ) {\n monitoringEvent.AccessKey = request.service.config.credentials.accessKeyId;\n }\n if (!response.httpResponse.headers) return monitoringEvent;\n if (request.httpRequest.headers['x-amz-security-token']) {\n monitoringEvent.SessionToken = request.httpRequest.headers['x-amz-security-token'];\n }\n if (response.httpResponse.headers['x-amzn-requestid']) {\n monitoringEvent.XAmznRequestId = response.httpResponse.headers['x-amzn-requestid'];\n }\n if (response.httpResponse.headers['x-amz-request-id']) {\n monitoringEvent.XAmzRequestId = response.httpResponse.headers['x-amz-request-id'];\n }\n if (response.httpResponse.headers['x-amz-id-2']) {\n monitoringEvent.XAmzId2 = response.httpResponse.headers['x-amz-id-2'];\n }\n return monitoringEvent;\n },\n\n /**\n * Add metrics of failed request.\n * @api private\n */\n attemptFailEvent: function attemptFailEvent(request) {\n var monitoringEvent = this.apiAttemptEvent(request);\n var response = request.response;\n var error = response.error;\n if (response.httpResponse.statusCode > 299 ) {\n if (error.code) monitoringEvent.AwsException = error.code;\n if (error.message) monitoringEvent.AwsExceptionMessage = error.message;\n } else {\n if (error.code || error.name) monitoringEvent.SdkException = error.code || error.name;\n if (error.message) monitoringEvent.SdkExceptionMessage = error.message;\n }\n return monitoringEvent;\n },\n\n /**\n * Attach listeners to request object to fetch metrics of each request\n * and emit data object through \\'ApiCall\\' and \\'ApiCallAttempt\\' events.\n * @api private\n */\n attachMonitoringEmitter: function attachMonitoringEmitter(request) {\n var attemptTimestamp; //timestamp marking the beginning of a request attempt\n var attemptStartRealTime; //Start time of request attempt. Used to calculating attemptLatency\n var attemptLatency; //latency from request sent out to http response reaching SDK\n var callStartRealTime; //Start time of API call. Used to calculating API call latency\n var attemptCount = 0; //request.retryCount is not reliable here\n var region; //region cache region for each attempt since it can be updated in plase (e.g. s3)\n var callTimestamp; //timestamp when the request is created\n var self = this;\n var addToHead = true;\n\n request.on('validate', function () {\n callStartRealTime = AWS.util.realClock.now();\n callTimestamp = Date.now();\n }, addToHead);\n request.on('sign', function () {\n attemptStartRealTime = AWS.util.realClock.now();\n attemptTimestamp = Date.now();\n region = request.httpRequest.region;\n attemptCount++;\n }, addToHead);\n request.on('validateResponse', function() {\n attemptLatency = Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n });\n request.addNamedListener('API_CALL_ATTEMPT', 'success', function API_CALL_ATTEMPT() {\n var apiAttemptEvent = self.apiAttemptEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL_ATTEMPT_RETRY', 'retry', function API_CALL_ATTEMPT_RETRY() {\n var apiAttemptEvent = self.attemptFailEvent(request);\n apiAttemptEvent.Timestamp = attemptTimestamp;\n //attemptLatency may not be available if fail before response\n attemptLatency = attemptLatency ||\n Math.round(AWS.util.realClock.now() - attemptStartRealTime);\n apiAttemptEvent.AttemptLatency = attemptLatency >= 0 ? attemptLatency : 0;\n apiAttemptEvent.Region = region;\n self.emit('apiCallAttempt', [apiAttemptEvent]);\n });\n request.addNamedListener('API_CALL', 'complete', function API_CALL() {\n var apiCallEvent = self.apiCallEvent(request);\n apiCallEvent.AttemptCount = attemptCount;\n if (apiCallEvent.AttemptCount <= 0) return;\n apiCallEvent.Timestamp = callTimestamp;\n var latency = Math.round(AWS.util.realClock.now() - callStartRealTime);\n apiCallEvent.Latency = latency >= 0 ? latency : 0;\n var response = request.response;\n if (\n response.error &&\n response.error.retryable &&\n typeof response.retryCount === 'number' &&\n typeof response.maxRetries === 'number' &&\n (response.retryCount >= response.maxRetries)\n ) {\n apiCallEvent.MaxRetriesExceeded = 1;\n }\n self.emit('apiCall', [apiCallEvent]);\n });\n },\n\n /**\n * Override this method to setup any custom request listeners for each\n * new request to the service.\n *\n * @method_abstract This is an abstract method.\n */\n setupRequestListeners: function setupRequestListeners(request) {\n },\n\n /**\n * Gets the signing name for a given request\n * @api private\n */\n getSigningName: function getSigningName() {\n return this.api.signingName || this.api.endpointPrefix;\n },\n\n /**\n * Gets the signer class for a given request\n * @api private\n */\n getSignerClass: function getSignerClass(request) {\n var version;\n // get operation authtype if present\n var operation = null;\n var authtype = '';\n if (request) {\n var operations = request.service.api.operations || {};\n operation = operations[request.operation] || null;\n authtype = operation ? operation.authtype : '';\n }\n if (this.config.signatureVersion) {\n version = this.config.signatureVersion;\n } else if (authtype === 'v4' || authtype === 'v4-unsigned-body') {\n version = 'v4';\n } else if (authtype === 'bearer') {\n version = 'bearer';\n } else {\n version = this.api.signatureVersion;\n }\n return AWS.Signers.RequestSigner.getVersion(version);\n },\n\n /**\n * @api private\n */\n serviceInterface: function serviceInterface() {\n switch (this.api.protocol) {\n case 'ec2': return AWS.EventListeners.Query;\n case 'query': return AWS.EventListeners.Query;\n case 'json': return AWS.EventListeners.Json;\n case 'rest-json': return AWS.EventListeners.RestJson;\n case 'rest-xml': return AWS.EventListeners.RestXml;\n }\n if (this.api.protocol) {\n throw new Error('Invalid service `protocol\\' ' +\n this.api.protocol + ' in API config');\n }\n },\n\n /**\n * @api private\n */\n successfulResponse: function successfulResponse(resp) {\n return resp.httpResponse.statusCode < 300;\n },\n\n /**\n * How many times a failed request should be retried before giving up.\n * the defaultRetryCount can be overriden by service classes.\n *\n * @api private\n */\n numRetries: function numRetries() {\n if (this.config.maxRetries !== undefined) {\n return this.config.maxRetries;\n } else {\n return this.defaultRetryCount;\n }\n },\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions, err);\n },\n\n /**\n * @api private\n */\n retryableError: function retryableError(error) {\n if (this.timeoutError(error)) return true;\n if (this.networkingError(error)) return true;\n if (this.expiredCredentialsError(error)) return true;\n if (this.throttledError(error)) return true;\n if (error.statusCode >= 500) return true;\n return false;\n },\n\n /**\n * @api private\n */\n networkingError: function networkingError(error) {\n return error.code === 'NetworkingError';\n },\n\n /**\n * @api private\n */\n timeoutError: function timeoutError(error) {\n return error.code === 'TimeoutError';\n },\n\n /**\n * @api private\n */\n expiredCredentialsError: function expiredCredentialsError(error) {\n // TODO : this only handles *one* of the expired credential codes\n return (error.code === 'ExpiredTokenException');\n },\n\n /**\n * @api private\n */\n clockSkewError: function clockSkewError(error) {\n switch (error.code) {\n case 'RequestTimeTooSkewed':\n case 'RequestExpired':\n case 'InvalidSignatureException':\n case 'SignatureDoesNotMatch':\n case 'AuthFailure':\n case 'RequestInTheFuture':\n return true;\n default: return false;\n }\n },\n\n /**\n * @api private\n */\n getSkewCorrectedDate: function getSkewCorrectedDate() {\n return new Date(Date.now() + this.config.systemClockOffset);\n },\n\n /**\n * @api private\n */\n applyClockOffset: function applyClockOffset(newServerTime) {\n if (newServerTime) {\n this.config.systemClockOffset = newServerTime - Date.now();\n }\n },\n\n /**\n * @api private\n */\n isClockSkewed: function isClockSkewed(newServerTime) {\n if (newServerTime) {\n return Math.abs(this.getSkewCorrectedDate().getTime() - newServerTime) >= 300000;\n }\n },\n\n /**\n * @api private\n */\n throttledError: function throttledError(error) {\n // this logic varies between services\n if (error.statusCode === 429) return true;\n switch (error.code) {\n case 'ProvisionedThroughputExceededException':\n case 'Throttling':\n case 'ThrottlingException':\n case 'RequestLimitExceeded':\n case 'RequestThrottled':\n case 'RequestThrottledException':\n case 'TooManyRequestsException':\n case 'TransactionInProgressException': //dynamodb\n case 'EC2ThrottledException':\n return true;\n default:\n return false;\n }\n },\n\n /**\n * @api private\n */\n endpointFromTemplate: function endpointFromTemplate(endpoint) {\n if (typeof endpoint !== 'string') return endpoint;\n\n var e = endpoint;\n e = e.replace(/\\{service\\}/g, this.api.endpointPrefix);\n e = e.replace(/\\{region\\}/g, this.config.region);\n e = e.replace(/\\{scheme\\}/g, this.config.sslEnabled ? 'https' : 'http');\n return e;\n },\n\n /**\n * @api private\n */\n setEndpoint: function setEndpoint(endpoint) {\n this.endpoint = new AWS.Endpoint(endpoint, this.config);\n },\n\n /**\n * @api private\n */\n paginationConfig: function paginationConfig(operation, throwException) {\n var paginator = this.api.operations[operation].paginator;\n if (!paginator) {\n if (throwException) {\n var e = new Error();\n throw AWS.util.error(e, 'No pagination configuration for ' + operation);\n }\n return null;\n }\n\n return paginator;\n }\n});\n\nAWS.util.update(AWS.Service, {\n\n /**\n * Adds one method for each operation described in the api configuration\n *\n * @api private\n */\n defineMethods: function defineMethods(svc) {\n AWS.util.each(svc.prototype.api.operations, function iterator(method) {\n if (svc.prototype[method]) return;\n var operation = svc.prototype.api.operations[method];\n if (operation.authtype === 'none') {\n svc.prototype[method] = function (params, callback) {\n return this.makeUnauthenticatedRequest(method, params, callback);\n };\n } else {\n svc.prototype[method] = function (params, callback) {\n return this.makeRequest(method, params, callback);\n };\n }\n });\n },\n\n /**\n * Defines a new Service class using a service identifier and list of versions\n * including an optional set of features (functions) to apply to the class\n * prototype.\n *\n * @param serviceIdentifier [String] the identifier for the service\n * @param versions [Array] a list of versions that work with this\n * service\n * @param features [Object] an object to attach to the prototype\n * @return [Class] the service class defined by this function.\n */\n defineService: function defineService(serviceIdentifier, versions, features) {\n AWS.Service._serviceMap[serviceIdentifier] = true;\n if (!Array.isArray(versions)) {\n features = versions;\n versions = [];\n }\n\n var svc = inherit(AWS.Service, features || {});\n\n if (typeof serviceIdentifier === 'string') {\n AWS.Service.addVersions(svc, versions);\n\n var identifier = svc.serviceIdentifier || serviceIdentifier;\n svc.serviceIdentifier = identifier;\n } else { // defineService called with an API\n svc.prototype.api = serviceIdentifier;\n AWS.Service.defineMethods(svc);\n }\n AWS.SequentialExecutor.call(this.prototype);\n //util.clientSideMonitoring is only available in node\n if (!this.prototype.publisher && AWS.util.clientSideMonitoring) {\n var Publisher = AWS.util.clientSideMonitoring.Publisher;\n var configProvider = AWS.util.clientSideMonitoring.configProvider;\n var publisherConfig = configProvider();\n this.prototype.publisher = new Publisher(publisherConfig);\n if (publisherConfig.enabled) {\n //if csm is enabled in environment, SDK should send all metrics\n AWS.Service._clientSideMonitoring = true;\n }\n }\n AWS.SequentialExecutor.call(svc.prototype);\n AWS.Service.addDefaultMonitoringListeners(svc.prototype);\n return svc;\n },\n\n /**\n * @api private\n */\n addVersions: function addVersions(svc, versions) {\n if (!Array.isArray(versions)) versions = [versions];\n\n svc.services = svc.services || {};\n for (var i = 0; i < versions.length; i++) {\n if (svc.services[versions[i]] === undefined) {\n svc.services[versions[i]] = null;\n }\n }\n\n svc.apiVersions = Object.keys(svc.services).sort();\n },\n\n /**\n * @api private\n */\n defineServiceApi: function defineServiceApi(superclass, version, apiConfig) {\n var svc = inherit(superclass, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n\n function setApi(api) {\n if (api.isApi) {\n svc.prototype.api = api;\n } else {\n svc.prototype.api = new Api(api, {\n serviceIdentifier: superclass.serviceIdentifier\n });\n }\n }\n\n if (typeof version === 'string') {\n if (apiConfig) {\n setApi(apiConfig);\n } else {\n try {\n setApi(AWS.apiLoader(superclass.serviceIdentifier, version));\n } catch (err) {\n throw AWS.util.error(err, {\n message: 'Could not find API configuration ' +\n superclass.serviceIdentifier + '-' + version\n });\n }\n }\n if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) {\n superclass.apiVersions = superclass.apiVersions.concat(version).sort();\n }\n superclass.services[version] = svc;\n } else {\n setApi(version);\n }\n\n AWS.Service.defineMethods(svc);\n return svc;\n },\n\n /**\n * @api private\n */\n hasService: function(identifier) {\n return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier);\n },\n\n /**\n * @param attachOn attach default monitoring listeners to object\n *\n * Each monitoring event should be emitted from service client to service constructor prototype and then\n * to global service prototype like bubbling up. These default monitoring events listener will transfer\n * the monitoring events to the upper layer.\n * @api private\n */\n addDefaultMonitoringListeners: function addDefaultMonitoringListeners(attachOn) {\n attachOn.addNamedListener('MONITOR_EVENTS_BUBBLE', 'apiCallAttempt', function EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCallAttempt', [event]);\n });\n attachOn.addNamedListener('CALL_EVENTS_BUBBLE', 'apiCall', function CALL_EVENTS_BUBBLE(event) {\n var baseClass = Object.getPrototypeOf(attachOn);\n if (baseClass._events) baseClass.emit('apiCall', [event]);\n });\n },\n\n /**\n * @api private\n */\n _serviceMap: {}\n});\n\nAWS.util.mixin(AWS.Service, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nmodule.exports = AWS.Service;\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\n'use strict';\n\n// If obj.hasOwnProperty has been overridden, then calling\n// obj.hasOwnProperty(prop) will break.\n// See: https://github.com/joyent/node/issues/1707\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nmodule.exports = function(qs, sep, eq, options) {\n sep = sep || '&';\n eq = eq || '=';\n var obj = {};\n\n if (typeof qs !== 'string' || qs.length === 0) {\n return obj;\n }\n\n var regexp = /\\+/g;\n qs = qs.split(sep);\n\n var maxKeys = 1000;\n if (options && typeof options.maxKeys === 'number') {\n maxKeys = options.maxKeys;\n }\n\n var len = qs.length;\n // maxKeys <= 0 means that we should not limit keys count\n if (maxKeys > 0 && len > maxKeys) {\n len = maxKeys;\n }\n\n for (var i = 0; i < len; ++i) {\n var x = qs[i].replace(regexp, '%20'),\n idx = x.indexOf(eq),\n kstr, vstr, k, v;\n\n if (idx >= 0) {\n kstr = x.substr(0, idx);\n vstr = x.substr(idx + 1);\n } else {\n kstr = x;\n vstr = '';\n }\n\n k = decodeURIComponent(kstr);\n v = decodeURIComponent(vstr);\n\n if (!hasOwnProperty(obj, k)) {\n obj[k] = v;\n } else if (isArray(obj[k])) {\n obj[k].push(v);\n } else {\n obj[k] = [obj[k], v];\n }\n }\n\n return obj;\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentityserviceprovider'] = {};\nAWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']);\nObject.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', {\n get: function get() {\n var model = require('../apis/cognito-idp-2016-04-18.min.json');\n model.paginators = require('../apis/cognito-idp-2016-04-18.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentityServiceProvider;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['rds'] = {};\nAWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01', '2014-09-01*', '2014-10-31']);\nrequire('../lib/services/rds');\nObject.defineProperty(apiLoader.services['rds'], '2013-01-10', {\n get: function get() {\n var model = require('../apis/rds-2013-01-10.min.json');\n model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-02-12', {\n get: function get() {\n var model = require('../apis/rds-2013-02-12.min.json');\n model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2013-09-09', {\n get: function get() {\n var model = require('../apis/rds-2013-09-09.min.json');\n model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination;\n model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-09-01', {\n get: function get() {\n var model = require('../apis/rds-2014-09-01.min.json');\n model.paginators = require('../apis/rds-2014-09-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['rds'], '2014-10-31', {\n get: function get() {\n var model = require('../apis/rds-2014-10-31.min.json');\n model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination;\n model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.RDS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitoidentity'] = {};\nAWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-identity-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-identity-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoIdentity;\n","var util = require('../util');\nvar AWS = require('../core');\n\n/**\n * Prepend prefix defined by API model to endpoint that's already\n * constructed. This feature does not apply to operations using\n * endpoint discovery and can be disabled.\n * @api private\n */\nfunction populateHostPrefix(request) {\n var enabled = request.service.config.hostPrefixEnabled;\n if (!enabled) return request;\n var operationModel = request.service.api.operations[request.operation];\n //don't marshal host prefix when operation has endpoint discovery traits\n if (hasEndpointDiscover(request)) return request;\n if (operationModel.endpoint && operationModel.endpoint.hostPrefix) {\n var hostPrefixNotation = operationModel.endpoint.hostPrefix;\n var hostPrefix = expandHostPrefix(hostPrefixNotation, request.params, operationModel.input);\n prependEndpointPrefix(request.httpRequest.endpoint, hostPrefix);\n validateHostname(request.httpRequest.endpoint.hostname);\n }\n return request;\n}\n\n/**\n * @api private\n */\nfunction hasEndpointDiscover(request) {\n var api = request.service.api;\n var operationModel = api.operations[request.operation];\n var isEndpointOperation = api.endpointOperation && (api.endpointOperation === util.string.lowerFirst(operationModel.name));\n return (operationModel.endpointDiscoveryRequired !== 'NULL' || isEndpointOperation === true);\n}\n\n/**\n * @api private\n */\nfunction expandHostPrefix(hostPrefixNotation, params, shape) {\n util.each(shape.members, function(name, member) {\n if (member.hostLabel === true) {\n if (typeof params[name] !== 'string' || params[name] === '') {\n throw util.error(new Error(), {\n message: 'Parameter ' + name + ' should be a non-empty string.',\n code: 'InvalidParameter'\n });\n }\n var regex = new RegExp('\\\\{' + name + '\\\\}', 'g');\n hostPrefixNotation = hostPrefixNotation.replace(regex, params[name]);\n }\n });\n return hostPrefixNotation;\n}\n\n/**\n * @api private\n */\nfunction prependEndpointPrefix(endpoint, prefix) {\n if (endpoint.host) {\n endpoint.host = prefix + endpoint.host;\n }\n if (endpoint.hostname) {\n endpoint.hostname = prefix + endpoint.hostname;\n }\n}\n\n/**\n * @api private\n */\nfunction validateHostname(hostname) {\n var labels = hostname.split('.');\n //Reference: https://tools.ietf.org/html/rfc1123#section-2\n var hostPattern = /^[a-zA-Z0-9]{1}$|^[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9]$/;\n util.arrayEach(labels, function(label) {\n if (!label.length || label.length < 1 || label.length > 63) {\n throw util.error(new Error(), {\n code: 'ValidationError',\n message: 'Hostname label length should be between 1 to 63 characters, inclusive.'\n });\n }\n if (!hostPattern.test(label)) {\n throw AWS.util.error(new Error(),\n {code: 'ValidationError', message: label + ' is not hostname compatible.'});\n }\n });\n}\n\nmodule.exports = {\n populateHostPrefix: populateHostPrefix\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['redshift'] = {};\nAWS.Redshift = Service.defineService('redshift', ['2012-12-01']);\nObject.defineProperty(apiLoader.services['redshift'], '2012-12-01', {\n get: function get() {\n var model = require('../apis/redshift-2012-12-01.min.json');\n model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination;\n model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Redshift;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['lambda'] = {};\nAWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']);\nrequire('../lib/services/lambda');\nObject.defineProperty(apiLoader.services['lambda'], '2014-11-11', {\n get: function get() {\n var model = require('../apis/lambda-2014-11-11.min.json');\n model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['lambda'], '2015-03-31', {\n get: function get() {\n var model = require('../apis/lambda-2015-03-31.min.json');\n model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination;\n model.waiters = require('../apis/lambda-2015-03-31.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Lambda;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['secretsmanager'] = {};\nAWS.SecretsManager = Service.defineService('secretsmanager', ['2017-10-17']);\nObject.defineProperty(apiLoader.services['secretsmanager'], '2017-10-17', {\n get: function get() {\n var model = require('../apis/secretsmanager-2017-10-17.min.json');\n model.paginators = require('../apis/secretsmanager-2017-10-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SecretsManager;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ssm'] = {};\nAWS.SSM = Service.defineService('ssm', ['2014-11-06']);\nObject.defineProperty(apiLoader.services['ssm'], '2014-11-06', {\n get: function get() {\n var model = require('../apis/ssm-2014-11-06.min.json');\n model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination;\n model.waiters = require('../apis/ssm-2014-11-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SSM;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['polly'] = {};\nAWS.Polly = Service.defineService('polly', ['2016-06-10']);\nrequire('../lib/services/polly');\nObject.defineProperty(apiLoader.services['polly'], '2016-06-10', {\n get: function get() {\n var model = require('../apis/polly-2016-06-10.min.json');\n model.paginators = require('../apis/polly-2016-06-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Polly;\n","var AWS = require('../core');\n\nAWS.util.update(AWS.SQS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('build', this.buildEndpoint);\n\n if (request.service.config.computeChecksums) {\n if (request.operation === 'sendMessage') {\n request.addListener('extractData', this.verifySendMessageChecksum);\n } else if (request.operation === 'sendMessageBatch') {\n request.addListener('extractData', this.verifySendMessageBatchChecksum);\n } else if (request.operation === 'receiveMessage') {\n request.addListener('extractData', this.verifyReceiveMessageChecksum);\n }\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageChecksum: function verifySendMessageChecksum(response) {\n if (!response.data) return;\n\n var md5 = response.data.MD5OfMessageBody;\n var body = this.params.MessageBody;\n var calculatedMd5 = this.service.calculateChecksum(body);\n if (calculatedMd5 !== md5) {\n var msg = 'Got \"' + response.data.MD5OfMessageBody +\n '\", expecting \"' + calculatedMd5 + '\".';\n this.service.throwInvalidChecksumError(response,\n [response.data.MessageId], msg);\n }\n },\n\n /**\n * @api private\n */\n verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var entries = {};\n var errors = [];\n var messageIds = [];\n AWS.util.arrayEach(response.data.Successful, function (entry) {\n entries[entry.Id] = entry;\n });\n AWS.util.arrayEach(this.params.Entries, function (entry) {\n if (entries[entry.Id]) {\n var md5 = entries[entry.Id].MD5OfMessageBody;\n var body = entry.MessageBody;\n if (!service.isChecksumValid(md5, body)) {\n errors.push(entry.Id);\n messageIds.push(entries[entry.Id].MessageId);\n }\n }\n });\n\n if (errors.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + errors.join(', '));\n }\n },\n\n /**\n * @api private\n */\n verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) {\n if (!response.data) return;\n\n var service = this.service;\n var messageIds = [];\n AWS.util.arrayEach(response.data.Messages, function(message) {\n var md5 = message.MD5OfBody;\n var body = message.Body;\n if (!service.isChecksumValid(md5, body)) {\n messageIds.push(message.MessageId);\n }\n });\n\n if (messageIds.length > 0) {\n service.throwInvalidChecksumError(response, messageIds,\n 'Invalid messages: ' + messageIds.join(', '));\n }\n },\n\n /**\n * @api private\n */\n throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) {\n response.error = AWS.util.error(new Error(), {\n retryable: true,\n code: 'InvalidChecksum',\n messageIds: ids,\n message: response.request.operation +\n ' returned an invalid MD5 response. ' + message\n });\n },\n\n /**\n * @api private\n */\n isChecksumValid: function isChecksumValid(checksum, data) {\n return this.calculateChecksum(data) === checksum;\n },\n\n /**\n * @api private\n */\n calculateChecksum: function calculateChecksum(data) {\n return AWS.util.crypto.md5(data, 'hex');\n },\n\n /**\n * @api private\n */\n buildEndpoint: function buildEndpoint(request) {\n var url = request.httpRequest.params.QueueUrl;\n if (url) {\n request.httpRequest.endpoint = new AWS.Endpoint(url);\n\n // signature version 4 requires the region name to be set,\n // sqs queue urls contain the region name\n var matches = request.httpRequest.endpoint.host.match(/^sqs\\.(.+?)\\./);\n if (matches) request.httpRequest.region = matches[1];\n }\n }\n});\n","var util = require('./util');\n\n// browser specific modules\nutil.crypto.lib = require('./browserCryptoLib');\nutil.Buffer = require('buffer/').Buffer;\nutil.url = require('url/');\nutil.querystring = require('querystring/');\nutil.realClock = require('./realclock/browserClock');\nutil.environment = 'js';\nutil.createEventStream = require('./event-stream/buffered-create-event-stream').createEventStream;\nutil.isBrowser = function() { return true; };\nutil.isNode = function() { return false; };\n\nvar AWS = require('./core');\n\n/**\n * @api private\n */\nmodule.exports = AWS;\n\nrequire('./credentials');\nrequire('./credentials/credential_provider_chain');\nrequire('./credentials/temporary_credentials');\nrequire('./credentials/chainable_temporary_credentials');\nrequire('./credentials/web_identity_credentials');\nrequire('./credentials/cognito_identity_credentials');\nrequire('./credentials/saml_credentials');\n\n// Load the DOMParser XML parser\nAWS.XML.Parser = require('./xml/browser_parser');\n\n// Load the XHR HttpClient\nrequire('./http/xhr');\n\nif (typeof process === 'undefined') {\n var process = {\n browser: true\n };\n}\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n// All prelude components are unsigned, 32-bit integers\nvar PRELUDE_MEMBER_LENGTH = 4;\n// The prelude consists of two components\nvar PRELUDE_LENGTH = PRELUDE_MEMBER_LENGTH * 2;\n// Checksums are always CRC32 hashes.\nvar CHECKSUM_LENGTH = 4;\n// Messages must include a full prelude, a prelude checksum, and a message checksum\nvar MINIMUM_MESSAGE_LENGTH = PRELUDE_LENGTH + CHECKSUM_LENGTH * 2;\n\n/**\n * @api private\n *\n * @param {Buffer} message\n */\nfunction splitMessage(message) {\n if (!util.Buffer.isBuffer(message)) message = toBuffer(message);\n\n if (message.length < MINIMUM_MESSAGE_LENGTH) {\n throw new Error('Provided message too short to accommodate event stream message overhead');\n }\n\n if (message.length !== message.readUInt32BE(0)) {\n throw new Error('Reported message length does not match received message length');\n }\n\n var expectedPreludeChecksum = message.readUInt32BE(PRELUDE_LENGTH);\n\n if (\n expectedPreludeChecksum !== util.crypto.crc32(\n message.slice(0, PRELUDE_LENGTH)\n )\n ) {\n throw new Error(\n 'The prelude checksum specified in the message (' +\n expectedPreludeChecksum +\n ') does not match the calculated CRC32 checksum.'\n );\n }\n\n var expectedMessageChecksum = message.readUInt32BE(message.length - CHECKSUM_LENGTH);\n\n if (\n expectedMessageChecksum !== util.crypto.crc32(\n message.slice(0, message.length - CHECKSUM_LENGTH)\n )\n ) {\n throw new Error(\n 'The message checksum did not match the expected value of ' +\n expectedMessageChecksum\n );\n }\n\n var headersStart = PRELUDE_LENGTH + CHECKSUM_LENGTH;\n var headersEnd = headersStart + message.readUInt32BE(PRELUDE_MEMBER_LENGTH);\n\n return {\n headers: message.slice(headersStart, headersEnd),\n body: message.slice(headersEnd, message.length - CHECKSUM_LENGTH),\n };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n splitMessage: splitMessage\n};\n","/**\n * Escapes characters that can not be in an XML attribute.\n */\nfunction escapeAttribute(value) {\n return value.replace(/&/g, '&').replace(/'/g, ''').replace(//g, '>').replace(/\"/g, '"');\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n escapeAttribute: escapeAttribute\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['servicecatalog'] = {};\nAWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']);\nObject.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', {\n get: function get() {\n var model = require('../apis/servicecatalog-2015-12-10.min.json');\n model.paginators = require('../apis/servicecatalog-2015-12-10.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ServiceCatalog;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeevents'] = {};\nAWS.PersonalizeEvents = Service.defineService('personalizeevents', ['2018-03-22']);\nObject.defineProperty(apiLoader.services['personalizeevents'], '2018-03-22', {\n get: function get() {\n var model = require('../apis/personalize-events-2018-03-22.min.json');\n model.paginators = require('../apis/personalize-events-2018-03-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['dynamodb'] = {};\nAWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']);\nrequire('../lib/services/dynamodb');\nObject.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', {\n get: function get() {\n var model = require('../apis/dynamodb-2011-12-05.min.json');\n model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\nObject.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', {\n get: function get() {\n var model = require('../apis/dynamodb-2012-08-10.min.json');\n model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination;\n model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.DynamoDB;\n","var Collection = require('./collection');\n\nvar util = require('../util');\n\nfunction property(obj, name, value) {\n if (value !== null && value !== undefined) {\n util.property.apply(this, arguments);\n }\n}\n\nfunction memoizedProperty(obj, name) {\n if (!obj.constructor.prototype[name]) {\n util.memoizedProperty.apply(this, arguments);\n }\n}\n\nfunction Shape(shape, options, memberName) {\n options = options || {};\n\n property(this, 'shape', shape.shape);\n property(this, 'api', options.api, false);\n property(this, 'type', shape.type);\n property(this, 'enum', shape.enum);\n property(this, 'min', shape.min);\n property(this, 'max', shape.max);\n property(this, 'pattern', shape.pattern);\n property(this, 'location', shape.location || this.location || 'body');\n property(this, 'name', this.name || shape.xmlName || shape.queryName ||\n shape.locationName || memberName);\n property(this, 'isStreaming', shape.streaming || this.isStreaming || false);\n property(this, 'requiresLength', shape.requiresLength, false);\n property(this, 'isComposite', shape.isComposite || false);\n property(this, 'isShape', true, false);\n property(this, 'isQueryName', Boolean(shape.queryName), false);\n property(this, 'isLocationName', Boolean(shape.locationName), false);\n property(this, 'isIdempotent', shape.idempotencyToken === true);\n property(this, 'isJsonValue', shape.jsonvalue === true);\n property(this, 'isSensitive', shape.sensitive === true || shape.prototype && shape.prototype.sensitive === true);\n property(this, 'isEventStream', Boolean(shape.eventstream), false);\n property(this, 'isEvent', Boolean(shape.event), false);\n property(this, 'isEventPayload', Boolean(shape.eventpayload), false);\n property(this, 'isEventHeader', Boolean(shape.eventheader), false);\n property(this, 'isTimestampFormatSet', Boolean(shape.timestampFormat) || shape.prototype && shape.prototype.isTimestampFormatSet === true, false);\n property(this, 'endpointDiscoveryId', Boolean(shape.endpointdiscoveryid), false);\n property(this, 'hostLabel', Boolean(shape.hostLabel), false);\n\n if (options.documentation) {\n property(this, 'documentation', shape.documentation);\n property(this, 'documentationUrl', shape.documentationUrl);\n }\n\n if (shape.xmlAttribute) {\n property(this, 'isXmlAttribute', shape.xmlAttribute || false);\n }\n\n // type conversion and parsing\n property(this, 'defaultValue', null);\n this.toWireFormat = function(value) {\n if (value === null || value === undefined) return '';\n return value;\n };\n this.toType = function(value) { return value; };\n}\n\n/**\n * @api private\n */\nShape.normalizedTypes = {\n character: 'string',\n double: 'float',\n long: 'integer',\n short: 'integer',\n biginteger: 'integer',\n bigdecimal: 'float',\n blob: 'binary'\n};\n\n/**\n * @api private\n */\nShape.types = {\n 'structure': StructureShape,\n 'list': ListShape,\n 'map': MapShape,\n 'boolean': BooleanShape,\n 'timestamp': TimestampShape,\n 'float': FloatShape,\n 'integer': IntegerShape,\n 'string': StringShape,\n 'base64': Base64Shape,\n 'binary': BinaryShape\n};\n\nShape.resolve = function resolve(shape, options) {\n if (shape.shape) {\n var refShape = options.api.shapes[shape.shape];\n if (!refShape) {\n throw new Error('Cannot find shape reference: ' + shape.shape);\n }\n\n return refShape;\n } else {\n return null;\n }\n};\n\nShape.create = function create(shape, options, memberName) {\n if (shape.isShape) return shape;\n\n var refShape = Shape.resolve(shape, options);\n if (refShape) {\n var filteredKeys = Object.keys(shape);\n if (!options.documentation) {\n filteredKeys = filteredKeys.filter(function(name) {\n return !name.match(/documentation/);\n });\n }\n\n // create an inline shape with extra members\n var InlineShape = function() {\n refShape.constructor.call(this, shape, options, memberName);\n };\n InlineShape.prototype = refShape;\n return new InlineShape();\n } else {\n // set type if not set\n if (!shape.type) {\n if (shape.members) shape.type = 'structure';\n else if (shape.member) shape.type = 'list';\n else if (shape.key) shape.type = 'map';\n else shape.type = 'string';\n }\n\n // normalize types\n var origType = shape.type;\n if (Shape.normalizedTypes[shape.type]) {\n shape.type = Shape.normalizedTypes[shape.type];\n }\n\n if (Shape.types[shape.type]) {\n return new Shape.types[shape.type](shape, options, memberName);\n } else {\n throw new Error('Unrecognized shape type: ' + origType);\n }\n }\n};\n\nfunction CompositeShape(shape) {\n Shape.apply(this, arguments);\n property(this, 'isComposite', true);\n\n if (shape.flattened) {\n property(this, 'flattened', shape.flattened || false);\n }\n}\n\nfunction StructureShape(shape, options) {\n var self = this;\n var requiredMap = null, firstInit = !this.isShape;\n\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'members', {});\n property(this, 'memberNames', []);\n property(this, 'required', []);\n property(this, 'isRequired', function() { return false; });\n property(this, 'isDocument', Boolean(shape.document));\n }\n\n if (shape.members) {\n property(this, 'members', new Collection(shape.members, options, function(name, member) {\n return Shape.create(member, options, name);\n }));\n memoizedProperty(this, 'memberNames', function() {\n return shape.xmlOrder || Object.keys(shape.members);\n });\n\n if (shape.event) {\n memoizedProperty(this, 'eventPayloadMemberName', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n // iterate over members to find ones that are event payloads\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventPayload) {\n return memberNames[i];\n }\n }\n });\n\n memoizedProperty(this, 'eventHeaderMemberNames', function() {\n var members = self.members;\n var memberNames = self.memberNames;\n var eventHeaderMemberNames = [];\n // iterate over members to find ones that are event headers\n for (var i = 0, iLen = memberNames.length; i < iLen; i++) {\n if (members[memberNames[i]].isEventHeader) {\n eventHeaderMemberNames.push(memberNames[i]);\n }\n }\n return eventHeaderMemberNames;\n });\n }\n }\n\n if (shape.required) {\n property(this, 'required', shape.required);\n property(this, 'isRequired', function(name) {\n if (!requiredMap) {\n requiredMap = {};\n for (var i = 0; i < shape.required.length; i++) {\n requiredMap[shape.required[i]] = true;\n }\n }\n\n return requiredMap[name];\n }, false, true);\n }\n\n property(this, 'resultWrapper', shape.resultWrapper || null);\n\n if (shape.payload) {\n property(this, 'payload', shape.payload);\n }\n\n if (typeof shape.xmlNamespace === 'string') {\n property(this, 'xmlNamespaceUri', shape.xmlNamespace);\n } else if (typeof shape.xmlNamespace === 'object') {\n property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix);\n property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri);\n }\n}\n\nfunction ListShape(shape, options) {\n var self = this, firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return []; });\n }\n\n if (shape.member) {\n memoizedProperty(this, 'member', function() {\n return Shape.create(shape.member, options);\n });\n }\n\n if (this.flattened) {\n var oldName = this.name;\n memoizedProperty(this, 'name', function() {\n return self.member.name || oldName;\n });\n }\n}\n\nfunction MapShape(shape, options) {\n var firstInit = !this.isShape;\n CompositeShape.apply(this, arguments);\n\n if (firstInit) {\n property(this, 'defaultValue', function() { return {}; });\n property(this, 'key', Shape.create({type: 'string'}, options));\n property(this, 'value', Shape.create({type: 'string'}, options));\n }\n\n if (shape.key) {\n memoizedProperty(this, 'key', function() {\n return Shape.create(shape.key, options);\n });\n }\n if (shape.value) {\n memoizedProperty(this, 'value', function() {\n return Shape.create(shape.value, options);\n });\n }\n}\n\nfunction TimestampShape(shape) {\n var self = this;\n Shape.apply(this, arguments);\n\n if (shape.timestampFormat) {\n property(this, 'timestampFormat', shape.timestampFormat);\n } else if (self.isTimestampFormatSet && this.timestampFormat) {\n property(this, 'timestampFormat', this.timestampFormat);\n } else if (this.location === 'header') {\n property(this, 'timestampFormat', 'rfc822');\n } else if (this.location === 'querystring') {\n property(this, 'timestampFormat', 'iso8601');\n } else if (this.api) {\n switch (this.api.protocol) {\n case 'json':\n case 'rest-json':\n property(this, 'timestampFormat', 'unixTimestamp');\n break;\n case 'rest-xml':\n case 'query':\n case 'ec2':\n property(this, 'timestampFormat', 'iso8601');\n break;\n }\n }\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n if (typeof value.toUTCString === 'function') return value;\n return typeof value === 'string' || typeof value === 'number' ?\n util.date.parseTimestamp(value) : null;\n };\n\n this.toWireFormat = function(value) {\n return util.date.format(value, self.timestampFormat);\n };\n}\n\nfunction StringShape() {\n Shape.apply(this, arguments);\n\n var nullLessProtocols = ['rest-xml', 'query', 'ec2'];\n this.toType = function(value) {\n value = this.api && nullLessProtocols.indexOf(this.api.protocol) > -1 ?\n value || '' : value;\n if (this.isJsonValue) {\n return JSON.parse(value);\n }\n\n return value && typeof value.toString === 'function' ?\n value.toString() : value;\n };\n\n this.toWireFormat = function(value) {\n return this.isJsonValue ? JSON.stringify(value) : value;\n };\n}\n\nfunction FloatShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseFloat(value);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction IntegerShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (value === null || value === undefined) return null;\n return parseInt(value, 10);\n };\n this.toWireFormat = this.toType;\n}\n\nfunction BinaryShape() {\n Shape.apply(this, arguments);\n this.toType = function(value) {\n var buf = util.base64.decode(value);\n if (this.isSensitive && util.isNode() && typeof util.Buffer.alloc === 'function') {\n /* Node.js can create a Buffer that is not isolated.\n * i.e. buf.byteLength !== buf.buffer.byteLength\n * This means that the sensitive data is accessible to anyone with access to buf.buffer.\n * If this is the node shared Buffer, then other code within this process _could_ find this secret.\n * Copy sensitive data to an isolated Buffer and zero the sensitive data.\n * While this is safe to do here, copying this code somewhere else may produce unexpected results.\n */\n var secureBuf = util.Buffer.alloc(buf.length, buf);\n buf.fill(0);\n buf = secureBuf;\n }\n return buf;\n };\n this.toWireFormat = util.base64.encode;\n}\n\nfunction Base64Shape() {\n BinaryShape.apply(this, arguments);\n}\n\nfunction BooleanShape() {\n Shape.apply(this, arguments);\n\n this.toType = function(value) {\n if (typeof value === 'boolean') return value;\n if (value === null || value === undefined) return null;\n return value === 'true';\n };\n}\n\n/**\n * @api private\n */\nShape.shapes = {\n StructureShape: StructureShape,\n ListShape: ListShape,\n MapShape: MapShape,\n StringShape: StringShape,\n BooleanShape: BooleanShape,\n Base64Shape: Base64Shape\n};\n\n/**\n * @api private\n */\nmodule.exports = Shape;\n","var util = require('../core').util;\nvar toBuffer = util.buffer.toBuffer;\n\n/**\n * A lossless representation of a signed, 64-bit integer. Instances of this\n * class may be used in arithmetic expressions as if they were numeric\n * primitives, but the binary representation will be preserved unchanged as the\n * `bytes` property of the object. The bytes should be encoded as big-endian,\n * two's complement integers.\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction Int64(bytes) {\n if (bytes.length !== 8) {\n throw new Error('Int64 buffers must be exactly 8 bytes');\n }\n if (!util.Buffer.isBuffer(bytes)) bytes = toBuffer(bytes);\n\n this.bytes = bytes;\n}\n\n/**\n * @param {number} number\n * @returns {Int64}\n *\n * @api private\n */\nInt64.fromNumber = function(number) {\n if (number > 9223372036854775807 || number < -9223372036854775808) {\n throw new Error(\n number + ' is too large (or, if negative, too small) to represent as an Int64'\n );\n }\n\n var bytes = new Uint8Array(8);\n for (\n var i = 7, remaining = Math.abs(Math.round(number));\n i > -1 && remaining > 0;\n i--, remaining /= 256\n ) {\n bytes[i] = remaining;\n }\n\n if (number < 0) {\n negate(bytes);\n }\n\n return new Int64(bytes);\n};\n\n/**\n * @returns {number}\n *\n * @api private\n */\nInt64.prototype.valueOf = function() {\n var bytes = this.bytes.slice(0);\n var negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n\n return parseInt(bytes.toString('hex'), 16) * (negative ? -1 : 1);\n};\n\nInt64.prototype.toString = function() {\n return String(this.valueOf());\n};\n\n/**\n * @param {Buffer} bytes\n *\n * @api private\n */\nfunction negate(bytes) {\n for (var i = 0; i < 8; i++) {\n bytes[i] ^= 0xFF;\n }\n for (var i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0) {\n break;\n }\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n Int64: Int64\n};\n","var Buffer = require('buffer/').Buffer;\n\n/**\n * This is a polyfill for the static method `isView` of `ArrayBuffer`, which is\n * e.g. missing in IE 10.\n *\n * @api private\n */\nif (\n typeof ArrayBuffer !== 'undefined' &&\n typeof ArrayBuffer.isView === 'undefined'\n) {\n ArrayBuffer.isView = function(arg) {\n return viewStrings.indexOf(Object.prototype.toString.call(arg)) > -1;\n };\n}\n\n/**\n * @api private\n */\nvar viewStrings = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]',\n '[object DataView]',\n];\n\n/**\n * @api private\n */\nfunction isEmptyData(data) {\n if (typeof data === 'string') {\n return data.length === 0;\n }\n return data.byteLength === 0;\n}\n\n/**\n * @api private\n */\nfunction convertToBuffer(data) {\n if (typeof data === 'string') {\n data = new Buffer(data, 'utf8');\n }\n\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n\n return new Uint8Array(data);\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n isEmptyData: isEmptyData,\n convertToBuffer: convertToBuffer,\n};\n","require('../polly/presigner');\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['machinelearning'] = {};\nAWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']);\nrequire('../lib/services/machinelearning');\nObject.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', {\n get: function get() {\n var model = require('../apis/machinelearning-2014-12-12.min.json');\n model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination;\n model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MachineLearning;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codecommit'] = {};\nAWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']);\nObject.defineProperty(apiLoader.services['codecommit'], '2015-04-13', {\n get: function get() {\n var model = require('../apis/codecommit-2015-04-13.min.json');\n model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeCommit;\n","/*!\n * vue-simple-progress v1.1.1 (https://github.com/dzwillia/vue-simple-progress)\n * (c) 2019 David Z. Williams\n * Released under the MIT License.\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"VueSimpleProgress\"] = factory();\n\telse\n\t\troot[\"VueSimpleProgress\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.VueSimpleProgress = undefined;\n\nvar _Progress = __webpack_require__(1);\n\nvar _Progress2 = _interopRequireDefault(_Progress);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nif (typeof window !== 'undefined' && window.Vue) {\n Vue.component('vue-simple-progress', _Progress2.default);\n}\n\nexports.VueSimpleProgress = _Progress2.default;\nexports.default = _Progress2.default;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar Component = __webpack_require__(2)(\n /* script */\n __webpack_require__(3),\n /* template */\n __webpack_require__(4),\n /* scopeId */\n null,\n /* cssModules */\n null\n)\n\nmodule.exports = Component.exports\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\n// this module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle\n\nmodule.exports = function normalizeComponent (\n rawScriptExports,\n compiledTemplate,\n scopeId,\n cssModules\n) {\n var esModule\n var scriptExports = rawScriptExports = rawScriptExports || {}\n\n // ES6 modules interop\n var type = typeof rawScriptExports.default\n if (type === 'object' || type === 'function') {\n esModule = rawScriptExports\n scriptExports = rawScriptExports.default\n }\n\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (compiledTemplate) {\n options.render = compiledTemplate.render\n options.staticRenderFns = compiledTemplate.staticRenderFns\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = scopeId\n }\n\n // inject cssModules\n if (cssModules) {\n var computed = Object.create(options.computed || null)\n Object.keys(cssModules).forEach(function (key) {\n var module = cssModules[key]\n computed[key] = function () { return module }\n })\n options.computed = computed\n }\n\n return {\n esModule: esModule,\n exports: scriptExports,\n options: options\n }\n}\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\n\nvar isNumber = function isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n};\n\nexports.default = {\n props: {\n 'val': {\n default: 0\n },\n 'max': {\n default: 100\n },\n 'size': {\n default: 3\n },\n 'bg-color': {\n type: String,\n default: '#eee'\n },\n 'bar-color': {\n type: String,\n default: '#2196f3' },\n 'bar-transition': {\n type: String,\n default: 'all 0.5s ease'\n },\n 'bar-border-radius': {\n type: Number,\n default: 0\n },\n 'spacing': {\n type: Number,\n default: 4\n },\n 'text': {\n type: String,\n default: ''\n },\n 'text-align': {\n type: String,\n default: 'center' },\n 'text-position': {\n type: String,\n default: 'bottom' },\n 'font-size': {\n type: Number,\n default: 13\n },\n 'text-fg-color': {\n type: String,\n default: '#222'\n }\n },\n computed: {\n pct: function pct() {\n var pct = this.val / this.max * 100;\n pct = pct.toFixed(2);\n return Math.min(pct, this.max);\n },\n size_px: function size_px() {\n switch (this.size) {\n case 'tiny':\n return 2;\n case 'small':\n return 4;\n case 'medium':\n return 8;\n case 'large':\n return 12;\n case 'big':\n return 16;\n case 'huge':\n return 32;\n case 'massive':\n return 64;\n }\n\n return isNumber(this.size) ? this.size : 32;\n },\n text_padding: function text_padding() {\n switch (this.size) {\n case 'tiny':\n case 'small':\n case 'medium':\n case 'large':\n case 'big':\n case 'huge':\n case 'massive':\n return Math.min(Math.max(Math.ceil(this.size_px / 8), 3), 12);\n }\n\n return isNumber(this.spacing) ? this.spacing : 4;\n },\n text_font_size: function text_font_size() {\n switch (this.size) {\n case 'tiny':\n case 'small':\n case 'medium':\n case 'large':\n case 'big':\n case 'huge':\n case 'massive':\n return Math.min(Math.max(Math.ceil(this.size_px * 1.4), 11), 32);\n }\n\n return isNumber(this.fontSize) ? this.fontSize : 13;\n },\n progress_style: function progress_style() {\n var style = {\n 'background': this.bgColor\n };\n\n if (this.textPosition == 'middle' || this.textPosition == 'inside') {\n style['position'] = 'relative';\n style['min-height'] = this.size_px + 'px';\n style['z-index'] = '-2';\n }\n\n if (this.barBorderRadius > 0) {\n style['border-radius'] = this.barBorderRadius + 'px';\n }\n\n return style;\n },\n bar_style: function bar_style() {\n var style = {\n 'background': this.barColor,\n 'width': this.pct + '%',\n 'height': this.size_px + 'px',\n 'transition': this.barTransition\n };\n\n if (this.barBorderRadius > 0) {\n style['border-radius'] = this.barBorderRadius + 'px';\n }\n\n if (this.textPosition == 'middle' || this.textPosition == 'inside') {\n style['position'] = 'absolute';\n style['top'] = '0';\n style['height'] = '100%';\n style['min-height'] = this.size_px + 'px', style['z-index'] = '-1';\n }\n\n return style;\n },\n text_style: function text_style() {\n var style = {\n 'color': this.textFgColor,\n 'font-size': this.text_font_size + 'px',\n 'text-align': this.textAlign\n };\n\n if (this.textPosition == 'top' || this.textPosition == 'middle' || this.textPosition == 'inside') style['padding-bottom'] = this.text_padding + 'px';\n if (this.textPosition == 'bottom' || this.textPosition == 'middle' || this.textPosition == 'inside') style['padding-top'] = this.text_padding + 'px';\n\n return style;\n }\n }\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports) {\n\nmodule.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;\n return _c('div', [(_vm.text.length > 0 && _vm.textPosition == 'top') ? _c('div', {\n staticClass: \"vue-simple-progress-text\",\n style: (_vm.text_style)\n }, [_vm._v(_vm._s(_vm.text))]) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vue-simple-progress\",\n style: (_vm.progress_style)\n }, [(_vm.text.length > 0 && _vm.textPosition == 'middle') ? _c('div', {\n staticClass: \"vue-simple-progress-text\",\n style: (_vm.text_style)\n }, [_vm._v(_vm._s(_vm.text))]) : _vm._e(), _vm._v(\" \"), (_vm.text.length > 0 && _vm.textPosition == 'inside') ? _c('div', {\n staticStyle: {\n \"position\": \"relative\",\n \"left\": \"-9999px\"\n },\n style: (_vm.text_style)\n }, [_vm._v(_vm._s(_vm.text))]) : _vm._e(), _vm._v(\" \"), _c('div', {\n staticClass: \"vue-simple-progress-bar\",\n style: (_vm.bar_style)\n }, [(_vm.text.length > 0 && _vm.textPosition == 'inside') ? _c('div', {\n style: (_vm.text_style)\n }, [_vm._v(_vm._s(_vm.text))]) : _vm._e()])]), _vm._v(\" \"), (_vm.text.length > 0 && _vm.textPosition == 'bottom') ? _c('div', {\n staticClass: \"vue-simple-progress-text\",\n style: (_vm.text_style)\n }, [_vm._v(_vm._s(_vm.text))]) : _vm._e()])\n},staticRenderFns: []}\n\n/***/ })\n/******/ ])[\"default\"];\n});","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudtrail'] = {};\nAWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']);\nObject.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', {\n get: function get() {\n var model = require('../apis/cloudtrail-2013-11-01.min.json');\n model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudTrail;\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar MATCH = wellKnownSymbol('match');\n\nmodule.exports = function (METHOD_NAME) {\n var regexp = /./;\n try {\n '/./'[METHOD_NAME](regexp);\n } catch (error1) {\n try {\n regexp[MATCH] = false;\n return '/./'[METHOD_NAME](regexp);\n } catch (error2) { /* empty */ }\n } return false;\n};\n","/**\n * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"). You\n * may not use this file except in compliance with the License. A copy of\n * the License is located at\n *\n * http://aws.amazon.com/apache2.0/\n *\n * or in the \"license\" file accompanying this file. This file is\n * distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific\n * language governing permissions and limitations under the License.\n */\n\nvar AWS = require('./core');\nvar inherit = AWS.util.inherit;\nvar jmespath = require('jmespath');\n\n/**\n * @api private\n */\nfunction CHECK_ACCEPTORS(resp) {\n var waiter = resp.request._waiter;\n var acceptors = waiter.config.acceptors;\n var acceptorMatched = false;\n var state = 'retry';\n\n acceptors.forEach(function(acceptor) {\n if (!acceptorMatched) {\n var matcher = waiter.matchers[acceptor.matcher];\n if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) {\n acceptorMatched = true;\n state = acceptor.state;\n }\n }\n });\n\n if (!acceptorMatched && resp.error) state = 'failure';\n\n if (state === 'success') {\n waiter.setSuccess(resp);\n } else {\n waiter.setError(resp, state === 'retry');\n }\n}\n\n/**\n * @api private\n */\nAWS.ResourceWaiter = inherit({\n /**\n * Waits for a given state on a service object\n * @param service [Service] the service object to wait on\n * @param state [String] the state (defined in waiter configuration) to wait\n * for.\n * @example Create a waiter for running EC2 instances\n * var ec2 = new AWS.EC2;\n * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning');\n */\n constructor: function constructor(service, state) {\n this.service = service;\n this.state = state;\n this.loadWaiterConfig(this.state);\n },\n\n service: null,\n\n state: null,\n\n config: null,\n\n matchers: {\n path: function(resp, expected, argument) {\n try {\n var result = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n return jmespath.strictDeepEqual(result,expected);\n },\n\n pathAll: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n if (!numResults) return false;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (!jmespath.strictDeepEqual(results[ind], expected)) {\n return false;\n }\n }\n return true;\n },\n\n pathAny: function(resp, expected, argument) {\n try {\n var results = jmespath.search(resp.data, argument);\n } catch (err) {\n return false;\n }\n\n if (!Array.isArray(results)) results = [results];\n var numResults = results.length;\n for (var ind = 0 ; ind < numResults; ind++) {\n if (jmespath.strictDeepEqual(results[ind], expected)) {\n return true;\n }\n }\n return false;\n },\n\n status: function(resp, expected) {\n var statusCode = resp.httpResponse.statusCode;\n return (typeof statusCode === 'number') && (statusCode === expected);\n },\n\n error: function(resp, expected) {\n if (typeof expected === 'string' && resp.error) {\n return expected === resp.error.code;\n }\n // if expected is not string, can be boolean indicating presence of error\n return expected === !!resp.error;\n }\n },\n\n listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) {\n add('RETRY_CHECK', 'retry', function(resp) {\n var waiter = resp.request._waiter;\n if (resp.error && resp.error.code === 'ResourceNotReady') {\n resp.error.retryDelay = (waiter.config.delay || 0) * 1000;\n }\n });\n\n add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS);\n\n add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS);\n }),\n\n /**\n * @return [AWS.Request]\n */\n wait: function wait(params, callback) {\n if (typeof params === 'function') {\n callback = params; params = undefined;\n }\n\n if (params && params.$waiter) {\n params = AWS.util.copy(params);\n if (typeof params.$waiter.delay === 'number') {\n this.config.delay = params.$waiter.delay;\n }\n if (typeof params.$waiter.maxAttempts === 'number') {\n this.config.maxAttempts = params.$waiter.maxAttempts;\n }\n delete params.$waiter;\n }\n\n var request = this.service.makeRequest(this.config.operation, params);\n request._waiter = this;\n request.response.maxRetries = this.config.maxAttempts;\n request.addListeners(this.listeners);\n\n if (callback) request.send(callback);\n return request;\n },\n\n setSuccess: function setSuccess(resp) {\n resp.error = null;\n resp.data = resp.data || {};\n resp.request.removeAllListeners('extractData');\n },\n\n setError: function setError(resp, retryable) {\n resp.data = null;\n resp.error = AWS.util.error(resp.error || new Error(), {\n code: 'ResourceNotReady',\n message: 'Resource is not in the state ' + this.state,\n retryable: retryable\n });\n },\n\n /**\n * Loads waiter configuration from API configuration\n *\n * @api private\n */\n loadWaiterConfig: function loadWaiterConfig(state) {\n if (!this.service.api.waiters[state]) {\n throw new AWS.util.error(new Error(), {\n code: 'StateNotFoundError',\n message: 'State ' + state + ' not found.'\n });\n }\n\n this.config = AWS.util.copy(this.service.api.waiters[state]);\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cognitosync'] = {};\nAWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']);\nObject.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', {\n get: function get() {\n var model = require('../apis/cognito-sync-2014-06-30.min.json');\n model.paginators = require('../apis/cognito-sync-2014-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CognitoSync;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['autoscaling'] = {};\nAWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']);\nObject.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', {\n get: function get() {\n var model = require('../apis/autoscaling-2011-01-01.min.json');\n model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.AutoScaling;\n","var AWS = require('../core');\nvar byteLength = AWS.util.string.byteLength;\nvar Buffer = AWS.util.Buffer;\n\n/**\n * The managed uploader allows for easy and efficient uploading of buffers,\n * blobs, or streams, using a configurable amount of concurrency to perform\n * multipart uploads where possible. This abstraction also enables uploading\n * streams of unknown size due to the use of multipart uploads.\n *\n * To construct a managed upload object, see the {constructor} function.\n *\n * ## Tracking upload progress\n *\n * The managed upload object can also track progress by attaching an\n * 'httpUploadProgress' listener to the upload manager. This event is similar\n * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress\n * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more\n * information.\n *\n * ## Handling Multipart Cleanup\n *\n * By default, this class will automatically clean up any multipart uploads\n * when an individual part upload fails. This behavior can be disabled in order\n * to manually handle failures by setting the `leavePartsOnError` configuration\n * option to `true` when initializing the upload object.\n *\n * @!event httpUploadProgress(progress)\n * Triggered when the uploader has uploaded more data.\n * @note The `total` property may not be set if the stream being uploaded has\n * not yet finished chunking. In this case the `total` will be undefined\n * until the total stream size is known.\n * @note This event will not be emitted in Node.js 0.8.x.\n * @param progress [map] An object containing the `loaded` and `total` bytes\n * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload\n * size is known.\n * @context (see AWS.Request~send)\n */\nAWS.S3.ManagedUpload = AWS.util.inherit({\n /**\n * Creates a managed upload object with a set of configuration options.\n *\n * @note A \"Body\" parameter is required to be set prior to calling {send}.\n * @note In Node.js, sending \"Body\" as {https://nodejs.org/dist/latest/docs/api/stream.html#stream_object_mode object-mode stream}\n * may result in upload hangs. Using buffer stream is preferable.\n * @option options params [map] a map of parameters to pass to the upload\n * requests. The \"Body\" parameter is required to be specified either on\n * the service or in the params option.\n * @note ContentMD5 should not be provided when using the managed upload object.\n * Instead, setting \"computeChecksums\" to true will enable automatic ContentMD5 generation\n * by the managed upload object.\n * @option options queueSize [Number] (4) the size of the concurrent queue\n * manager to upload parts in parallel. Set to 1 for synchronous uploading\n * of parts. Note that the uploader will buffer at most queueSize * partSize\n * bytes into memory at any given time.\n * @option options partSize [Number] (5mb) the size in bytes for each\n * individual part to be uploaded. Adjust the part size to ensure the number\n * of parts does not exceed {maxTotalParts}. See {minPartSize} for the\n * minimum allowed part size.\n * @option options leavePartsOnError [Boolean] (false) whether to abort the\n * multipart upload if an error occurs. Set to true if you want to handle\n * failures manually.\n * @option options service [AWS.S3] an optional S3 service object to use for\n * requests. This object might have bound parameters used by the uploader.\n * @option options tags [Array] The tags to apply to the uploaded object.\n * Each tag should have a `Key` and `Value` keys.\n * @example Creating a default uploader for a stream object\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with concurrency of 1 and partSize of 10mb\n * var upload = new AWS.S3.ManagedUpload({\n * partSize: 10 * 1024 * 1024, queueSize: 1,\n * params: {Bucket: 'bucket', Key: 'key', Body: stream}\n * });\n * @example Creating an uploader with tags\n * var upload = new AWS.S3.ManagedUpload({\n * params: {Bucket: 'bucket', Key: 'key', Body: stream},\n * tags: [{Key: 'tag1', Value: 'value1'}, {Key: 'tag2', Value: 'value2'}]\n * });\n * @see send\n */\n constructor: function ManagedUpload(options) {\n var self = this;\n AWS.SequentialExecutor.call(self);\n self.body = null;\n self.sliceFn = null;\n self.callback = null;\n self.parts = {};\n self.completeInfo = [];\n self.fillQueue = function() {\n self.callback(new Error('Unsupported body payload ' + typeof self.body));\n };\n\n self.configure(options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n options = options || {};\n this.partSize = this.minPartSize;\n\n if (options.queueSize) this.queueSize = options.queueSize;\n if (options.partSize) this.partSize = options.partSize;\n if (options.leavePartsOnError) this.leavePartsOnError = true;\n if (options.tags) {\n if (!Array.isArray(options.tags)) {\n throw new Error('Tags must be specified as an array; ' +\n typeof options.tags + ' provided.');\n }\n this.tags = options.tags;\n }\n\n if (this.partSize < this.minPartSize) {\n throw new Error('partSize must be greater than ' +\n this.minPartSize);\n }\n\n this.service = options.service;\n this.bindServiceObject(options.params);\n this.validateBody();\n this.adjustTotalBytes();\n },\n\n /**\n * @api private\n */\n leavePartsOnError: false,\n\n /**\n * @api private\n */\n queueSize: 4,\n\n /**\n * @api private\n */\n partSize: null,\n\n /**\n * @readonly\n * @return [Number] the minimum number of bytes for an individual part\n * upload.\n */\n minPartSize: 1024 * 1024 * 5,\n\n /**\n * @readonly\n * @return [Number] the maximum allowed number of parts in a multipart upload.\n */\n maxTotalParts: 10000,\n\n /**\n * Initiates the managed upload for the payload.\n *\n * @callback callback function(err, data)\n * @param err [Error] an error or null if no error occurred.\n * @param data [map] The response data from the successful upload:\n * * `Location` (String) the URL of the uploaded object\n * * `ETag` (String) the ETag of the uploaded object\n * * `Bucket` (String) the bucket to which the object was uploaded\n * * `Key` (String) the key to which the object was uploaded\n * @example Sending a managed upload object\n * var params = {Bucket: 'bucket', Key: 'key', Body: stream};\n * var upload = new AWS.S3.ManagedUpload({params: params});\n * upload.send(function(err, data) {\n * console.log(err, data);\n * });\n */\n send: function(callback) {\n var self = this;\n self.failed = false;\n self.callback = callback || function(err) { if (err) throw err; };\n\n var runFill = true;\n if (self.sliceFn) {\n self.fillQueue = self.fillBuffer;\n } else if (AWS.util.isNode()) {\n var Stream = AWS.util.stream.Stream;\n if (self.body instanceof Stream) {\n runFill = false;\n self.fillQueue = self.fillStream;\n self.partBuffers = [];\n self.body.\n on('error', function(err) { self.cleanup(err); }).\n on('readable', function() { self.fillQueue(); }).\n on('end', function() {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers;\n self.fillQueue.call(self);\n\n if (self.isDoneChunking && self.totalPartNumbers >= 1 && self.doneParts === self.numParts) {\n self.finishMultiPart();\n }\n });\n }\n }\n\n if (runFill) self.fillQueue.call(self);\n },\n\n /**\n * @!method promise()\n * Returns a 'thenable' promise.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(data)\n * Called if the promise is fulfilled.\n * @param data [map] The response data from the successful upload:\n * `Location` (String) the URL of the uploaded object\n * `ETag` (String) the ETag of the uploaded object\n * `Bucket` (String) the bucket to which the object was uploaded\n * `Key` (String) the key to which the object was uploaded\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] an error or null if no error occurred.\n * @return [Promise] A promise that represents the state of the upload request.\n * @example Sending an upload request using promises.\n * var upload = s3.upload({Bucket: 'bucket', Key: 'key', Body: stream});\n * var promise = upload.promise();\n * promise.then(function(data) { ... }, function(err) { ... });\n */\n\n /**\n * Aborts a managed upload, including all concurrent upload requests.\n * @note By default, calling this function will cleanup a multipart upload\n * if one was created. To leave the multipart upload around after aborting\n * a request, configure `leavePartsOnError` to `true` in the {constructor}.\n * @note Calling {abort} in the browser environment will not abort any requests\n * that are already in flight. If a multipart upload was created, any parts\n * not yet uploaded will not be sent, and the multipart upload will be cleaned up.\n * @example Aborting an upload\n * var params = {\n * Bucket: 'bucket', Key: 'key',\n * Body: Buffer.alloc(1024 * 1024 * 25) // 25MB payload\n * };\n * var upload = s3.upload(params);\n * upload.send(function (err, data) {\n * if (err) console.log(\"Error:\", err.code, err.message);\n * else console.log(data);\n * });\n *\n * // abort request in 1 second\n * setTimeout(upload.abort.bind(upload), 1000);\n */\n abort: function() {\n var self = this;\n //abort putObject request\n if (self.isDoneChunking === true && self.totalPartNumbers === 1 && self.singlePart) {\n self.singlePart.abort();\n } else {\n self.cleanup(AWS.util.error(new Error('Request aborted by user'), {\n code: 'RequestAbortedError', retryable: false\n }));\n }\n },\n\n /**\n * @api private\n */\n validateBody: function validateBody() {\n var self = this;\n self.body = self.service.config.params.Body;\n if (typeof self.body === 'string') {\n self.body = AWS.util.buffer.toBuffer(self.body);\n } else if (!self.body) {\n throw new Error('params.Body is required');\n }\n self.sliceFn = AWS.util.arraySliceFn(self.body);\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(params) {\n params = params || {};\n var self = this;\n // bind parameters to new service object\n if (!self.service) {\n self.service = new AWS.S3({params: params});\n } else {\n // Create a new S3 client from the supplied client's constructor.\n var service = self.service;\n var config = AWS.util.copy(service.config);\n config.signatureVersion = service.getSignatureVersion();\n self.service = new service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, params);\n Object.defineProperty(self.service, '_originalConfig', {\n get: function() { return service._originalConfig; },\n enumerable: false,\n configurable: true\n });\n }\n },\n\n /**\n * @api private\n */\n adjustTotalBytes: function adjustTotalBytes() {\n var self = this;\n try { // try to get totalBytes\n self.totalBytes = byteLength(self.body);\n } catch (e) { }\n\n // try to adjust partSize if we know payload length\n if (self.totalBytes) {\n var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts);\n if (newPartSize > self.partSize) self.partSize = newPartSize;\n } else {\n self.totalBytes = undefined;\n }\n },\n\n /**\n * @api private\n */\n isDoneChunking: false,\n\n /**\n * @api private\n */\n partPos: 0,\n\n /**\n * @api private\n */\n totalChunkedBytes: 0,\n\n /**\n * @api private\n */\n totalUploadedBytes: 0,\n\n /**\n * @api private\n */\n totalBytes: undefined,\n\n /**\n * @api private\n */\n numParts: 0,\n\n /**\n * @api private\n */\n totalPartNumbers: 0,\n\n /**\n * @api private\n */\n activeParts: 0,\n\n /**\n * @api private\n */\n doneParts: 0,\n\n /**\n * @api private\n */\n parts: null,\n\n /**\n * @api private\n */\n completeInfo: null,\n\n /**\n * @api private\n */\n failed: false,\n\n /**\n * @api private\n */\n multipartReq: null,\n\n /**\n * @api private\n */\n partBuffers: null,\n\n /**\n * @api private\n */\n partBufferLength: 0,\n\n /**\n * @api private\n */\n fillBuffer: function fillBuffer() {\n var self = this;\n var bodyLen = byteLength(self.body);\n\n if (bodyLen === 0) {\n self.isDoneChunking = true;\n self.numParts = 1;\n self.nextChunk(self.body);\n return;\n }\n\n while (self.activeParts < self.queueSize && self.partPos < bodyLen) {\n var endPos = Math.min(self.partPos + self.partSize, bodyLen);\n var buf = self.sliceFn.call(self.body, self.partPos, endPos);\n self.partPos += self.partSize;\n\n if (byteLength(buf) < self.partSize || self.partPos === bodyLen) {\n self.isDoneChunking = true;\n self.numParts = self.totalPartNumbers + 1;\n }\n self.nextChunk(buf);\n }\n },\n\n /**\n * @api private\n */\n fillStream: function fillStream() {\n var self = this;\n if (self.activeParts >= self.queueSize) return;\n\n var buf = self.body.read(self.partSize - self.partBufferLength) ||\n self.body.read();\n if (buf) {\n self.partBuffers.push(buf);\n self.partBufferLength += buf.length;\n self.totalChunkedBytes += buf.length;\n }\n\n if (self.partBufferLength >= self.partSize) {\n // if we have single buffer we avoid copyfull concat\n var pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n\n // if we have more than partSize, push the rest back on the queue\n if (pbuf.length > self.partSize) {\n var rest = pbuf.slice(self.partSize);\n self.partBuffers.push(rest);\n self.partBufferLength += rest.length;\n pbuf = pbuf.slice(0, self.partSize);\n }\n\n self.nextChunk(pbuf);\n }\n\n if (self.isDoneChunking && !self.isDoneSending) {\n // if we have single buffer we avoid copyfull concat\n pbuf = self.partBuffers.length === 1 ?\n self.partBuffers[0] : Buffer.concat(self.partBuffers);\n self.partBuffers = [];\n self.partBufferLength = 0;\n self.totalBytes = self.totalChunkedBytes;\n self.isDoneSending = true;\n\n if (self.numParts === 0 || pbuf.length > 0) {\n self.numParts++;\n self.nextChunk(pbuf);\n }\n }\n\n self.body.read(0);\n },\n\n /**\n * @api private\n */\n nextChunk: function nextChunk(chunk) {\n var self = this;\n if (self.failed) return null;\n\n var partNumber = ++self.totalPartNumbers;\n if (self.isDoneChunking && partNumber === 1) {\n var params = {Body: chunk};\n if (this.tags) {\n params.Tagging = this.getTaggingHeader();\n }\n var req = self.service.putObject(params);\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress).send(self.finishSinglePart);\n self.singlePart = req; //save the single part request\n return null;\n } else if (self.service.config.params.ContentMD5) {\n var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), {\n code: 'InvalidDigest', retryable: false\n });\n\n self.cleanup(err);\n return null;\n }\n\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) {\n return null; // Already uploaded this part.\n }\n\n self.activeParts++;\n if (!self.service.config.params.UploadId) {\n\n if (!self.multipartReq) { // create multipart\n self.multipartReq = self.service.createMultipartUpload();\n self.multipartReq.on('success', function(resp) {\n self.service.config.params.UploadId = resp.data.UploadId;\n self.multipartReq = null;\n });\n self.queueChunks(chunk, partNumber);\n self.multipartReq.on('error', function(err) {\n self.cleanup(err);\n });\n self.multipartReq.send();\n } else {\n self.queueChunks(chunk, partNumber);\n }\n } else { // multipart is created, just send\n self.uploadPart(chunk, partNumber);\n }\n },\n\n /**\n * @api private\n */\n getTaggingHeader: function getTaggingHeader() {\n var kvPairStrings = [];\n for (var i = 0; i < this.tags.length; i++) {\n kvPairStrings.push(AWS.util.uriEscape(this.tags[i].Key) + '=' +\n AWS.util.uriEscape(this.tags[i].Value));\n }\n\n return kvPairStrings.join('&');\n },\n\n /**\n * @api private\n */\n uploadPart: function uploadPart(chunk, partNumber) {\n var self = this;\n\n var partParams = {\n Body: chunk,\n ContentLength: AWS.util.string.byteLength(chunk),\n PartNumber: partNumber\n };\n\n var partInfo = {ETag: null, PartNumber: partNumber};\n self.completeInfo[partNumber] = partInfo;\n\n var req = self.service.uploadPart(partParams);\n self.parts[partNumber] = req;\n req._lastUploadedBytes = 0;\n req._managedUpload = self;\n req.on('httpUploadProgress', self.progress);\n req.send(function(err, data) {\n delete self.parts[partParams.PartNumber];\n self.activeParts--;\n\n if (!err && (!data || !data.ETag)) {\n var message = 'No access to ETag property on response.';\n if (AWS.util.isBrowser()) {\n message += ' Check CORS configuration to expose ETag header.';\n }\n\n err = AWS.util.error(new Error(message), {\n code: 'ETagMissing', retryable: false\n });\n }\n if (err) return self.cleanup(err);\n //prevent sending part being returned twice (https://github.com/aws/aws-sdk-js/issues/2304)\n if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) return null;\n partInfo.ETag = data.ETag;\n self.doneParts++;\n if (self.isDoneChunking && self.doneParts === self.totalPartNumbers) {\n self.finishMultiPart();\n } else {\n self.fillQueue.call(self);\n }\n });\n },\n\n /**\n * @api private\n */\n queueChunks: function queueChunks(chunk, partNumber) {\n var self = this;\n self.multipartReq.on('success', function() {\n self.uploadPart(chunk, partNumber);\n });\n },\n\n /**\n * @api private\n */\n cleanup: function cleanup(err) {\n var self = this;\n if (self.failed) return;\n\n // clean up stream\n if (typeof self.body.removeAllListeners === 'function' &&\n typeof self.body.resume === 'function') {\n self.body.removeAllListeners('readable');\n self.body.removeAllListeners('end');\n self.body.resume();\n }\n\n // cleanup multipartReq listeners\n if (self.multipartReq) {\n self.multipartReq.removeAllListeners('success');\n self.multipartReq.removeAllListeners('error');\n self.multipartReq.removeAllListeners('complete');\n delete self.multipartReq;\n }\n\n if (self.service.config.params.UploadId && !self.leavePartsOnError) {\n self.service.abortMultipartUpload().send();\n } else if (self.leavePartsOnError) {\n self.isDoneChunking = false;\n }\n\n AWS.util.each(self.parts, function(partNumber, part) {\n part.removeAllListeners('complete');\n part.abort();\n });\n\n self.activeParts = 0;\n self.partPos = 0;\n self.numParts = 0;\n self.totalPartNumbers = 0;\n self.parts = {};\n self.failed = true;\n self.callback(err);\n },\n\n /**\n * @api private\n */\n finishMultiPart: function finishMultiPart() {\n var self = this;\n var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } };\n self.service.completeMultipartUpload(completeParams, function(err, data) {\n if (err) {\n return self.cleanup(err);\n }\n\n if (data && typeof data.Location === 'string') {\n data.Location = data.Location.replace(/%2F/g, '/');\n }\n\n if (Array.isArray(self.tags)) {\n for (var i = 0; i < self.tags.length; i++) {\n self.tags[i].Value = String(self.tags[i].Value);\n }\n self.service.putObjectTagging(\n {Tagging: {TagSet: self.tags}},\n function(e, d) {\n if (e) {\n self.callback(e);\n } else {\n self.callback(e, data);\n }\n }\n );\n } else {\n self.callback(err, data);\n }\n });\n },\n\n /**\n * @api private\n */\n finishSinglePart: function finishSinglePart(err, data) {\n var upload = this.request._managedUpload;\n var httpReq = this.request.httpRequest;\n var endpoint = httpReq.endpoint;\n if (err) return upload.callback(err);\n data.Location =\n [endpoint.protocol, '//', endpoint.host, httpReq.path].join('');\n data.key = this.request.params.Key; // will stay undocumented\n data.Key = this.request.params.Key;\n data.Bucket = this.request.params.Bucket;\n upload.callback(err, data);\n },\n\n /**\n * @api private\n */\n progress: function progress(info) {\n var upload = this._managedUpload;\n if (this.operation === 'putObject') {\n info.part = 1;\n info.key = this.params.Key;\n } else {\n upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes;\n this._lastUploadedBytes = info.loaded;\n info = {\n loaded: upload.totalUploadedBytes,\n total: upload.totalBytes,\n part: this.params.PartNumber,\n key: this.params.Key\n };\n }\n upload.emit('httpUploadProgress', [info]);\n }\n});\n\nAWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor);\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.promise = AWS.util.promisifyMethod('send', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.S3.ManagedUpload.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.promise;\n};\n\nAWS.util.addPromises(AWS.S3.ManagedUpload);\n\n/**\n * @api private\n */\nmodule.exports = AWS.S3.ManagedUpload;\n","var AWS = require('../core');\nrequire('../dynamodb/document_client');\n\nAWS.util.update(AWS.DynamoDB.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n if (request.service.config.dynamoDbCrc32) {\n request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n request.addListener('extractData', this.checkCrc32);\n request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA);\n }\n },\n\n /**\n * @api private\n */\n checkCrc32: function checkCrc32(resp) {\n if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) {\n resp.data = null;\n resp.error = AWS.util.error(new Error(), {\n code: 'CRC32CheckFailed',\n message: 'CRC32 integrity check failed',\n retryable: true\n });\n resp.request.haltHandlersOnError();\n throw (resp.error);\n }\n },\n\n /**\n * @api private\n */\n crc32IsValid: function crc32IsValid(resp) {\n var crc = resp.httpResponse.headers['x-amz-crc32'];\n if (!crc) return true; // no (valid) CRC32 header\n return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body);\n },\n\n /**\n * @api private\n */\n defaultRetryCount: 10,\n\n /**\n * @api private\n */\n retryDelays: function retryDelays(retryCount, err) {\n var retryDelayOptions = AWS.util.copy(this.config.retryDelayOptions);\n\n if (typeof retryDelayOptions.base !== 'number') {\n retryDelayOptions.base = 50; // default for dynamodb\n }\n var delay = AWS.util.calculateRetryDelay(retryCount, retryDelayOptions, err);\n return delay;\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['storagegateway'] = {};\nAWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']);\nObject.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', {\n get: function get() {\n var model = require('../apis/storagegateway-2013-06-30.min.json');\n model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.StorageGateway;\n","'use strict';\n\nexports.decode = exports.parse = require('./decode');\nexports.encode = exports.stringify = require('./encode');\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents temporary credentials retrieved from {AWS.STS}. Without any\n * extra parameters, credentials will be fetched from the\n * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the\n * {AWS.STS.assumeRole} operation will be used to fetch credentials for the\n * role instead.\n *\n * AWS.ChainableTemporaryCredentials differs from AWS.TemporaryCredentials in\n * the way masterCredentials and refreshes are handled.\n * AWS.ChainableTemporaryCredentials refreshes expired credentials using the\n * masterCredentials passed by the user to support chaining of STS credentials.\n * However, AWS.TemporaryCredentials recursively collapses the masterCredentials\n * during instantiation, precluding the ability to refresh credentials which\n * require intermediate, temporary credentials.\n *\n * For example, if the application should use RoleA, which must be assumed from\n * RoleB, and the environment provides credentials which can assume RoleB, then\n * AWS.ChainableTemporaryCredentials must be used to support refreshing the\n * temporary credentials for RoleA:\n *\n * ```javascript\n * var roleACreds = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleA'},\n * masterCredentials: new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: 'RoleB'},\n * masterCredentials: new AWS.EnvironmentCredentials('AWS')\n * })\n * });\n * ```\n *\n * If AWS.TemporaryCredentials had been used in the previous example,\n * `roleACreds` would fail to refresh because `roleACreds` would\n * use the environment credentials for the AssumeRole request.\n *\n * Another difference is that AWS.ChainableTemporaryCredentials creates the STS\n * service instance during instantiation while AWS.TemporaryCredentials creates\n * the STS service instance during the first refresh. Creating the service\n * instance during instantiation effectively captures the master credentials\n * from the global config, so that subsequent changes to the global config do\n * not affect the master credentials used to refresh the temporary credentials.\n *\n * This allows an instance of AWS.ChainableTemporaryCredentials to be assigned\n * to AWS.config.credentials:\n *\n * ```javascript\n * var envCreds = new AWS.EnvironmentCredentials('AWS');\n * AWS.config.credentials = envCreds;\n * // masterCredentials will be envCreds\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * Similarly, to use the CredentialProviderChain's default providers as the\n * master credentials, simply create a new instance of\n * AWS.ChainableTemporaryCredentials:\n *\n * ```javascript\n * AWS.config.credentials = new ChainableTemporaryCredentials({\n * params: {RoleArn: '...'}\n * });\n * ```\n *\n * @!attribute service\n * @return [AWS.STS] the STS service instance used to\n * get and refresh temporary credentials from AWS STS.\n * @note (see constructor)\n */\nAWS.ChainableTemporaryCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new temporary credentials object.\n *\n * @param options [map] a set of options\n * @option options params [map] ({}) a map of options that are passed to the\n * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations.\n * If a `RoleArn` parameter is passed in, credentials will be based on the\n * IAM role. If a `SerialNumber` parameter is passed in, {tokenCodeFn} must\n * also be passed in or an error will be thrown.\n * @option options masterCredentials [AWS.Credentials] the master credentials\n * used to get and refresh temporary credentials from AWS STS. By default,\n * AWS.config.credentials or AWS.config.credentialProvider will be used.\n * @option options tokenCodeFn [Function] (null) Function to provide\n * `TokenCode`, if `SerialNumber` is provided for profile in {params}. Function\n * is called with value of `SerialNumber` and `callback`, and should provide\n * the `TokenCode` or an error to the callback in the format\n * `callback(err, token)`.\n * @example Creating a new credentials object for generic temporary credentials\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials();\n * @example Creating a new credentials object for an IAM role\n * AWS.config.credentials = new AWS.ChainableTemporaryCredentials({\n * params: {\n * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials'\n * }\n * });\n * @see AWS.STS.assumeRole\n * @see AWS.STS.getSessionToken\n */\n constructor: function ChainableTemporaryCredentials(options) {\n AWS.Credentials.call(this);\n options = options || {};\n this.errorCode = 'ChainableTemporaryCredentialsProviderFailure';\n this.expired = true;\n this.tokenCodeFn = null;\n\n var params = AWS.util.copy(options.params) || {};\n if (params.RoleArn) {\n params.RoleSessionName = params.RoleSessionName || 'temporary-credentials';\n }\n if (params.SerialNumber) {\n if (!options.tokenCodeFn || (typeof options.tokenCodeFn !== 'function')) {\n throw new AWS.util.error(\n new Error('tokenCodeFn must be a function when params.SerialNumber is given'),\n {code: this.errorCode}\n );\n } else {\n this.tokenCodeFn = options.tokenCodeFn;\n }\n }\n var config = AWS.util.merge(\n {\n params: params,\n credentials: options.masterCredentials || AWS.config.credentials\n },\n options.stsConfig || {}\n );\n this.service = new STS(config);\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRole} or\n * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed\n * to the credentials {constructor}.\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see AWS.Credentials.get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n var self = this;\n var operation = self.service.config.params.RoleArn ? 'assumeRole' : 'getSessionToken';\n this.getTokenCode(function (err, tokenCode) {\n var params = {};\n if (err) {\n callback(err);\n return;\n }\n if (tokenCode) {\n params.TokenCode = tokenCode;\n }\n self.service[operation](params, function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n });\n },\n\n /**\n * @api private\n */\n getTokenCode: function getTokenCode(callback) {\n var self = this;\n if (this.tokenCodeFn) {\n this.tokenCodeFn(this.service.config.params.SerialNumber, function (err, token) {\n if (err) {\n var message = err;\n if (err instanceof Error) {\n message = err.message;\n }\n callback(\n AWS.util.error(\n new Error('Error fetching MFA token: ' + message),\n { code: self.errorCode}\n )\n );\n return;\n }\n callback(null, token);\n });\n } else {\n callback(null);\n }\n }\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['personalizeruntime'] = {};\nAWS.PersonalizeRuntime = Service.defineService('personalizeruntime', ['2018-05-22']);\nObject.defineProperty(apiLoader.services['personalizeruntime'], '2018-05-22', {\n get: function get() {\n var model = require('../apis/personalize-runtime-2018-05-22.min.json');\n model.paginators = require('../apis/personalize-runtime-2018-05-22.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.PersonalizeRuntime;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['s3'] = {};\nAWS.S3 = Service.defineService('s3', ['2006-03-01']);\nrequire('../lib/services/s3');\nObject.defineProperty(apiLoader.services['s3'], '2006-03-01', {\n get: function get() {\n var model = require('../apis/s3-2006-03-01.min.json');\n model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination;\n model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.S3;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elbv2'] = {};\nAWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']);\nObject.defineProperty(apiLoader.services['elbv2'], '2015-12-01', {\n get: function get() {\n var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json');\n model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticloadbalancingv2-2015-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ELBv2;\n","var AWS = require('./core');\nvar SequentialExecutor = require('./sequential_executor');\nvar DISCOVER_ENDPOINT = require('./discover_endpoint').discoverEndpoint;\n/**\n * The namespace used to register global event listeners for request building\n * and sending.\n */\nAWS.EventListeners = {\n /**\n * @!attribute VALIDATE_CREDENTIALS\n * A request listener that validates whether the request is being\n * sent with credentials.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating credentials\n * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_REGION\n * A request listener that validates whether the region is set\n * for a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating region configuration\n * var listener = AWS.EventListeners.Core.VALIDATE_REGION;\n * request.removeListener('validate', listener);\n * @readonly\n * @return [Function]\n * @!attribute VALIDATE_PARAMETERS\n * A request listener that validates input parameters in a request.\n * Handles the {AWS.Request~validate 'validate' Request event}\n * @example Sending a request without validating parameters\n * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS;\n * request.removeListener('validate', listener);\n * @example Disable parameter validation globally\n * AWS.EventListeners.Core.removeListener('validate',\n * AWS.EventListeners.Core.VALIDATE_REGION);\n * @readonly\n * @return [Function]\n * @!attribute SEND\n * A request listener that initiates the HTTP connection for a\n * request being sent. Handles the {AWS.Request~send 'send' Request event}\n * @example Replacing the HTTP handler\n * var listener = AWS.EventListeners.Core.SEND;\n * request.removeListener('send', listener);\n * request.on('send', function(response) {\n * customHandler.send(response);\n * });\n * @return [Function]\n * @readonly\n * @!attribute HTTP_DATA\n * A request listener that reads data from the HTTP connection in order\n * to build the response data.\n * Handles the {AWS.Request~httpData 'httpData' Request event}.\n * Remove this handler if you are overriding the 'httpData' event and\n * do not want extra data processing and buffering overhead.\n * @example Disabling default data processing\n * var listener = AWS.EventListeners.Core.HTTP_DATA;\n * request.removeListener('httpData', listener);\n * @return [Function]\n * @readonly\n */\n Core: {} /* doc hack */\n};\n\n/**\n * @api private\n */\nfunction getOperationAuthtype(req) {\n if (!req.service.api.operations) {\n return '';\n }\n var operation = req.service.api.operations[req.operation];\n return operation ? operation.authtype : '';\n}\n\n/**\n * @api private\n */\nfunction getIdentityType(req) {\n var service = req.service;\n\n if (service.config.signatureVersion) {\n return service.config.signatureVersion;\n }\n\n if (service.api.signatureVersion) {\n return service.api.signatureVersion;\n }\n\n return getOperationAuthtype(req);\n}\n\nAWS.EventListeners = {\n Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) {\n addAsync(\n 'VALIDATE_CREDENTIALS', 'validate',\n function VALIDATE_CREDENTIALS(req, done) {\n if (!req.service.api.signatureVersion && !req.service.config.signatureVersion) return done(); // none\n\n var identityType = getIdentityType(req);\n if (identityType === 'bearer') {\n req.service.config.getToken(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err, {code: 'TokenError'});\n }\n done();\n });\n return;\n }\n\n req.service.config.getCredentials(function(err) {\n if (err) {\n req.response.error = AWS.util.error(err,\n {\n code: 'CredentialsError',\n message: 'Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1'\n }\n );\n }\n done();\n });\n });\n\n add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) {\n if (!req.service.isGlobalEndpoint) {\n var dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!req.service.config.region) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n } else if (!dnsHostRegex.test(req.service.config.region)) {\n req.response.error = AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Invalid region in config'});\n }\n }\n });\n\n add('BUILD_IDEMPOTENCY_TOKENS', 'validate', function BUILD_IDEMPOTENCY_TOKENS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var idempotentMembers = operation.idempotentMembers;\n if (!idempotentMembers.length) {\n return;\n }\n // creates a copy of params so user's param object isn't mutated\n var params = AWS.util.copy(req.params);\n for (var i = 0, iLen = idempotentMembers.length; i < iLen; i++) {\n if (!params[idempotentMembers[i]]) {\n // add the member\n params[idempotentMembers[i]] = AWS.util.uuid.v4();\n }\n }\n req.params = params;\n });\n\n add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) {\n if (!req.service.api.operations) {\n return;\n }\n var rules = req.service.api.operations[req.operation].input;\n var validation = req.service.config.paramValidation;\n new AWS.ParamValidator(validation).validate(rules, req.params);\n });\n\n add('COMPUTE_CHECKSUM', 'afterBuild', function COMPUTE_CHECKSUM(req) {\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n if (!operation) {\n return;\n }\n var body = req.httpRequest.body;\n var isNonStreamingPayload = body && (AWS.util.Buffer.isBuffer(body) || typeof body === 'string');\n var headers = req.httpRequest.headers;\n if (\n operation.httpChecksumRequired &&\n req.service.config.computeChecksums &&\n isNonStreamingPayload &&\n !headers['Content-MD5']\n ) {\n var md5 = AWS.util.crypto.md5(body, 'base64');\n headers['Content-MD5'] = md5;\n }\n });\n\n addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) {\n req.haltHandlersOnError();\n if (!req.service.api.operations) {\n return;\n }\n var operation = req.service.api.operations[req.operation];\n var authtype = operation ? operation.authtype : '';\n if (!req.service.api.signatureVersion && !authtype && !req.service.config.signatureVersion) return done(); // none\n if (req.service.getSignerClass(req) === AWS.Signers.V4) {\n var body = req.httpRequest.body || '';\n if (authtype.indexOf('unsigned-body') >= 0) {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD';\n return done();\n }\n AWS.util.computeSha256(body, function(err, sha) {\n if (err) {\n done(err);\n }\n else {\n req.httpRequest.headers['X-Amz-Content-Sha256'] = sha;\n done();\n }\n });\n } else {\n done();\n }\n });\n\n add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) {\n var authtype = getOperationAuthtype(req);\n var payloadMember = AWS.util.getRequestPayloadShape(req);\n if (req.httpRequest.headers['Content-Length'] === undefined) {\n try {\n var length = AWS.util.string.byteLength(req.httpRequest.body);\n req.httpRequest.headers['Content-Length'] = length;\n } catch (err) {\n if (payloadMember && payloadMember.isStreaming) {\n if (payloadMember.requiresLength) {\n //streaming payload requires length(s3, glacier)\n throw err;\n } else if (authtype.indexOf('unsigned-body') >= 0) {\n //unbounded streaming payload(lex, mediastore)\n req.httpRequest.headers['Transfer-Encoding'] = 'chunked';\n return;\n } else {\n throw err;\n }\n }\n throw err;\n }\n }\n });\n\n add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) {\n req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host;\n });\n\n add('SET_TRACE_ID', 'afterBuild', function SET_TRACE_ID(req) {\n var traceIdHeaderName = 'X-Amzn-Trace-Id';\n if (AWS.util.isNode() && !Object.hasOwnProperty.call(req.httpRequest.headers, traceIdHeaderName)) {\n var ENV_LAMBDA_FUNCTION_NAME = 'AWS_LAMBDA_FUNCTION_NAME';\n var ENV_TRACE_ID = '_X_AMZN_TRACE_ID';\n var functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n var traceId = process.env[ENV_TRACE_ID];\n if (\n typeof functionName === 'string' &&\n functionName.length > 0 &&\n typeof traceId === 'string' &&\n traceId.length > 0\n ) {\n req.httpRequest.headers[traceIdHeaderName] = traceId;\n }\n }\n });\n\n add('RESTART', 'restart', function RESTART() {\n var err = this.response.error;\n if (!err || !err.retryable) return;\n\n this.httpRequest = new AWS.HttpRequest(\n this.service.endpoint,\n this.service.region\n );\n\n if (this.response.retryCount < this.service.config.maxRetries) {\n this.response.retryCount++;\n } else {\n this.response.error = null;\n }\n });\n\n var addToHead = true;\n addAsync('DISCOVER_ENDPOINT', 'sign', DISCOVER_ENDPOINT, addToHead);\n\n addAsync('SIGN', 'sign', function SIGN(req, done) {\n var service = req.service;\n var identityType = getIdentityType(req);\n if (!identityType || identityType.length === 0) return done(); // none\n\n if (identityType === 'bearer') {\n service.config.getToken(function (err, token) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var SignerClass = service.getSignerClass(req);\n var signer = new SignerClass(req.httpRequest);\n signer.addAuthorization(token);\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n } else {\n service.config.getCredentials(function (err, credentials) {\n if (err) {\n req.response.error = err;\n return done();\n }\n\n try {\n var date = service.getSkewCorrectedDate();\n var SignerClass = service.getSignerClass(req);\n var operations = req.service.api.operations || {};\n var operation = operations[req.operation];\n var signer = new SignerClass(req.httpRequest,\n service.getSigningName(req),\n {\n signatureCache: service.config.signatureCache,\n operation: operation,\n signatureVersion: service.api.signatureVersion\n });\n signer.setServiceClientId(service._clientId);\n\n // clear old authorization headers\n delete req.httpRequest.headers['Authorization'];\n delete req.httpRequest.headers['Date'];\n delete req.httpRequest.headers['X-Amz-Date'];\n\n // add new authorization\n signer.addAuthorization(credentials, date);\n req.signedAt = date;\n } catch (e) {\n req.response.error = e;\n }\n done();\n });\n\n }\n });\n\n add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) {\n if (this.service.successfulResponse(resp, this)) {\n resp.data = {};\n resp.error = null;\n } else {\n resp.data = null;\n resp.error = AWS.util.error(new Error(),\n {code: 'UnknownError', message: 'An unknown error occurred.'});\n }\n });\n\n add('ERROR', 'error', function ERROR(err, resp) {\n var awsQueryCompatible = resp.request.service.api.awsQueryCompatible;\n if (awsQueryCompatible) {\n var headers = resp.httpResponse.headers;\n var queryErrorCode = headers ? headers['x-amzn-query-error'] : undefined;\n if (queryErrorCode && queryErrorCode.includes(';')) {\n resp.error.code = queryErrorCode.split(';')[0];\n }\n }\n }, true);\n\n addAsync('SEND', 'send', function SEND(resp, done) {\n resp.httpResponse._abortCallback = done;\n resp.error = null;\n resp.data = null;\n\n function callback(httpResp) {\n resp.httpResponse.stream = httpResp;\n var stream = resp.request.httpRequest.stream;\n var service = resp.request.service;\n var api = service.api;\n var operationName = resp.request.operation;\n var operation = api.operations[operationName] || {};\n\n httpResp.on('headers', function onHeaders(statusCode, headers, statusMessage) {\n resp.request.emit(\n 'httpHeaders',\n [statusCode, headers, resp, statusMessage]\n );\n\n if (!resp.httpResponse.streaming) {\n if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check\n // if we detect event streams, we're going to have to\n // return the stream immediately\n if (operation.hasEventOutput && service.successfulResponse(resp)) {\n // skip reading the IncomingStream\n resp.request.emit('httpDone');\n done();\n return;\n }\n\n httpResp.on('readable', function onReadable() {\n var data = httpResp.read();\n if (data !== null) {\n resp.request.emit('httpData', [data, resp]);\n }\n });\n } else { // legacy streams API\n httpResp.on('data', function onData(data) {\n resp.request.emit('httpData', [data, resp]);\n });\n }\n }\n });\n\n httpResp.on('end', function onEnd() {\n if (!stream || !stream.didCallback) {\n if (AWS.HttpClient.streamsApiVersion === 2 && (operation.hasEventOutput && service.successfulResponse(resp))) {\n // don't concatenate response chunks when streaming event stream data when response is successful\n return;\n }\n resp.request.emit('httpDone');\n done();\n }\n });\n }\n\n function progress(httpResp) {\n httpResp.on('sendProgress', function onSendProgress(value) {\n resp.request.emit('httpUploadProgress', [value, resp]);\n });\n\n httpResp.on('receiveProgress', function onReceiveProgress(value) {\n resp.request.emit('httpDownloadProgress', [value, resp]);\n });\n }\n\n function error(err) {\n if (err.code !== 'RequestAbortedError') {\n var errCode = err.code === 'TimeoutError' ? err.code : 'NetworkingError';\n err = AWS.util.error(err, {\n code: errCode,\n region: resp.request.httpRequest.region,\n hostname: resp.request.httpRequest.endpoint.hostname,\n retryable: true\n });\n }\n resp.error = err;\n resp.request.emit('httpError', [resp.error, resp], function() {\n done();\n });\n }\n\n function executeSend() {\n var http = AWS.HttpClient.getInstance();\n var httpOptions = resp.request.service.config.httpOptions || {};\n try {\n var stream = http.handleRequest(resp.request.httpRequest, httpOptions,\n callback, error);\n progress(stream);\n } catch (err) {\n error(err);\n }\n }\n var timeDiff = (resp.request.service.getSkewCorrectedDate() - this.signedAt) / 1000;\n if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign\n this.emit('sign', [this], function(err) {\n if (err) done(err);\n else executeSend();\n });\n } else {\n executeSend();\n }\n });\n\n add('HTTP_HEADERS', 'httpHeaders',\n function HTTP_HEADERS(statusCode, headers, resp, statusMessage) {\n resp.httpResponse.statusCode = statusCode;\n resp.httpResponse.statusMessage = statusMessage;\n resp.httpResponse.headers = headers;\n resp.httpResponse.body = AWS.util.buffer.toBuffer('');\n resp.httpResponse.buffers = [];\n resp.httpResponse.numBytes = 0;\n var dateHeader = headers.date || headers.Date;\n var service = resp.request.service;\n if (dateHeader) {\n var serverTime = Date.parse(dateHeader);\n if (service.config.correctClockSkew\n && service.isClockSkewed(serverTime)) {\n service.applyClockOffset(serverTime);\n }\n }\n });\n\n add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) {\n if (chunk) {\n if (AWS.util.isNode()) {\n resp.httpResponse.numBytes += chunk.length;\n\n var total = resp.httpResponse.headers['content-length'];\n var progress = { loaded: resp.httpResponse.numBytes, total: total };\n resp.request.emit('httpDownloadProgress', [progress, resp]);\n }\n\n resp.httpResponse.buffers.push(AWS.util.buffer.toBuffer(chunk));\n }\n });\n\n add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) {\n // convert buffers array into single buffer\n if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) {\n var body = AWS.util.buffer.concat(resp.httpResponse.buffers);\n resp.httpResponse.body = body;\n }\n delete resp.httpResponse.numBytes;\n delete resp.httpResponse.buffers;\n });\n\n add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) {\n if (resp.httpResponse.statusCode) {\n resp.error.statusCode = resp.httpResponse.statusCode;\n if (resp.error.retryable === undefined) {\n resp.error.retryable = this.service.retryableError(resp.error, this);\n }\n }\n });\n\n add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) {\n if (!resp.error) return;\n switch (resp.error.code) {\n case 'RequestExpired': // EC2 only\n case 'ExpiredTokenException':\n case 'ExpiredToken':\n resp.error.retryable = true;\n resp.request.service.config.credentials.expired = true;\n }\n });\n\n add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) {\n var err = resp.error;\n if (!err) return;\n if (typeof err.code === 'string' && typeof err.message === 'string') {\n if (err.code.match(/Signature/) && err.message.match(/expired/)) {\n resp.error.retryable = true;\n }\n }\n });\n\n add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) {\n if (!resp.error) return;\n if (this.service.clockSkewError(resp.error)\n && this.service.config.correctClockSkew) {\n resp.error.retryable = true;\n }\n });\n\n add('REDIRECT', 'retry', function REDIRECT(resp) {\n if (resp.error && resp.error.statusCode >= 300 &&\n resp.error.statusCode < 400 && resp.httpResponse.headers['location']) {\n this.httpRequest.endpoint =\n new AWS.Endpoint(resp.httpResponse.headers['location']);\n this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host;\n resp.error.redirect = true;\n resp.error.retryable = true;\n }\n });\n\n add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) {\n if (resp.error) {\n if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.error.retryDelay = 0;\n } else if (resp.retryCount < resp.maxRetries) {\n resp.error.retryDelay = this.service.retryDelays(resp.retryCount, resp.error) || 0;\n }\n }\n });\n\n addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) {\n var delay, willRetry = false;\n\n if (resp.error) {\n delay = resp.error.retryDelay || 0;\n if (resp.error.retryable && resp.retryCount < resp.maxRetries) {\n resp.retryCount++;\n willRetry = true;\n } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) {\n resp.redirectCount++;\n willRetry = true;\n }\n }\n\n // delay < 0 is a signal from customBackoff to skip retries\n if (willRetry && delay >= 0) {\n resp.error = null;\n setTimeout(done, delay);\n } else {\n done();\n }\n });\n }),\n\n CorePost: new SequentialExecutor().addNamedListeners(function(add) {\n add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId);\n add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId);\n\n add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) {\n function isDNSError(err) {\n return err.errno === 'ENOTFOUND' ||\n typeof err.errno === 'number' &&\n typeof AWS.util.getSystemErrorName === 'function' &&\n ['EAI_NONAME', 'EAI_NODATA'].indexOf(AWS.util.getSystemErrorName(err.errno) >= 0);\n }\n if (err.code === 'NetworkingError' && isDNSError(err)) {\n var message = 'Inaccessible host: `' + err.hostname + '\\' at port `' + err.port +\n '\\'. This service may not be available in the `' + err.region +\n '\\' region.';\n this.response.error = AWS.util.error(new Error(message), {\n code: 'UnknownEndpoint',\n region: err.region,\n hostname: err.hostname,\n retryable: true,\n originalError: err\n });\n }\n });\n }),\n\n Logger: new SequentialExecutor().addNamedListeners(function(add) {\n add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) {\n var req = resp.request;\n var logger = req.service.config.logger;\n if (!logger) return;\n function filterSensitiveLog(inputShape, shape) {\n if (!shape) {\n return shape;\n }\n if (inputShape.isSensitive) {\n return '***SensitiveInformation***';\n }\n switch (inputShape.type) {\n case 'structure':\n var struct = {};\n AWS.util.each(shape, function(subShapeName, subShape) {\n if (Object.prototype.hasOwnProperty.call(inputShape.members, subShapeName)) {\n struct[subShapeName] = filterSensitiveLog(inputShape.members[subShapeName], subShape);\n } else {\n struct[subShapeName] = subShape;\n }\n });\n return struct;\n case 'list':\n var list = [];\n AWS.util.arrayEach(shape, function(subShape, index) {\n list.push(filterSensitiveLog(inputShape.member, subShape));\n });\n return list;\n case 'map':\n var map = {};\n AWS.util.each(shape, function(key, value) {\n map[key] = filterSensitiveLog(inputShape.value, value);\n });\n return map;\n default:\n return shape;\n }\n }\n\n function buildMessage() {\n var time = resp.request.service.getSkewCorrectedDate().getTime();\n var delta = (time - req.startTime.getTime()) / 1000;\n var ansi = logger.isTTY ? true : false;\n var status = resp.httpResponse.statusCode;\n var censoredParams = req.params;\n if (\n req.service.api.operations &&\n req.service.api.operations[req.operation] &&\n req.service.api.operations[req.operation].input\n ) {\n var inputShape = req.service.api.operations[req.operation].input;\n censoredParams = filterSensitiveLog(inputShape, req.params);\n }\n var params = require('util').inspect(censoredParams, true, null);\n var message = '';\n if (ansi) message += '\\x1B[33m';\n message += '[AWS ' + req.service.serviceIdentifier + ' ' + status;\n message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]';\n if (ansi) message += '\\x1B[0;1m';\n message += ' ' + AWS.util.string.lowerFirst(req.operation);\n message += '(' + params + ')';\n if (ansi) message += '\\x1B[0m';\n return message;\n }\n\n var line = buildMessage();\n if (typeof logger.log === 'function') {\n logger.log(line);\n } else if (typeof logger.write === 'function') {\n logger.write(line + '\\n');\n }\n });\n }),\n\n Json: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Rest: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n RestJson: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_json');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n add('UNSET_CONTENT_LENGTH', 'afterBuild', svc.unsetContentLength);\n }),\n\n RestXml: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/rest_xml');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n }),\n\n Query: new SequentialExecutor().addNamedListeners(function(add) {\n var svc = require('./protocol/query');\n add('BUILD', 'build', svc.buildRequest);\n add('EXTRACT_DATA', 'extractData', svc.extractData);\n add('EXTRACT_ERROR', 'extractError', svc.extractError);\n })\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudformation'] = {};\nAWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']);\nObject.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', {\n get: function get() {\n var model = require('../apis/cloudformation-2010-05-15.min.json');\n model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination;\n model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudFormation;\n","var AWS = require('../core');\n\n/**\n * Creates a credential provider chain that searches for AWS credentials\n * in a list of credential providers specified by the {providers} property.\n *\n * By default, the chain will use the {defaultProviders} to resolve credentials.\n * These providers will look in the environment using the\n * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes.\n *\n * ## Setting Providers\n *\n * Each provider in the {providers} list should be a function that returns\n * a {AWS.Credentials} object, or a hardcoded credentials object. The function\n * form allows for delayed execution of the credential construction.\n *\n * ## Resolving Credentials from a Chain\n *\n * Call {resolve} to return the first valid credential object that can be\n * loaded by the provider chain.\n *\n * For example, to resolve a chain with a custom provider that checks a file\n * on disk after the set of {defaultProviders}:\n *\n * ```javascript\n * var diskProvider = new AWS.FileSystemCredentials('./creds.json');\n * var chain = new AWS.CredentialProviderChain();\n * chain.providers.push(diskProvider);\n * chain.resolve();\n * ```\n *\n * The above code will return the `diskProvider` object if the\n * file contains credentials and the `defaultProviders` do not contain\n * any credential settings.\n *\n * @!attribute providers\n * @return [Array]\n * a list of credentials objects or functions that return credentials\n * objects. If the provider is a function, the function will be\n * executed lazily when the provider needs to be checked for valid\n * credentials. By default, this object will be set to the\n * {defaultProviders}.\n * @see defaultProviders\n */\nAWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, {\n\n /**\n * Creates a new CredentialProviderChain with a default set of providers\n * specified by {defaultProviders}.\n */\n constructor: function CredentialProviderChain(providers) {\n if (providers) {\n this.providers = providers;\n } else {\n this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0);\n }\n this.resolveCallbacks = [];\n },\n\n /**\n * @!method resolvePromise()\n * Returns a 'thenable' promise.\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function(credentials)\n * Called if the promise is fulfilled and the provider resolves the chain\n * to a credentials object\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @callback rejectedCallback function(error)\n * Called if the promise is rejected.\n * @param err [Error] the error object returned if no credentials are found.\n * @return [Promise] A promise that represents the state of the `resolve` method call.\n * @example Calling the `resolvePromise` method.\n * var promise = chain.resolvePromise();\n * promise.then(function(credentials) { ... }, function(err) { ... });\n */\n\n /**\n * Resolves the provider chain by searching for the first set of\n * credentials in {providers}.\n *\n * @callback callback function(err, credentials)\n * Called when the provider resolves the chain to a credentials object\n * or null if no credentials can be found.\n *\n * @param err [Error] the error object returned if no credentials are\n * found.\n * @param credentials [AWS.Credentials] the credentials object resolved\n * by the provider chain.\n * @return [AWS.CredentialProviderChain] the provider, for chaining.\n */\n resolve: function resolve(callback) {\n var self = this;\n if (self.providers.length === 0) {\n callback(new Error('No providers'));\n return self;\n }\n\n if (self.resolveCallbacks.push(callback) === 1) {\n var index = 0;\n var providers = self.providers.slice(0);\n\n function resolveNext(err, creds) {\n if ((!err && creds) || index === providers.length) {\n AWS.util.arrayEach(self.resolveCallbacks, function (callback) {\n callback(err, creds);\n });\n self.resolveCallbacks.length = 0;\n return;\n }\n\n var provider = providers[index++];\n if (typeof provider === 'function') {\n creds = provider.call();\n } else {\n creds = provider;\n }\n\n if (creds.get) {\n creds.get(function (getErr) {\n resolveNext(getErr, getErr ? null : creds);\n });\n } else {\n resolveNext(null, creds);\n }\n }\n\n resolveNext();\n }\n\n return self;\n }\n});\n\n/**\n * The default set of providers used by a vanilla CredentialProviderChain.\n *\n * In the browser:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = []\n * ```\n *\n * In Node.js:\n *\n * ```javascript\n * AWS.CredentialProviderChain.defaultProviders = [\n * function () { return new AWS.EnvironmentCredentials('AWS'); },\n * function () { return new AWS.EnvironmentCredentials('AMAZON'); },\n * function () { return new AWS.SsoCredentials(); },\n * function () { return new AWS.SharedIniFileCredentials(); },\n * function () { return new AWS.ECSCredentials(); },\n * function () { return new AWS.ProcessCredentials(); },\n * function () { return new AWS.TokenFileWebIdentityCredentials(); },\n * function () { return new AWS.EC2MetadataCredentials() }\n * ]\n * ```\n */\nAWS.CredentialProviderChain.defaultProviders = [];\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.resolvePromise = AWS.util.promisifyMethod('resolve', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.CredentialProviderChain.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.resolvePromise;\n};\n\nAWS.util.addPromises(AWS.CredentialProviderChain);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['acm'] = {};\nAWS.ACM = Service.defineService('acm', ['2015-12-08']);\nObject.defineProperty(apiLoader.services['acm'], '2015-12-08', {\n get: function get() {\n var model = require('../apis/acm-2015-12-08.min.json');\n model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination;\n model.waiters = require('../apis/acm-2015-12-08.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ACM;\n","var AWS = require('../core');\nvar STS = require('../../clients/sts');\n\n/**\n * Represents credentials retrieved from STS SAML support.\n *\n * By default this provider gets credentials using the\n * {AWS.STS.assumeRoleWithSAML} service operation. This operation\n * requires a `RoleArn` containing the ARN of the IAM trust policy for the\n * application for which credentials will be given, as well as a `PrincipalArn`\n * representing the ARN for the SAML identity provider. In addition, the\n * `SAMLAssertion` must be set to the token provided by the identity\n * provider. See {constructor} for an example on creating a credentials\n * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values.\n *\n * ## Refreshing Credentials from Identity Service\n *\n * In addition to AWS credentials expiring after a given amount of time, the\n * login token from the identity provider will also expire. Once this token\n * expires, it will not be usable to refresh AWS credentials, and another\n * token will be needed. The SDK does not manage refreshing of the token value,\n * but this can be done through a \"refresh token\" supported by most identity\n * providers. Consult the documentation for the identity provider for refreshing\n * tokens. Once the refreshed token is acquired, you should make sure to update\n * this new token in the credentials object's {params} property. The following\n * code will update the SAMLAssertion, assuming you have retrieved an updated\n * token from the identity provider:\n *\n * ```javascript\n * AWS.config.credentials.params.SAMLAssertion = updatedToken;\n * ```\n *\n * Future calls to `credentials.refresh()` will now use the new token.\n *\n * @!attribute params\n * @return [map] the map of params passed to\n * {AWS.STS.assumeRoleWithSAML}. To update the token, set the\n * `params.SAMLAssertion` property.\n */\nAWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, {\n /**\n * Creates a new credentials object.\n * @param (see AWS.STS.assumeRoleWithSAML)\n * @example Creating a new credentials object\n * AWS.config.credentials = new AWS.SAMLCredentials({\n * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole',\n * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal',\n * SAMLAssertion: 'base64-token', // base64-encoded token from IdP\n * });\n * @see AWS.STS.assumeRoleWithSAML\n */\n constructor: function SAMLCredentials(params) {\n AWS.Credentials.call(this);\n this.expired = true;\n this.params = params;\n },\n\n /**\n * Refreshes credentials using {AWS.STS.assumeRoleWithSAML}\n *\n * @callback callback function(err)\n * Called when the STS service responds (or fails). When\n * this callback is called with no error, it means that the credentials\n * information has been loaded into the object (as the `accessKeyId`,\n * `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @see get\n */\n refresh: function refresh(callback) {\n this.coalesceRefresh(callback || AWS.util.fn.callback);\n },\n\n /**\n * @api private\n */\n load: function load(callback) {\n var self = this;\n self.createClients();\n self.service.assumeRoleWithSAML(function (err, data) {\n if (!err) {\n self.service.credentialsFrom(data, self);\n }\n callback(err);\n });\n },\n\n /**\n * @api private\n */\n createClients: function() {\n this.service = this.service || new STS({params: this.params});\n }\n\n});\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideoarchivedmedia'] = {};\nAWS.KinesisVideoArchivedMedia = Service.defineService('kinesisvideoarchivedmedia', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideoarchivedmedia'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesis-video-archived-media-2017-09-30.min.json');\n model.paginators = require('../apis/kinesis-video-archived-media-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideoArchivedMedia;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sns'] = {};\nAWS.SNS = Service.defineService('sns', ['2010-03-31']);\nObject.defineProperty(apiLoader.services['sns'], '2010-03-31', {\n get: function get() {\n var model = require('../apis/sns-2010-03-31.min.json');\n model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SNS;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['mturk'] = {};\nAWS.MTurk = Service.defineService('mturk', ['2017-01-17']);\nObject.defineProperty(apiLoader.services['mturk'], '2017-01-17', {\n get: function get() {\n var model = require('../apis/mturk-requester-2017-01-17.min.json');\n model.paginators = require('../apis/mturk-requester-2017-01-17.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MTurk;\n","var AWS = require('../core');\n\n/**\n * @api private\n */\nvar service = null;\n\n/**\n * @api private\n */\nvar api = {\n signatureVersion: 'v4',\n signingName: 'rds-db',\n operations: {}\n};\n\n/**\n * @api private\n */\nvar requiredAuthTokenOptions = {\n region: 'string',\n hostname: 'string',\n port: 'number',\n username: 'string'\n};\n\n/**\n * A signer object can be used to generate an auth token to a database.\n */\nAWS.RDS.Signer = AWS.util.inherit({\n /**\n * Creates a signer object can be used to generate an auth token.\n *\n * @option options credentials [AWS.Credentials] the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * @option options hostname [String] the hostname of the database to connect to.\n * @option options port [Number] the port number the database is listening on.\n * @option options region [String] the region the database is located in.\n * @option options username [String] the username to login as.\n * @example Passing in options to constructor\n * var signer = new AWS.RDS.Signer({\n * credentials: new AWS.SharedIniFileCredentials({profile: 'default'}),\n * region: 'us-east-1',\n * hostname: 'db.us-east-1.rds.amazonaws.com',\n * port: 8000,\n * username: 'name'\n * });\n */\n constructor: function Signer(options) {\n this.options = options || {};\n },\n\n /**\n * @api private\n * Strips the protocol from a url.\n */\n convertUrlToAuthToken: function convertUrlToAuthToken(url) {\n // we are always using https as the protocol\n var protocol = 'https://';\n if (url.indexOf(protocol) === 0) {\n return url.substring(protocol.length);\n }\n },\n\n /**\n * @overload getAuthToken(options = {}, [callback])\n * Generate an auth token to a database.\n * @note You must ensure that you have static or previously resolved\n * credentials if you call this method synchronously (with no callback),\n * otherwise it may not properly sign the request. If you cannot guarantee\n * this (you are using an asynchronous credential provider, i.e., EC2\n * IAM roles), you should always call this method with an asynchronous\n * callback.\n *\n * @param options [map] The fields to use when generating an auth token.\n * Any options specified here will be merged on top of any options passed\n * to AWS.RDS.Signer:\n *\n * * **credentials** (AWS.Credentials) — the AWS credentials\n * to sign requests with. Uses the default credential provider chain\n * if not specified.\n * * **hostname** (String) — the hostname of the database to connect to.\n * * **port** (Number) — the port number the database is listening on.\n * * **region** (String) — the region the database is located in.\n * * **username** (String) — the username to login as.\n * @return [String] if called synchronously (with no callback), returns the\n * auth token.\n * @return [null] nothing is returned if a callback is provided.\n * @callback callback function (err, token)\n * If a callback is supplied, it is called when an auth token has been generated.\n * @param err [Error] the error object returned from the signer.\n * @param token [String] the auth token.\n *\n * @example Generating an auth token synchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * var token = signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * });\n * @example Generating an auth token asynchronously\n * var signer = new AWS.RDS.Signer({\n * // configure options\n * region: 'us-east-1',\n * username: 'default',\n * hostname: 'db.us-east-1.amazonaws.com',\n * port: 8000\n * });\n * signer.getAuthToken({\n * // these options are merged with those defined when creating the signer, overriding in the case of a duplicate option\n * // credentials are not specified here or when creating the signer, so default credential provider will be used\n * username: 'test' // overriding username\n * }, function(err, token) {\n * if (err) {\n * // handle error\n * } else {\n * // use token\n * }\n * });\n *\n */\n getAuthToken: function getAuthToken(options, callback) {\n if (typeof options === 'function' && callback === undefined) {\n callback = options;\n options = {};\n }\n var self = this;\n var hasCallback = typeof callback === 'function';\n // merge options with existing options\n options = AWS.util.merge(this.options, options);\n // validate options\n var optionsValidation = this.validateAuthTokenOptions(options);\n if (optionsValidation !== true) {\n if (hasCallback) {\n return callback(optionsValidation, null);\n }\n throw optionsValidation;\n }\n\n // 15 minutes\n var expires = 900;\n // create service to generate a request from\n var serviceOptions = {\n region: options.region,\n endpoint: new AWS.Endpoint(options.hostname + ':' + options.port),\n paramValidation: false,\n signatureVersion: 'v4'\n };\n if (options.credentials) {\n serviceOptions.credentials = options.credentials;\n }\n service = new AWS.Service(serviceOptions);\n // ensure the SDK is using sigv4 signing (config is not enough)\n service.api = api;\n\n var request = service.makeRequest();\n // add listeners to request to properly build auth token\n this.modifyRequestForAuthToken(request, options);\n\n if (hasCallback) {\n request.presign(expires, function(err, url) {\n if (url) {\n url = self.convertUrlToAuthToken(url);\n }\n callback(err, url);\n });\n } else {\n var url = request.presign(expires);\n return this.convertUrlToAuthToken(url);\n }\n },\n\n /**\n * @api private\n * Modifies a request to allow the presigner to generate an auth token.\n */\n modifyRequestForAuthToken: function modifyRequestForAuthToken(request, options) {\n request.on('build', request.buildAsGet);\n var httpRequest = request.httpRequest;\n httpRequest.body = AWS.util.queryParamsToString({\n Action: 'connect',\n DBUser: options.username\n });\n },\n\n /**\n * @api private\n * Validates that the options passed in contain all the keys with values of the correct type that\n * are needed to generate an auth token.\n */\n validateAuthTokenOptions: function validateAuthTokenOptions(options) {\n // iterate over all keys in options\n var message = '';\n options = options || {};\n for (var key in requiredAuthTokenOptions) {\n if (!Object.prototype.hasOwnProperty.call(requiredAuthTokenOptions, key)) {\n continue;\n }\n if (typeof options[key] !== requiredAuthTokenOptions[key]) {\n message += 'option \\'' + key + '\\' should have been type \\'' + requiredAuthTokenOptions[key] + '\\', was \\'' + typeof options[key] + '\\'.\\n';\n }\n }\n if (message.length) {\n return AWS.util.error(new Error(), {\n code: 'InvalidParameter',\n message: message\n });\n }\n return true;\n }\n});\n","var util = require('../util');\nvar XmlNode = require('./xml-node').XmlNode;\nvar XmlText = require('./xml-text').XmlText;\n\nfunction XmlBuilder() { }\n\nXmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) {\n var xml = new XmlNode(rootElement);\n applyNamespaces(xml, shape, true);\n serialize(xml, params, shape);\n return xml.children.length > 0 || noEmpty ? xml.toString() : '';\n};\n\nfunction serialize(xml, value, shape) {\n switch (shape.type) {\n case 'structure': return serializeStructure(xml, value, shape);\n case 'map': return serializeMap(xml, value, shape);\n case 'list': return serializeList(xml, value, shape);\n default: return serializeScalar(xml, value, shape);\n }\n}\n\nfunction serializeStructure(xml, params, shape) {\n util.arrayEach(shape.memberNames, function(memberName) {\n var memberShape = shape.members[memberName];\n if (memberShape.location !== 'body') return;\n\n var value = params[memberName];\n var name = memberShape.name;\n if (value !== undefined && value !== null) {\n if (memberShape.isXmlAttribute) {\n xml.addAttribute(name, value);\n } else if (memberShape.flattened) {\n serialize(xml, value, memberShape);\n } else {\n var element = new XmlNode(name);\n xml.addChildNode(element);\n applyNamespaces(element, memberShape);\n serialize(element, value, memberShape);\n }\n }\n });\n}\n\nfunction serializeMap(xml, map, shape) {\n var xmlKey = shape.key.name || 'key';\n var xmlValue = shape.value.name || 'value';\n\n util.each(map, function(key, value) {\n var entry = new XmlNode(shape.flattened ? shape.name : 'entry');\n xml.addChildNode(entry);\n\n var entryKey = new XmlNode(xmlKey);\n var entryValue = new XmlNode(xmlValue);\n entry.addChildNode(entryKey);\n entry.addChildNode(entryValue);\n\n serialize(entryKey, key, shape.key);\n serialize(entryValue, value, shape.value);\n });\n}\n\nfunction serializeList(xml, list, shape) {\n if (shape.flattened) {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || shape.name;\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n } else {\n util.arrayEach(list, function(value) {\n var name = shape.member.name || 'member';\n var element = new XmlNode(name);\n xml.addChildNode(element);\n serialize(element, value, shape.member);\n });\n }\n}\n\nfunction serializeScalar(xml, value, shape) {\n xml.addChildNode(\n new XmlText(shape.toWireFormat(value))\n );\n}\n\nfunction applyNamespaces(xml, shape, isRoot) {\n var uri, prefix = 'xmlns';\n if (shape.xmlNamespaceUri) {\n uri = shape.xmlNamespaceUri;\n if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix;\n } else if (isRoot && shape.api.xmlNamespaceUri) {\n uri = shape.api.xmlNamespaceUri;\n }\n\n if (uri) xml.addAttribute(prefix, uri);\n}\n\n/**\n * @api private\n */\nmodule.exports = XmlBuilder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatch'] = {};\nAWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']);\nObject.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', {\n get: function get() {\n var model = require('../apis/monitoring-2010-08-01.min.json');\n model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination;\n model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatch;\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 20;\n\nvar KEY = new Uint32Array([\n 0x5a827999,\n 0x6ed9eba1,\n 0x8f1bbcdc | 0,\n 0xca62c1d6 | 0\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @api private\n */\nfunction Sha1() {\n this.h0 = 0x67452301;\n this.h1 = 0xEFCDAB89;\n this.h2 = 0x98BADCFE;\n this.h3 = 0x10325476;\n this.h4 = 0xC3D2E1F0;\n // The first 64 bytes (16 words) is the data chunk\n this.block = new Uint32Array(80);\n this.offset = 0;\n this.shift = 24;\n this.totalLength = 0;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha1;\n\nSha1.BLOCK_SIZE = BLOCK_SIZE;\n\nSha1.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var length = data.length;\n this.totalLength += length * 8;\n for (var i = 0; i < length; i++) {\n this.write(data[i]);\n }\n\n return this;\n};\n\nSha1.prototype.write = function write(byte) {\n this.block[this.offset] |= (byte & 0xff) << this.shift;\n if (this.shift) {\n this.shift -= 8;\n } else {\n this.offset++;\n this.shift = 24;\n }\n\n if (this.offset === 16) this.processBlock();\n};\n\nSha1.prototype.digest = function (encoding) {\n // Pad\n this.write(0x80);\n if (this.offset > 14 || (this.offset === 14 && this.shift < 24)) {\n this.processBlock();\n }\n this.offset = 14;\n this.shift = 24;\n\n // 64-bit length big-endian\n this.write(0x00); // numbers this big aren't accurate in javascript anyway\n this.write(0x00); // ..So just hard-code to zero.\n this.write(this.totalLength > 0xffffffffff ? this.totalLength / 0x10000000000 : 0x00);\n this.write(this.totalLength > 0xffffffff ? this.totalLength / 0x100000000 : 0x00);\n for (var s = 24; s >= 0; s -= 8) {\n this.write(this.totalLength >> s);\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n var outView = new DataView(out.buffer);\n outView.setUint32(0, this.h0, false);\n outView.setUint32(4, this.h1, false);\n outView.setUint32(8, this.h2, false);\n outView.setUint32(12, this.h3, false);\n outView.setUint32(16, this.h4, false);\n\n return encoding ? out.toString(encoding) : out;\n};\n\nSha1.prototype.processBlock = function processBlock() {\n // Extend the sixteen 32-bit words into eighty 32-bit words:\n for (var i = 16; i < 80; i++) {\n var w = this.block[i - 3] ^ this.block[i - 8] ^ this.block[i - 14] ^ this.block[i - 16];\n this.block[i] = (w << 1) | (w >>> 31);\n }\n\n // Initialize hash value for this chunk:\n var a = this.h0;\n var b = this.h1;\n var c = this.h2;\n var d = this.h3;\n var e = this.h4;\n var f, k;\n\n // Main loop:\n for (i = 0; i < 80; i++) {\n if (i < 20) {\n f = d ^ (b & (c ^ d));\n k = 0x5A827999;\n }\n else if (i < 40) {\n f = b ^ c ^ d;\n k = 0x6ED9EBA1;\n }\n else if (i < 60) {\n f = (b & c) | (d & (b | c));\n k = 0x8F1BBCDC;\n }\n else {\n f = b ^ c ^ d;\n k = 0xCA62C1D6;\n }\n var temp = (a << 5 | a >>> 27) + f + e + k + (this.block[i]|0);\n e = d;\n d = c;\n c = (b << 30 | b >>> 2);\n b = a;\n a = temp;\n }\n\n // Add this chunk's hash to result so far:\n this.h0 = (this.h0 + a) | 0;\n this.h1 = (this.h1 + b) | 0;\n this.h2 = (this.h2 + c) | 0;\n this.h3 = (this.h3 + d) | 0;\n this.h4 = (this.h4 + e) | 0;\n\n // The block is now reusable.\n this.offset = 0;\n for (i = 0; i < 16; i++) {\n this.block[i] = 0;\n }\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['forecastqueryservice'] = {};\nAWS.ForecastQueryService = Service.defineService('forecastqueryservice', ['2018-06-26']);\nObject.defineProperty(apiLoader.services['forecastqueryservice'], '2018-06-26', {\n get: function get() {\n var model = require('../apis/forecastquery-2018-06-26.min.json');\n model.paginators = require('../apis/forecastquery-2018-06-26.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ForecastQueryService;\n","var hashUtils = require('./browserHashUtils');\nvar Buffer = require('buffer/').Buffer;\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 16;\n\nvar INIT = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n];\n\n/**\n * @api private\n */\nfunction Md5() {\n this.state = [\n 0x67452301,\n 0xefcdab89,\n 0x98badcfe,\n 0x10325476,\n ];\n this.buffer = new DataView(new ArrayBuffer(BLOCK_SIZE));\n this.bufferLength = 0;\n this.bytesHashed = 0;\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Md5;\n\nMd5.BLOCK_SIZE = BLOCK_SIZE;\n\nMd5.prototype.update = function (sourceData) {\n if (hashUtils.isEmptyData(sourceData)) {\n return this;\n } else if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n var data = hashUtils.convertToBuffer(sourceData);\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n while (byteLength > 0) {\n this.buffer.setUint8(this.bufferLength++, data[position++]);\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nMd5.prototype.digest = function (encoding) {\n if (!this.finished) {\n var _a = this, buffer = _a.buffer, undecoratedLength = _a.bufferLength, bytesHashed = _a.bytesHashed;\n var bitsHashed = bytesHashed * 8;\n buffer.setUint8(this.bufferLength++, 128);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n buffer.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n buffer.setUint8(i, 0);\n }\n buffer.setUint32(BLOCK_SIZE - 8, bitsHashed >>> 0, true);\n buffer.setUint32(BLOCK_SIZE - 4, Math.floor(bitsHashed / 0x100000000), true);\n this.hashBuffer();\n this.finished = true;\n }\n var out = new DataView(new ArrayBuffer(DIGEST_LENGTH));\n for (var i = 0; i < 4; i++) {\n out.setUint32(i * 4, this.state[i], true);\n }\n var buff = new Buffer(out.buffer, out.byteOffset, out.byteLength);\n return encoding ? buff.toString(encoding) : buff;\n};\n\nMd5.prototype.hashBuffer = function () {\n var _a = this, buffer = _a.buffer, state = _a.state;\n var a = state[0], b = state[1], c = state[2], d = state[3];\n a = ff(a, b, c, d, buffer.getUint32(0, true), 7, 0xd76aa478);\n d = ff(d, a, b, c, buffer.getUint32(4, true), 12, 0xe8c7b756);\n c = ff(c, d, a, b, buffer.getUint32(8, true), 17, 0x242070db);\n b = ff(b, c, d, a, buffer.getUint32(12, true), 22, 0xc1bdceee);\n a = ff(a, b, c, d, buffer.getUint32(16, true), 7, 0xf57c0faf);\n d = ff(d, a, b, c, buffer.getUint32(20, true), 12, 0x4787c62a);\n c = ff(c, d, a, b, buffer.getUint32(24, true), 17, 0xa8304613);\n b = ff(b, c, d, a, buffer.getUint32(28, true), 22, 0xfd469501);\n a = ff(a, b, c, d, buffer.getUint32(32, true), 7, 0x698098d8);\n d = ff(d, a, b, c, buffer.getUint32(36, true), 12, 0x8b44f7af);\n c = ff(c, d, a, b, buffer.getUint32(40, true), 17, 0xffff5bb1);\n b = ff(b, c, d, a, buffer.getUint32(44, true), 22, 0x895cd7be);\n a = ff(a, b, c, d, buffer.getUint32(48, true), 7, 0x6b901122);\n d = ff(d, a, b, c, buffer.getUint32(52, true), 12, 0xfd987193);\n c = ff(c, d, a, b, buffer.getUint32(56, true), 17, 0xa679438e);\n b = ff(b, c, d, a, buffer.getUint32(60, true), 22, 0x49b40821);\n a = gg(a, b, c, d, buffer.getUint32(4, true), 5, 0xf61e2562);\n d = gg(d, a, b, c, buffer.getUint32(24, true), 9, 0xc040b340);\n c = gg(c, d, a, b, buffer.getUint32(44, true), 14, 0x265e5a51);\n b = gg(b, c, d, a, buffer.getUint32(0, true), 20, 0xe9b6c7aa);\n a = gg(a, b, c, d, buffer.getUint32(20, true), 5, 0xd62f105d);\n d = gg(d, a, b, c, buffer.getUint32(40, true), 9, 0x02441453);\n c = gg(c, d, a, b, buffer.getUint32(60, true), 14, 0xd8a1e681);\n b = gg(b, c, d, a, buffer.getUint32(16, true), 20, 0xe7d3fbc8);\n a = gg(a, b, c, d, buffer.getUint32(36, true), 5, 0x21e1cde6);\n d = gg(d, a, b, c, buffer.getUint32(56, true), 9, 0xc33707d6);\n c = gg(c, d, a, b, buffer.getUint32(12, true), 14, 0xf4d50d87);\n b = gg(b, c, d, a, buffer.getUint32(32, true), 20, 0x455a14ed);\n a = gg(a, b, c, d, buffer.getUint32(52, true), 5, 0xa9e3e905);\n d = gg(d, a, b, c, buffer.getUint32(8, true), 9, 0xfcefa3f8);\n c = gg(c, d, a, b, buffer.getUint32(28, true), 14, 0x676f02d9);\n b = gg(b, c, d, a, buffer.getUint32(48, true), 20, 0x8d2a4c8a);\n a = hh(a, b, c, d, buffer.getUint32(20, true), 4, 0xfffa3942);\n d = hh(d, a, b, c, buffer.getUint32(32, true), 11, 0x8771f681);\n c = hh(c, d, a, b, buffer.getUint32(44, true), 16, 0x6d9d6122);\n b = hh(b, c, d, a, buffer.getUint32(56, true), 23, 0xfde5380c);\n a = hh(a, b, c, d, buffer.getUint32(4, true), 4, 0xa4beea44);\n d = hh(d, a, b, c, buffer.getUint32(16, true), 11, 0x4bdecfa9);\n c = hh(c, d, a, b, buffer.getUint32(28, true), 16, 0xf6bb4b60);\n b = hh(b, c, d, a, buffer.getUint32(40, true), 23, 0xbebfbc70);\n a = hh(a, b, c, d, buffer.getUint32(52, true), 4, 0x289b7ec6);\n d = hh(d, a, b, c, buffer.getUint32(0, true), 11, 0xeaa127fa);\n c = hh(c, d, a, b, buffer.getUint32(12, true), 16, 0xd4ef3085);\n b = hh(b, c, d, a, buffer.getUint32(24, true), 23, 0x04881d05);\n a = hh(a, b, c, d, buffer.getUint32(36, true), 4, 0xd9d4d039);\n d = hh(d, a, b, c, buffer.getUint32(48, true), 11, 0xe6db99e5);\n c = hh(c, d, a, b, buffer.getUint32(60, true), 16, 0x1fa27cf8);\n b = hh(b, c, d, a, buffer.getUint32(8, true), 23, 0xc4ac5665);\n a = ii(a, b, c, d, buffer.getUint32(0, true), 6, 0xf4292244);\n d = ii(d, a, b, c, buffer.getUint32(28, true), 10, 0x432aff97);\n c = ii(c, d, a, b, buffer.getUint32(56, true), 15, 0xab9423a7);\n b = ii(b, c, d, a, buffer.getUint32(20, true), 21, 0xfc93a039);\n a = ii(a, b, c, d, buffer.getUint32(48, true), 6, 0x655b59c3);\n d = ii(d, a, b, c, buffer.getUint32(12, true), 10, 0x8f0ccc92);\n c = ii(c, d, a, b, buffer.getUint32(40, true), 15, 0xffeff47d);\n b = ii(b, c, d, a, buffer.getUint32(4, true), 21, 0x85845dd1);\n a = ii(a, b, c, d, buffer.getUint32(32, true), 6, 0x6fa87e4f);\n d = ii(d, a, b, c, buffer.getUint32(60, true), 10, 0xfe2ce6e0);\n c = ii(c, d, a, b, buffer.getUint32(24, true), 15, 0xa3014314);\n b = ii(b, c, d, a, buffer.getUint32(52, true), 21, 0x4e0811a1);\n a = ii(a, b, c, d, buffer.getUint32(16, true), 6, 0xf7537e82);\n d = ii(d, a, b, c, buffer.getUint32(44, true), 10, 0xbd3af235);\n c = ii(c, d, a, b, buffer.getUint32(8, true), 15, 0x2ad7d2bb);\n b = ii(b, c, d, a, buffer.getUint32(36, true), 21, 0xeb86d391);\n state[0] = (a + state[0]) & 0xFFFFFFFF;\n state[1] = (b + state[1]) & 0xFFFFFFFF;\n state[2] = (c + state[2]) & 0xFFFFFFFF;\n state[3] = (d + state[3]) & 0xFFFFFFFF;\n};\n\nfunction cmn(q, a, b, x, s, t) {\n a = (((a + q) & 0xFFFFFFFF) + ((x + t) & 0xFFFFFFFF)) & 0xFFFFFFFF;\n return (((a << s) | (a >>> (32 - s))) + b) & 0xFFFFFFFF;\n}\n\nfunction ff(a, b, c, d, x, s, t) {\n return cmn((b & c) | ((~b) & d), a, b, x, s, t);\n}\n\nfunction gg(a, b, c, d, x, s, t) {\n return cmn((b & d) | (c & (~d)), a, b, x, s, t);\n}\n\nfunction hh(a, b, c, d, x, s, t) {\n return cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction ii(a, b, c, d, x, s, t) {\n return cmn(c ^ (b | (~d)), a, b, x, s, t);\n}\n","var AWS = require('../core');\nvar resolveRegionalEndpointsFlag = require('../config_regional_endpoint');\nvar ENV_REGIONAL_ENDPOINT_ENABLED = 'AWS_STS_REGIONAL_ENDPOINTS';\nvar CONFIG_REGIONAL_ENDPOINT_ENABLED = 'sts_regional_endpoints';\n\nAWS.util.update(AWS.STS.prototype, {\n /**\n * @overload credentialsFrom(data, credentials = null)\n * Creates a credentials object from STS response data containing\n * credentials information. Useful for quickly setting AWS credentials.\n *\n * @note This is a low-level utility function. If you want to load temporary\n * credentials into your process for subsequent requests to AWS resources,\n * you should use {AWS.TemporaryCredentials} instead.\n * @param data [map] data retrieved from a call to {getFederatedToken},\n * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}.\n * @param credentials [AWS.Credentials] an optional credentials object to\n * fill instead of creating a new object. Useful when modifying an\n * existing credentials object from a refresh call.\n * @return [AWS.TemporaryCredentials] the set of temporary credentials\n * loaded from a raw STS operation response.\n * @example Using credentialsFrom to load global AWS credentials\n * var sts = new AWS.STS();\n * sts.getSessionToken(function (err, data) {\n * if (err) console.log(\"Error getting credentials\");\n * else {\n * AWS.config.credentials = sts.credentialsFrom(data);\n * }\n * });\n * @see AWS.TemporaryCredentials\n */\n credentialsFrom: function credentialsFrom(data, credentials) {\n if (!data) return null;\n if (!credentials) credentials = new AWS.TemporaryCredentials();\n credentials.expired = false;\n credentials.accessKeyId = data.Credentials.AccessKeyId;\n credentials.secretAccessKey = data.Credentials.SecretAccessKey;\n credentials.sessionToken = data.Credentials.SessionToken;\n credentials.expireTime = data.Credentials.Expiration;\n return credentials;\n },\n\n assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback);\n },\n\n assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) {\n return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback);\n },\n\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n request.addListener('validate', this.optInRegionalEndpoint, true);\n },\n\n /**\n * @api private\n */\n optInRegionalEndpoint: function optInRegionalEndpoint(req) {\n var service = req.service;\n var config = service.config;\n config.stsRegionalEndpoints = resolveRegionalEndpointsFlag(service._originalConfig, {\n env: ENV_REGIONAL_ENDPOINT_ENABLED,\n sharedConfig: CONFIG_REGIONAL_ENDPOINT_ENABLED,\n clientConfig: 'stsRegionalEndpoints'\n });\n if (\n config.stsRegionalEndpoints === 'regional' &&\n service.isGlobalEndpoint\n ) {\n //client will throw if region is not supplied; request will be signed with specified region\n if (!config.region) {\n throw AWS.util.error(new Error(),\n {code: 'ConfigError', message: 'Missing region in config'});\n }\n var insertPoint = config.endpoint.indexOf('.amazonaws.com');\n var regionalEndpoint = config.endpoint.substring(0, insertPoint) +\n '.' + config.region + config.endpoint.substring(insertPoint);\n req.httpRequest.updateEndpoint(regionalEndpoint);\n req.httpRequest.region = config.region;\n }\n }\n\n});\n","var Buffer = require('buffer/').Buffer;\nvar hashUtils = require('./browserHashUtils');\n\nvar BLOCK_SIZE = 64;\n\nvar DIGEST_LENGTH = 32;\n\nvar KEY = new Uint32Array([\n 0x428a2f98,\n 0x71374491,\n 0xb5c0fbcf,\n 0xe9b5dba5,\n 0x3956c25b,\n 0x59f111f1,\n 0x923f82a4,\n 0xab1c5ed5,\n 0xd807aa98,\n 0x12835b01,\n 0x243185be,\n 0x550c7dc3,\n 0x72be5d74,\n 0x80deb1fe,\n 0x9bdc06a7,\n 0xc19bf174,\n 0xe49b69c1,\n 0xefbe4786,\n 0x0fc19dc6,\n 0x240ca1cc,\n 0x2de92c6f,\n 0x4a7484aa,\n 0x5cb0a9dc,\n 0x76f988da,\n 0x983e5152,\n 0xa831c66d,\n 0xb00327c8,\n 0xbf597fc7,\n 0xc6e00bf3,\n 0xd5a79147,\n 0x06ca6351,\n 0x14292967,\n 0x27b70a85,\n 0x2e1b2138,\n 0x4d2c6dfc,\n 0x53380d13,\n 0x650a7354,\n 0x766a0abb,\n 0x81c2c92e,\n 0x92722c85,\n 0xa2bfe8a1,\n 0xa81a664b,\n 0xc24b8b70,\n 0xc76c51a3,\n 0xd192e819,\n 0xd6990624,\n 0xf40e3585,\n 0x106aa070,\n 0x19a4c116,\n 0x1e376c08,\n 0x2748774c,\n 0x34b0bcb5,\n 0x391c0cb3,\n 0x4ed8aa4a,\n 0x5b9cca4f,\n 0x682e6ff3,\n 0x748f82ee,\n 0x78a5636f,\n 0x84c87814,\n 0x8cc70208,\n 0x90befffa,\n 0xa4506ceb,\n 0xbef9a3f7,\n 0xc67178f2\n]);\n\nvar INIT = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n];\n\nvar MAX_HASHABLE_LENGTH = Math.pow(2, 53) - 1;\n\n/**\n * @private\n */\nfunction Sha256() {\n this.state = [\n 0x6a09e667,\n 0xbb67ae85,\n 0x3c6ef372,\n 0xa54ff53a,\n 0x510e527f,\n 0x9b05688c,\n 0x1f83d9ab,\n 0x5be0cd19,\n ];\n this.temp = new Int32Array(64);\n this.buffer = new Uint8Array(64);\n this.bufferLength = 0;\n this.bytesHashed = 0;\n /**\n * @private\n */\n this.finished = false;\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Sha256;\n\nSha256.BLOCK_SIZE = BLOCK_SIZE;\n\nSha256.prototype.update = function (data) {\n if (this.finished) {\n throw new Error('Attempted to update an already finished hash.');\n }\n\n if (hashUtils.isEmptyData(data)) {\n return this;\n }\n\n data = hashUtils.convertToBuffer(data);\n\n var position = 0;\n var byteLength = data.byteLength;\n this.bytesHashed += byteLength;\n if (this.bytesHashed * 8 > MAX_HASHABLE_LENGTH) {\n throw new Error('Cannot hash more than 2^53 - 1 bits');\n }\n\n while (byteLength > 0) {\n this.buffer[this.bufferLength++] = data[position++];\n byteLength--;\n if (this.bufferLength === BLOCK_SIZE) {\n this.hashBuffer();\n this.bufferLength = 0;\n }\n }\n\n return this;\n};\n\nSha256.prototype.digest = function (encoding) {\n if (!this.finished) {\n var bitsHashed = this.bytesHashed * 8;\n var bufferView = new DataView(this.buffer.buffer, this.buffer.byteOffset, this.buffer.byteLength);\n var undecoratedLength = this.bufferLength;\n bufferView.setUint8(this.bufferLength++, 0x80);\n // Ensure the final block has enough room for the hashed length\n if (undecoratedLength % BLOCK_SIZE >= BLOCK_SIZE - 8) {\n for (var i = this.bufferLength; i < BLOCK_SIZE; i++) {\n bufferView.setUint8(i, 0);\n }\n this.hashBuffer();\n this.bufferLength = 0;\n }\n for (var i = this.bufferLength; i < BLOCK_SIZE - 8; i++) {\n bufferView.setUint8(i, 0);\n }\n bufferView.setUint32(BLOCK_SIZE - 8, Math.floor(bitsHashed / 0x100000000), true);\n bufferView.setUint32(BLOCK_SIZE - 4, bitsHashed);\n this.hashBuffer();\n this.finished = true;\n }\n // The value in state is little-endian rather than big-endian, so flip\n // each word into a new Uint8Array\n var out = new Buffer(DIGEST_LENGTH);\n for (var i = 0; i < 8; i++) {\n out[i * 4] = (this.state[i] >>> 24) & 0xff;\n out[i * 4 + 1] = (this.state[i] >>> 16) & 0xff;\n out[i * 4 + 2] = (this.state[i] >>> 8) & 0xff;\n out[i * 4 + 3] = (this.state[i] >>> 0) & 0xff;\n }\n return encoding ? out.toString(encoding) : out;\n};\n\nSha256.prototype.hashBuffer = function () {\n var _a = this,\n buffer = _a.buffer,\n state = _a.state;\n var state0 = state[0],\n state1 = state[1],\n state2 = state[2],\n state3 = state[3],\n state4 = state[4],\n state5 = state[5],\n state6 = state[6],\n state7 = state[7];\n for (var i = 0; i < BLOCK_SIZE; i++) {\n if (i < 16) {\n this.temp[i] = (((buffer[i * 4] & 0xff) << 24) |\n ((buffer[(i * 4) + 1] & 0xff) << 16) |\n ((buffer[(i * 4) + 2] & 0xff) << 8) |\n (buffer[(i * 4) + 3] & 0xff));\n }\n else {\n var u = this.temp[i - 2];\n var t1_1 = (u >>> 17 | u << 15) ^\n (u >>> 19 | u << 13) ^\n (u >>> 10);\n u = this.temp[i - 15];\n var t2_1 = (u >>> 7 | u << 25) ^\n (u >>> 18 | u << 14) ^\n (u >>> 3);\n this.temp[i] = (t1_1 + this.temp[i - 7] | 0) +\n (t2_1 + this.temp[i - 16] | 0);\n }\n var t1 = (((((state4 >>> 6 | state4 << 26) ^\n (state4 >>> 11 | state4 << 21) ^\n (state4 >>> 25 | state4 << 7))\n + ((state4 & state5) ^ (~state4 & state6))) | 0)\n + ((state7 + ((KEY[i] + this.temp[i]) | 0)) | 0)) | 0;\n var t2 = (((state0 >>> 2 | state0 << 30) ^\n (state0 >>> 13 | state0 << 19) ^\n (state0 >>> 22 | state0 << 10)) + ((state0 & state1) ^ (state0 & state2) ^ (state1 & state2))) | 0;\n state7 = state6;\n state6 = state5;\n state5 = state4;\n state4 = (state3 + t1) | 0;\n state3 = state2;\n state2 = state1;\n state1 = state0;\n state0 = (t1 + t2) | 0;\n }\n state[0] += state0;\n state[1] += state1;\n state[2] += state2;\n state[3] += state3;\n state[4] += state4;\n state[5] += state5;\n state[6] += state6;\n state[7] += state7;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $includes = require('../internals/array-includes').includes;\nvar addToUnscopables = require('../internals/add-to-unscopables');\n\n// `Array.prototype.includes` method\n// https://tc39.es/ecma262/#sec-array.prototype.includes\n$({ target: 'Array', proto: true }, {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('includes');\n","var AWS = require('../core');\nvar regionUtil = require('../region_config');\n\nvar s3util = {\n /**\n * @api private\n */\n isArnInParam: function isArnInParam(req, paramName) {\n var inputShape = (req.service.api.operations[req.operation] || {}).input || {};\n var inputMembers = inputShape.members || {};\n if (!req.params[paramName] || !inputMembers[paramName]) return false;\n return AWS.util.ARN.validate(req.params[paramName]);\n },\n\n /**\n * Validate service component from ARN supplied in Bucket parameter\n */\n validateArnService: function validateArnService(req) {\n var parsedArn = req._parsedArn;\n\n if (parsedArn.service !== 's3'\n && parsedArn.service !== 's3-outposts'\n && parsedArn.service !== 's3-object-lambda') {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'expect \\'s3\\' or \\'s3-outposts\\' or \\'s3-object-lambda\\' in ARN service component'\n });\n }\n },\n\n /**\n * Validate account ID from ARN supplied in Bucket parameter is a valid account\n */\n validateArnAccount: function validateArnAccount(req) {\n var parsedArn = req._parsedArn;\n\n if (!/[0-9]{12}/.exec(parsedArn.accountId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN accountID does not match regex \"[0-9]{12}\"'\n });\n }\n },\n\n /**\n * Validate ARN supplied in Bucket parameter is a valid access point ARN\n */\n validateS3AccessPointArn: function validateS3AccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['accesspoint'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 2) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access Point ARN should have one resource accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[1];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsArn: function validateOutpostsArn(req) {\n var parsedArn = req._parsedArn;\n\n if (\n parsedArn.resource.indexOf('outpost:') !== 0 &&\n parsedArn.resource.indexOf('outpost/') !== 0\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'ARN resource should begin with \\'outpost/\\''\n });\n }\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n var outpostId = parsedArn.resource.split(delimiter)[1];\n var 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(outpostId)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outpost resource in ARN is not DNS compatible. Got ' + outpostId\n });\n }\n req._parsedArn.outpostId = outpostId;\n },\n\n /**\n * Validate Outposts ARN supplied in Bucket parameter is a valid outposts ARN\n */\n validateOutpostsAccessPointArn: function validateOutpostsAccessPointArn(req) {\n var parsedArn = req._parsedArn;\n\n //can be ':' or '/'\n var delimiter = parsedArn.resource['outpost'.length];\n\n if (parsedArn.resource.split(delimiter).length !== 4) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Outposts ARN should have two resources outpost/{outpostId}/accesspoint/{accesspointName}'\n });\n }\n\n var accessPoint = parsedArn.resource.split(delimiter)[3];\n var accessPointPrefix = accessPoint + '-' + parsedArn.accountId;\n if (!s3util.dnsCompatibleBucketName(accessPointPrefix) || accessPointPrefix.match(/\\./)) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: 'Access point resource in ARN is not DNS compatible. Got ' + accessPoint\n });\n }\n\n //set parsed valid access point\n req._parsedArn.accessPoint = accessPoint;\n },\n\n /**\n * Validate region field in ARN supplied in Bucket parameter is a valid region\n */\n validateArnRegion: function validateArnRegion(req, options) {\n if (options === undefined) {\n options = {};\n }\n\n var useArnRegion = s3util.loadUseArnRegionConfig(req);\n var regionFromArn = req._parsedArn.region;\n var clientRegion = req.service.config.region;\n var useFipsEndpoint = req.service.config.useFipsEndpoint;\n var allowFipsEndpoint = options.allowFipsEndpoint || false;\n\n if (!regionFromArn) {\n var message = 'ARN region is empty';\n if (req._parsedArn.service === 's3') {\n message = message + '\\nYou may want to use multi-regional ARN. The feature is not supported in current SDK. ' +\n 'You should consider switching to V3(https://github.com/aws/aws-sdk-js-v3).';\n }\n throw AWS.util.error(new Error(), {\n code: 'InvalidARN',\n message: message\n });\n }\n\n if (useFipsEndpoint && !allowFipsEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'ARN endpoint is not compatible with FIPS region'\n });\n }\n\n if (regionFromArn.indexOf('fips') >= 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'FIPS region not allowed in ARN'\n });\n }\n\n if (!useArnRegion && regionFromArn !== clientRegion) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region conflicts with access point region'\n });\n } else if (\n useArnRegion &&\n regionUtil.getEndpointSuffix(regionFromArn) !== regionUtil.getEndpointSuffix(clientRegion)\n ) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Configured region and access point region not in same partition'\n });\n }\n\n if (req.service.config.useAccelerateEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'useAccelerateEndpoint config is not supported with access point ARN'\n });\n }\n\n if (req._parsedArn.service === 's3-outposts' && req.service.config.useDualstackEndpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Dualstack is not supported with outposts access point ARN'\n });\n }\n },\n\n loadUseArnRegionConfig: function loadUseArnRegionConfig(req) {\n var envName = 'AWS_S3_USE_ARN_REGION';\n var configName = 's3_use_arn_region';\n var useArnRegion = true;\n var originalConfig = req.service._originalConfig || {};\n if (req.service.config.s3UseArnRegion !== undefined) {\n return req.service.config.s3UseArnRegion;\n } else if (originalConfig.s3UseArnRegion !== undefined) {\n useArnRegion = originalConfig.s3UseArnRegion === true;\n } else if (AWS.util.isNode()) {\n //load from environmental variable AWS_USE_ARN_REGION\n if (process.env[envName]) {\n var value = process.env[envName].trim().toLowerCase();\n if (['false', 'true'].indexOf(value) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: envName + ' only accepts true or false. Got ' + process.env[envName],\n retryable: false\n });\n }\n useArnRegion = value === 'true';\n } else { //load from shared config property use_arn_region\n var profiles = {};\n var profile = {};\n try {\n profiles = AWS.util.getProfilesFromSharedConfig(AWS.util.iniLoader);\n profile = profiles[process.env.AWS_PROFILE || AWS.util.defaultProfile];\n } catch (e) {}\n if (profile[configName]) {\n if (['false', 'true'].indexOf(profile[configName].trim().toLowerCase()) < 0) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: configName + ' only accepts true or false. Got ' + profile[configName],\n retryable: false\n });\n }\n useArnRegion = profile[configName].trim().toLowerCase() === 'true';\n }\n }\n }\n req.service.config.s3UseArnRegion = useArnRegion;\n return useArnRegion;\n },\n\n /**\n * Validations before URI can be populated\n */\n validatePopulateUriFromArn: function validatePopulateUriFromArn(req) {\n if (req.service._originalConfig && req.service._originalConfig.endpoint) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Custom endpoint is not compatible with access point ARN'\n });\n }\n\n if (req.service.config.s3ForcePathStyle) {\n throw AWS.util.error(new Error(), {\n code: 'InvalidConfiguration',\n message: 'Cannot construct path-style endpoint with access point'\n });\n }\n },\n\n /**\n * Returns true if the bucket name is DNS compatible. Buckets created\n * outside of the classic region MUST be DNS compatible.\n *\n * @api private\n */\n dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) {\n var b = bucketName;\n var domain = new RegExp(/^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/);\n var ipAddress = new RegExp(/(\\d+\\.){3}\\d+/);\n var dots = new RegExp(/\\.\\./);\n return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false;\n },\n};\n\n/**\n * @api private\n */\nmodule.exports = s3util;\n","var AWS = require('../core');\nvar util = require('../util');\nvar QueryParamSerializer = require('../query/query_param_serializer');\nvar Shape = require('../model/shape');\nvar populateHostPrefix = require('./helpers').populateHostPrefix;\n\nfunction buildRequest(req) {\n var operation = req.service.api.operations[req.operation];\n var httpRequest = req.httpRequest;\n httpRequest.headers['Content-Type'] =\n 'application/x-www-form-urlencoded; charset=utf-8';\n httpRequest.params = {\n Version: req.service.api.apiVersion,\n Action: operation.name\n };\n\n // convert the request parameters into a list of query params,\n // e.g. Deeply.NestedParam.0.Name=value\n var builder = new QueryParamSerializer();\n builder.serialize(req.params, operation.input, function(name, value) {\n httpRequest.params[name] = value;\n });\n httpRequest.body = util.queryParamsToString(httpRequest.params);\n\n populateHostPrefix(req);\n}\n\nfunction extractError(resp) {\n var data, body = resp.httpResponse.body.toString();\n if (body.match(', some require you to add \"/cfx/st\" into your URL).\n *\n * @param options [Object] The options to create a signed URL.\n * @option options url [String] The URL to which the signature will grant\n * access. Any query params included with\n * the URL should be encoded. Required.\n * @option options expires [Number] A Unix UTC timestamp indicating when the\n * signature should expire. Required unless you\n * pass in a full policy.\n * @option options policy [String] A CloudFront JSON policy. Required unless\n * you pass in a url and an expiry time.\n *\n * @param cb [Function] if a callback is provided, this function will\n * pass the URL as the second parameter (after the error parameter) to\n * the callback function.\n *\n * @return [String] if called synchronously (with no callback), returns the\n * signed URL.\n * @return [null] nothing is returned if a callback is provided.\n */\n getSignedUrl: function (options, cb) {\n try {\n var resource = getResource(options.url);\n } catch (err) {\n return handleError(err, cb);\n }\n\n var parsedUrl = url.parse(options.url, true),\n signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy')\n ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey)\n : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey);\n\n parsedUrl.search = null;\n for (var key in signatureHash) {\n if (Object.prototype.hasOwnProperty.call(signatureHash, key)) {\n parsedUrl.query[key] = signatureHash[key];\n }\n }\n\n try {\n var signedUrl = determineScheme(options.url) === 'rtmp'\n ? getRtmpUrl(url.format(parsedUrl))\n : url.format(parsedUrl);\n } catch (err) {\n return handleError(err, cb);\n }\n\n return handleSuccess(signedUrl, cb);\n }\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.CloudFront.Signer;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cloudwatchevents'] = {};\nAWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']);\nObject.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', {\n get: function get() {\n var model = require('../apis/events-2015-10-07.min.json');\n model.paginators = require('../apis/events-2015-10-07.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CloudWatchEvents;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kms'] = {};\nAWS.KMS = Service.defineService('kms', ['2014-11-01']);\nObject.defineProperty(apiLoader.services['kms'], '2014-11-01', {\n get: function get() {\n var model = require('../apis/kms-2014-11-01.min.json');\n model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KMS;\n","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['kinesisvideo'] = {};\nAWS.KinesisVideo = Service.defineService('kinesisvideo', ['2017-09-30']);\nObject.defineProperty(apiLoader.services['kinesisvideo'], '2017-09-30', {\n get: function get() {\n var model = require('../apis/kinesisvideo-2017-09-30.min.json');\n model.paginators = require('../apis/kinesisvideo-2017-09-30.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.KinesisVideo;\n","var Shape = require('./shape');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Operation(name, operation, options) {\n var self = this;\n options = options || {};\n\n property(this, 'name', operation.name || name);\n property(this, 'api', options.api, false);\n\n operation.http = operation.http || {};\n property(this, 'endpoint', operation.endpoint);\n property(this, 'httpMethod', operation.http.method || 'POST');\n property(this, 'httpPath', operation.http.requestUri || '/');\n property(this, 'authtype', operation.authtype || '');\n property(\n this,\n 'endpointDiscoveryRequired',\n operation.endpointdiscovery ?\n (operation.endpointdiscovery.required ? 'REQUIRED' : 'OPTIONAL') :\n 'NULL'\n );\n\n // httpChecksum replaces usage of httpChecksumRequired, but some APIs\n // (s3control) still uses old trait.\n var httpChecksumRequired = operation.httpChecksumRequired\n || (operation.httpChecksum && operation.httpChecksum.requestChecksumRequired);\n property(this, 'httpChecksumRequired', httpChecksumRequired, false);\n\n memoizedProperty(this, 'input', function() {\n if (!operation.input) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.input, options);\n });\n\n memoizedProperty(this, 'output', function() {\n if (!operation.output) {\n return new Shape.create({type: 'structure'}, options);\n }\n return Shape.create(operation.output, options);\n });\n\n memoizedProperty(this, 'errors', function() {\n var list = [];\n if (!operation.errors) return null;\n\n for (var i = 0; i < operation.errors.length; i++) {\n list.push(Shape.create(operation.errors[i], options));\n }\n\n return list;\n });\n\n memoizedProperty(this, 'paginator', function() {\n return options.api.paginators[name];\n });\n\n if (options.documentation) {\n property(this, 'documentation', operation.documentation);\n property(this, 'documentationUrl', operation.documentationUrl);\n }\n\n // idempotentMembers only tracks top-level input shapes\n memoizedProperty(this, 'idempotentMembers', function() {\n var idempotentMembers = [];\n var input = self.input;\n var members = input.members;\n if (!input.members) {\n return idempotentMembers;\n }\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n continue;\n }\n if (members[name].isIdempotent === true) {\n idempotentMembers.push(name);\n }\n }\n return idempotentMembers;\n });\n\n memoizedProperty(this, 'hasEventOutput', function() {\n var output = self.output;\n return hasEventStream(output);\n });\n}\n\nfunction hasEventStream(topLevelShape) {\n var members = topLevelShape.members;\n var payload = topLevelShape.payload;\n\n if (!topLevelShape.members) {\n return false;\n }\n\n if (payload) {\n var payloadMember = members[payload];\n return payloadMember.isEventStream;\n }\n\n // check if any member is an event stream\n for (var name in members) {\n if (!members.hasOwnProperty(name)) {\n if (members[name].isEventStream === true) {\n return true;\n }\n }\n }\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = Operation;\n","module.exports = {\n //provide realtime clock for performance measurement\n now: function now() {\n if (typeof performance !== 'undefined' && typeof performance.now === 'function') {\n return performance.now();\n }\n return Date.now();\n }\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['iot'] = {};\nAWS.Iot = Service.defineService('iot', ['2015-05-28']);\nObject.defineProperty(apiLoader.services['iot'], '2015-05-28', {\n get: function get() {\n var model = require('../apis/iot-2015-05-28.min.json');\n model.paginators = require('../apis/iot-2015-05-28.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.Iot;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['applicationautoscaling'] = {};\nAWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']);\nObject.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', {\n get: function get() {\n var model = require('../apis/application-autoscaling-2016-02-06.min.json');\n model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ApplicationAutoScaling;\n","var util = require('./util');\nvar regionConfig = require('./region_config_data.json');\n\nfunction generateRegionPrefix(region) {\n if (!region) return null;\n var parts = region.split('-');\n if (parts.length < 3) return null;\n return parts.slice(0, parts.length - 2).join('-') + '-*';\n}\n\nfunction derivedKeys(service) {\n var region = service.config.region;\n var regionPrefix = generateRegionPrefix(region);\n var endpointPrefix = service.api.endpointPrefix;\n\n return [\n [region, endpointPrefix],\n [regionPrefix, endpointPrefix],\n [region, '*'],\n [regionPrefix, '*'],\n ['*', endpointPrefix],\n ['*', '*']\n ].map(function(item) {\n return item[0] && item[1] ? item.join('/') : null;\n });\n}\n\nfunction applyConfig(service, config) {\n util.each(config, function(key, value) {\n if (key === 'globalEndpoint') return;\n if (service.config[key] === undefined || service.config[key] === null) {\n service.config[key] = value;\n }\n });\n}\n\nfunction configureEndpoint(service) {\n var keys = derivedKeys(service);\n var useFipsEndpoint = service.config.useFipsEndpoint;\n var useDualstackEndpoint = service.config.useDualstackEndpoint;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!key) continue;\n\n var rules = useFipsEndpoint\n ? useDualstackEndpoint\n ? regionConfig.dualstackFipsRules\n : regionConfig.fipsRules\n : useDualstackEndpoint\n ? regionConfig.dualstackRules\n : regionConfig.rules;\n\n if (Object.prototype.hasOwnProperty.call(rules, key)) {\n var config = rules[key];\n if (typeof config === 'string') {\n config = regionConfig.patterns[config];\n }\n\n // set global endpoint\n service.isGlobalEndpoint = !!config.globalEndpoint;\n if (config.signingRegion) {\n service.signingRegion = config.signingRegion;\n }\n\n // signature version\n if (!config.signatureVersion) {\n // Note: config is a global object and should not be mutated here.\n // However, we are retaining this line for backwards compatibility.\n // The non-v4 signatureVersion will be set in a copied object below.\n config.signatureVersion = 'v4';\n }\n\n var useBearer = (service.api && service.api.signatureVersion) === 'bearer';\n\n // merge config\n applyConfig(service, Object.assign(\n {},\n config,\n { signatureVersion: useBearer ? 'bearer' : config.signatureVersion }\n ));\n return;\n }\n }\n}\n\nfunction getEndpointSuffix(region) {\n var regionRegexes = {\n '^(us|eu|ap|sa|ca|me)\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^cn\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com.cn',\n '^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$': 'amazonaws.com',\n '^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$': 'c2s.ic.gov',\n '^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$': 'sc2s.sgov.gov'\n };\n var defaultSuffix = 'amazonaws.com';\n var regexes = Object.keys(regionRegexes);\n for (var i = 0; i < regexes.length; i++) {\n var regionPattern = RegExp(regexes[i]);\n var dnsSuffix = regionRegexes[regexes[i]];\n if (regionPattern.test(region)) return dnsSuffix;\n }\n return defaultSuffix;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n configureEndpoint: configureEndpoint,\n getEndpointSuffix: getEndpointSuffix,\n};\n","var AWS = require('../core');\nvar Translator = require('./translator');\nvar DynamoDBSet = require('./set');\n\n/**\n * The document client simplifies working with items in Amazon DynamoDB\n * by abstracting away the notion of attribute values. This abstraction\n * annotates native JavaScript types supplied as input parameters, as well\n * as converts annotated response data to native JavaScript types.\n *\n * ## Marshalling Input and Unmarshalling Response Data\n *\n * The document client affords developers the use of native JavaScript types\n * instead of `AttributeValue`s to simplify the JavaScript development\n * experience with Amazon DynamoDB. JavaScript objects passed in as parameters\n * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB.\n * Responses from DynamoDB are unmarshalled into plain JavaScript objects\n * by the `DocumentClient`. The `DocumentClient`, does not accept\n * `AttributeValue`s in favor of native JavaScript types.\n *\n * | JavaScript Type | DynamoDB AttributeValue |\n * |:----------------------------------------------------------------------:|-------------------------|\n * | String | S |\n * | Number | N |\n * | Boolean | BOOL |\n * | null | NULL |\n * | Array | L |\n * | Object | M |\n * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B |\n *\n * ## Support for Sets\n *\n * The `DocumentClient` offers a convenient way to create sets from\n * JavaScript Arrays. The type of set is inferred from the first element\n * in the array. DynamoDB supports string, number, and binary sets. To\n * learn more about supported types see the\n * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html)\n * For more information see {AWS.DynamoDB.DocumentClient.createSet}\n *\n */\nAWS.DynamoDB.DocumentClient = AWS.util.inherit({\n\n /**\n * Creates a DynamoDB document client with a set of configuration options.\n *\n * @option options params [map] An optional map of parameters to bind to every\n * request sent by this service object.\n * @option options service [AWS.DynamoDB] An optional pre-configured instance\n * of the AWS.DynamoDB service object. This instance's config will be\n * copied to a new instance used by this client. You should not need to\n * retain a reference to the input object, and may destroy it or allow it\n * to be garbage collected.\n * @option options convertEmptyValues [Boolean] set to true if you would like\n * the document client to convert empty values (0-length strings, binary\n * buffers, and sets) to be converted to NULL types when persisting to\n * DynamoDB.\n * @option options wrapNumbers [Boolean] Set to true to return numbers as a\n * NumberValue object instead of converting them to native JavaScript numbers.\n * This allows for the safe round-trip transport of numbers of arbitrary size.\n * @see AWS.DynamoDB.constructor\n *\n */\n constructor: function DocumentClient(options) {\n var self = this;\n self.options = options || {};\n self.configure(self.options);\n },\n\n /**\n * @api private\n */\n configure: function configure(options) {\n var self = this;\n self.service = options.service;\n self.bindServiceObject(options);\n self.attrValue = options.attrValue =\n self.service.api.operations.putItem.input.members.Item.value.shape;\n },\n\n /**\n * @api private\n */\n bindServiceObject: function bindServiceObject(options) {\n var self = this;\n options = options || {};\n\n if (!self.service) {\n self.service = new AWS.DynamoDB(options);\n } else {\n var config = AWS.util.copy(self.service.config);\n self.service = new self.service.constructor.__super__(config);\n self.service.config.params =\n AWS.util.merge(self.service.config.params || {}, options.params);\n }\n },\n\n /**\n * @api private\n */\n makeServiceRequest: function(operation, params, callback) {\n var self = this;\n var request = self.service[operation](params);\n self.setupRequest(request);\n self.setupResponse(request);\n if (typeof callback === 'function') {\n request.send(callback);\n }\n return request;\n },\n\n /**\n * @api private\n */\n serviceClientOperationsMap: {\n batchGet: 'batchGetItem',\n batchWrite: 'batchWriteItem',\n delete: 'deleteItem',\n get: 'getItem',\n put: 'putItem',\n query: 'query',\n scan: 'scan',\n update: 'updateItem',\n transactGet: 'transactGetItems',\n transactWrite: 'transactWriteItems'\n },\n\n /**\n * Returns the attributes of one or more items from one or more tables\n * by delegating to `AWS.DynamoDB.batchGetItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchGetItem\n * @example Get items from multiple tables\n * var params = {\n * RequestItems: {\n * 'Table-1': {\n * Keys: [\n * {\n * HashKey: 'haskey',\n * NumberRangeKey: 1\n * }\n * ]\n * },\n * 'Table-2': {\n * Keys: [\n * { foo: 'bar' },\n * ]\n * }\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Puts or deletes multiple items in one or more tables by delegating\n * to `AWS.DynamoDB.batchWriteItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.batchWriteItem\n * @example Write to and delete from a table\n * var params = {\n * RequestItems: {\n * 'Table-1': [\n * {\n * DeleteRequest: {\n * Key: { HashKey: 'someKey' }\n * }\n * },\n * {\n * PutRequest: {\n * Item: {\n * HashKey: 'anotherKey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar' }\n * }\n * }\n * }\n * ]\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.batchWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n batchWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['batchWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Deletes a single item in a table by primary key by delegating to\n * `AWS.DynamoDB.deleteItem()`\n *\n * Supply the same parameters as {AWS.DynamoDB.deleteItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.deleteItem\n * @example Delete an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey',\n * NumberRangeKey: 1\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.delete(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n delete: function(params, callback) {\n var operation = this.serviceClientOperationsMap['delete'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns a set of attributes for the item with the given primary key\n * by delegating to `AWS.DynamoDB.getItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.getItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.getItem\n * @example Get an item from a table\n * var params = {\n * TableName : 'Table',\n * Key: {\n * HashKey: 'hashkey'\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.get(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n get: function(params, callback) {\n var operation = this.serviceClientOperationsMap['get'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a new item, or replaces an old item with a new item by\n * delegating to `AWS.DynamoDB.putItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.putItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.putItem\n * @example Create a new item in a table\n * var params = {\n * TableName : 'Table',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n put: function(params, callback) {\n var operation = this.serviceClientOperationsMap['put'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Edits an existing item's attributes, or adds a new item to the table if\n * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`.\n *\n * Supply the same parameters as {AWS.DynamoDB.updateItem} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.updateItem\n * @example Update an item with expressions\n * var params = {\n * TableName: 'Table',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.update(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n update: function(params, callback) {\n var operation = this.serviceClientOperationsMap['update'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Returns one or more items and item attributes by accessing every item\n * in a table or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.scan} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.scan\n * @example Scan the table with a filter expression\n * var params = {\n * TableName : 'Table',\n * FilterExpression : 'Year = :this_year',\n * ExpressionAttributeValues : {':this_year' : 2015}\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.scan(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n scan: function(params, callback) {\n var operation = this.serviceClientOperationsMap['scan'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Directly access items from a table by primary key or a secondary index.\n *\n * Supply the same parameters as {AWS.DynamoDB.query} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.query\n * @example Query an index\n * var params = {\n * TableName: 'Table',\n * IndexName: 'Index',\n * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey',\n * ExpressionAttributeValues: {\n * ':hkey': 'key',\n * ':rkey': 2015\n * }\n * };\n *\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * documentClient.query(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n query: function(params, callback) {\n var operation = this.serviceClientOperationsMap['query'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Synchronous write operation that groups up to 25 action requests.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactWriteItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactWriteItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Put: {\n * TableName : 'Table0',\n * Item: {\n * HashKey: 'haskey',\n * NumAttribute: 1,\n * BoolAttribute: true,\n * ListAttribute: [1, 'two', false],\n * MapAttribute: { foo: 'bar'},\n * NullAttribute: null\n * }\n * }\n * }, {\n * Update: {\n * TableName: 'Table1',\n * Key: { HashKey : 'hashkey' },\n * UpdateExpression: 'set #a = :x + :y',\n * ConditionExpression: '#a < :MAX',\n * ExpressionAttributeNames: {'#a' : 'Sum'},\n * ExpressionAttributeValues: {\n * ':x' : 20,\n * ':y' : 45,\n * ':MAX' : 100,\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactWrite(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactWrite: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactWrite'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Atomically retrieves multiple items from one or more tables (but not from indexes)\n * in a single account and region.\n *\n * Supply the same parameters as {AWS.DynamoDB.transactGetItems} with\n * `AttributeValue`s substituted by native JavaScript types.\n *\n * @see AWS.DynamoDB.transactGetItems\n * @example Get items from multiple tables\n * var params = {\n * TransactItems: [{\n * Get: {\n * TableName : 'Table0',\n * Key: {\n * HashKey: 'hashkey0'\n * }\n * }\n * }, {\n * Get: {\n * TableName : 'Table1',\n * Key: {\n * HashKey: 'hashkey1'\n * }\n * }\n * }]\n * };\n *\n * documentClient.transactGet(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n */\n transactGet: function(params, callback) {\n var operation = this.serviceClientOperationsMap['transactGet'];\n return this.makeServiceRequest(operation, params, callback);\n },\n\n /**\n * Creates a set of elements inferring the type of set from\n * the type of the first element. Amazon DynamoDB currently supports\n * the number sets, string sets, and binary sets. For more information\n * about DynamoDB data types see the documentation on the\n * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes).\n *\n * @param list [Array] Collection to represent your DynamoDB Set\n * @param options [map]\n * * **validate** [Boolean] set to true if you want to validate the type\n * of each element in the set. Defaults to `false`.\n * @example Creating a number set\n * var documentClient = new AWS.DynamoDB.DocumentClient();\n *\n * var params = {\n * Item: {\n * hashkey: 'hashkey'\n * numbers: documentClient.createSet([1, 2, 3]);\n * }\n * };\n *\n * documentClient.put(params, function(err, data) {\n * if (err) console.log(err);\n * else console.log(data);\n * });\n *\n */\n createSet: function(list, options) {\n options = options || {};\n return new DynamoDBSet(list, options);\n },\n\n /**\n * @api private\n */\n getTranslator: function() {\n return new Translator(this.options);\n },\n\n /**\n * @api private\n */\n setupRequest: function setupRequest(request) {\n var self = this;\n var translator = self.getTranslator();\n var operation = request.operation;\n var inputShape = request.service.api.operations[operation].input;\n request._events.validate.unshift(function(req) {\n req.rawParams = AWS.util.copy(req.params);\n req.params = translator.translateInput(req.rawParams, inputShape);\n });\n },\n\n /**\n * @api private\n */\n setupResponse: function setupResponse(request) {\n var self = this;\n var translator = self.getTranslator();\n var outputShape = self.service.api.operations[request.operation].output;\n request.on('extractData', function(response) {\n response.data = translator.translateOutput(response.data, outputShape);\n });\n\n var response = request.response;\n response.nextPage = function(cb) {\n var resp = this;\n var req = resp.request;\n var config;\n var service = req.service;\n var operation = req.operation;\n try {\n config = service.paginationConfig(operation, true);\n } catch (e) { resp.error = e; }\n\n if (!resp.hasNextPage()) {\n if (cb) cb(resp.error, null);\n else if (resp.error) throw resp.error;\n return null;\n }\n\n var params = AWS.util.copy(req.rawParams);\n if (!resp.nextPageTokens) {\n return cb ? cb(null, null) : null;\n } else {\n var inputTokens = config.inputToken;\n if (typeof inputTokens === 'string') inputTokens = [inputTokens];\n for (var i = 0; i < inputTokens.length; i++) {\n params[inputTokens[i]] = resp.nextPageTokens[i];\n }\n return self[operation](params, cb);\n }\n };\n }\n\n});\n\n/**\n * @api private\n */\nmodule.exports = AWS.DynamoDB.DocumentClient;\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\n'use strict';\n\nvar stringifyPrimitive = function(v) {\n switch (typeof v) {\n case 'string':\n return v;\n\n case 'boolean':\n return v ? 'true' : 'false';\n\n case 'number':\n return isFinite(v) ? v : '';\n\n default:\n return '';\n }\n};\n\nmodule.exports = function(obj, sep, eq, name) {\n sep = sep || '&';\n eq = eq || '=';\n if (obj === null) {\n obj = undefined;\n }\n\n if (typeof obj === 'object') {\n return map(objectKeys(obj), function(k) {\n var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;\n if (isArray(obj[k])) {\n return map(obj[k], function(v) {\n return ks + encodeURIComponent(stringifyPrimitive(v));\n }).join(sep);\n } else {\n return ks + encodeURIComponent(stringifyPrimitive(obj[k]));\n }\n }).join(sep);\n\n }\n\n if (!name) return '';\n return encodeURIComponent(stringifyPrimitive(name)) + eq +\n encodeURIComponent(stringifyPrimitive(obj));\n};\n\nvar isArray = Array.isArray || function (xs) {\n return Object.prototype.toString.call(xs) === '[object Array]';\n};\n\nfunction map (xs, f) {\n if (xs.map) return xs.map(f);\n var res = [];\n for (var i = 0; i < xs.length; i++) {\n res.push(f(xs[i], i));\n }\n return res;\n}\n\nvar objectKeys = Object.keys || function (obj) {\n var res = [];\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);\n }\n return res;\n};\n","var util = require('../core').util;\n\nfunction typeOf(data) {\n if (data === null && typeof data === 'object') {\n return 'null';\n } else if (data !== undefined && isBinary(data)) {\n return 'Binary';\n } else if (data !== undefined && data.constructor) {\n return data.wrapperName || util.typeName(data.constructor);\n } else if (data !== undefined && typeof data === 'object') {\n // this object is the result of Object.create(null), hence the absence of a\n // defined constructor\n return 'Object';\n } else {\n return 'undefined';\n }\n}\n\nfunction isBinary(data) {\n var types = [\n 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView',\n 'Int8Array', 'Uint8Array', 'Uint8ClampedArray',\n 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array',\n 'Float32Array', 'Float64Array'\n ];\n if (util.isNode()) {\n var Stream = util.stream.Stream;\n if (util.Buffer.isBuffer(data) || data instanceof Stream) {\n return true;\n }\n }\n\n for (var i = 0; i < types.length; i++) {\n if (data !== undefined && data.constructor) {\n if (util.isType(data, types[i])) return true;\n if (util.typeName(data.constructor) === types[i]) return true;\n }\n }\n\n return false;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n typeOf: typeOf,\n isBinary: isBinary\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ec2'] = {};\nAWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15*', '2016-11-15']);\nrequire('../lib/services/ec2');\nObject.defineProperty(apiLoader.services['ec2'], '2016-11-15', {\n get: function get() {\n var model = require('../apis/ec2-2016-11-15.min.json');\n model.paginators = require('../apis/ec2-2016-11-15.paginators.json').pagination;\n model.waiters = require('../apis/ec2-2016-11-15.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.EC2;\n","var Int64 = require('./int64').Int64;\n\nvar splitMessage = require('./split-message').splitMessage;\n\nvar BOOLEAN_TAG = 'boolean';\nvar BYTE_TAG = 'byte';\nvar SHORT_TAG = 'short';\nvar INT_TAG = 'integer';\nvar LONG_TAG = 'long';\nvar BINARY_TAG = 'binary';\nvar STRING_TAG = 'string';\nvar TIMESTAMP_TAG = 'timestamp';\nvar UUID_TAG = 'uuid';\n\n/**\n * @api private\n *\n * @param {Buffer} headers\n */\nfunction parseHeaders(headers) {\n var out = {};\n var position = 0;\n while (position < headers.length) {\n var nameLength = headers.readUInt8(position++);\n var name = headers.slice(position, position + nameLength).toString();\n position += nameLength;\n switch (headers.readUInt8(position++)) {\n case 0 /* boolTrue */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: true\n };\n break;\n case 1 /* boolFalse */:\n out[name] = {\n type: BOOLEAN_TAG,\n value: false\n };\n break;\n case 2 /* byte */:\n out[name] = {\n type: BYTE_TAG,\n value: headers.readInt8(position++)\n };\n break;\n case 3 /* short */:\n out[name] = {\n type: SHORT_TAG,\n value: headers.readInt16BE(position)\n };\n position += 2;\n break;\n case 4 /* integer */:\n out[name] = {\n type: INT_TAG,\n value: headers.readInt32BE(position)\n };\n position += 4;\n break;\n case 5 /* long */:\n out[name] = {\n type: LONG_TAG,\n value: new Int64(headers.slice(position, position + 8))\n };\n position += 8;\n break;\n case 6 /* byteArray */:\n var binaryLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: BINARY_TAG,\n value: headers.slice(position, position + binaryLength)\n };\n position += binaryLength;\n break;\n case 7 /* string */:\n var stringLength = headers.readUInt16BE(position);\n position += 2;\n out[name] = {\n type: STRING_TAG,\n value: headers.slice(\n position,\n position + stringLength\n ).toString()\n };\n position += stringLength;\n break;\n case 8 /* timestamp */:\n out[name] = {\n type: TIMESTAMP_TAG,\n value: new Date(\n new Int64(headers.slice(position, position + 8))\n .valueOf()\n )\n };\n position += 8;\n break;\n case 9 /* uuid */:\n var uuidChars = headers.slice(position, position + 16)\n .toString('hex');\n position += 16;\n out[name] = {\n type: UUID_TAG,\n value: uuidChars.substr(0, 8) + '-' +\n uuidChars.substr(8, 4) + '-' +\n uuidChars.substr(12, 4) + '-' +\n uuidChars.substr(16, 4) + '-' +\n uuidChars.substr(20)\n };\n break;\n default:\n throw new Error('Unrecognized header type tag');\n }\n }\n return out;\n}\n\nfunction parseMessage(message) {\n var parsed = splitMessage(message);\n return { headers: parseHeaders(parsed.headers), body: parsed.body };\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n parseMessage: parseMessage\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elastictranscoder'] = {};\nAWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']);\nObject.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', {\n get: function get() {\n var model = require('../apis/elastictranscoder-2012-09-25.min.json');\n model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination;\n model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticTranscoder;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['cur'] = {};\nAWS.CUR = Service.defineService('cur', ['2017-01-06']);\nObject.defineProperty(apiLoader.services['cur'], '2017-01-06', {\n get: function get() {\n var model = require('../apis/cur-2017-01-06.min.json');\n model.paginators = require('../apis/cur-2017-01-06.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CUR;\n","var Hmac = require('./browserHmac');\nvar Md5 = require('./browserMd5');\nvar Sha1 = require('./browserSha1');\nvar Sha256 = require('./browserSha256');\n\n/**\n * @api private\n */\nmodule.exports = exports = {\n createHash: function createHash(alg) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Md5();\n } else if (alg === 'sha256') {\n return new Sha256();\n } else if (alg === 'sha1') {\n return new Sha1();\n }\n\n throw new Error('Hash algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createHmac: function createHmac(alg, key) {\n alg = alg.toLowerCase();\n if (alg === 'md5') {\n return new Hmac(Md5, key);\n } else if (alg === 'sha256') {\n return new Hmac(Sha256, key);\n } else if (alg === 'sha1') {\n return new Hmac(Sha1, key);\n }\n\n throw new Error('HMAC algorithm ' + alg + ' is not supported in the browser SDK');\n },\n createSign: function() {\n throw new Error('createSign is not implemented in the browser');\n }\n };\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['marketplacecommerceanalytics'] = {};\nAWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']);\nObject.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', {\n get: function get() {\n var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json');\n model.paginators = require('../apis/marketplacecommerceanalytics-2015-07-01.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.MarketplaceCommerceAnalytics;\n","var AWS = require('../core');\nvar rdsutil = require('./rdsutil');\nrequire('../rds/signer');\n /**\n * @api private\n */\n var crossRegionOperations = ['copyDBSnapshot', 'createDBInstanceReadReplica', 'createDBCluster', 'copyDBClusterSnapshot', 'startDBInstanceAutomatedBackupsReplication'];\n\n AWS.util.update(AWS.RDS.prototype, {\n /**\n * @api private\n */\n setupRequestListeners: function setupRequestListeners(request) {\n rdsutil.setupRequestListeners(this, request, crossRegionOperations);\n },\n });\n","var Collection = require('./collection');\nvar Operation = require('./operation');\nvar Shape = require('./shape');\nvar Paginator = require('./paginator');\nvar ResourceWaiter = require('./resource_waiter');\nvar metadata = require('../../apis/metadata.json');\n\nvar util = require('../util');\nvar property = util.property;\nvar memoizedProperty = util.memoizedProperty;\n\nfunction Api(api, options) {\n var self = this;\n api = api || {};\n options = options || {};\n options.api = this;\n\n api.metadata = api.metadata || {};\n\n var serviceIdentifier = options.serviceIdentifier;\n delete options.serviceIdentifier;\n\n property(this, 'isApi', true, false);\n property(this, 'apiVersion', api.metadata.apiVersion);\n property(this, 'endpointPrefix', api.metadata.endpointPrefix);\n property(this, 'signingName', api.metadata.signingName);\n property(this, 'globalEndpoint', api.metadata.globalEndpoint);\n property(this, 'signatureVersion', api.metadata.signatureVersion);\n property(this, 'jsonVersion', api.metadata.jsonVersion);\n property(this, 'targetPrefix', api.metadata.targetPrefix);\n property(this, 'protocol', api.metadata.protocol);\n property(this, 'timestampFormat', api.metadata.timestampFormat);\n property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace);\n property(this, 'abbreviation', api.metadata.serviceAbbreviation);\n property(this, 'fullName', api.metadata.serviceFullName);\n property(this, 'serviceId', api.metadata.serviceId);\n if (serviceIdentifier && metadata[serviceIdentifier]) {\n property(this, 'xmlNoDefaultLists', metadata[serviceIdentifier].xmlNoDefaultLists, false);\n }\n\n memoizedProperty(this, 'className', function() {\n var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName;\n if (!name) return null;\n\n name = name.replace(/^Amazon|AWS\\s*|\\(.*|\\s+|\\W+/g, '');\n if (name === 'ElasticLoadBalancing') name = 'ELB';\n return name;\n });\n\n function addEndpointOperation(name, operation) {\n if (operation.endpointoperation === true) {\n property(self, 'endpointOperation', util.string.lowerFirst(name));\n }\n if (operation.endpointdiscovery && !self.hasRequiredEndpointDiscovery) {\n property(\n self,\n 'hasRequiredEndpointDiscovery',\n operation.endpointdiscovery.required === true\n );\n }\n }\n\n property(this, 'operations', new Collection(api.operations, options, function(name, operation) {\n return new Operation(name, operation, options);\n }, util.string.lowerFirst, addEndpointOperation));\n\n property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) {\n return Shape.create(shape, options);\n }));\n\n property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) {\n return new Paginator(name, paginator, options);\n }));\n\n property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) {\n return new ResourceWaiter(name, waiter, options);\n }, util.string.lowerFirst));\n\n if (options.documentation) {\n property(this, 'documentation', api.documentation);\n property(this, 'documentationUrl', api.documentationUrl);\n }\n property(this, 'awsQueryCompatible', api.metadata.awsQueryCompatible);\n}\n\n/**\n * @api private\n */\nmodule.exports = Api;\n","/**\n * Takes in a buffer of event messages and splits them into individual messages.\n * @param {Buffer} buffer\n * @api private\n */\nfunction eventMessageChunker(buffer) {\n /** @type Buffer[] */\n var messages = [];\n var offset = 0;\n\n while (offset < buffer.length) {\n var totalLength = buffer.readInt32BE(offset);\n\n // create new buffer for individual message (shares memory with original)\n var message = buffer.slice(offset, totalLength + offset);\n // increment offset to it starts at the next message\n offset += totalLength;\n\n messages.push(message);\n }\n\n return messages;\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n eventMessageChunker: eventMessageChunker\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['codedeploy'] = {};\nAWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']);\nObject.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', {\n get: function get() {\n var model = require('../apis/codedeploy-2014-10-06.min.json');\n model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination;\n model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.CodeDeploy;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sts'] = {};\nAWS.STS = Service.defineService('sts', ['2011-06-15']);\nrequire('../lib/services/sts');\nObject.defineProperty(apiLoader.services['sts'], '2011-06-15', {\n get: function get() {\n var model = require('../apis/sts-2011-06-15.min.json');\n model.paginators = require('../apis/sts-2011-06-15.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.STS;\n","var AWS = require('./core');\n\n/**\n * Represents your AWS security credentials, specifically the\n * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}.\n * Creating a `Credentials` object allows you to pass around your\n * security information to configuration and service objects.\n *\n * Note that this class typically does not need to be constructed manually,\n * as the {AWS.Config} and {AWS.Service} classes both accept simple\n * options hashes with the three keys. These structures will be converted\n * into Credentials objects automatically.\n *\n * ## Expiring and Refreshing Credentials\n *\n * Occasionally credentials can expire in the middle of a long-running\n * application. In this case, the SDK will automatically attempt to\n * refresh the credentials from the storage location if the Credentials\n * class implements the {refresh} method.\n *\n * If you are implementing a credential storage location, you\n * will want to create a subclass of the `Credentials` class and\n * override the {refresh} method. This method allows credentials to be\n * retrieved from the backing store, be it a file system, database, or\n * some network storage. The method should reset the credential attributes\n * on the object.\n *\n * @!attribute expired\n * @return [Boolean] whether the credentials have been expired and\n * require a refresh. Used in conjunction with {expireTime}.\n * @!attribute expireTime\n * @return [Date] a time when credentials should be considered expired. Used\n * in conjunction with {expired}.\n * @!attribute accessKeyId\n * @return [String] the AWS access key ID\n * @!attribute secretAccessKey\n * @return [String] the AWS secret access key\n * @!attribute sessionToken\n * @return [String] an optional AWS session token\n */\nAWS.Credentials = AWS.util.inherit({\n /**\n * A credentials object can be created using positional arguments or an options\n * hash.\n *\n * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null)\n * Creates a Credentials object with a given set of credential information\n * as positional arguments.\n * @param accessKeyId [String] the AWS access key ID\n * @param secretAccessKey [String] the AWS secret access key\n * @param sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials('akid', 'secret', 'session');\n * @overload AWS.Credentials(options)\n * Creates a Credentials object with a given set of credential information\n * as an options hash.\n * @option options accessKeyId [String] the AWS access key ID\n * @option options secretAccessKey [String] the AWS secret access key\n * @option options sessionToken [String] the optional AWS session token\n * @example Create a credentials object with AWS credentials\n * var creds = new AWS.Credentials({\n * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session'\n * });\n */\n constructor: function Credentials() {\n // hide secretAccessKey from being displayed with util.inspect\n AWS.util.hideProperties(this, ['secretAccessKey']);\n\n this.expired = false;\n this.expireTime = null;\n this.refreshCallbacks = [];\n if (arguments.length === 1 && typeof arguments[0] === 'object') {\n var creds = arguments[0].credentials || arguments[0];\n this.accessKeyId = creds.accessKeyId;\n this.secretAccessKey = creds.secretAccessKey;\n this.sessionToken = creds.sessionToken;\n } else {\n this.accessKeyId = arguments[0];\n this.secretAccessKey = arguments[1];\n this.sessionToken = arguments[2];\n }\n },\n\n /**\n * @return [Integer] the number of seconds before {expireTime} during which\n * the credentials will be considered expired.\n */\n expiryWindow: 15,\n\n /**\n * @return [Boolean] whether the credentials object should call {refresh}\n * @note Subclasses should override this method to provide custom refresh\n * logic.\n */\n needsRefresh: function needsRefresh() {\n var currentTime = AWS.util.date.getDate().getTime();\n var adjustedTime = new Date(currentTime + this.expiryWindow * 1000);\n\n if (this.expireTime && adjustedTime > this.expireTime) {\n return true;\n } else {\n return this.expired || !this.accessKeyId || !this.secretAccessKey;\n }\n },\n\n /**\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means either credentials\n * do not need to be refreshed or refreshed credentials information has\n * been loaded into the object (as the `accessKeyId`, `secretAccessKey`,\n * and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n */\n get: function get(callback) {\n var self = this;\n if (this.needsRefresh()) {\n this.refresh(function(err) {\n if (!err) self.expired = false; // reset expired flag\n if (callback) callback(err);\n });\n } else if (callback) {\n callback();\n }\n },\n\n /**\n * @!method getPromise()\n * Returns a 'thenable' promise.\n * Gets the existing credentials, refreshing them if they are not yet loaded\n * or have expired. Users should call this method before using {refresh},\n * as this will not attempt to reload credentials when they are already\n * loaded into the object.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means either credentials do not need to be refreshed or refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `get` call.\n * @example Calling the `getPromise` method.\n * var promise = credProvider.getPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * @!method refreshPromise()\n * Returns a 'thenable' promise.\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * Two callbacks can be provided to the `then` method on the returned promise.\n * The first callback will be called if the promise is fulfilled, and the second\n * callback will be called if the promise is rejected.\n * @callback fulfilledCallback function()\n * Called if the promise is fulfilled. When this callback is called, it\n * means refreshed credentials information has been loaded into the object\n * (as the `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @callback rejectedCallback function(err)\n * Called if the promise is rejected.\n * @param err [Error] if an error occurred, this value will be filled\n * @return [Promise] A promise that represents the state of the `refresh` call.\n * @example Calling the `refreshPromise` method.\n * var promise = credProvider.refreshPromise();\n * promise.then(function() { ... }, function(err) { ... });\n */\n\n /**\n * Refreshes the credentials. Users should call {get} before attempting\n * to forcibly refresh credentials.\n *\n * @callback callback function(err)\n * When this callback is called with no error, it means refreshed\n * credentials information has been loaded into the object (as the\n * `accessKeyId`, `secretAccessKey`, and `sessionToken` properties).\n * @param err [Error] if an error occurred, this value will be filled\n * @note Subclasses should override this class to reset the\n * {accessKeyId}, {secretAccessKey} and optional {sessionToken}\n * on the credentials object and then call the callback with\n * any error information.\n * @see get\n */\n refresh: function refresh(callback) {\n this.expired = false;\n callback();\n },\n\n /**\n * @api private\n * @param callback\n */\n coalesceRefresh: function coalesceRefresh(callback, sync) {\n var self = this;\n if (self.refreshCallbacks.push(callback) === 1) {\n self.load(function onLoad(err) {\n AWS.util.arrayEach(self.refreshCallbacks, function(callback) {\n if (sync) {\n callback(err);\n } else {\n // callback could throw, so defer to ensure all callbacks are notified\n AWS.util.defer(function () {\n callback(err);\n });\n }\n });\n self.refreshCallbacks.length = 0;\n });\n }\n },\n\n /**\n * @api private\n * @param callback\n */\n load: function load(callback) {\n callback();\n }\n});\n\n/**\n * @api private\n */\nAWS.Credentials.addPromisesToClass = function addPromisesToClass(PromiseDependency) {\n this.prototype.getPromise = AWS.util.promisifyMethod('get', PromiseDependency);\n this.prototype.refreshPromise = AWS.util.promisifyMethod('refresh', PromiseDependency);\n};\n\n/**\n * @api private\n */\nAWS.Credentials.deletePromisesFromClass = function deletePromisesFromClass() {\n delete this.prototype.getPromise;\n delete this.prototype.refreshPromise;\n};\n\nAWS.util.addPromises(AWS.Credentials);\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['sqs'] = {};\nAWS.SQS = Service.defineService('sqs', ['2012-11-05']);\nrequire('../lib/services/sqs');\nObject.defineProperty(apiLoader.services['sqs'], '2012-11-05', {\n get: function get() {\n var model = require('../apis/sqs-2012-11-05.min.json');\n model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SQS;\n","function AcceptorStateMachine(states, state) {\n this.currentState = state || null;\n this.states = states || {};\n}\n\nAcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) {\n if (typeof finalState === 'function') {\n inputError = bindObject; bindObject = done;\n done = finalState; finalState = null;\n }\n\n var self = this;\n var state = self.states[self.currentState];\n state.fn.call(bindObject || self, inputError, function(err) {\n if (err) {\n if (state.fail) self.currentState = state.fail;\n else return done ? done.call(bindObject, err) : null;\n } else {\n if (state.accept) self.currentState = state.accept;\n else return done ? done.call(bindObject) : null;\n }\n if (self.currentState === finalState) {\n return done ? done.call(bindObject, err) : null;\n }\n\n self.runTo(finalState, done, bindObject, err);\n });\n};\n\nAcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) {\n if (typeof acceptState === 'function') {\n fn = acceptState; acceptState = null; failState = null;\n } else if (typeof failState === 'function') {\n fn = failState; failState = null;\n }\n\n if (!this.currentState) this.currentState = name;\n this.states[name] = { accept: acceptState, fail: failState, fn: fn };\n return this;\n};\n\n/**\n * @api private\n */\nmodule.exports = AcceptorStateMachine;\n","var util = require('../util');\nvar Rest = require('./rest');\nvar Json = require('./json');\nvar JsonBuilder = require('../json/builder');\nvar JsonParser = require('../json/parser');\n\nvar METHODS_WITHOUT_BODY = ['GET', 'HEAD', 'DELETE'];\n\nfunction unsetContentLength(req) {\n var payloadMember = util.getRequestPayloadShape(req);\n if (\n payloadMember === undefined &&\n METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) >= 0\n ) {\n delete req.httpRequest.headers['Content-Length'];\n }\n}\n\nfunction populateBody(req) {\n var builder = new JsonBuilder();\n var input = req.service.api.operations[req.operation].input;\n\n if (input.payload) {\n var params = {};\n var payloadShape = input.members[input.payload];\n params = req.params[input.payload];\n\n if (payloadShape.type === 'structure') {\n req.httpRequest.body = builder.build(params || {}, payloadShape);\n applyContentTypeHeader(req);\n } else if (params !== undefined) {\n // non-JSON payload\n req.httpRequest.body = params;\n if (payloadShape.type === 'binary' || payloadShape.isStreaming) {\n applyContentTypeHeader(req, true);\n }\n }\n } else {\n req.httpRequest.body = builder.build(req.params, input);\n applyContentTypeHeader(req);\n }\n}\n\nfunction applyContentTypeHeader(req, isBinary) {\n if (!req.httpRequest.headers['Content-Type']) {\n var type = isBinary ? 'binary/octet-stream' : 'application/json';\n req.httpRequest.headers['Content-Type'] = type;\n }\n}\n\nfunction buildRequest(req) {\n Rest.buildRequest(req);\n\n // never send body payload on GET/HEAD/DELETE\n if (METHODS_WITHOUT_BODY.indexOf(req.httpRequest.method) < 0) {\n populateBody(req);\n }\n}\n\nfunction extractError(resp) {\n Json.extractError(resp);\n}\n\nfunction extractData(resp) {\n Rest.extractData(resp);\n\n var req = resp.request;\n var operation = req.service.api.operations[req.operation];\n var rules = req.service.api.operations[req.operation].output || {};\n var parser;\n var hasEventOutput = operation.hasEventOutput;\n\n if (rules.payload) {\n var payloadMember = rules.members[rules.payload];\n var body = resp.httpResponse.body;\n if (payloadMember.isEventStream) {\n parser = new JsonParser();\n resp.data[payload] = util.createEventStream(\n AWS.HttpClient.streamsApiVersion === 2 ? resp.httpResponse.stream : body,\n parser,\n payloadMember\n );\n } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') {\n var parser = new JsonParser();\n resp.data[rules.payload] = parser.parse(body, payloadMember);\n } else if (payloadMember.type === 'binary' || payloadMember.isStreaming) {\n resp.data[rules.payload] = body;\n } else {\n resp.data[rules.payload] = payloadMember.toType(body);\n }\n } else {\n var data = resp.data;\n Json.extractData(resp);\n resp.data = util.merge(data, resp.data);\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = {\n buildRequest: buildRequest,\n extractError: extractError,\n extractData: extractData,\n unsetContentLength: unsetContentLength\n};\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticache'] = {};\nAWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']);\nObject.defineProperty(apiLoader.services['elasticache'], '2015-02-02', {\n get: function get() {\n var model = require('../apis/elasticache-2015-02-02.min.json');\n model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination;\n model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElastiCache;\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['elasticbeanstalk'] = {};\nAWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/elasticbeanstalk-2010-12-01.min.json');\n model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/elasticbeanstalk-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.ElasticBeanstalk;\n","var hashUtils = require('./browserHashUtils');\n\n/**\n * @api private\n */\nfunction Hmac(hashCtor, secret) {\n this.hash = new hashCtor();\n this.outer = new hashCtor();\n\n var inner = bufferFromSecret(hashCtor, secret);\n var outer = new Uint8Array(hashCtor.BLOCK_SIZE);\n outer.set(inner);\n\n for (var i = 0; i < hashCtor.BLOCK_SIZE; i++) {\n inner[i] ^= 0x36;\n outer[i] ^= 0x5c;\n }\n\n this.hash.update(inner);\n this.outer.update(outer);\n\n // Zero out the copied key buffer.\n for (var i = 0; i < inner.byteLength; i++) {\n inner[i] = 0;\n }\n}\n\n/**\n * @api private\n */\nmodule.exports = exports = Hmac;\n\nHmac.prototype.update = function (toHash) {\n if (hashUtils.isEmptyData(toHash) || this.error) {\n return this;\n }\n\n try {\n this.hash.update(hashUtils.convertToBuffer(toHash));\n } catch (e) {\n this.error = e;\n }\n\n return this;\n};\n\nHmac.prototype.digest = function (encoding) {\n if (!this.outer.finished) {\n this.outer.update(this.hash.digest());\n }\n\n return this.outer.digest(encoding);\n};\n\nfunction bufferFromSecret(hashCtor, secret) {\n var input = hashUtils.convertToBuffer(secret);\n if (input.byteLength > hashCtor.BLOCK_SIZE) {\n var bufferHash = new hashCtor;\n bufferHash.update(input);\n input = bufferHash.digest();\n }\n var buffer = new Uint8Array(hashCtor.BLOCK_SIZE);\n buffer.set(input);\n return buffer;\n}\n","require('../lib/node_loader');\nvar AWS = require('../lib/core');\nvar Service = AWS.Service;\nvar apiLoader = AWS.apiLoader;\n\napiLoader.services['ses'] = {};\nAWS.SES = Service.defineService('ses', ['2010-12-01']);\nObject.defineProperty(apiLoader.services['ses'], '2010-12-01', {\n get: function get() {\n var model = require('../apis/email-2010-12-01.min.json');\n model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination;\n model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters;\n return model;\n },\n enumerable: true,\n configurable: true\n});\n\nmodule.exports = AWS.SES;\n"],"sourceRoot":""}