diff --git a/dist/index.js b/dist/index.js index 907fb3b..d5a17c5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -39204,202 +39204,176 @@ function configWithProxy(config) { async function run() { - try { - // Get input values - const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE'); - const openaiToken = core.getInput('OPENAI_TOKEN'); - const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT'); - const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX'); - const githubToken = core.getInput('GITHUB_TOKEN'); - const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL; - const promptTemplate = core.getInput('PROMPT_TEMPLATE'); - const codeTemplate = core.getInput('CODE_TEMPLATE'); - const jokeTemplate = core.getInput('JOKE_TEMPLATE'); - const maxCodeLength = core.getInput('MAX_CODE_LENGTH'); - const answerTemplate = core.getInput('ANSWER_TEMPLATE'); - const giteaToken = core.getInput('GITHUB_TOKEN'); - const sourceAt = core.getInput('SOURCE_AT'); + try { + // Get input values + const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE'); + const openaiToken = core.getInput('OPENAI_TOKEN'); + const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT'); + const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX'); + const githubToken = core.getInput('GITHUB_TOKEN'); + const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL; + const promptTemplate = core.getInput('PROMPT_TEMPLATE'); + const maxCodeLength = core.getInput('MAX_CODE_LENGTH'); + const answerTemplate = core.getInput('ANSWER_TEMPLATE'); + const giteaToken = core.getInput('GITHUB_TOKEN'); + const sourceAt = core.getInput('SOURCE_AT'); - core.debug(`programmingLanguage: ${programmingLanguage}`); - core.debug(`openaiToken length: ${openaiToken.length}`); - core.debug(`fullReviewComment: ${fullReviewComment}`); - core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`); - core.debug(`githubToken length: ${githubToken.length}`); - core.debug(`githubBaseURL: ${githubBaseURL}`); - core.debug(`promptTemplate: ${promptTemplate}`); - core.debug(`codeTemplate: ${codeTemplate}`); - core.debug(`jokeTemplate: ${jokeTemplate}`); - core.debug(`maxCodeLength: ${maxCodeLength}`); - core.debug(`answerTemplate: ${answerTemplate}`); - core.debug(`SourceAt: ${sourceAt}`); + core.debug(`programmingLanguage: ${programmingLanguage}`); + core.debug(`openaiToken length: ${openaiToken.length}`); + core.debug(`fullReviewComment: ${fullReviewComment}`); + core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`); + core.debug(`githubToken length: ${githubToken.length}`); + core.debug(`githubBaseURL: ${githubBaseURL}`); + core.debug(`promptTemplate: ${promptTemplate}`); + core.debug(`maxCodeLength: ${maxCodeLength}`); + core.debug(`answerTemplate: ${answerTemplate}`); + core.debug(`SourceAt: ${sourceAt}`); - // Get information about the pull request review - const comment = github.context.payload.comment; - const repoName = github.context.payload.repository.name; - const repoOwner = github.context.payload.repository.owner.login; - const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event + // Get information about the pull request review + const comment = github.context.payload.comment; + const repoName = github.context.payload.repository.name; + const repoOwner = github.context.payload.repository.owner.login; + const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event - // Get the code to analyze from the review comment - var content = comment && comment.body || ''; - var completeContent = comment && comment.body || ''; - if(sourceAt === 'github') { + // Get the code to analyze from the review comment + var content = comment && comment.body || ''; - const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`; - console.log(`diff url: ${url}`); - var response = await axios.get(url, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/vnd.github.diff' - } - }); - const code = response.data; - core.debug(`diff code: ${code}`); - const files = parsePullRequestDiff(code); - core.debug(`diff files: ${files}`); + if(sourceAt === 'github') { - if (!content || content == fullReviewComment) { - // Extract the code from the pull request content - content = code; - } else { - content = content.substring(reviewCommentPrefix.length); - content = content.replace('${code}', code); - const fileNames = findFileNames(content); - core.debug(`found files name in commment: ${fileNames}`); - for (const fileName of fileNames) { - for (const key of Object.keys(files)) { - if (key.includes(fileName)) { - core.debug(`replace \${file:${fileName}} with ${key}'s diff`); - content = content.replace(`\${file:${fileName}}`, files[key]); - break; - } - } - } - } - content = content.substring(0, maxCodeLength); - } - else if(sourceAt === 'gitea') - { - const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`; - console.log(`diff url: ${url}`); - var response = await axios.get(url, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/vnd.github.diff' - } - }); - const code = response.data; - core.debug(`diff code: ${code}`); - const files = parsePullRequestDiff(code); - core.debug(`diff files: ${files}`); + const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`; + console.log(`diff url: ${url}`); + var response = await axios.get(url, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/vnd.github.diff' + } + }); + const code = response.data; + core.debug(`diff code: ${code}`); + const files = parsePullRequestDiff(code); + core.debug(`diff files: ${files}`); - if (!content || content == fullReviewComment) { - // Extract the code from the pull request content - content = code; - } else { - content = content.substring(reviewCommentPrefix.length); - content = content.replace('${code}', code); - const fileNames = findFileNames(content); - core.debug(`found files name in commment: ${fileNames}`); - for (const fileName of fileNames) { - for (const key of Object.keys(files)) { - if (key.includes(fileName)) { - core.debug(`replace \${file:${fileName}} with ${key}'s diff`); - content = content.replace(`\${file:${fileName}}`, files[key]); - break; - } - } - } - } - content = content.substring(0, maxCodeLength); - } - // Determine the programming language if it was not provided - if (programmingLanguage == 'auto') { - const detectedLanguage = detect(code); - core.debug(`Detected programming language: ${detectedLanguage}`); - programmingLanguage = detectedLanguage; - } - - var messageReview = promptTemplate.replace('${code}', content); - var messageJoke = jokeTemplate.replace('${code}', content); - var reviewInputMessages = [{ - role: "system", - content: `You are a master of programming language ${programmingLanguage}` - }, { - role: "user", - content: messageReview - }]; - - var jokeInputMessages = [{ - role: "system", - content: `You are a master of programming language ${programmingLanguage}` - }, { - role: "user", - content: messageJoke - }]; - - core.debug(`content: ${content}`); - - // Call the OpenAI ChatGPT API to analyze the code - responseReview = await axios.post('https://api.openai.com/v1/chat/completions', { - "model": "gpt-3.5-turbo", - "messages": reviewInputMessages - }, configWithProxy({ - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${openaiToken}` - } - })); - - // Call the OpenAI ChatGPT API to analyze the code - responseJoke = await axios.post('https://api.openai.com/v1/chat/completions', { - "model": "gpt-3.5-turbo", - "messages": jokeInputMessages - }, configWithProxy({ - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${openaiToken}` - } - })); - - - const answer = response.data.choices[0].message.content + '/n/n' + '### Funny Joke about this PR:' +'/n/n' + responseJoke.data.choices[0].message.content; - core.debug(`openai response: ${answer}`); - - if(sourceAt === 'github') { - // Reply to the review comment with the OpenAI response - const octokit = new github.getOctokit(githubToken, { - baseUrl: githubBaseURL - }); - - await octokit.rest.issues.createComment({ - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - body: answerTemplate.replace('${answer}', answer) - - }); - } else if (sourceAt === 'gitea') - { - - - // Make a POST request to create a comment on a pull request - const comment = answerTemplate.replace('${answer}', answer); - const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`; - const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` }; - const data = { 'body': `${comment}`}; - core.debug(`url: ${url}`); - core.debug(`githubToken: ${githubToken}`); - core.debug(`data.body: ${data.body}`); - var response = await axios.post(url, data, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/json' + if (!content || content == fullReviewComment) { + // Extract the code from the pull request content + content = promptTemplate.replace('${code}', code); + } else { + content = content.substring(reviewCommentPrefix.length); + content = content.replace('${code}', code); + const fileNames = findFileNames(content); + core.debug(`found files name in commment: ${fileNames}`); + for (const fileName of fileNames) { + for (const key of Object.keys(files)) { + if (key.includes(fileName)) { + core.debug(`replace \${file:${fileName}} with ${key}'s diff`); + content = content.replace(`\${file:${fileName}}`, files[key]); + break; + } + } + } } - }); + content = content.substring(0, maxCodeLength); + } + else if(sourceAt === 'gitea') + { + const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`; + console.log(`diff url: ${url}`); + var response = await axios.get(url, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/vnd.github.diff' + } + }); + const code = response.data; + core.debug(`diff code: ${code}`); + const files = parsePullRequestDiff(code); + core.debug(`diff files: ${files}`); + + if (!content || content == fullReviewComment) { + // Extract the code from the pull request content + content = promptTemplate.replace('${code}', code); + } else { + content = content.substring(reviewCommentPrefix.length); + content = content.replace('${code}', code); + const fileNames = findFileNames(content); + core.debug(`found files name in commment: ${fileNames}`); + for (const fileName of fileNames) { + for (const key of Object.keys(files)) { + if (key.includes(fileName)) { + core.debug(`replace \${file:${fileName}} with ${key}'s diff`); + content = content.replace(`\${file:${fileName}}`, files[key]); + break; + } + } + } + } + content = content.substring(0, maxCodeLength); + } + // Determine the programming language if it was not provided + if (programmingLanguage == 'auto') { + const detectedLanguage = detect(code); + core.debug(`Detected programming language: ${detectedLanguage}`); + programmingLanguage = detectedLanguage; + } + + var messages = [{ + role: "system", + content: `You are a master of programming language ${programmingLanguage}` + }, { + role: "user", + content: content + }]; + + core.debug(`content: ${content}`); + + // Call the OpenAI ChatGPT API to analyze the code + response = await axios.post('https://api.openai.com/v1/chat/completions', { + "model": "gpt-3.5-turbo", + "messages": messages + }, configWithProxy({ + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${openaiToken}` + } + })); + + const answer = response.data.choices[0].message.content; + core.debug(`openai response: ${answer}`); + + if(sourceAt === 'github') { + // Reply to the review comment with the OpenAI response + const octokit = new github.getOctokit(githubToken, { + baseUrl: githubBaseURL + }); + + await octokit.rest.issues.createComment({ + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + body: answerTemplate.replace('${answer}', answer) + + }); + } else if (sourceAt === 'gitea') + { + + + // Make a POST request to create a comment on a pull request + const comment = answerTemplate.replace('${answer}', answer); + const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`; + const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` }; + const data = { 'body': `${comment}`}; + core.debug(`url: ${url}`); + core.debug(`githubToken: ${githubToken}`); + core.debug(`data.body: ${data.body}`); + var response = await axios.post(url, data, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/json' + } + }); + } + } catch (error) { + core.setFailed(error.message); } - } catch (error) { - core.setFailed(error.message); - } } function parsePullRequestDiff(diffContent) { @@ -39410,22 +39384,22 @@ function parsePullRequestDiff(diffContent) { let currentLines = []; for (const line of diffLines) { - if (line.startsWith('diff --git')) { - // Start of a new file - if (currentFile) { - files[currentFile] = currentLines.join('\n'); + if (line.startsWith('diff --git')) { + // Start of a new file + if (currentFile) { + files[currentFile] = currentLines.join('\n'); + } + currentFile = line.substring('diff --git'.length + 1); + currentLines = [line]; + } else { + // Add the line to the current file's diff + currentLines.push(line); } - currentFile = line.substring('diff --git'.length + 1); - currentLines = [line]; - } else { - // Add the line to the current file's diff - currentLines.push(line); - } } // Add the last file's diff if (currentFile) { - files[currentFile] = currentLines.join('\n'); + files[currentFile] = currentLines.join('\n'); } return files; @@ -39436,13 +39410,12 @@ function findFileNames(str) { const matches = str.matchAll(pattern); const names = []; for (const match of matches) { - names.push(match[1]); + names.push(match[1]); } return names; } run(); - })(); module.exports = __webpack_exports__; diff --git a/dist/index.js.map b/dist/index.js.map index 0811fae..f48834b 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACllCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1vDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChMA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzaA;;;;;;;;AAAA;;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7lIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7mEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/command.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/core.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/file-command.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/oidc-utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/path-utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/summary.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/context.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/github.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/internal/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/auth.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/index.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/proxy.js","../webpack://gitea-code-review-action/./node_modules/@octokit/auth-token/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/core/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/endpoint/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/graphql/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/plugin-paginate-rest/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/request-error/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/request/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/CARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/INSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/MADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/CDF.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/QUANTILE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/RANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/REVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/TRIMMED_MEAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/LIST_WITHCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/composers/buffer.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/composers/string.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/decoder.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/encoder.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/commands-queue.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/commands.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/pub-sub.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/socket.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/cluster-slots.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/commands.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/command-options.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commander.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_CAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_DELUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_DRYRUN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_GENPASS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_GETUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOG_RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_SAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_SETUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_USERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_WHOAMI.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/APPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ASKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/AUTH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BGREWRITEAOF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BGSAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITFIELD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITFIELD_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BRPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BRPOPLPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZPOPMAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZPOPMIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_CACHING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_GETNAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_GETREDIR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_ID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_NO-EVICT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_PAUSE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_SETNAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKINGINFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_UNPAUSE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTSRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_BUMPEPOCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNT-FAILURE-REPORTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNTKEYSINSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTSRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FAILOVER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FORGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_KEYSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_LINKS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_MEET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_MYID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_NODES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICAS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SAVECONFIG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SET-CONFIG-EPOCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SETSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYSANDFLAGS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_RESETSTAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_REWRITE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COPY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DBSIZE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DECR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DECRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DISCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ECHO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVAL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVALSHA.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVALSHA_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVAL_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIRE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIREAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIRETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FAILOVER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FCALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FCALL_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FLUSHALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FLUSHDB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_DELETE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_DUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_FLUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST_WITHCODE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_RESTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEODIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOHASH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCHSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCH_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETBIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HELLO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HEXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HGETALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HINCRBYFLOAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HMGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSTRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HVALS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCRBYFLOAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/KEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LASTSAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LATENCY_DOCTOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LATENCY_GRAPH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_IDX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_IDX_WITHMATCHLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_LEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LINSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LOLWUT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOP_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOS_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPUSHX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_DOCTOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_PURGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_USAGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MIGRATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_UNLOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MSETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_ENCODING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_FREQ.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_IDLETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_REFCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PERSIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIRE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIREAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIRETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFMERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PSETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PTTL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBLISH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_CHANNELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMPAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMSUB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDCHANNELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RANDOMKEY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/READONLY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/READWRITE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RENAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RENAMENX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/REPLICAOF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RESTORE-ASKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ROLE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOPLPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOP_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPUSHX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_DEBUG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_FLUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SDIFF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SDIFFSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETBIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SHUTDOWN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTERCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SISMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMEMBERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMISMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT_STORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SPUBLISH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SRANDMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/STRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SUNION.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SUNIONSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SWAPDB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TOUCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TTL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TYPE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/UNLINK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/UNWATCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/WAIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/WATCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XACK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XCLAIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XCLAIM_JUSTID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_DESTROY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_SETID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_CONSUMERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_GROUPS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_STREAM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XPENDING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XPENDING_RANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREADGROUP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XSETID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFFSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTERCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTER_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZLEXCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZMSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMAX_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMIN_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYLEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGESTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYLEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNION.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNIONSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNION_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/generic-transformers.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/errors.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/lua-script.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/DELETE.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/EXPLAIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/PROFILE.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/RO_QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/SLOWLOG.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/graph.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRAPPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRINSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/DEBUG_MEMORY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/FORGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/NUMINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/NUMMULTBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/OBJKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/OBJLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/RESP.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/STRAPPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/STRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/TYPE.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/AGGREGATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/AGGREGATE_WITHCURSOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASUPDATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CURSOR_DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CURSOR_READ.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DROPINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/EXPLAIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/EXPLAINCLI.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/PROFILE_AGGREGATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/PROFILE_SEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SPELLCHECK.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHPAYLOADS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SYNDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SYNUPDATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/TAGVALS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/ALTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/CREATERULE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DECRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DELETERULE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INFO_DEBUG.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MGET_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MRANGE_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MREVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MREVRANGE_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/QUERYINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/RANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/REVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/index.js","../webpack://gitea-code-review-action/./node_modules/agent-base/dist/src/index.js","../webpack://gitea-code-review-action/./node_modules/agent-base/dist/src/promisify.js","../webpack://gitea-code-review-action/./node_modules/asynckit/index.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/abort.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/async.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/defer.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/iterate.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/state.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/terminator.js","../webpack://gitea-code-review-action/./node_modules/asynckit/parallel.js","../webpack://gitea-code-review-action/./node_modules/asynckit/serial.js","../webpack://gitea-code-review-action/./node_modules/asynckit/serialOrdered.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/index.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/add.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/register.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/remove.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/localStorage.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/memory.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/redis.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/bayesian.js","../webpack://gitea-code-review-action/./node_modules/cluster-key-slot/lib/index.js","../webpack://gitea-code-review-action/./node_modules/combined-stream/lib/combined_stream.js","../webpack://gitea-code-review-action/./node_modules/debug/src/browser.js","../webpack://gitea-code-review-action/./node_modules/debug/src/common.js","../webpack://gitea-code-review-action/./node_modules/debug/src/index.js","../webpack://gitea-code-review-action/./node_modules/debug/src/node.js","../webpack://gitea-code-review-action/./node_modules/delayed-stream/lib/delayed_stream.js","../webpack://gitea-code-review-action/./node_modules/deprecation/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/follow-redirects/debug.js","../webpack://gitea-code-review-action/./node_modules/follow-redirects/index.js","../webpack://gitea-code-review-action/./node_modules/form-data/lib/form_data.js","../webpack://gitea-code-review-action/./node_modules/form-data/lib/populate.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/index.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DefaultEvictor.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Deferred.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Deque.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DequeIterator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DoublyLinkedList.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DoublyLinkedListIterator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Pool.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PoolDefaults.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PoolOptions.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PooledResource.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PooledResourceStateEnum.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PriorityQueue.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Queue.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/ResourceLoan.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/ResourceRequest.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/errors.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/factoryValidator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/agent.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/index.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/parse-proxy-response.js","../webpack://gitea-code-review-action/./node_modules/is-plain-object/dist/is-plain-object.js","../webpack://gitea-code-review-action/./node_modules/language-classifier/index.js","../webpack://gitea-code-review-action/./node_modules/language-detect/language-detect.js","../webpack://gitea-code-review-action/./node_modules/mime-db/index.js","../webpack://gitea-code-review-action/./node_modules/mime-types/index.js","../webpack://gitea-code-review-action/./node_modules/ms/index.js","../webpack://gitea-code-review-action/./node_modules/node-fetch/lib/index.js","../webpack://gitea-code-review-action/./node_modules/once/once.js","../webpack://gitea-code-review-action/./node_modules/proxy-from-env/index.js","../webpack://gitea-code-review-action/./node_modules/redis/dist/index.js","../webpack://gitea-code-review-action/./node_modules/tr46/index.js","../webpack://gitea-code-review-action/./node_modules/tunnel/index.js","../webpack://gitea-code-review-action/./node_modules/tunnel/lib/tunnel.js","../webpack://gitea-code-review-action/./node_modules/universal-user-agent/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/index.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/md5.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/nil.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/parse.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/regex.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/rng.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/sha1.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/stringify.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v1.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v3.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v35.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v4.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v5.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/validate.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/version.js","../webpack://gitea-code-review-action/./node_modules/webidl-conversions/lib/index.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/URL-impl.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/URL.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/public-api.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/url-state-machine.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/wrappy/wrappy.js","../webpack://gitea-code-review-action/./node_modules/yallist/iterator.js","../webpack://gitea-code-review-action/./node_modules/yallist/yallist.js","../webpack://gitea-code-review-action/./node_modules/@vercel/ncc/dist/ncc/@@notfound.js","../webpack://gitea-code-review-action/external node-commonjs \"assert\"","../webpack://gitea-code-review-action/external node-commonjs \"crypto\"","../webpack://gitea-code-review-action/external node-commonjs \"events\"","../webpack://gitea-code-review-action/external node-commonjs \"fs\"","../webpack://gitea-code-review-action/external node-commonjs \"http\"","../webpack://gitea-code-review-action/external node-commonjs \"https\"","../webpack://gitea-code-review-action/external node-commonjs \"net\"","../webpack://gitea-code-review-action/external node-commonjs \"os\"","../webpack://gitea-code-review-action/external node-commonjs \"path\"","../webpack://gitea-code-review-action/external node-commonjs \"punycode\"","../webpack://gitea-code-review-action/external node-commonjs \"stream\"","../webpack://gitea-code-review-action/external node-commonjs \"string_decoder\"","../webpack://gitea-code-review-action/external node-commonjs \"tls\"","../webpack://gitea-code-review-action/external node-commonjs \"tty\"","../webpack://gitea-code-review-action/external node-commonjs \"url\"","../webpack://gitea-code-review-action/external node-commonjs \"util\"","../webpack://gitea-code-review-action/external node-commonjs \"zlib\"","../webpack://gitea-code-review-action/./node_modules/axios/dist/node/axios.cjs","../webpack://gitea-code-review-action/./node_modules/underscore/underscore-node-f.cjs","../webpack://gitea-code-review-action/./node_modules/underscore/underscore-node.cjs","../webpack://gitea-code-review-action/webpack/bootstrap","../webpack://gitea-code-review-action/webpack/runtime/compat","../webpack://gitea-code-review-action/./index.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.result.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers = exports.Headers || (exports.Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (this._keepAlive && !useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\n if (this._keepAlive && !agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n // if not using private agent and tunnel agent isn't setup then use global agent\n if (!agent) {\n agent = usingSsl ? https.globalAgent : http.globalAgent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n return new URL(proxyVar);\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperReqHosts.some(x => x === upperNoProxyItem)) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\n//# sourceMappingURL=proxy.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n\n/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n\n return `token ${token}`;\n}\n\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\nconst createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n\nexports.createTokenAuth = createTokenAuth;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar universalUserAgent = require('universal-user-agent');\nvar beforeAfterHook = require('before-after-hook');\nvar request = require('@octokit/request');\nvar graphql = require('@octokit/graphql');\nvar authToken = require('@octokit/auth-token');\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nconst VERSION = \"3.6.0\";\n\nconst _excluded = [\"authStrategy\"];\nclass Octokit {\n constructor(options = {}) {\n const hook = new beforeAfterHook.Collection();\n const requestDefaults = {\n baseUrl: request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n }; // prepend default user agent with `options.userAgent` if set\n\n requestDefaults.headers[\"user-agent\"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(\" \");\n\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n\n this.request = request.request.defaults(requestDefaults);\n this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => {},\n info: () => {},\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n }, options.log);\n this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n // (2)\n const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\\_(ツ)_/¯\n\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const {\n authStrategy\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded);\n\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n }, options.auth)); // @ts-ignore ¯\\_(ツ)_/¯\n\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n } // apply plugins\n // https://stackoverflow.com/a/16345172\n\n\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach(plugin => {\n Object.assign(this, plugin(this, options));\n });\n }\n\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null));\n }\n\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n\n\n static plugin(...newPlugins) {\n var _a;\n\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a);\n return NewOctokit;\n }\n\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n\nexports.Octokit = Octokit;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isPlainObject = require('is-plain-object');\nvar universalUserAgent = require('universal-user-agent');\n\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach(key => {\n if (isPlainObject.isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, {\n [key]: options[key]\n });else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, {\n [key]: options[key]\n });\n }\n });\n return result;\n}\n\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n\n return obj;\n}\n\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? {\n method,\n url\n } : {\n url: method\n }, options);\n } else {\n options = Object.assign({}, route);\n } // lowercase header names before merging with defaults to avoid duplicates\n\n\n options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging\n\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten\n\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);\n }\n\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n\n if (names.length === 0) {\n return url;\n }\n\n return url + separator + names.map(name => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\nconst urlVariableRegex = /\\{[^}]+\\}/g;\n\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\n\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n\n if (!matches) {\n return [];\n }\n\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\nfunction omit(object, keysToOmit) {\n return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n\n// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n\n return part;\n }).join(\"\");\n}\n\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\n\nfunction getValues(context, operator, key, modifier) {\n var value = context[key],\n result = [];\n\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n\n return result;\n}\n\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\n\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n\n if (operator && operator !== \"+\") {\n var separator = \",\";\n\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n });\n}\n\nfunction parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible\n\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"mediaType\"]); // extract variable names from URL to calculate remaining variables later\n\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n\n const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(\",\");\n }\n\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n } // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n\n\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n } else {\n headers[\"content-length\"] = 0;\n }\n }\n } // default content-type for JSON if body is set\n\n\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n\n\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n } // Only return body/request keys if present\n\n\n return Object.assign({\n method,\n url,\n headers\n }, typeof body !== \"undefined\" ? {\n body\n } : null, options.request ? {\n request: options.request\n } : null);\n}\n\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse\n });\n}\n\nconst VERSION = \"6.0.12\";\n\nconst userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\n\nconst DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\",\n previews: []\n }\n};\n\nconst endpoint = withDefaults(null, DEFAULTS);\n\nexports.endpoint = endpoint;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar request = require('@octokit/request');\nvar universalUserAgent = require('universal-user-agent');\n\nconst VERSION = \"4.8.0\";\n\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\\n` + data.errors.map(e => ` - ${e.message}`).join(\"\\n\");\n}\n\nclass GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\"; // Expose the errors and response data in their shorthand properties.\n\n this.errors = response.errors;\n this.data = response.data; // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n}\n\nconst NON_VARIABLE_OPTIONS = [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"query\", \"mediaType\"];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n\n const parsedOptions = typeof query === \"string\" ? Object.assign({\n query\n }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n\n if (!result.variables) {\n result.variables = {};\n }\n\n result.variables[key] = parsedOptions[key];\n return result;\n }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n\n return request(requestOptions).then(response => {\n if (response.data.errors) {\n const headers = {};\n\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n\n throw new GraphqlResponseError(requestOptions, headers, response.data);\n }\n\n return response.data.data;\n });\n}\n\nfunction withDefaults(request$1, newDefaults) {\n const newRequest = request$1.defaults(newDefaults);\n\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: request.request.endpoint\n });\n}\n\nconst graphql$1 = withDefaults(request.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n\nexports.GraphqlResponseError = GraphqlResponseError;\nexports.graphql = graphql$1;\nexports.withCustomRequest = withCustomRequest;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst VERSION = \"2.21.3\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\n/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nfunction normalizePaginatedListResponse(response) {\n // endpoints can respond with 204 if repository is empty\n if (!response.data) {\n return _objectSpread2(_objectSpread2({}, response), {}, {\n data: []\n });\n }\n\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n\n response.data.total_count = totalCount;\n return response;\n}\n\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return {\n done: true\n };\n\n try {\n const response = await requestMethod({\n method,\n url,\n headers\n });\n const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return {\n value: normalizedResponse\n };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n\n })\n };\n}\n\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\n\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then(result => {\n if (result.done) {\n return results;\n }\n\n let earlyExit = false;\n\n function done() {\n earlyExit = true;\n }\n\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n\n if (earlyExit) {\n return results;\n }\n\n return gather(octokit, results, iterator, mapFn);\n });\n}\n\nconst composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\nconst paginatingEndpoints = [\"GET /app/hook/deliveries\", \"GET /app/installations\", \"GET /applications/grants\", \"GET /authorizations\", \"GET /enterprises/{enterprise}/actions/permissions/organizations\", \"GET /enterprises/{enterprise}/actions/runner-groups\", \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations\", \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners\", \"GET /enterprises/{enterprise}/actions/runners\", \"GET /enterprises/{enterprise}/audit-log\", \"GET /enterprises/{enterprise}/secret-scanning/alerts\", \"GET /enterprises/{enterprise}/settings/billing/advanced-security\", \"GET /events\", \"GET /gists\", \"GET /gists/public\", \"GET /gists/starred\", \"GET /gists/{gist_id}/comments\", \"GET /gists/{gist_id}/commits\", \"GET /gists/{gist_id}/forks\", \"GET /installation/repositories\", \"GET /issues\", \"GET /licenses\", \"GET /marketplace_listing/plans\", \"GET /marketplace_listing/plans/{plan_id}/accounts\", \"GET /marketplace_listing/stubbed/plans\", \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\", \"GET /networks/{owner}/{repo}/events\", \"GET /notifications\", \"GET /organizations\", \"GET /orgs/{org}/actions/cache/usage-by-repository\", \"GET /orgs/{org}/actions/permissions/repositories\", \"GET /orgs/{org}/actions/runner-groups\", \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\", \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\", \"GET /orgs/{org}/actions/runners\", \"GET /orgs/{org}/actions/secrets\", \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\", \"GET /orgs/{org}/audit-log\", \"GET /orgs/{org}/blocks\", \"GET /orgs/{org}/code-scanning/alerts\", \"GET /orgs/{org}/codespaces\", \"GET /orgs/{org}/credential-authorizations\", \"GET /orgs/{org}/dependabot/secrets\", \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\", \"GET /orgs/{org}/events\", \"GET /orgs/{org}/external-groups\", \"GET /orgs/{org}/failed_invitations\", \"GET /orgs/{org}/hooks\", \"GET /orgs/{org}/hooks/{hook_id}/deliveries\", \"GET /orgs/{org}/installations\", \"GET /orgs/{org}/invitations\", \"GET /orgs/{org}/invitations/{invitation_id}/teams\", \"GET /orgs/{org}/issues\", \"GET /orgs/{org}/members\", \"GET /orgs/{org}/migrations\", \"GET /orgs/{org}/migrations/{migration_id}/repositories\", \"GET /orgs/{org}/outside_collaborators\", \"GET /orgs/{org}/packages\", \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\", \"GET /orgs/{org}/projects\", \"GET /orgs/{org}/public_members\", \"GET /orgs/{org}/repos\", \"GET /orgs/{org}/secret-scanning/alerts\", \"GET /orgs/{org}/settings/billing/advanced-security\", \"GET /orgs/{org}/team-sync/groups\", \"GET /orgs/{org}/teams\", \"GET /orgs/{org}/teams/{team_slug}/discussions\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\", \"GET /orgs/{org}/teams/{team_slug}/invitations\", \"GET /orgs/{org}/teams/{team_slug}/members\", \"GET /orgs/{org}/teams/{team_slug}/projects\", \"GET /orgs/{org}/teams/{team_slug}/repos\", \"GET /orgs/{org}/teams/{team_slug}/teams\", \"GET /projects/columns/{column_id}/cards\", \"GET /projects/{project_id}/collaborators\", \"GET /projects/{project_id}/columns\", \"GET /repos/{owner}/{repo}/actions/artifacts\", \"GET /repos/{owner}/{repo}/actions/caches\", \"GET /repos/{owner}/{repo}/actions/runners\", \"GET /repos/{owner}/{repo}/actions/runs\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\", \"GET /repos/{owner}/{repo}/actions/secrets\", \"GET /repos/{owner}/{repo}/actions/workflows\", \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\", \"GET /repos/{owner}/{repo}/assignees\", \"GET /repos/{owner}/{repo}/branches\", \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\", \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\", \"GET /repos/{owner}/{repo}/code-scanning/alerts\", \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\", \"GET /repos/{owner}/{repo}/code-scanning/analyses\", \"GET /repos/{owner}/{repo}/codespaces\", \"GET /repos/{owner}/{repo}/codespaces/devcontainers\", \"GET /repos/{owner}/{repo}/codespaces/secrets\", \"GET /repos/{owner}/{repo}/collaborators\", \"GET /repos/{owner}/{repo}/comments\", \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/commits\", \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\", \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\", \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\", \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\", \"GET /repos/{owner}/{repo}/commits/{ref}/status\", \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\", \"GET /repos/{owner}/{repo}/contributors\", \"GET /repos/{owner}/{repo}/dependabot/secrets\", \"GET /repos/{owner}/{repo}/deployments\", \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\", \"GET /repos/{owner}/{repo}/environments\", \"GET /repos/{owner}/{repo}/events\", \"GET /repos/{owner}/{repo}/forks\", \"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\", \"GET /repos/{owner}/{repo}/hooks\", \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\", \"GET /repos/{owner}/{repo}/invitations\", \"GET /repos/{owner}/{repo}/issues\", \"GET /repos/{owner}/{repo}/issues/comments\", \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/issues/events\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\", \"GET /repos/{owner}/{repo}/keys\", \"GET /repos/{owner}/{repo}/labels\", \"GET /repos/{owner}/{repo}/milestones\", \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\", \"GET /repos/{owner}/{repo}/notifications\", \"GET /repos/{owner}/{repo}/pages/builds\", \"GET /repos/{owner}/{repo}/projects\", \"GET /repos/{owner}/{repo}/pulls\", \"GET /repos/{owner}/{repo}/pulls/comments\", \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\", \"GET /repos/{owner}/{repo}/releases\", \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\", \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\", \"GET /repos/{owner}/{repo}/secret-scanning/alerts\", \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\", \"GET /repos/{owner}/{repo}/stargazers\", \"GET /repos/{owner}/{repo}/subscribers\", \"GET /repos/{owner}/{repo}/tags\", \"GET /repos/{owner}/{repo}/teams\", \"GET /repos/{owner}/{repo}/topics\", \"GET /repositories\", \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\", \"GET /search/code\", \"GET /search/commits\", \"GET /search/issues\", \"GET /search/labels\", \"GET /search/repositories\", \"GET /search/topics\", \"GET /search/users\", \"GET /teams/{team_id}/discussions\", \"GET /teams/{team_id}/discussions/{discussion_number}/comments\", \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\", \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\", \"GET /teams/{team_id}/invitations\", \"GET /teams/{team_id}/members\", \"GET /teams/{team_id}/projects\", \"GET /teams/{team_id}/repos\", \"GET /teams/{team_id}/teams\", \"GET /user/blocks\", \"GET /user/codespaces\", \"GET /user/codespaces/secrets\", \"GET /user/emails\", \"GET /user/followers\", \"GET /user/following\", \"GET /user/gpg_keys\", \"GET /user/installations\", \"GET /user/installations/{installation_id}/repositories\", \"GET /user/issues\", \"GET /user/keys\", \"GET /user/marketplace_purchases\", \"GET /user/marketplace_purchases/stubbed\", \"GET /user/memberships/orgs\", \"GET /user/migrations\", \"GET /user/migrations/{migration_id}/repositories\", \"GET /user/orgs\", \"GET /user/packages\", \"GET /user/packages/{package_type}/{package_name}/versions\", \"GET /user/public_emails\", \"GET /user/repos\", \"GET /user/repository_invitations\", \"GET /user/starred\", \"GET /user/subscriptions\", \"GET /user/teams\", \"GET /users\", \"GET /users/{username}/events\", \"GET /users/{username}/events/orgs/{org}\", \"GET /users/{username}/events/public\", \"GET /users/{username}/followers\", \"GET /users/{username}/following\", \"GET /users/{username}/gists\", \"GET /users/{username}/gpg_keys\", \"GET /users/{username}/keys\", \"GET /users/{username}/orgs\", \"GET /users/{username}/packages\", \"GET /users/{username}/projects\", \"GET /users/{username}/received_events\", \"GET /users/{username}/received_events/public\", \"GET /users/{username}/repos\", \"GET /users/{username}/starred\", \"GET /users/{username}/subscriptions\"];\n\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\n\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n\nexports.composePaginateRest = composePaginateRest;\nexports.isPaginatingEndpoint = isPaginatingEndpoint;\nexports.paginateRest = paginateRest;\nexports.paginatingEndpoints = paginatingEndpoints;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nconst Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\"POST /orgs/{org}/actions/runners/{runner_id}/labels\"],\n addCustomLabelsToSelfHostedRunnerForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n addSelectedRepoToOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\n approveWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"],\n cancelWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"],\n createOrUpdateEnvironmentSecret: [\"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n createRegistrationTokenForOrg: [\"POST /orgs/{org}/actions/runners/registration-token\"],\n createRegistrationTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/registration-token\"],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/remove-token\"],\n createWorkflowDispatch: [\"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"],\n deleteActionsCacheById: [\"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"],\n deleteActionsCacheByKey: [\"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"],\n deleteArtifact: [\"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n deleteEnvironmentSecret: [\"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n deleteSelfHostedRunnerFromOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}\"],\n deleteSelfHostedRunnerFromRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\n disableSelectedRepositoryGithubActionsOrganization: [\"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\n disableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"],\n downloadArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"],\n downloadJobLogsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"],\n downloadWorkflowRunAttemptLogs: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"],\n downloadWorkflowRunLogs: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\n enableSelectedRepositoryGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\n enableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\"GET /orgs/{org}/actions/cache/usage-by-repository\"],\n getActionsCacheUsageForEnterprise: [\"GET /enterprises/{enterprise}/actions/cache/usage\"],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\"GET /orgs/{org}/actions/permissions/selected-actions\"],\n getAllowedActionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getEnvironmentPublicKey: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"],\n getEnvironmentSecret: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n getGithubActionsDefaultWorkflowPermissionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/workflow\"],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\"GET /orgs/{org}/actions/permissions/workflow\"],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/workflow\"],\n getGithubActionsPermissionsOrganization: [\"GET /orgs/{org}/actions/permissions\"],\n getGithubActionsPermissionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions\"],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getPendingDeploymentsForRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"],\n getRepoPermissions: [\"GET /repos/{owner}/{repo}/actions/permissions\", {}, {\n renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"]\n }],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getReviewsForRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/access\"],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"],\n getWorkflowRunUsage: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"],\n getWorkflowUsage: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"],\n listJobsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"],\n listJobsForWorkflowRunAttempt: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"],\n listLabelsForSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}/labels\"],\n listLabelsForSelfHostedRunnerForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/downloads\"],\n listSelectedReposForOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\"GET /orgs/{org}/actions/permissions/repositories\"],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"],\n listWorkflowRuns: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"],\n removeSelectedRepoFromOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\n reviewPendingDeploymentsForRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"],\n setAllowedActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/selected-actions\"],\n setAllowedActionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\n setCustomLabelsForSelfHostedRunnerForOrg: [\"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"],\n setCustomLabelsForSelfHostedRunnerForRepo: [\"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n setGithubActionsDefaultWorkflowPermissionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/workflow\"],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\"PUT /orgs/{org}/actions/permissions/workflow\"],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"],\n setGithubActionsPermissionsOrganization: [\"PUT /orgs/{org}/actions/permissions\"],\n setGithubActionsPermissionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions\"],\n setSelectedReposForOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories\"],\n setWorkflowAccessToRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/access\"]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\"DELETE /notifications/threads/{thread_id}/subscription\"],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\"GET /notifications/threads/{thread_id}/subscription\"],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\"GET /users/{username}/events/orgs/{org}\"],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\"GET /users/{username}/received_events/public\"],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/notifications\"],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\"PUT /notifications/threads/{thread_id}/subscription\"],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\"PUT /user/installations/{installation_id}/repositories/{repository_id}\", {}, {\n renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"]\n }],\n addRepoToInstallationForAuthenticatedUser: [\"PUT /user/installations/{installation_id}/repositories/{repository_id}\"],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\"POST /app/installations/{installation_id}/access_tokens\"],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\"GET /marketplace_listing/accounts/{account_id}\"],\n getSubscriptionPlanForAccountStubbed: [\"GET /marketplace_listing/stubbed/accounts/{account_id}\"],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"],\n listInstallationReposForAuthenticatedUser: [\"GET /user/installations/{installation_id}/repositories\"],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\"GET /user/marketplace_purchases/stubbed\"],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\"POST /app/hook/deliveries/{delivery_id}/attempts\"],\n removeRepoFromInstallation: [\"DELETE /user/installations/{installation_id}/repositories/{repository_id}\", {}, {\n renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"]\n }],\n removeRepoFromInstallationForAuthenticatedUser: [\"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\"DELETE /app/installations/{installation_id}/suspended\"],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\"GET /users/{username}/settings/billing/actions\"],\n getGithubAdvancedSecurityBillingGhe: [\"GET /enterprises/{enterprise}/settings/billing/advanced-security\"],\n getGithubAdvancedSecurityBillingOrg: [\"GET /orgs/{org}/settings/billing/advanced-security\"],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\"GET /users/{username}/settings/billing/packages\"],\n getSharedStorageBillingOrg: [\"GET /orgs/{org}/settings/billing/shared-storage\"],\n getSharedStorageBillingUser: [\"GET /users/{username}/settings/billing/shared-storage\"]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"],\n rerequestSuite: [\"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"],\n setSuitesPreferences: [\"PATCH /repos/{owner}/{repo}/check-suites/preferences\"],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"],\n getAlert: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\", {}, {\n renamedParameters: {\n alert_id: \"alert_number\"\n }\n }],\n getAnalysis: [\"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\", {}, {\n renamed: [\"codeScanning\", \"listAlertInstances\"]\n }],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"],\n codespaceMachinesForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}/machines\"],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n createOrUpdateSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}\"],\n createWithPrForAuthenticatedUser: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"],\n createWithRepoForAuthenticatedUser: [\"POST /repos/{owner}/{repo}/codespaces\"],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n deleteSecretForAuthenticatedUser: [\"DELETE /user/codespaces/secrets/{secret_name}\"],\n exportForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/exports\"],\n getExportDetailsForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}/exports/{export_id}\"],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getPublicKeyForAuthenticatedUser: [\"GET /user/codespaces/secrets/public-key\"],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n getSecretForAuthenticatedUser: [\"GET /user/codespaces/secrets/{secret_name}\"],\n listDevcontainersInRepositoryForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces/devcontainers\"],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\"GET /orgs/{org}/codespaces\", {}, {\n renamedParameters: {\n org_id: \"org\"\n }\n }],\n listInRepositoryForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\"GET /user/codespaces/secrets/{secret_name}/repositories\"],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n removeRepositoryForSecretForAuthenticatedUser: [\"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"],\n repoMachinesForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces/machines\"],\n setRepositoriesForSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}/repositories\"],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"],\n removeSelectedRepoFromOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"],\n setSelectedReposForOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"],\n diffRange: [\"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"]\n },\n emojis: {\n get: [\"GET /emojis\"]\n },\n enterpriseAdmin: {\n addCustomLabelsToSelfHostedRunnerForEnterprise: [\"POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n disableSelectedOrganizationGithubActionsEnterprise: [\"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\n enableSelectedOrganizationGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\n getAllowedActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/selected-actions\"],\n getGithubActionsPermissionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions\"],\n getServerStatistics: [\"GET /enterprise-installation/{enterprise_or_org}/server-statistics\"],\n listLabelsForSelfHostedRunnerForEnterprise: [\"GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/organizations\"],\n removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [\"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n removeCustomLabelFromSelfHostedRunnerForEnterprise: [\"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}\"],\n setAllowedActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\"],\n setCustomLabelsForSelfHostedRunnerForEnterprise: [\"PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n setGithubActionsPermissionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions\"],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations\"]\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\"GET /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"]\n }],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\"DELETE /repos/{owner}/{repo}/interaction-limits\"],\n removeRestrictionsForYourPublicRepos: [\"DELETE /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"]\n }],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\"PUT /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"]\n }]\n },\n issues: {\n addAssignees: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n removeAssignees: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\n removeLabel: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\"POST /markdown/raw\", {\n headers: {\n \"content-type\": \"text/plain; charset=utf-8\"\n }\n }]\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/archive\"],\n deleteArchiveForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/archive\"],\n downloadArchiveForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/archive\"],\n getArchiveForAuthenticatedUser: [\"GET /user/migrations/{migration_id}/archive\"],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\"GET /user/migrations/{migration_id}/repositories\"],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\"GET /user/migrations/{migration_id}/repositories\", {}, {\n renamed: [\"migrations\", \"listReposForAuthenticatedUser\"]\n }],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"],\n unlockRepoForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"]\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\"PUT /orgs/{org}/outside_collaborators/{username}\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomRoles: [\"GET /organizations/{organization_id}/custom_roles\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\"DELETE /orgs/{org}/outside_collaborators/{username}\"],\n removePublicMembershipForAuthenticatedUser: [\"DELETE /orgs/{org}/public_members/{username}\"],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\"PUT /orgs/{org}/public_members/{username}\"],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\"PATCH /user/memberships/orgs/{org}\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\"DELETE /user/packages/{package_type}/{package_name}\"],\n deletePackageForOrg: [\"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"],\n deletePackageForUser: [\"DELETE /users/{username}/packages/{package_type}/{package_name}\"],\n deletePackageVersionForAuthenticatedUser: [\"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n deletePackageVersionForOrg: [\"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n deletePackageVersionForUser: [\"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\", {}, {\n renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"]\n }],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions\", {}, {\n renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"]\n }],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions\"],\n getAllPackageVersionsForPackageOwnedByOrg: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"],\n getAllPackageVersionsForPackageOwnedByUser: [\"GET /users/{username}/packages/{package_type}/{package_name}/versions\"],\n getPackageForAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}\"],\n getPackageForOrganization: [\"GET /orgs/{org}/packages/{package_type}/{package_name}\"],\n getPackageForUser: [\"GET /users/{username}/packages/{package_type}/{package_name}\"],\n getPackageVersionForAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getPackageVersionForOrganization: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getPackageVersionForUser: [\"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\"POST /user/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageForOrg: [\"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageForUser: [\"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageVersionForAuthenticatedUser: [\"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"],\n restorePackageVersionForOrg: [\"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"],\n restorePackageVersionForUser: [\"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\"GET /projects/{project_id}/collaborators/{username}/permission\"],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\"DELETE /projects/{project_id}/collaborators/{username}\"],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\n deletePendingReview: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n deleteReviewComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n dismissReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n listReviewComments: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n requestReviewers: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n submitReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"],\n updateReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n updateReviewComment: [\"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"]\n },\n rateLimit: {\n get: [\"GET /rate_limit\"]\n },\n reactions: {\n createForCommitComment: [\"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"],\n createForIssue: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n createForIssueComment: [\"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"],\n createForPullRequestReviewComment: [\"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"],\n createForRelease: [\"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"],\n createForTeamDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"],\n createForTeamDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"],\n deleteForCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForIssue: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"],\n deleteForIssueComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForPullRequestComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"],\n deleteForTeamDiscussion: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"],\n deleteForTeamDiscussionComment: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"],\n listForCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"],\n listForPullRequestReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"],\n listForRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"],\n listForTeamDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"],\n listForTeamDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"]\n },\n repos: {\n acceptInvitation: [\"PATCH /user/repository_invitations/{invitation_id}\", {}, {\n renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"]\n }],\n acceptInvitationForAuthenticatedUser: [\"PATCH /user/repository_invitations/{invitation_id}\"],\n addAppAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n addTeamAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n addUserAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\"GET /repos/{owner}/{repo}/vulnerability-alerts\"],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\"GET /repos/{owner}/{repo}/compare/{basehead}\"],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\n createCommitSignatureProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\"PUT /repos/{owner}/{repo}/environments/{environment_name}\"],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\"POST /repos/{template_owner}/{template_repo}/generate\"],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\"DELETE /user/repository_invitations/{invitation_id}\", {}, {\n renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"]\n }],\n declineInvitationForAuthenticatedUser: [\"DELETE /user/repository_invitations/{invitation_id}\"],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\n deleteAdminBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n deleteAnEnvironment: [\"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n deleteTagProtection: [\"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\"DELETE /repos/{owner}/{repo}/automated-security-fixes\"],\n disableLfsForRepo: [\"DELETE /repos/{owner}/{repo}/lfs\"],\n disableVulnerabilityAlerts: [\"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"],\n downloadArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\", {}, {\n renamed: [\"repos\", \"downloadZipballArchive\"]\n }],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\"PUT /repos/{owner}/{repo}/automated-security-fixes\"],\n enableLfsForRepo: [\"PUT /repos/{owner}/{repo}/lfs\"],\n enableVulnerabilityAlerts: [\"PUT /repos/{owner}/{repo}/vulnerability-alerts\"],\n generateReleaseNotes: [\"POST /repos/{owner}/{repo}/releases/generate-notes\"],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\n getAdminBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"],\n getEnvironment: [\"GET /repos/{owner}/{repo}/environments/{environment_name}\"],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n getTeamsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"],\n listReleaseAssets: [\"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"],\n removeAppAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n removeCollaborator: [\"DELETE /repos/{owner}/{repo}/collaborators/{username}\"],\n removeStatusCheckContexts: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n removeStatusCheckProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n removeTeamAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n removeUserAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n setAppAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n setStatusCheckContexts: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n setTeamAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n setUserAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"],\n updatePullRequestReviewProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n updateStatusCheckPotection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\", {}, {\n renamed: [\"repos\", \"updateStatusCheckProtection\"]\n }],\n updateStatusCheckProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\n uploadReleaseAsset: [\"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\", {\n baseUrl: \"https://uploads.github.com\"\n }]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"],\n listAlertsForEnterprise: [\"GET /enterprises/{enterprise}/secret-scanning/alerts\"],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"],\n updateAlert: [\"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n addOrUpdateProjectPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n addOrUpdateRepoPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n checkPermissionsForProjectInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n checkPermissionsForRepoInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n deleteDiscussionInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n getDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n getMembershipForUserInOrg: [\"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/invitations\"],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n removeProjectInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n removeRepoInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n updateDiscussionCommentInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n updateDiscussionInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\"POST /user/emails\", {}, {\n renamed: [\"users\", \"addEmailForAuthenticatedUser\"]\n }],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\"POST /user/gpg_keys\", {}, {\n renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"]\n }],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\"POST /user/keys\", {}, {\n renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"]\n }],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\"DELETE /user/emails\", {}, {\n renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"]\n }],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\"DELETE /user/gpg_keys/{gpg_key_id}\", {}, {\n renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"]\n }],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\"DELETE /user/keys/{key_id}\", {}, {\n renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"]\n }],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\"GET /user/gpg_keys/{gpg_key_id}\", {}, {\n renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"]\n }],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\"GET /user/keys/{key_id}\", {}, {\n renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"]\n }],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\"GET /user/blocks\", {}, {\n renamed: [\"users\", \"listBlockedByAuthenticatedUser\"]\n }],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\"GET /user/emails\", {}, {\n renamed: [\"users\", \"listEmailsForAuthenticatedUser\"]\n }],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\"GET /user/following\", {}, {\n renamed: [\"users\", \"listFollowedByAuthenticatedUser\"]\n }],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\"GET /user/gpg_keys\", {}, {\n renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"]\n }],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\"GET /user/public_emails\", {}, {\n renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"]\n }],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\"GET /user/keys\", {}, {\n renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"]\n }],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\"PATCH /user/email/visibility\", {}, {\n renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"]\n }],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\"PATCH /user/email/visibility\"],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\n\nconst VERSION = \"5.16.2\";\n\nfunction endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({\n method,\n url\n }, defaults);\n\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n\n const scopeMethods = newMethods[scope];\n\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n\n return newMethods;\n}\n\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`\n\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined\n });\n return requestWithDefaults(options);\n }\n\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n\n delete options[name];\n }\n }\n\n return requestWithDefaults(options);\n } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n\n\n return requestWithDefaults(...args);\n }\n\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, Endpoints);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, Endpoints);\n return _objectSpread2(_objectSpread2({}, api), {}, {\n rest: api\n });\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n\nexports.legacyRestEndpointMethods = legacyRestEndpointMethods;\nexports.restEndpointMethods = restEndpointMethods;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar deprecation = require('deprecation');\nvar once = _interopDefault(require('once'));\n\nconst logOnceCode = once(deprecation => console.warn(deprecation));\nconst logOnceHeaders = once(deprecation => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\n\nclass RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n } // redact request credentials without mutating original request options\n\n\n const requestCopy = Object.assign({}, options.request);\n\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\")\n });\n }\n\n requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\") // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy; // deprecations\n\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(new deprecation.Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n }\n\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(new deprecation.Deprecation(\"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"));\n return headers || {};\n }\n\n });\n }\n\n}\n\nexports.RequestError = RequestError;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar endpoint = require('@octokit/endpoint');\nvar universalUserAgent = require('universal-user-agent');\nvar isPlainObject = require('is-plain-object');\nvar nodeFetch = _interopDefault(require('node-fetch'));\nvar requestError = require('@octokit/request-error');\n\nconst VERSION = \"5.6.3\";\n\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\nfunction fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n\n if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n\n let headers = {};\n let status;\n let url;\n const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect\n }, // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request)).then(async response => {\n url = response.url;\n status = response.status;\n\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n\n if (status === 204 || status === 205) {\n return;\n } // GitHub API returns 200 for HEAD requests\n\n\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n\n throw new requestError.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: undefined\n },\n request: requestOptions\n });\n }\n\n if (status === 304) {\n throw new requestError.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new requestError.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n\n return getResponseData(response);\n }).then(data => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch(error => {\n if (error instanceof requestError.RequestError) throw error;\n throw new requestError.RequestError(error.message, 500, {\n request: requestOptions\n });\n });\n}\n\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n\n return getBufferResponse(response);\n}\n\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") return data; // istanbul ignore else - just in case\n\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n }\n\n return data.message;\n } // istanbul ignore next - just in case\n\n\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n}\n\nconst request = withDefaults(endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`\n }\n});\n\nexports.request = request;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['BF.ADD', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['BF.CARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, item) {\n return ['BF.EXISTS', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['BF.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n capacity: reply[1],\n size: reply[3],\n numberOfFilters: reply[5],\n numberOfInsertedItems: reply[7],\n expansionRate: reply[9]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n const args = ['BF.INSERT', key];\n if (options?.CAPACITY) {\n args.push('CAPACITY', options.CAPACITY.toString());\n }\n if (options?.ERROR) {\n args.push('ERROR', options.ERROR.toString());\n }\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n if (options?.NOCREATE) {\n args.push('NOCREATE');\n }\n if (options?.NONSCALING) {\n args.push('NONSCALING');\n }\n args.push('ITEMS');\n return (0, generic_transformers_1.pushVerdictArguments)(args, items);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iteretor, chunk) {\n return ['BF.LOADCHUNK', key, iteretor.toString(), chunk];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n return ['BF.MADD', key, ...items];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return ['BF.MEXISTS', key, ...items];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, errorRate, capacity, options) {\n const args = ['BF.RESERVE', key, errorRate.toString(), capacity.toString()];\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n if (options?.NONSCALING) {\n args.push('NONSCALING');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, iterator) {\n return ['BF.SCANDUMP', key, iterator.toString()];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([iterator, chunk]) {\n return {\n iterator,\n chunk\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ADD = require(\"./ADD\");\nconst CARD = require(\"./CARD\");\nconst EXISTS = require(\"./EXISTS\");\nconst INFO = require(\"./INFO\");\nconst INSERT = require(\"./INSERT\");\nconst LOADCHUNK = require(\"./LOADCHUNK\");\nconst MADD = require(\"./MADD\");\nconst MEXISTS = require(\"./MEXISTS\");\nconst RESERVE = require(\"./RESERVE\");\nconst SCANDUMP = require(\"./SCANDUMP\");\nexports.default = {\n ADD,\n add: ADD,\n CARD,\n card: CARD,\n EXISTS,\n exists: EXISTS,\n INFO,\n info: INFO,\n INSERT,\n insert: INSERT,\n LOADCHUNK,\n loadChunk: LOADCHUNK,\n MADD,\n mAdd: MADD,\n MEXISTS,\n mExists: MEXISTS,\n RESERVE,\n reserve: RESERVE,\n SCANDUMP,\n scanDump: SCANDUMP\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n const args = ['CMS.INCRBY', key];\n if (Array.isArray(items)) {\n for (const item of items) {\n pushIncrByItem(args, item);\n }\n }\n else {\n pushIncrByItem(args, items);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushIncrByItem(args, { item, incrementBy }) {\n args.push(item, incrementBy.toString());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['CMS.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n width: reply[1],\n depth: reply[3],\n count: reply[5]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, width, depth) {\n return ['CMS.INITBYDIM', key, width.toString(), depth.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, error, probability) {\n return ['CMS.INITBYPROB', key, error.toString(), probability.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(dest, src) {\n const args = [\n 'CMS.MERGE',\n dest,\n src.length.toString()\n ];\n if (isStringSketches(src)) {\n args.push(...src);\n }\n else {\n for (const sketch of src) {\n args.push(sketch.name);\n }\n args.push('WEIGHTS');\n for (const sketch of src) {\n args.push(sketch.weight.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction isStringSketches(src) {\n return typeof src[0] === 'string';\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['CMS.QUERY', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst INCRBY = require(\"./INCRBY\");\nconst INFO = require(\"./INFO\");\nconst INITBYDIM = require(\"./INITBYDIM\");\nconst INITBYPROB = require(\"./INITBYPROB\");\nconst MERGE = require(\"./MERGE\");\nconst QUERY = require(\"./QUERY\");\nexports.default = {\n INCRBY,\n incrBy: INCRBY,\n INFO,\n info: INFO,\n INITBYDIM,\n initByDim: INITBYDIM,\n INITBYPROB,\n initByProb: INITBYPROB,\n MERGE,\n merge: MERGE,\n QUERY,\n query: QUERY\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.ADD', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.ADDNX', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.COUNT', key, item];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.DEL', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, item) {\n return ['CF.EXISTS', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['CF.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n size: reply[1],\n numberOfBuckets: reply[3],\n numberOfFilters: reply[5],\n numberOfInsertedItems: reply[7],\n numberOfDeletedItems: reply[9],\n bucketSize: reply[11],\n expansionRate: reply[13],\n maxIteration: reply[15]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n return (0, _1.pushInsertOptions)(['CF.INSERT', key], items, options);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n return (0, _1.pushInsertOptions)(['CF.INSERTNX', key], items, options);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iterator, chunk) {\n return ['CF.LOADCHUNK', key, iterator.toString(), chunk];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, capacity, options) {\n const args = ['CF.RESERVE', key, capacity.toString()];\n if (options?.BUCKETSIZE) {\n args.push('BUCKETSIZE', options.BUCKETSIZE.toString());\n }\n if (options?.MAXITERATIONS) {\n args.push('MAXITERATIONS', options.MAXITERATIONS.toString());\n }\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iterator) {\n return ['CF.SCANDUMP', key, iterator.toString()];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([iterator, chunk]) {\n return {\n iterator,\n chunk\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushInsertOptions = void 0;\nconst ADD = require(\"./ADD\");\nconst ADDNX = require(\"./ADDNX\");\nconst COUNT = require(\"./COUNT\");\nconst DEL = require(\"./DEL\");\nconst EXISTS = require(\"./EXISTS\");\nconst INFO = require(\"./INFO\");\nconst INSERT = require(\"./INSERT\");\nconst INSERTNX = require(\"./INSERTNX\");\nconst LOADCHUNK = require(\"./LOADCHUNK\");\nconst RESERVE = require(\"./RESERVE\");\nconst SCANDUMP = require(\"./SCANDUMP\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n ADD,\n add: ADD,\n ADDNX,\n addNX: ADDNX,\n COUNT,\n count: COUNT,\n DEL,\n del: DEL,\n EXISTS,\n exists: EXISTS,\n INFO,\n info: INFO,\n INSERT,\n insert: INSERT,\n INSERTNX,\n insertNX: INSERTNX,\n LOADCHUNK,\n loadChunk: LOADCHUNK,\n RESERVE,\n reserve: RESERVE,\n SCANDUMP,\n scanDump: SCANDUMP\n};\nfunction pushInsertOptions(args, items, options) {\n if (options?.CAPACITY) {\n args.push('CAPACITY');\n args.push(options.CAPACITY.toString());\n }\n if (options?.NOCREATE) {\n args.push('NOCREATE');\n }\n args.push('ITEMS');\n return (0, generic_transformers_1.pushVerdictArguments)(args, items);\n}\nexports.pushInsertOptions = pushInsertOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst bloom_1 = require(\"./bloom\");\nconst count_min_sketch_1 = require(\"./count-min-sketch\");\nconst cuckoo_1 = require(\"./cuckoo\");\nconst t_digest_1 = require(\"./t-digest\");\nconst top_k_1 = require(\"./top-k\");\nexports.default = {\n bf: bloom_1.default,\n cms: count_min_sketch_1.default,\n cf: cuckoo_1.default,\n tDigest: t_digest_1.default,\n topK: top_k_1.default\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.ADD', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, ranks) {\n const args = ['TDIGEST.BYRANK', key];\n for (const rank of ranks) {\n args.push(rank.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, ranks) {\n const args = ['TDIGEST.BYREVRANK', key];\n for (const rank of ranks) {\n args.push(rank.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.CDF', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n return (0, _1.pushCompressionArgument)(['TDIGEST.CREATE', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.INFO',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n comperssion: reply[1],\n capacity: reply[3],\n mergedNodes: reply[5],\n unmergedNodes: reply[7],\n mergedWeight: Number(reply[9]),\n unmergedWeight: Number(reply[11]),\n totalCompression: reply[13]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.MAX',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destKey, srcKeys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['TDIGEST.MERGE', destKey], srcKeys);\n (0, _1.pushCompressionArgument)(args, options);\n if (options?.OVERRIDE) {\n args.push('OVERRIDE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.MIN',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, quantiles) {\n const args = [\n 'TDIGEST.QUANTILE',\n key\n ];\n for (const quantile of quantiles) {\n args.push(quantile.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.RANK', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['TDIGEST.RESET', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.REVRANK', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, lowCutPercentile, highCutPercentile) {\n return [\n 'TDIGEST.TRIMMED_MEAN',\n key,\n lowCutPercentile.toString(),\n highCutPercentile.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformDoublesReply = exports.transformDoubleReply = exports.pushCompressionArgument = void 0;\nconst ADD = require(\"./ADD\");\nconst BYRANK = require(\"./BYRANK\");\nconst BYREVRANK = require(\"./BYREVRANK\");\nconst CDF = require(\"./CDF\");\nconst CREATE = require(\"./CREATE\");\nconst INFO = require(\"./INFO\");\nconst MAX = require(\"./MAX\");\nconst MERGE = require(\"./MERGE\");\nconst MIN = require(\"./MIN\");\nconst QUANTILE = require(\"./QUANTILE\");\nconst RANK = require(\"./RANK\");\nconst RESET = require(\"./RESET\");\nconst REVRANK = require(\"./REVRANK\");\nconst TRIMMED_MEAN = require(\"./TRIMMED_MEAN\");\nexports.default = {\n ADD,\n add: ADD,\n BYRANK,\n byRank: BYRANK,\n BYREVRANK,\n byRevRank: BYREVRANK,\n CDF,\n cdf: CDF,\n CREATE,\n create: CREATE,\n INFO,\n info: INFO,\n MAX,\n max: MAX,\n MERGE,\n merge: MERGE,\n MIN,\n min: MIN,\n QUANTILE,\n quantile: QUANTILE,\n RANK,\n rank: RANK,\n RESET,\n reset: RESET,\n REVRANK,\n revRank: REVRANK,\n TRIMMED_MEAN,\n trimmedMean: TRIMMED_MEAN\n};\nfunction pushCompressionArgument(args, options) {\n if (options?.COMPRESSION) {\n args.push('COMPRESSION', options.COMPRESSION.toString());\n }\n return args;\n}\nexports.pushCompressionArgument = pushCompressionArgument;\nfunction transformDoubleReply(reply) {\n switch (reply) {\n case 'inf':\n return Infinity;\n case '-inf':\n return -Infinity;\n case 'nan':\n return NaN;\n default:\n return parseFloat(reply);\n }\n}\nexports.transformDoubleReply = transformDoubleReply;\nfunction transformDoublesReply(reply) {\n return reply.map(transformDoubleReply);\n}\nexports.transformDoublesReply = transformDoublesReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.ADD', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.COUNT', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n const args = ['TOPK.INCRBY', key];\n if (Array.isArray(items)) {\n for (const item of items) {\n pushIncrByItem(args, item);\n }\n }\n else {\n pushIncrByItem(args, items);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushIncrByItem(args, { item, incrementBy }) {\n args.push(item, incrementBy.toString());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n k: reply[1],\n width: reply[3],\n depth: reply[5],\n decay: Number(reply[7])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.LIST', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.LIST', key, 'WITHCOUNT'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const reply = [];\n for (let i = 0; i < rawReply.length; i++) {\n reply.push({\n item: rawReply[i],\n count: rawReply[++i]\n });\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.QUERY', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, topK, options) {\n const args = ['TOPK.RESERVE', key, topK.toString()];\n if (options) {\n args.push(options.width.toString(), options.depth.toString(), options.decay.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ADD = require(\"./ADD\");\nconst COUNT = require(\"./COUNT\");\nconst INCRBY = require(\"./INCRBY\");\nconst INFO = require(\"./INFO\");\nconst LIST_WITHCOUNT = require(\"./LIST_WITHCOUNT\");\nconst LIST = require(\"./LIST\");\nconst QUERY = require(\"./QUERY\");\nconst RESERVE = require(\"./RESERVE\");\nexports.default = {\n ADD,\n add: ADD,\n COUNT,\n count: COUNT,\n INCRBY,\n incrBy: INCRBY,\n INFO,\n info: INFO,\n LIST_WITHCOUNT,\n listWithCount: LIST_WITHCOUNT,\n LIST,\n list: LIST,\n QUERY,\n query: QUERY,\n RESERVE,\n reserve: RESERVE\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisFlushModes = exports.GeoReplyWith = exports.defineScript = exports.createCluster = exports.commandOptions = exports.createClient = void 0;\nconst client_1 = require(\"./lib/client\");\nconst cluster_1 = require(\"./lib/cluster\");\nexports.createClient = client_1.default.create;\nexports.commandOptions = client_1.default.commandOptions;\nexports.createCluster = cluster_1.default.create;\nvar lua_script_1 = require(\"./lib/lua-script\");\nObject.defineProperty(exports, \"defineScript\", { enumerable: true, get: function () { return lua_script_1.defineScript; } });\n__exportStar(require(\"./lib/errors\"), exports);\nvar generic_transformers_1 = require(\"./lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"GeoReplyWith\", { enumerable: true, get: function () { return generic_transformers_1.GeoReplyWith; } });\nvar FLUSHALL_1 = require(\"./lib/commands/FLUSHALL\");\nObject.defineProperty(exports, \"RedisFlushModes\", { enumerable: true, get: function () { return FLUSHALL_1.RedisFlushModes; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass BufferComposer {\n constructor() {\n Object.defineProperty(this, \"chunks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n write(buffer) {\n this.chunks.push(buffer);\n }\n end(buffer) {\n this.write(buffer);\n return Buffer.concat(this.chunks.splice(0));\n }\n reset() {\n this.chunks = [];\n }\n}\nexports.default = BufferComposer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst string_decoder_1 = require(\"string_decoder\");\nclass StringComposer {\n constructor() {\n Object.defineProperty(this, \"decoder\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new string_decoder_1.StringDecoder()\n });\n Object.defineProperty(this, \"string\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: ''\n });\n }\n write(buffer) {\n this.string += this.decoder.write(buffer);\n }\n end(buffer) {\n const string = this.string + this.decoder.end(buffer);\n this.string = '';\n return string;\n }\n reset() {\n this.string = '';\n }\n}\nexports.default = StringComposer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../../errors\");\nconst buffer_1 = require(\"./composers/buffer\");\nconst string_1 = require(\"./composers/string\");\n// RESP2 specification\n// https://redis.io/topics/protocol\nvar Types;\n(function (Types) {\n Types[Types[\"SIMPLE_STRING\"] = 43] = \"SIMPLE_STRING\";\n Types[Types[\"ERROR\"] = 45] = \"ERROR\";\n Types[Types[\"INTEGER\"] = 58] = \"INTEGER\";\n Types[Types[\"BULK_STRING\"] = 36] = \"BULK_STRING\";\n Types[Types[\"ARRAY\"] = 42] = \"ARRAY\"; // *\n})(Types || (Types = {}));\nvar ASCII;\n(function (ASCII) {\n ASCII[ASCII[\"CR\"] = 13] = \"CR\";\n ASCII[ASCII[\"ZERO\"] = 48] = \"ZERO\";\n ASCII[ASCII[\"MINUS\"] = 45] = \"MINUS\";\n})(ASCII || (ASCII = {}));\n// Using TypeScript `private` and not the build-in `#` to avoid __classPrivateFieldGet and __classPrivateFieldSet\nclass RESP2Decoder {\n constructor(options) {\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: options\n });\n Object.defineProperty(this, \"cursor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"type\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"bufferComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new buffer_1.default()\n });\n Object.defineProperty(this, \"stringComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new string_1.default()\n });\n Object.defineProperty(this, \"currentStringComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.stringComposer\n });\n Object.defineProperty(this, \"integer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"isNegativeInteger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"bulkStringRemainingLength\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"arraysInProcess\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"initializeArray\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"arrayItemType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n reset() {\n this.cursor = 0;\n this.type = undefined;\n this.bufferComposer.reset();\n this.stringComposer.reset();\n this.currentStringComposer = this.stringComposer;\n }\n write(chunk) {\n while (this.cursor < chunk.length) {\n if (!this.type) {\n this.currentStringComposer = this.options.returnStringsAsBuffers() ?\n this.bufferComposer :\n this.stringComposer;\n this.type = chunk[this.cursor];\n if (++this.cursor >= chunk.length)\n break;\n }\n const reply = this.parseType(chunk, this.type);\n if (reply === undefined)\n break;\n this.type = undefined;\n this.options.onReply(reply);\n }\n this.cursor -= chunk.length;\n }\n parseType(chunk, type, arraysToKeep) {\n switch (type) {\n case Types.SIMPLE_STRING:\n return this.parseSimpleString(chunk);\n case Types.ERROR:\n return this.parseError(chunk);\n case Types.INTEGER:\n return this.parseInteger(chunk);\n case Types.BULK_STRING:\n return this.parseBulkString(chunk);\n case Types.ARRAY:\n return this.parseArray(chunk, arraysToKeep);\n }\n }\n compose(chunk, composer) {\n for (let i = this.cursor; i < chunk.length; i++) {\n if (chunk[i] === ASCII.CR) {\n const reply = composer.end(chunk.subarray(this.cursor, i));\n this.cursor = i + 2;\n return reply;\n }\n }\n const toWrite = chunk.subarray(this.cursor);\n composer.write(toWrite);\n this.cursor = chunk.length;\n }\n parseSimpleString(chunk) {\n return this.compose(chunk, this.currentStringComposer);\n }\n parseError(chunk) {\n const message = this.compose(chunk, this.stringComposer);\n if (message !== undefined) {\n return new errors_1.ErrorReply(message);\n }\n }\n parseInteger(chunk) {\n if (this.isNegativeInteger === undefined) {\n this.isNegativeInteger = chunk[this.cursor] === ASCII.MINUS;\n if (this.isNegativeInteger && ++this.cursor === chunk.length)\n return;\n }\n do {\n const byte = chunk[this.cursor];\n if (byte === ASCII.CR) {\n const integer = this.isNegativeInteger ? -this.integer : this.integer;\n this.integer = 0;\n this.isNegativeInteger = undefined;\n this.cursor += 2;\n return integer;\n }\n this.integer = this.integer * 10 + byte - ASCII.ZERO;\n } while (++this.cursor < chunk.length);\n }\n parseBulkString(chunk) {\n if (this.bulkStringRemainingLength === undefined) {\n const length = this.parseInteger(chunk);\n if (length === undefined)\n return;\n if (length === -1)\n return null;\n this.bulkStringRemainingLength = length;\n if (this.cursor >= chunk.length)\n return;\n }\n const end = this.cursor + this.bulkStringRemainingLength;\n if (chunk.length >= end) {\n const reply = this.currentStringComposer.end(chunk.subarray(this.cursor, end));\n this.bulkStringRemainingLength = undefined;\n this.cursor = end + 2;\n return reply;\n }\n const toWrite = chunk.subarray(this.cursor);\n this.currentStringComposer.write(toWrite);\n this.bulkStringRemainingLength -= toWrite.length;\n this.cursor = chunk.length;\n }\n parseArray(chunk, arraysToKeep = 0) {\n if (this.initializeArray || this.arraysInProcess.length === arraysToKeep) {\n const length = this.parseInteger(chunk);\n if (length === undefined) {\n this.initializeArray = true;\n return undefined;\n }\n this.initializeArray = false;\n this.arrayItemType = undefined;\n if (length === -1) {\n return this.returnArrayReply(null, arraysToKeep, chunk);\n }\n else if (length === 0) {\n return this.returnArrayReply([], arraysToKeep, chunk);\n }\n this.arraysInProcess.push({\n array: new Array(length),\n pushCounter: 0\n });\n }\n while (this.cursor < chunk.length) {\n if (!this.arrayItemType) {\n this.arrayItemType = chunk[this.cursor];\n if (++this.cursor >= chunk.length)\n break;\n }\n const item = this.parseType(chunk, this.arrayItemType, arraysToKeep + 1);\n if (item === undefined)\n break;\n this.arrayItemType = undefined;\n const reply = this.pushArrayItem(item, arraysToKeep);\n if (reply !== undefined)\n return reply;\n }\n }\n returnArrayReply(reply, arraysToKeep, chunk) {\n if (this.arraysInProcess.length <= arraysToKeep)\n return reply;\n return this.pushArrayItem(reply, arraysToKeep, chunk);\n }\n pushArrayItem(item, arraysToKeep, chunk) {\n const to = this.arraysInProcess[this.arraysInProcess.length - 1];\n to.array[to.pushCounter] = item;\n if (++to.pushCounter === to.array.length) {\n return this.returnArrayReply(this.arraysInProcess.pop().array, arraysToKeep, chunk);\n }\n else if (chunk && chunk.length > this.cursor) {\n return this.parseArray(chunk, arraysToKeep);\n }\n }\n}\nexports.default = RESP2Decoder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst CRLF = '\\r\\n';\nfunction encodeCommand(args) {\n const toWrite = [];\n let strings = '*' + args.length + CRLF;\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (typeof arg === 'string') {\n strings += '$' + Buffer.byteLength(arg) + CRLF + arg + CRLF;\n }\n else if (arg instanceof Buffer) {\n toWrite.push(strings + '$' + arg.length.toString() + CRLF, arg);\n strings = CRLF;\n }\n else {\n throw new TypeError('Invalid argument type');\n }\n }\n toWrite.push(strings);\n return toWrite;\n}\nexports.default = encodeCommand;\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisCommandsQueue_instances, _a, _RedisCommandsQueue_flushQueue, _RedisCommandsQueue_maxLength, _RedisCommandsQueue_waitingToBeSent, _RedisCommandsQueue_waitingForReply, _RedisCommandsQueue_onShardedChannelMoved, _RedisCommandsQueue_pubSub, _RedisCommandsQueue_chainInExecution, _RedisCommandsQueue_decoder, _RedisCommandsQueue_pushPubSubCommand;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LinkedList = require(\"yallist\");\nconst errors_1 = require(\"../errors\");\nconst decoder_1 = require(\"./RESP2/decoder\");\nconst encoder_1 = require(\"./RESP2/encoder\");\nconst pub_sub_1 = require(\"./pub-sub\");\nconst PONG = Buffer.from('pong');\nclass RedisCommandsQueue {\n get isPubSubActive() {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive;\n }\n constructor(maxLength, onShardedChannelMoved) {\n _RedisCommandsQueue_instances.add(this);\n _RedisCommandsQueue_maxLength.set(this, void 0);\n _RedisCommandsQueue_waitingToBeSent.set(this, new LinkedList());\n _RedisCommandsQueue_waitingForReply.set(this, new LinkedList());\n _RedisCommandsQueue_onShardedChannelMoved.set(this, void 0);\n _RedisCommandsQueue_pubSub.set(this, new pub_sub_1.PubSub());\n _RedisCommandsQueue_chainInExecution.set(this, void 0);\n _RedisCommandsQueue_decoder.set(this, new decoder_1.default({\n returnStringsAsBuffers: () => {\n return !!__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").head?.value.returnBuffers ||\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive;\n },\n onReply: reply => {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive && Array.isArray(reply)) {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").handleMessageReply(reply))\n return;\n const isShardedUnsubscribe = pub_sub_1.PubSub.isShardedUnsubscribe(reply);\n if (isShardedUnsubscribe && !__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").length) {\n const channel = reply[1].toString();\n __classPrivateFieldGet(this, _RedisCommandsQueue_onShardedChannelMoved, \"f\").call(this, channel, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").removeShardedListeners(channel));\n return;\n }\n else if (isShardedUnsubscribe || pub_sub_1.PubSub.isStatusReply(reply)) {\n const head = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").head.value;\n if ((Number.isNaN(head.channelsCounter) && reply[2] === 0) ||\n --head.channelsCounter === 0) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift().resolve();\n }\n return;\n }\n if (PONG.equals(reply[0])) {\n const { resolve, returnBuffers } = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift(), buffer = (reply[1].length === 0 ? reply[0] : reply[1]);\n resolve(returnBuffers ? buffer : buffer.toString());\n return;\n }\n }\n const { resolve, reject } = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift();\n if (reply instanceof errors_1.ErrorReply) {\n reject(reply);\n }\n else {\n resolve(reply);\n }\n }\n }));\n __classPrivateFieldSet(this, _RedisCommandsQueue_maxLength, maxLength, \"f\");\n __classPrivateFieldSet(this, _RedisCommandsQueue_onShardedChannelMoved, onShardedChannelMoved, \"f\");\n }\n addCommand(args, options) {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, \"f\") && __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").length + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").length >= __classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, \"f\")) {\n return Promise.reject(new Error('The queue is full'));\n }\n else if (options?.signal?.aborted) {\n return Promise.reject(new errors_1.AbortError());\n }\n return new Promise((resolve, reject) => {\n const node = new LinkedList.Node({\n args,\n chainId: options?.chainId,\n returnBuffers: options?.returnBuffers,\n resolve,\n reject\n });\n if (options?.signal) {\n const listener = () => {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").removeNode(node);\n node.value.reject(new errors_1.AbortError());\n };\n node.value.abort = {\n signal: options.signal,\n listener\n };\n // AbortSignal type is incorrent\n options.signal.addEventListener('abort', listener, {\n once: true\n });\n }\n if (options?.asap) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").unshiftNode(node);\n }\n else {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").pushNode(node);\n }\n });\n }\n subscribe(type, channels, listener, returnBuffers) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").subscribe(type, channels, listener, returnBuffers));\n }\n unsubscribe(type, channels, listener, returnBuffers) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").unsubscribe(type, channels, listener, returnBuffers));\n }\n resubscribe() {\n const commands = __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").resubscribe();\n if (!commands.length)\n return;\n return Promise.all(commands.map(command => __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, command)));\n }\n extendPubSubChannelListeners(type, channel, listeners) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").extendChannelListeners(type, channel, listeners));\n }\n extendPubSubListeners(type, listeners) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").extendTypeListeners(type, listeners));\n }\n getPubSubListeners(type) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").getTypeListeners(type);\n }\n getCommandToSend() {\n const toSend = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").shift();\n if (!toSend)\n return;\n let encoded;\n try {\n encoded = (0, encoder_1.default)(toSend.args);\n }\n catch (err) {\n toSend.reject(err);\n return;\n }\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").push({\n resolve: toSend.resolve,\n reject: toSend.reject,\n channelsCounter: toSend.channelsCounter,\n returnBuffers: toSend.returnBuffers\n });\n __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, toSend.chainId, \"f\");\n return encoded;\n }\n onReplyChunk(chunk) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").write(chunk);\n }\n flushWaitingForReply(err) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").reset();\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").reset();\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\"), err);\n if (!__classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, \"f\"))\n return;\n while (__classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").head?.value.chainId === __classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, \"f\")) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").shift();\n }\n __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, undefined, \"f\");\n }\n flushAll(err) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").reset();\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").reset();\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\"), err);\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\"), err);\n }\n}\nexports.default = RedisCommandsQueue;\n_a = RedisCommandsQueue, _RedisCommandsQueue_maxLength = new WeakMap(), _RedisCommandsQueue_waitingToBeSent = new WeakMap(), _RedisCommandsQueue_waitingForReply = new WeakMap(), _RedisCommandsQueue_onShardedChannelMoved = new WeakMap(), _RedisCommandsQueue_pubSub = new WeakMap(), _RedisCommandsQueue_chainInExecution = new WeakMap(), _RedisCommandsQueue_decoder = new WeakMap(), _RedisCommandsQueue_instances = new WeakSet(), _RedisCommandsQueue_flushQueue = function _RedisCommandsQueue_flushQueue(queue, err) {\n while (queue.length) {\n queue.shift().reject(err);\n }\n}, _RedisCommandsQueue_pushPubSubCommand = function _RedisCommandsQueue_pushPubSubCommand(command) {\n if (command === undefined)\n return;\n return new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").push({\n args: command.args,\n channelsCounter: command.channelsCounter,\n returnBuffers: true,\n resolve: () => {\n command.resolve();\n resolve();\n },\n reject: err => {\n command.reject?.();\n reject(err);\n }\n });\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"../cluster/commands\");\nconst ACL_CAT = require(\"../commands/ACL_CAT\");\nconst ACL_DELUSER = require(\"../commands/ACL_DELUSER\");\nconst ACL_DRYRUN = require(\"../commands/ACL_DRYRUN\");\nconst ACL_GENPASS = require(\"../commands/ACL_GENPASS\");\nconst ACL_GETUSER = require(\"../commands/ACL_GETUSER\");\nconst ACL_LIST = require(\"../commands/ACL_LIST\");\nconst ACL_LOAD = require(\"../commands/ACL_LOAD\");\nconst ACL_LOG_RESET = require(\"../commands/ACL_LOG_RESET\");\nconst ACL_LOG = require(\"../commands/ACL_LOG\");\nconst ACL_SAVE = require(\"../commands/ACL_SAVE\");\nconst ACL_SETUSER = require(\"../commands/ACL_SETUSER\");\nconst ACL_USERS = require(\"../commands/ACL_USERS\");\nconst ACL_WHOAMI = require(\"../commands/ACL_WHOAMI\");\nconst ASKING = require(\"../commands/ASKING\");\nconst AUTH = require(\"../commands/AUTH\");\nconst BGREWRITEAOF = require(\"../commands/BGREWRITEAOF\");\nconst BGSAVE = require(\"../commands/BGSAVE\");\nconst CLIENT_CACHING = require(\"../commands/CLIENT_CACHING\");\nconst CLIENT_GETNAME = require(\"../commands/CLIENT_GETNAME\");\nconst CLIENT_GETREDIR = require(\"../commands/CLIENT_GETREDIR\");\nconst CLIENT_ID = require(\"../commands/CLIENT_ID\");\nconst CLIENT_KILL = require(\"../commands/CLIENT_KILL\");\nconst CLIENT_LIST = require(\"../commands/CLIENT_LIST\");\nconst CLIENT_NO_EVICT = require(\"../commands/CLIENT_NO-EVICT\");\nconst CLIENT_PAUSE = require(\"../commands/CLIENT_PAUSE\");\nconst CLIENT_SETNAME = require(\"../commands/CLIENT_SETNAME\");\nconst CLIENT_TRACKING = require(\"../commands/CLIENT_TRACKING\");\nconst CLIENT_TRACKINGINFO = require(\"../commands/CLIENT_TRACKINGINFO\");\nconst CLIENT_UNPAUSE = require(\"../commands/CLIENT_UNPAUSE\");\nconst CLIENT_INFO = require(\"../commands/CLIENT_INFO\");\nconst CLUSTER_ADDSLOTS = require(\"../commands/CLUSTER_ADDSLOTS\");\nconst CLUSTER_ADDSLOTSRANGE = require(\"../commands/CLUSTER_ADDSLOTSRANGE\");\nconst CLUSTER_BUMPEPOCH = require(\"../commands/CLUSTER_BUMPEPOCH\");\nconst CLUSTER_COUNT_FAILURE_REPORTS = require(\"../commands/CLUSTER_COUNT-FAILURE-REPORTS\");\nconst CLUSTER_COUNTKEYSINSLOT = require(\"../commands/CLUSTER_COUNTKEYSINSLOT\");\nconst CLUSTER_DELSLOTS = require(\"../commands/CLUSTER_DELSLOTS\");\nconst CLUSTER_DELSLOTSRANGE = require(\"../commands/CLUSTER_DELSLOTSRANGE\");\nconst CLUSTER_FAILOVER = require(\"../commands/CLUSTER_FAILOVER\");\nconst CLUSTER_FLUSHSLOTS = require(\"../commands/CLUSTER_FLUSHSLOTS\");\nconst CLUSTER_FORGET = require(\"../commands/CLUSTER_FORGET\");\nconst CLUSTER_GETKEYSINSLOT = require(\"../commands/CLUSTER_GETKEYSINSLOT\");\nconst CLUSTER_INFO = require(\"../commands/CLUSTER_INFO\");\nconst CLUSTER_KEYSLOT = require(\"../commands/CLUSTER_KEYSLOT\");\nconst CLUSTER_LINKS = require(\"../commands/CLUSTER_LINKS\");\nconst CLUSTER_MEET = require(\"../commands/CLUSTER_MEET\");\nconst CLUSTER_MYID = require(\"../commands/CLUSTER_MYID\");\nconst CLUSTER_NODES = require(\"../commands/CLUSTER_NODES\");\nconst CLUSTER_REPLICAS = require(\"../commands/CLUSTER_REPLICAS\");\nconst CLUSTER_REPLICATE = require(\"../commands/CLUSTER_REPLICATE\");\nconst CLUSTER_RESET = require(\"../commands/CLUSTER_RESET\");\nconst CLUSTER_SAVECONFIG = require(\"../commands/CLUSTER_SAVECONFIG\");\nconst CLUSTER_SET_CONFIG_EPOCH = require(\"../commands/CLUSTER_SET-CONFIG-EPOCH\");\nconst CLUSTER_SETSLOT = require(\"../commands/CLUSTER_SETSLOT\");\nconst CLUSTER_SLOTS = require(\"../commands/CLUSTER_SLOTS\");\nconst COMMAND_COUNT = require(\"../commands/COMMAND_COUNT\");\nconst COMMAND_GETKEYS = require(\"../commands/COMMAND_GETKEYS\");\nconst COMMAND_GETKEYSANDFLAGS = require(\"../commands/COMMAND_GETKEYSANDFLAGS\");\nconst COMMAND_INFO = require(\"../commands/COMMAND_INFO\");\nconst COMMAND_LIST = require(\"../commands/COMMAND_LIST\");\nconst COMMAND = require(\"../commands/COMMAND\");\nconst CONFIG_GET = require(\"../commands/CONFIG_GET\");\nconst CONFIG_RESETASTAT = require(\"../commands/CONFIG_RESETSTAT\");\nconst CONFIG_REWRITE = require(\"../commands/CONFIG_REWRITE\");\nconst CONFIG_SET = require(\"../commands/CONFIG_SET\");\nconst DBSIZE = require(\"../commands/DBSIZE\");\nconst DISCARD = require(\"../commands/DISCARD\");\nconst ECHO = require(\"../commands/ECHO\");\nconst FAILOVER = require(\"../commands/FAILOVER\");\nconst FLUSHALL = require(\"../commands/FLUSHALL\");\nconst FLUSHDB = require(\"../commands/FLUSHDB\");\nconst FUNCTION_DELETE = require(\"../commands/FUNCTION_DELETE\");\nconst FUNCTION_DUMP = require(\"../commands/FUNCTION_DUMP\");\nconst FUNCTION_FLUSH = require(\"../commands/FUNCTION_FLUSH\");\nconst FUNCTION_KILL = require(\"../commands/FUNCTION_KILL\");\nconst FUNCTION_LIST_WITHCODE = require(\"../commands/FUNCTION_LIST_WITHCODE\");\nconst FUNCTION_LIST = require(\"../commands/FUNCTION_LIST\");\nconst FUNCTION_LOAD = require(\"../commands/FUNCTION_LOAD\");\nconst FUNCTION_RESTORE = require(\"../commands/FUNCTION_RESTORE\");\nconst FUNCTION_STATS = require(\"../commands/FUNCTION_STATS\");\nconst HELLO = require(\"../commands/HELLO\");\nconst INFO = require(\"../commands/INFO\");\nconst KEYS = require(\"../commands/KEYS\");\nconst LASTSAVE = require(\"../commands/LASTSAVE\");\nconst LATENCY_DOCTOR = require(\"../commands/LATENCY_DOCTOR\");\nconst LATENCY_GRAPH = require(\"../commands/LATENCY_GRAPH\");\nconst LOLWUT = require(\"../commands/LOLWUT\");\nconst MEMORY_DOCTOR = require(\"../commands/MEMORY_DOCTOR\");\nconst MEMORY_MALLOC_STATS = require(\"../commands/MEMORY_MALLOC-STATS\");\nconst MEMORY_PURGE = require(\"../commands/MEMORY_PURGE\");\nconst MEMORY_STATS = require(\"../commands/MEMORY_STATS\");\nconst MEMORY_USAGE = require(\"../commands/MEMORY_USAGE\");\nconst MODULE_LIST = require(\"../commands/MODULE_LIST\");\nconst MODULE_LOAD = require(\"../commands/MODULE_LOAD\");\nconst MODULE_UNLOAD = require(\"../commands/MODULE_UNLOAD\");\nconst MOVE = require(\"../commands/MOVE\");\nconst PING = require(\"../commands/PING\");\nconst PUBSUB_CHANNELS = require(\"../commands/PUBSUB_CHANNELS\");\nconst PUBSUB_NUMPAT = require(\"../commands/PUBSUB_NUMPAT\");\nconst PUBSUB_NUMSUB = require(\"../commands/PUBSUB_NUMSUB\");\nconst PUBSUB_SHARDCHANNELS = require(\"../commands/PUBSUB_SHARDCHANNELS\");\nconst RANDOMKEY = require(\"../commands/RANDOMKEY\");\nconst READONLY = require(\"../commands/READONLY\");\nconst READWRITE = require(\"../commands/READWRITE\");\nconst REPLICAOF = require(\"../commands/REPLICAOF\");\nconst RESTORE_ASKING = require(\"../commands/RESTORE-ASKING\");\nconst ROLE = require(\"../commands/ROLE\");\nconst SAVE = require(\"../commands/SAVE\");\nconst SCAN = require(\"../commands/SCAN\");\nconst SCRIPT_DEBUG = require(\"../commands/SCRIPT_DEBUG\");\nconst SCRIPT_EXISTS = require(\"../commands/SCRIPT_EXISTS\");\nconst SCRIPT_FLUSH = require(\"../commands/SCRIPT_FLUSH\");\nconst SCRIPT_KILL = require(\"../commands/SCRIPT_KILL\");\nconst SCRIPT_LOAD = require(\"../commands/SCRIPT_LOAD\");\nconst SHUTDOWN = require(\"../commands/SHUTDOWN\");\nconst SWAPDB = require(\"../commands/SWAPDB\");\nconst TIME = require(\"../commands/TIME\");\nconst UNWATCH = require(\"../commands/UNWATCH\");\nconst WAIT = require(\"../commands/WAIT\");\nexports.default = {\n ...commands_1.default,\n ACL_CAT,\n aclCat: ACL_CAT,\n ACL_DELUSER,\n aclDelUser: ACL_DELUSER,\n ACL_DRYRUN,\n aclDryRun: ACL_DRYRUN,\n ACL_GENPASS,\n aclGenPass: ACL_GENPASS,\n ACL_GETUSER,\n aclGetUser: ACL_GETUSER,\n ACL_LIST,\n aclList: ACL_LIST,\n ACL_LOAD,\n aclLoad: ACL_LOAD,\n ACL_LOG_RESET,\n aclLogReset: ACL_LOG_RESET,\n ACL_LOG,\n aclLog: ACL_LOG,\n ACL_SAVE,\n aclSave: ACL_SAVE,\n ACL_SETUSER,\n aclSetUser: ACL_SETUSER,\n ACL_USERS,\n aclUsers: ACL_USERS,\n ACL_WHOAMI,\n aclWhoAmI: ACL_WHOAMI,\n ASKING,\n asking: ASKING,\n AUTH,\n auth: AUTH,\n BGREWRITEAOF,\n bgRewriteAof: BGREWRITEAOF,\n BGSAVE,\n bgSave: BGSAVE,\n CLIENT_CACHING,\n clientCaching: CLIENT_CACHING,\n CLIENT_GETNAME,\n clientGetName: CLIENT_GETNAME,\n CLIENT_GETREDIR,\n clientGetRedir: CLIENT_GETREDIR,\n CLIENT_ID,\n clientId: CLIENT_ID,\n CLIENT_KILL,\n clientKill: CLIENT_KILL,\n 'CLIENT_NO-EVICT': CLIENT_NO_EVICT,\n clientNoEvict: CLIENT_NO_EVICT,\n CLIENT_LIST,\n clientList: CLIENT_LIST,\n CLIENT_PAUSE,\n clientPause: CLIENT_PAUSE,\n CLIENT_SETNAME,\n clientSetName: CLIENT_SETNAME,\n CLIENT_TRACKING,\n clientTracking: CLIENT_TRACKING,\n CLIENT_TRACKINGINFO,\n clientTrackingInfo: CLIENT_TRACKINGINFO,\n CLIENT_UNPAUSE,\n clientUnpause: CLIENT_UNPAUSE,\n CLIENT_INFO,\n clientInfo: CLIENT_INFO,\n CLUSTER_ADDSLOTS,\n clusterAddSlots: CLUSTER_ADDSLOTS,\n CLUSTER_ADDSLOTSRANGE,\n clusterAddSlotsRange: CLUSTER_ADDSLOTSRANGE,\n CLUSTER_BUMPEPOCH,\n clusterBumpEpoch: CLUSTER_BUMPEPOCH,\n CLUSTER_COUNT_FAILURE_REPORTS,\n clusterCountFailureReports: CLUSTER_COUNT_FAILURE_REPORTS,\n CLUSTER_COUNTKEYSINSLOT,\n clusterCountKeysInSlot: CLUSTER_COUNTKEYSINSLOT,\n CLUSTER_DELSLOTS,\n clusterDelSlots: CLUSTER_DELSLOTS,\n CLUSTER_DELSLOTSRANGE,\n clusterDelSlotsRange: CLUSTER_DELSLOTSRANGE,\n CLUSTER_FAILOVER,\n clusterFailover: CLUSTER_FAILOVER,\n CLUSTER_FLUSHSLOTS,\n clusterFlushSlots: CLUSTER_FLUSHSLOTS,\n CLUSTER_FORGET,\n clusterForget: CLUSTER_FORGET,\n CLUSTER_GETKEYSINSLOT,\n clusterGetKeysInSlot: CLUSTER_GETKEYSINSLOT,\n CLUSTER_INFO,\n clusterInfo: CLUSTER_INFO,\n CLUSTER_KEYSLOT,\n clusterKeySlot: CLUSTER_KEYSLOT,\n CLUSTER_LINKS,\n clusterLinks: CLUSTER_LINKS,\n CLUSTER_MEET,\n clusterMeet: CLUSTER_MEET,\n CLUSTER_MYID,\n clusterMyId: CLUSTER_MYID,\n CLUSTER_NODES,\n clusterNodes: CLUSTER_NODES,\n CLUSTER_REPLICAS,\n clusterReplicas: CLUSTER_REPLICAS,\n CLUSTER_REPLICATE,\n clusterReplicate: CLUSTER_REPLICATE,\n CLUSTER_RESET,\n clusterReset: CLUSTER_RESET,\n CLUSTER_SAVECONFIG,\n clusterSaveConfig: CLUSTER_SAVECONFIG,\n CLUSTER_SET_CONFIG_EPOCH,\n clusterSetConfigEpoch: CLUSTER_SET_CONFIG_EPOCH,\n CLUSTER_SETSLOT,\n clusterSetSlot: CLUSTER_SETSLOT,\n CLUSTER_SLOTS,\n clusterSlots: CLUSTER_SLOTS,\n COMMAND_COUNT,\n commandCount: COMMAND_COUNT,\n COMMAND_GETKEYS,\n commandGetKeys: COMMAND_GETKEYS,\n COMMAND_GETKEYSANDFLAGS,\n commandGetKeysAndFlags: COMMAND_GETKEYSANDFLAGS,\n COMMAND_INFO,\n commandInfo: COMMAND_INFO,\n COMMAND_LIST,\n commandList: COMMAND_LIST,\n COMMAND,\n command: COMMAND,\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_RESETASTAT,\n configResetStat: CONFIG_RESETASTAT,\n CONFIG_REWRITE,\n configRewrite: CONFIG_REWRITE,\n CONFIG_SET,\n configSet: CONFIG_SET,\n DBSIZE,\n dbSize: DBSIZE,\n DISCARD,\n discard: DISCARD,\n ECHO,\n echo: ECHO,\n FAILOVER,\n failover: FAILOVER,\n FLUSHALL,\n flushAll: FLUSHALL,\n FLUSHDB,\n flushDb: FLUSHDB,\n FUNCTION_DELETE,\n functionDelete: FUNCTION_DELETE,\n FUNCTION_DUMP,\n functionDump: FUNCTION_DUMP,\n FUNCTION_FLUSH,\n functionFlush: FUNCTION_FLUSH,\n FUNCTION_KILL,\n functionKill: FUNCTION_KILL,\n FUNCTION_LIST_WITHCODE,\n functionListWithCode: FUNCTION_LIST_WITHCODE,\n FUNCTION_LIST,\n functionList: FUNCTION_LIST,\n FUNCTION_LOAD,\n functionLoad: FUNCTION_LOAD,\n FUNCTION_RESTORE,\n functionRestore: FUNCTION_RESTORE,\n FUNCTION_STATS,\n functionStats: FUNCTION_STATS,\n HELLO,\n hello: HELLO,\n INFO,\n info: INFO,\n KEYS,\n keys: KEYS,\n LASTSAVE,\n lastSave: LASTSAVE,\n LATENCY_DOCTOR,\n latencyDoctor: LATENCY_DOCTOR,\n LATENCY_GRAPH,\n latencyGraph: LATENCY_GRAPH,\n LOLWUT,\n lolwut: LOLWUT,\n MEMORY_DOCTOR,\n memoryDoctor: MEMORY_DOCTOR,\n 'MEMORY_MALLOC-STATS': MEMORY_MALLOC_STATS,\n memoryMallocStats: MEMORY_MALLOC_STATS,\n MEMORY_PURGE,\n memoryPurge: MEMORY_PURGE,\n MEMORY_STATS,\n memoryStats: MEMORY_STATS,\n MEMORY_USAGE,\n memoryUsage: MEMORY_USAGE,\n MODULE_LIST,\n moduleList: MODULE_LIST,\n MODULE_LOAD,\n moduleLoad: MODULE_LOAD,\n MODULE_UNLOAD,\n moduleUnload: MODULE_UNLOAD,\n MOVE,\n move: MOVE,\n PING,\n ping: PING,\n PUBSUB_CHANNELS,\n pubSubChannels: PUBSUB_CHANNELS,\n PUBSUB_NUMPAT,\n pubSubNumPat: PUBSUB_NUMPAT,\n PUBSUB_NUMSUB,\n pubSubNumSub: PUBSUB_NUMSUB,\n PUBSUB_SHARDCHANNELS,\n pubSubShardChannels: PUBSUB_SHARDCHANNELS,\n RANDOMKEY,\n randomKey: RANDOMKEY,\n READONLY,\n readonly: READONLY,\n READWRITE,\n readwrite: READWRITE,\n REPLICAOF,\n replicaOf: REPLICAOF,\n 'RESTORE-ASKING': RESTORE_ASKING,\n restoreAsking: RESTORE_ASKING,\n ROLE,\n role: ROLE,\n SAVE,\n save: SAVE,\n SCAN,\n scan: SCAN,\n SCRIPT_DEBUG,\n scriptDebug: SCRIPT_DEBUG,\n SCRIPT_EXISTS,\n scriptExists: SCRIPT_EXISTS,\n SCRIPT_FLUSH,\n scriptFlush: SCRIPT_FLUSH,\n SCRIPT_KILL,\n scriptKill: SCRIPT_KILL,\n SCRIPT_LOAD,\n scriptLoad: SCRIPT_LOAD,\n SHUTDOWN,\n shutdown: SHUTDOWN,\n SWAPDB,\n swapDb: SWAPDB,\n TIME,\n time: TIME,\n UNWATCH,\n unwatch: UNWATCH,\n WAIT,\n wait: WAIT\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisClient_instances, _RedisClient_options, _RedisClient_socket, _RedisClient_queue, _RedisClient_isolationPool, _RedisClient_v4, _RedisClient_selectedDB, _RedisClient_initiateOptions, _RedisClient_initiateQueue, _RedisClient_initiateSocket, _RedisClient_legacyMode, _RedisClient_legacySendCommand, _RedisClient_defineLegacyCommand, _RedisClient_pingTimer, _RedisClient_setPingTimer, _RedisClient_sendCommand, _RedisClient_pubSubCommand, _RedisClient_tick, _RedisClient_addMultiCommands, _RedisClient_destroyIsolationPool;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst socket_1 = require(\"./socket\");\nconst commands_queue_1 = require(\"./commands-queue\");\nconst multi_command_1 = require(\"./multi-command\");\nconst events_1 = require(\"events\");\nconst command_options_1 = require(\"../command-options\");\nconst commander_1 = require(\"../commander\");\nconst generic_pool_1 = require(\"generic-pool\");\nconst errors_1 = require(\"../errors\");\nconst url_1 = require(\"url\");\nconst pub_sub_1 = require(\"./pub-sub\");\nclass RedisClient extends events_1.EventEmitter {\n static commandOptions(options) {\n return (0, command_options_1.commandOptions)(options);\n }\n static extend(extensions) {\n const Client = (0, commander_1.attachExtensions)({\n BaseClass: RedisClient,\n modulesExecutor: RedisClient.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClient.prototype.functionsExecuter,\n functions: extensions?.functions,\n scriptsExecutor: RedisClient.prototype.scriptsExecuter,\n scripts: extensions?.scripts\n });\n if (Client !== RedisClient) {\n Client.prototype.Multi = multi_command_1.default.extend(extensions);\n }\n return Client;\n }\n static create(options) {\n return new (RedisClient.extend(options))(options);\n }\n static parseURL(url) {\n // https://www.iana.org/assignments/uri-schemes/prov/redis\n const { hostname, port, protocol, username, password, pathname } = new url_1.URL(url), parsed = {\n socket: {\n host: hostname\n }\n };\n if (protocol === 'rediss:') {\n parsed.socket.tls = true;\n }\n else if (protocol !== 'redis:') {\n throw new TypeError('Invalid protocol');\n }\n if (port) {\n parsed.socket.port = Number(port);\n }\n if (username) {\n parsed.username = decodeURIComponent(username);\n }\n if (password) {\n parsed.password = decodeURIComponent(password);\n }\n if (pathname.length > 1) {\n const database = Number(pathname.substring(1));\n if (isNaN(database)) {\n throw new TypeError('Invalid pathname');\n }\n parsed.database = database;\n }\n return parsed;\n }\n get options() {\n return __classPrivateFieldGet(this, _RedisClient_options, \"f\");\n }\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen;\n }\n get isReady() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady;\n }\n get isPubSubActive() {\n return __classPrivateFieldGet(this, _RedisClient_queue, \"f\").isPubSubActive;\n }\n get v4() {\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode) {\n throw new Error('the client is not in \"legacy mode\"');\n }\n return __classPrivateFieldGet(this, _RedisClient_v4, \"f\");\n }\n constructor(options) {\n super();\n _RedisClient_instances.add(this);\n Object.defineProperty(this, \"commandOptions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: RedisClient.commandOptions\n });\n _RedisClient_options.set(this, void 0);\n _RedisClient_socket.set(this, void 0);\n _RedisClient_queue.set(this, void 0);\n _RedisClient_isolationPool.set(this, void 0);\n _RedisClient_v4.set(this, {});\n _RedisClient_selectedDB.set(this, 0);\n _RedisClient_pingTimer.set(this, void 0);\n Object.defineProperty(this, \"select\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SELECT\n });\n Object.defineProperty(this, \"subscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUBSCRIBE\n });\n Object.defineProperty(this, \"unsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.UNSUBSCRIBE\n });\n Object.defineProperty(this, \"pSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PSUBSCRIBE\n });\n Object.defineProperty(this, \"pUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PUNSUBSCRIBE\n });\n Object.defineProperty(this, \"sSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SSUBSCRIBE\n });\n Object.defineProperty(this, \"sUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUNSUBSCRIBE\n });\n Object.defineProperty(this, \"quit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.QUIT\n });\n Object.defineProperty(this, \"multi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.MULTI\n });\n __classPrivateFieldSet(this, _RedisClient_options, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateOptions).call(this, options), \"f\");\n __classPrivateFieldSet(this, _RedisClient_queue, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateQueue).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisClient_socket, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateSocket).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisClient_isolationPool, (0, generic_pool_1.createPool)({\n create: async () => {\n const duplicate = this.duplicate({\n isolationPoolOptions: undefined\n }).on('error', err => this.emit('error', err));\n await duplicate.connect();\n return duplicate;\n },\n destroy: client => client.disconnect()\n }, options?.isolationPoolOptions), \"f\");\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacyMode).call(this);\n }\n duplicate(overrides) {\n return new (Object.getPrototypeOf(this).constructor)({\n ...__classPrivateFieldGet(this, _RedisClient_options, \"f\"),\n ...overrides\n });\n }\n connect() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").connect();\n }\n async commandsExecutor(command, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args);\n return (0, commander_1.transformCommandReply)(command, await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options), redisArgs.preserve);\n }\n sendCommand(args, options) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, args, options);\n }\n async functionsExecuter(fn, args, name) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(fn, args);\n return (0, commander_1.transformCommandReply)(fn, await this.executeFunction(name, fn, redisArgs, options), redisArgs.preserve);\n }\n executeFunction(name, fn, args, options) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, (0, commander_1.fCallArguments)(name, fn, args), options);\n }\n async scriptsExecuter(script, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args);\n return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, redisArgs, options), redisArgs.preserve);\n }\n async executeScript(script, args, options) {\n const redisArgs = ['EVALSHA', script.SHA1];\n if (script.NUMBER_OF_KEYS !== undefined) {\n redisArgs.push(script.NUMBER_OF_KEYS.toString());\n }\n redisArgs.push(...args);\n try {\n return await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options);\n }\n catch (err) {\n if (!err?.message?.startsWith?.('NOSCRIPT')) {\n throw err;\n }\n redisArgs[0] = 'EVAL';\n redisArgs[1] = script.SCRIPT;\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options);\n }\n }\n async SELECT(options, db) {\n if (!(0, command_options_1.isCommandOptions)(options)) {\n db = options;\n options = null;\n }\n await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, ['SELECT', db.toString()], options);\n __classPrivateFieldSet(this, _RedisClient_selectedDB, db, \"f\");\n }\n SUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.CHANNELS, channels, listener, bufferMode));\n }\n UNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.CHANNELS, channels, listener, bufferMode));\n }\n PSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.PATTERNS, patterns, listener, bufferMode));\n }\n PUNSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.PATTERNS, patterns, listener, bufferMode));\n }\n SSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.SHARDED, channels, listener, bufferMode));\n }\n SUNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.SHARDED, channels, listener, bufferMode));\n }\n getPubSubListeners(type) {\n return __classPrivateFieldGet(this, _RedisClient_queue, \"f\").getPubSubListeners(type);\n }\n extendPubSubChannelListeners(type, channel, listeners) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").extendPubSubChannelListeners(type, channel, listeners));\n }\n extendPubSubListeners(type, listeners) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").extendPubSubListeners(type, listeners));\n }\n QUIT() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").quit(async () => {\n const quitPromise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['QUIT']);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n const [reply] = await Promise.all([\n quitPromise,\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_destroyIsolationPool).call(this)\n ]);\n return reply;\n });\n }\n executeIsolated(fn) {\n return __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").use(fn);\n }\n MULTI() {\n return new this.Multi(this.multiExecutor.bind(this), __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode);\n }\n async multiExecutor(commands, selectedDB, chainId) {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen) {\n return Promise.reject(new errors_1.ClientClosedError());\n }\n const promise = chainId ?\n // if `chainId` has a value, it's a `MULTI` (and not \"pipeline\") - need to add the `MULTI` and `EXEC` commands\n Promise.all([\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['MULTI'], { chainId }),\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_addMultiCommands).call(this, commands, chainId),\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['EXEC'], { chainId })\n ]) :\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_addMultiCommands).call(this, commands);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n const results = await promise;\n if (selectedDB !== undefined) {\n __classPrivateFieldSet(this, _RedisClient_selectedDB, selectedDB, \"f\");\n }\n return results;\n }\n async *scanIterator(options) {\n let cursor = 0;\n do {\n const reply = await this.scan(cursor, options);\n cursor = reply.cursor;\n for (const key of reply.keys) {\n yield key;\n }\n } while (cursor !== 0);\n }\n async *hScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.hScan(key, cursor, options);\n cursor = reply.cursor;\n for (const tuple of reply.tuples) {\n yield tuple;\n }\n } while (cursor !== 0);\n }\n async *sScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.sScan(key, cursor, options);\n cursor = reply.cursor;\n for (const member of reply.members) {\n yield member;\n }\n } while (cursor !== 0);\n }\n async *zScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.zScan(key, cursor, options);\n cursor = reply.cursor;\n for (const member of reply.members) {\n yield member;\n }\n } while (cursor !== 0);\n }\n async disconnect() {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushAll(new errors_1.DisconnectsClientError());\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").disconnect();\n await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_destroyIsolationPool).call(this);\n }\n ref() {\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").ref();\n }\n unref() {\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").unref();\n }\n}\nexports.default = RedisClient;\n_RedisClient_options = new WeakMap(), _RedisClient_socket = new WeakMap(), _RedisClient_queue = new WeakMap(), _RedisClient_isolationPool = new WeakMap(), _RedisClient_v4 = new WeakMap(), _RedisClient_selectedDB = new WeakMap(), _RedisClient_pingTimer = new WeakMap(), _RedisClient_instances = new WeakSet(), _RedisClient_initiateOptions = function _RedisClient_initiateOptions(options) {\n if (options?.url) {\n const parsed = RedisClient.parseURL(options.url);\n if (options.socket) {\n parsed.socket = Object.assign(options.socket, parsed.socket);\n }\n Object.assign(options, parsed);\n }\n if (options?.database) {\n __classPrivateFieldSet(this, _RedisClient_selectedDB, options.database, \"f\");\n }\n return options;\n}, _RedisClient_initiateQueue = function _RedisClient_initiateQueue() {\n return new commands_queue_1.default(__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.commandsQueueMaxLength, (channel, listeners) => this.emit('sharded-channel-moved', channel, listeners));\n}, _RedisClient_initiateSocket = function _RedisClient_initiateSocket() {\n const socketInitiator = async () => {\n const promises = [];\n if (__classPrivateFieldGet(this, _RedisClient_selectedDB, \"f\") !== 0) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['SELECT', __classPrivateFieldGet(this, _RedisClient_selectedDB, \"f\").toString()], { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.readonly) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.READONLY.transformArguments(), { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.name) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.CLIENT_SETNAME.transformArguments(__classPrivateFieldGet(this, _RedisClient_options, \"f\").name), { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.username || __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.password) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.AUTH.transformArguments({\n username: __classPrivateFieldGet(this, _RedisClient_options, \"f\").username,\n password: __classPrivateFieldGet(this, _RedisClient_options, \"f\").password ?? ''\n }), { asap: true }));\n }\n const resubscribePromise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").resubscribe();\n if (resubscribePromise) {\n promises.push(resubscribePromise);\n }\n if (promises.length) {\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this, true);\n await Promise.all(promises);\n }\n };\n return new socket_1.default(socketInitiator, __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.socket)\n .on('data', chunk => __classPrivateFieldGet(this, _RedisClient_queue, \"f\").onReplyChunk(chunk))\n .on('error', err => {\n this.emit('error', err);\n if (__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen && !__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.disableOfflineQueue) {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushWaitingForReply(err);\n }\n else {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushAll(err);\n }\n })\n .on('connect', () => {\n this.emit('connect');\n })\n .on('ready', () => {\n this.emit('ready');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_setPingTimer).call(this);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n })\n .on('reconnecting', () => this.emit('reconnecting'))\n .on('drain', () => __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this))\n .on('end', () => this.emit('end'));\n}, _RedisClient_legacyMode = function _RedisClient_legacyMode() {\n var _a, _b;\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode)\n return;\n __classPrivateFieldGet(this, _RedisClient_v4, \"f\").sendCommand = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).bind(this);\n this.sendCommand = (...args) => {\n const result = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacySendCommand).call(this, ...args);\n if (result) {\n result.promise\n .then(reply => result.callback(null, reply))\n .catch(err => result.callback(err));\n }\n };\n for (const [name, command] of Object.entries(commands_1.default)) {\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, name, command);\n (_a = this)[_b = name.toLowerCase()] ?? (_a[_b] = this[name]);\n }\n // hard coded commands\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'SELECT');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'select');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'SUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'subscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'PSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'pSubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'UNSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'unsubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'PUNSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'pUnsubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'QUIT');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'quit');\n}, _RedisClient_legacySendCommand = function _RedisClient_legacySendCommand(...args) {\n const callback = typeof args[args.length - 1] === 'function' ?\n args.pop() :\n undefined;\n const promise = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, (0, commander_1.transformLegacyCommandArguments)(args));\n if (callback)\n return {\n promise,\n callback\n };\n promise.catch(err => this.emit('error', err));\n}, _RedisClient_defineLegacyCommand = function _RedisClient_defineLegacyCommand(name, command) {\n __classPrivateFieldGet(this, _RedisClient_v4, \"f\")[name] = this[name].bind(this);\n this[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?\n (...args) => {\n const result = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacySendCommand).call(this, name, ...args);\n if (result) {\n result.promise\n .then(reply => result.callback(null, command.transformReply(reply)))\n .catch(err => result.callback(err));\n }\n } :\n (...args) => this.sendCommand(name, ...args);\n}, _RedisClient_setPingTimer = function _RedisClient_setPingTimer() {\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.pingInterval || !__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)\n return;\n clearTimeout(__classPrivateFieldGet(this, _RedisClient_pingTimer, \"f\"));\n __classPrivateFieldSet(this, _RedisClient_pingTimer, setTimeout(() => {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)\n return;\n // using #sendCommand to support legacy mode\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, ['PING'])\n .then(reply => this.emit('ping-interval', reply))\n .catch(err => this.emit('error', err))\n .finally(() => __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_setPingTimer).call(this));\n }, __classPrivateFieldGet(this, _RedisClient_options, \"f\").pingInterval), \"f\");\n}, _RedisClient_sendCommand = function _RedisClient_sendCommand(args, options) {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen) {\n return Promise.reject(new errors_1.ClientClosedError());\n }\n else if (options?.isolated) {\n return this.executeIsolated(isolatedClient => isolatedClient.sendCommand(args, {\n ...options,\n isolated: false\n }));\n }\n else if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady && __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.disableOfflineQueue) {\n return Promise.reject(new errors_1.ClientOfflineError());\n }\n const promise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(args, options);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n return promise;\n}, _RedisClient_pubSubCommand = function _RedisClient_pubSubCommand(promise) {\n if (promise === undefined)\n return Promise.resolve();\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n return promise;\n}, _RedisClient_tick = function _RedisClient_tick(force = false) {\n if (__classPrivateFieldGet(this, _RedisClient_socket, \"f\").writableNeedDrain || (!force && !__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)) {\n return;\n }\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").cork();\n while (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").writableNeedDrain) {\n const args = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").getCommandToSend();\n if (args === undefined)\n break;\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").writeCommand(args);\n }\n}, _RedisClient_addMultiCommands = function _RedisClient_addMultiCommands(commands, chainId) {\n return Promise.all(commands.map(({ args }) => __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(args, { chainId })));\n}, _RedisClient_destroyIsolationPool = async function _RedisClient_destroyIsolationPool() {\n await __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").drain();\n await __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").clear();\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisClient,\n commands: commands_1.default,\n executor: RedisClient.prototype.commandsExecutor\n});\nRedisClient.prototype.Multi = multi_command_1.default;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _RedisClientMultiCommand_instances, _RedisClientMultiCommand_multi, _RedisClientMultiCommand_executor, _RedisClientMultiCommand_selectedDB, _RedisClientMultiCommand_legacyMode, _RedisClientMultiCommand_defineLegacyCommand;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst multi_command_1 = require(\"../multi-command\");\nconst commander_1 = require(\"../commander\");\nclass RedisClientMultiCommand {\n static extend(extensions) {\n return (0, commander_1.attachExtensions)({\n BaseClass: RedisClientMultiCommand,\n modulesExecutor: RedisClientMultiCommand.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClientMultiCommand.prototype.functionsExecutor,\n functions: extensions?.functions,\n scriptsExecutor: RedisClientMultiCommand.prototype.scriptsExecutor,\n scripts: extensions?.scripts\n });\n }\n constructor(executor, legacyMode = false) {\n _RedisClientMultiCommand_instances.add(this);\n _RedisClientMultiCommand_multi.set(this, new multi_command_1.default());\n _RedisClientMultiCommand_executor.set(this, void 0);\n Object.defineProperty(this, \"v4\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n _RedisClientMultiCommand_selectedDB.set(this, void 0);\n Object.defineProperty(this, \"select\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SELECT\n });\n Object.defineProperty(this, \"EXEC\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.exec\n });\n __classPrivateFieldSet(this, _RedisClientMultiCommand_executor, executor, \"f\");\n if (legacyMode) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, \"m\", _RedisClientMultiCommand_legacyMode).call(this);\n }\n }\n commandsExecutor(command, args) {\n return this.addCommand(command.transformArguments(...args), command.transformReply);\n }\n SELECT(db, transformReply) {\n __classPrivateFieldSet(this, _RedisClientMultiCommand_selectedDB, db, \"f\");\n return this.addCommand(['SELECT', db.toString()], transformReply);\n }\n addCommand(args, transformReply) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand(args, transformReply);\n return this;\n }\n functionsExecutor(fn, args, name) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addFunction(name, fn, args);\n return this;\n }\n scriptsExecutor(script, args) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addScript(script, args);\n return this;\n }\n async exec(execAsPipeline = false) {\n if (execAsPipeline) {\n return this.execAsPipeline();\n }\n return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").handleExecReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, \"f\"), multi_command_1.default.generateChainId()));\n }\n async execAsPipeline() {\n if (__classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue.length === 0)\n return [];\n return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").transformReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, \"f\")));\n }\n}\nexports.default = RedisClientMultiCommand;\n_RedisClientMultiCommand_multi = new WeakMap(), _RedisClientMultiCommand_executor = new WeakMap(), _RedisClientMultiCommand_selectedDB = new WeakMap(), _RedisClientMultiCommand_instances = new WeakSet(), _RedisClientMultiCommand_legacyMode = function _RedisClientMultiCommand_legacyMode() {\n var _a, _b;\n this.v4.addCommand = this.addCommand.bind(this);\n this.addCommand = (...args) => {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand((0, commander_1.transformLegacyCommandArguments)(args));\n return this;\n };\n this.v4.exec = this.exec.bind(this);\n this.exec = (callback) => {\n this.v4.exec()\n .then((reply) => {\n if (!callback)\n return;\n callback(null, reply);\n })\n .catch((err) => {\n if (!callback) {\n // this.emit('error', err);\n return;\n }\n callback(err);\n });\n };\n for (const [name, command] of Object.entries(commands_1.default)) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, \"m\", _RedisClientMultiCommand_defineLegacyCommand).call(this, name, command);\n (_a = this)[_b = name.toLowerCase()] ?? (_a[_b] = this[name]);\n }\n}, _RedisClientMultiCommand_defineLegacyCommand = function _RedisClientMultiCommand_defineLegacyCommand(name, command) {\n this.v4[name] = this[name].bind(this.v4);\n this[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?\n (...args) => {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand([name, ...(0, commander_1.transformLegacyCommandArguments)(args)], command.transformReply);\n return this;\n } :\n (...args) => this.addCommand(name, ...args);\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisClientMultiCommand,\n commands: commands_1.default,\n executor: RedisClientMultiCommand.prototype.commandsExecutor\n});\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _PubSub_instances, _a, _PubSub_channelsArray, _PubSub_listenersSet, _PubSub_subscribing, _PubSub_isActive, _PubSub_listeners, _PubSub_extendChannelListeners, _PubSub_unsubscribeCommand, _PubSub_updateIsActive, _PubSub_emitPubSubMessage;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PubSub = exports.PubSubType = void 0;\nvar PubSubType;\n(function (PubSubType) {\n PubSubType[\"CHANNELS\"] = \"CHANNELS\";\n PubSubType[\"PATTERNS\"] = \"PATTERNS\";\n PubSubType[\"SHARDED\"] = \"SHARDED\";\n})(PubSubType = exports.PubSubType || (exports.PubSubType = {}));\nconst COMMANDS = {\n [PubSubType.CHANNELS]: {\n subscribe: Buffer.from('subscribe'),\n unsubscribe: Buffer.from('unsubscribe'),\n message: Buffer.from('message')\n },\n [PubSubType.PATTERNS]: {\n subscribe: Buffer.from('psubscribe'),\n unsubscribe: Buffer.from('punsubscribe'),\n message: Buffer.from('pmessage')\n },\n [PubSubType.SHARDED]: {\n subscribe: Buffer.from('ssubscribe'),\n unsubscribe: Buffer.from('sunsubscribe'),\n message: Buffer.from('smessage')\n }\n};\nclass PubSub {\n constructor() {\n _PubSub_instances.add(this);\n _PubSub_subscribing.set(this, 0);\n _PubSub_isActive.set(this, false);\n _PubSub_listeners.set(this, {\n [PubSubType.CHANNELS]: new Map(),\n [PubSubType.PATTERNS]: new Map(),\n [PubSubType.SHARDED]: new Map()\n });\n }\n static isStatusReply(reply) {\n return (COMMANDS[PubSubType.CHANNELS].subscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.CHANNELS].unsubscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.PATTERNS].subscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.PATTERNS].unsubscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.SHARDED].subscribe.equals(reply[0]));\n }\n static isShardedUnsubscribe(reply) {\n return COMMANDS[PubSubType.SHARDED].unsubscribe.equals(reply[0]);\n }\n get isActive() {\n return __classPrivateFieldGet(this, _PubSub_isActive, \"f\");\n }\n subscribe(type, channels, listener, returnBuffers) {\n var _b;\n const args = [COMMANDS[type].subscribe], channelsArray = __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_channelsArray).call(PubSub, channels);\n for (const channel of channelsArray) {\n let channelListeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!channelListeners || channelListeners.unsubscribing) {\n args.push(channel);\n }\n }\n if (args.length === 1) {\n // all channels are already subscribed, add listeners without issuing a command\n for (const channel of channelsArray) {\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel), returnBuffers).add(listener);\n }\n return;\n }\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args,\n channelsCounter: args.length - 1,\n resolve: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n for (const channel of channelsArray) {\n let listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!listeners) {\n listeners = {\n unsubscribing: false,\n buffers: new Set(),\n strings: new Set()\n };\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].set(channel, listeners);\n }\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, listeners, returnBuffers).add(listener);\n }\n },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n extendChannelListeners(type, channel, listeners) {\n var _b;\n if (!__classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_extendChannelListeners).call(this, type, channel, listeners))\n return;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args: [\n COMMANDS[type].subscribe,\n channel\n ],\n channelsCounter: 1,\n resolve: () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n extendTypeListeners(type, listeners) {\n var _b;\n const args = [COMMANDS[type].subscribe];\n for (const [channel, channelListeners] of listeners) {\n if (__classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_extendChannelListeners).call(this, type, channel, channelListeners)) {\n args.push(channel);\n }\n }\n if (args.length === 1)\n return;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args,\n channelsCounter: args.length - 1,\n resolve: () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n unsubscribe(type, channels, listener, returnBuffers) {\n const listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type];\n if (!channels) {\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, [COMMANDS[type].unsubscribe], \n // cannot use `this.#subscribed` because there might be some `SUBSCRIBE` commands in the queue\n // cannot use `this.#subscribed + this.#subscribing` because some `SUBSCRIBE` commands might fail\n NaN, () => listeners.clear());\n }\n const channelsArray = __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_channelsArray).call(PubSub, channels);\n if (!listener) {\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, [COMMANDS[type].unsubscribe, ...channelsArray], channelsArray.length, () => {\n for (const channel of channelsArray) {\n listeners.delete(channel);\n }\n });\n }\n const args = [COMMANDS[type].unsubscribe];\n for (const channel of channelsArray) {\n const sets = listeners.get(channel);\n if (sets) {\n let current, other;\n if (returnBuffers) {\n current = sets.buffers;\n other = sets.strings;\n }\n else {\n current = sets.strings;\n other = sets.buffers;\n }\n const currentSize = current.has(listener) ? current.size - 1 : current.size;\n if (currentSize !== 0 || other.size !== 0)\n continue;\n sets.unsubscribing = true;\n }\n args.push(channel);\n }\n if (args.length === 1) {\n // all channels has other listeners,\n // delete the listeners without issuing a command\n for (const channel of channelsArray) {\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, listeners.get(channel), returnBuffers).delete(listener);\n }\n return;\n }\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, args, args.length - 1, () => {\n for (const channel of channelsArray) {\n const sets = listeners.get(channel);\n if (!sets)\n continue;\n (returnBuffers ? sets.buffers : sets.strings).delete(listener);\n if (sets.buffers.size === 0 && sets.strings.size === 0) {\n listeners.delete(channel);\n }\n }\n });\n }\n reset() {\n __classPrivateFieldSet(this, _PubSub_isActive, false, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, 0, \"f\");\n }\n resubscribe() {\n var _b;\n const commands = [];\n for (const [type, listeners] of Object.entries(__classPrivateFieldGet(this, _PubSub_listeners, \"f\"))) {\n if (!listeners.size)\n continue;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n const callback = () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; };\n commands.push({\n args: [\n COMMANDS[type].subscribe,\n ...listeners.keys()\n ],\n channelsCounter: listeners.size,\n resolve: callback,\n reject: callback\n });\n }\n return commands;\n }\n handleMessageReply(reply) {\n if (COMMANDS[PubSubType.CHANNELS].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.CHANNELS, reply[2], reply[1]);\n return true;\n }\n else if (COMMANDS[PubSubType.PATTERNS].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.PATTERNS, reply[3], reply[2], reply[1]);\n return true;\n }\n else if (COMMANDS[PubSubType.SHARDED].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.SHARDED, reply[2], reply[1]);\n return true;\n }\n return false;\n }\n removeShardedListeners(channel) {\n const listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.SHARDED].get(channel);\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.SHARDED].delete(channel);\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n return listeners;\n }\n getTypeListeners(type) {\n return __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type];\n }\n}\nexports.PubSub = PubSub;\n_a = PubSub, _PubSub_subscribing = new WeakMap(), _PubSub_isActive = new WeakMap(), _PubSub_listeners = new WeakMap(), _PubSub_instances = new WeakSet(), _PubSub_channelsArray = function _PubSub_channelsArray(channels) {\n return (Array.isArray(channels) ? channels : [channels]);\n}, _PubSub_listenersSet = function _PubSub_listenersSet(listeners, returnBuffers) {\n return (returnBuffers ? listeners.buffers : listeners.strings);\n}, _PubSub_extendChannelListeners = function _PubSub_extendChannelListeners(type, channel, listeners) {\n const existingListeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!existingListeners) {\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].set(channel, listeners);\n return true;\n }\n for (const listener of listeners.buffers) {\n existingListeners.buffers.add(listener);\n }\n for (const listener of listeners.strings) {\n existingListeners.strings.add(listener);\n }\n return false;\n}, _PubSub_unsubscribeCommand = function _PubSub_unsubscribeCommand(args, channelsCounter, removeListeners) {\n return {\n args,\n channelsCounter,\n resolve: () => {\n removeListeners();\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n },\n reject: undefined // use the same structure as `subscribe`\n };\n}, _PubSub_updateIsActive = function _PubSub_updateIsActive() {\n __classPrivateFieldSet(this, _PubSub_isActive, (__classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.CHANNELS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.PATTERNS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.CHANNELS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_subscribing, \"f\") !== 0), \"f\");\n}, _PubSub_emitPubSubMessage = function _PubSub_emitPubSubMessage(type, message, channel, pattern) {\n const keyString = (pattern ?? channel).toString(), listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(keyString);\n if (!listeners)\n return;\n for (const listener of listeners.buffers) {\n listener(message, channel);\n }\n if (!listeners.strings.size)\n return;\n const channelString = pattern ? channel.toString() : keyString, messageString = channelString === '__redis__:invalidate' ?\n // https://github.com/redis/redis/pull/7469\n // https://github.com/redis/redis/issues/7463\n (message === null ? null : message.map(x => x.toString())) :\n message.toString();\n for (const listener of listeners.strings) {\n listener(messageString, channelString);\n }\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisSocket_instances, _a, _RedisSocket_initiateOptions, _RedisSocket_isTlsSocket, _RedisSocket_initiator, _RedisSocket_options, _RedisSocket_socket, _RedisSocket_isOpen, _RedisSocket_isReady, _RedisSocket_writableNeedDrain, _RedisSocket_isSocketUnrefed, _RedisSocket_reconnectStrategy, _RedisSocket_shouldReconnect, _RedisSocket_connect, _RedisSocket_createSocket, _RedisSocket_createNetSocket, _RedisSocket_createTlsSocket, _RedisSocket_onSocketError, _RedisSocket_disconnect, _RedisSocket_isCorked;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst net = require(\"net\");\nconst tls = require(\"tls\");\nconst errors_1 = require(\"../errors\");\nconst utils_1 = require(\"../utils\");\nclass RedisSocket extends events_1.EventEmitter {\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\");\n }\n get isReady() {\n return __classPrivateFieldGet(this, _RedisSocket_isReady, \"f\");\n }\n get writableNeedDrain() {\n return __classPrivateFieldGet(this, _RedisSocket_writableNeedDrain, \"f\");\n }\n constructor(initiator, options) {\n super();\n _RedisSocket_instances.add(this);\n _RedisSocket_initiator.set(this, void 0);\n _RedisSocket_options.set(this, void 0);\n _RedisSocket_socket.set(this, void 0);\n _RedisSocket_isOpen.set(this, false);\n _RedisSocket_isReady.set(this, false);\n // `writable.writableNeedDrain` was added in v15.2.0 and therefore can't be used\n // https://nodejs.org/api/stream.html#stream_writable_writableneeddrain\n _RedisSocket_writableNeedDrain.set(this, false);\n _RedisSocket_isSocketUnrefed.set(this, false);\n _RedisSocket_isCorked.set(this, false);\n __classPrivateFieldSet(this, _RedisSocket_initiator, initiator, \"f\");\n __classPrivateFieldSet(this, _RedisSocket_options, __classPrivateFieldGet(RedisSocket, _a, \"m\", _RedisSocket_initiateOptions).call(RedisSocket, options), \"f\");\n }\n async connect() {\n if (__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new Error('Socket already opened');\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, true, \"f\");\n return __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_connect).call(this);\n }\n writeCommand(args) {\n if (!__classPrivateFieldGet(this, _RedisSocket_socket, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n for (const toWrite of args) {\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, !__classPrivateFieldGet(this, _RedisSocket_socket, \"f\").write(toWrite), \"f\");\n }\n }\n disconnect() {\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_disconnect).call(this);\n }\n async quit(fn) {\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n const reply = await fn();\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_disconnect).call(this);\n return reply;\n }\n cork() {\n if (!__classPrivateFieldGet(this, _RedisSocket_socket, \"f\") || __classPrivateFieldGet(this, _RedisSocket_isCorked, \"f\")) {\n return;\n }\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").cork();\n __classPrivateFieldSet(this, _RedisSocket_isCorked, true, \"f\");\n queueMicrotask(() => {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.uncork();\n __classPrivateFieldSet(this, _RedisSocket_isCorked, false, \"f\");\n });\n }\n ref() {\n __classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, false, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.ref();\n }\n unref() {\n __classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, true, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.unref();\n }\n}\nexports.default = RedisSocket;\n_a = RedisSocket, _RedisSocket_initiator = new WeakMap(), _RedisSocket_options = new WeakMap(), _RedisSocket_socket = new WeakMap(), _RedisSocket_isOpen = new WeakMap(), _RedisSocket_isReady = new WeakMap(), _RedisSocket_writableNeedDrain = new WeakMap(), _RedisSocket_isSocketUnrefed = new WeakMap(), _RedisSocket_isCorked = new WeakMap(), _RedisSocket_instances = new WeakSet(), _RedisSocket_initiateOptions = function _RedisSocket_initiateOptions(options) {\n var _b, _c;\n options ?? (options = {});\n if (!options.path) {\n (_b = options).port ?? (_b.port = 6379);\n (_c = options).host ?? (_c.host = 'localhost');\n }\n options.connectTimeout ?? (options.connectTimeout = 5000);\n options.keepAlive ?? (options.keepAlive = 5000);\n options.noDelay ?? (options.noDelay = true);\n return options;\n}, _RedisSocket_isTlsSocket = function _RedisSocket_isTlsSocket(options) {\n return options.tls === true;\n}, _RedisSocket_reconnectStrategy = function _RedisSocket_reconnectStrategy(retries, cause) {\n if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy === false) {\n return false;\n }\n else if (typeof __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy === 'number') {\n return __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy;\n }\n else if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy) {\n try {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy(retries, cause);\n if (retryIn !== false && !(retryIn instanceof Error) && typeof retryIn !== 'number') {\n throw new TypeError(`Reconnect strategy should return \\`false | Error | number\\`, got ${retryIn} instead`);\n }\n return retryIn;\n }\n catch (err) {\n this.emit('error', err);\n }\n }\n return Math.min(retries * 50, 500);\n}, _RedisSocket_shouldReconnect = function _RedisSocket_shouldReconnect(retries, cause) {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_reconnectStrategy).call(this, retries, cause);\n if (retryIn === false) {\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n this.emit('error', cause);\n return cause;\n }\n else if (retryIn instanceof Error) {\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n this.emit('error', cause);\n return new errors_1.ReconnectStrategyError(retryIn, cause);\n }\n return retryIn;\n}, _RedisSocket_connect = async function _RedisSocket_connect() {\n let retries = 0;\n do {\n try {\n __classPrivateFieldSet(this, _RedisSocket_socket, await __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createSocket).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, \"f\");\n this.emit('connect');\n try {\n await __classPrivateFieldGet(this, _RedisSocket_initiator, \"f\").call(this);\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").destroy();\n __classPrivateFieldSet(this, _RedisSocket_socket, undefined, \"f\");\n throw err;\n }\n __classPrivateFieldSet(this, _RedisSocket_isReady, true, \"f\");\n this.emit('ready');\n }\n catch (err) {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_shouldReconnect).call(this, retries++, err);\n if (typeof retryIn !== 'number') {\n throw retryIn;\n }\n this.emit('error', err);\n await (0, utils_1.promiseTimeout)(retryIn);\n this.emit('reconnecting');\n }\n } while (__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") && !__classPrivateFieldGet(this, _RedisSocket_isReady, \"f\"));\n}, _RedisSocket_createSocket = function _RedisSocket_createSocket() {\n return new Promise((resolve, reject) => {\n const { connectEvent, socket } = __classPrivateFieldGet(RedisSocket, _a, \"m\", _RedisSocket_isTlsSocket).call(RedisSocket, __classPrivateFieldGet(this, _RedisSocket_options, \"f\")) ?\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createTlsSocket).call(this) :\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createNetSocket).call(this);\n if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").connectTimeout) {\n socket.setTimeout(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").connectTimeout, () => socket.destroy(new errors_1.ConnectionTimeoutError()));\n }\n if (__classPrivateFieldGet(this, _RedisSocket_isSocketUnrefed, \"f\")) {\n socket.unref();\n }\n socket\n .setNoDelay(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").noDelay)\n .once('error', reject)\n .once(connectEvent, () => {\n socket\n .setTimeout(0)\n // https://github.com/nodejs/node/issues/31663\n .setKeepAlive(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").keepAlive !== false, __classPrivateFieldGet(this, _RedisSocket_options, \"f\").keepAlive || 0)\n .off('error', reject)\n .once('error', (err) => __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_onSocketError).call(this, err))\n .once('close', hadError => {\n if (!hadError && __classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") && __classPrivateFieldGet(this, _RedisSocket_socket, \"f\") === socket) {\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_onSocketError).call(this, new errors_1.SocketClosedUnexpectedlyError());\n }\n })\n .on('drain', () => {\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, \"f\");\n this.emit('drain');\n })\n .on('data', data => this.emit('data', data));\n resolve(socket);\n });\n });\n}, _RedisSocket_createNetSocket = function _RedisSocket_createNetSocket() {\n return {\n connectEvent: 'connect',\n socket: net.connect(__classPrivateFieldGet(this, _RedisSocket_options, \"f\")) // TODO\n };\n}, _RedisSocket_createTlsSocket = function _RedisSocket_createTlsSocket() {\n return {\n connectEvent: 'secureConnect',\n socket: tls.connect(__classPrivateFieldGet(this, _RedisSocket_options, \"f\")) // TODO\n };\n}, _RedisSocket_onSocketError = function _RedisSocket_onSocketError(err) {\n __classPrivateFieldSet(this, _RedisSocket_isReady, false, \"f\");\n this.emit('error', err);\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") || typeof __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_shouldReconnect).call(this, 0, err) !== 'number')\n return;\n this.emit('reconnecting');\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_connect).call(this).catch(() => {\n // the error was already emitted, silently ignore it\n });\n}, _RedisSocket_disconnect = function _RedisSocket_disconnect() {\n __classPrivateFieldSet(this, _RedisSocket_isReady, false, \"f\");\n if (__classPrivateFieldGet(this, _RedisSocket_socket, \"f\")) {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").destroy();\n __classPrivateFieldSet(this, _RedisSocket_socket, undefined, \"f\");\n }\n this.emit('end');\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisClusterSlots_instances, _a, _RedisClusterSlots_SLOTS, _RedisClusterSlots_options, _RedisClusterSlots_Client, _RedisClusterSlots_emit, _RedisClusterSlots_isOpen, _RedisClusterSlots_discoverWithRootNodes, _RedisClusterSlots_resetSlots, _RedisClusterSlots_discover, _RedisClusterSlots_getShards, _RedisClusterSlots_getNodeAddress, _RedisClusterSlots_clientOptionsDefaults, _RedisClusterSlots_initiateSlotNode, _RedisClusterSlots_createClient, _RedisClusterSlots_createNodeClient, _RedisClusterSlots_runningRediscoverPromise, _RedisClusterSlots_rediscover, _RedisClusterSlots_destroy, _RedisClusterSlots_execOnNodeClient, _RedisClusterSlots_iterateAllNodes, _RedisClusterSlots_randomNodeIterator, _RedisClusterSlots_slotNodesIterator, _RedisClusterSlots_initiatePubSubClient, _RedisClusterSlots_initiateShardedPubSubClient;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = require(\"../client\");\nconst errors_1 = require(\"../errors\");\nconst util_1 = require(\"util\");\nconst pub_sub_1 = require(\"../client/pub-sub\");\n// We need to use 'require', because it's not possible with Typescript to import\n// function that are exported as 'module.exports = function`, without esModuleInterop\n// set to true.\nconst calculateSlot = require('cluster-key-slot');\nclass RedisClusterSlots {\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_isOpen, \"f\");\n }\n constructor(options, emit) {\n _RedisClusterSlots_instances.add(this);\n _RedisClusterSlots_options.set(this, void 0);\n _RedisClusterSlots_Client.set(this, void 0);\n _RedisClusterSlots_emit.set(this, void 0);\n Object.defineProperty(this, \"slots\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array(__classPrivateFieldGet(RedisClusterSlots, _a, \"f\", _RedisClusterSlots_SLOTS))\n });\n Object.defineProperty(this, \"shards\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"masters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"replicas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"nodeByAddress\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"pubSubNode\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _RedisClusterSlots_isOpen.set(this, false);\n _RedisClusterSlots_runningRediscoverPromise.set(this, void 0);\n _RedisClusterSlots_randomNodeIterator.set(this, void 0);\n __classPrivateFieldSet(this, _RedisClusterSlots_options, options, \"f\");\n __classPrivateFieldSet(this, _RedisClusterSlots_Client, client_1.default.extend(options), \"f\");\n __classPrivateFieldSet(this, _RedisClusterSlots_emit, emit, \"f\");\n }\n async connect() {\n if (__classPrivateFieldGet(this, _RedisClusterSlots_isOpen, \"f\")) {\n throw new Error('Cluster already open');\n }\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, true, \"f\");\n try {\n await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discoverWithRootNodes).call(this);\n }\n catch (err) {\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, false, \"f\");\n throw err;\n }\n }\n nodeClient(node) {\n return node.client ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createNodeClient).call(this, node);\n }\n async rediscover(startWith) {\n __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, __classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, \"f\") ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_rediscover).call(this, startWith)\n .finally(() => __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, undefined, \"f\")), \"f\");\n return __classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, \"f\");\n }\n quit() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_destroy).call(this, client => client.quit());\n }\n disconnect() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_destroy).call(this, client => client.disconnect());\n }\n getClient(firstKey, isReadonly) {\n if (!firstKey) {\n return this.nodeClient(this.getRandomNode());\n }\n const slotNumber = calculateSlot(firstKey);\n if (!isReadonly) {\n return this.nodeClient(this.slots[slotNumber].master);\n }\n return this.nodeClient(this.getSlotRandomNode(slotNumber));\n }\n getRandomNode() {\n __classPrivateFieldSet(this, _RedisClusterSlots_randomNodeIterator, __classPrivateFieldGet(this, _RedisClusterSlots_randomNodeIterator, \"f\") ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_iterateAllNodes).call(this), \"f\");\n return __classPrivateFieldGet(this, _RedisClusterSlots_randomNodeIterator, \"f\").next().value;\n }\n getSlotRandomNode(slotNumber) {\n const slot = this.slots[slotNumber];\n if (!slot.replicas?.length) {\n return slot.master;\n }\n slot.nodesIterator ?? (slot.nodesIterator = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_slotNodesIterator).call(this, slot));\n return slot.nodesIterator.next().value;\n }\n getMasterByAddress(address) {\n const master = this.nodeByAddress.get(address);\n if (!master)\n return;\n return this.nodeClient(master);\n }\n getPubSubClient() {\n return this.pubSubNode ?\n this.pubSubNode.client :\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiatePubSubClient).call(this);\n }\n async executeUnsubscribeCommand(unsubscribe) {\n const client = await this.getPubSubClient();\n await unsubscribe(client);\n if (!client.isPubSubActive) {\n await client.disconnect();\n this.pubSubNode = undefined;\n }\n }\n getShardedPubSubClient(channel) {\n const { master } = this.slots[calculateSlot(channel)];\n return master.pubSubClient ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateShardedPubSubClient).call(this, master);\n }\n async executeShardedUnsubscribeCommand(channel, unsubscribe) {\n const { master } = this.slots[calculateSlot(channel)];\n if (!master.pubSubClient)\n return Promise.resolve();\n const client = await master.pubSubClient;\n await unsubscribe(client);\n if (!client.isPubSubActive) {\n await client.disconnect();\n master.pubSubClient = undefined;\n }\n }\n}\nexports.default = RedisClusterSlots;\n_a = RedisClusterSlots, _RedisClusterSlots_options = new WeakMap(), _RedisClusterSlots_Client = new WeakMap(), _RedisClusterSlots_emit = new WeakMap(), _RedisClusterSlots_isOpen = new WeakMap(), _RedisClusterSlots_runningRediscoverPromise = new WeakMap(), _RedisClusterSlots_randomNodeIterator = new WeakMap(), _RedisClusterSlots_instances = new WeakSet(), _RedisClusterSlots_discoverWithRootNodes = async function _RedisClusterSlots_discoverWithRootNodes() {\n let start = Math.floor(Math.random() * __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes.length);\n for (let i = start; i < __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes.length; i++) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes[i]))\n return;\n }\n for (let i = 0; i < start; i++) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes[i]))\n return;\n }\n throw new errors_1.RootNodesUnavailableError();\n}, _RedisClusterSlots_resetSlots = function _RedisClusterSlots_resetSlots() {\n this.slots = new Array(__classPrivateFieldGet(RedisClusterSlots, _a, \"f\", _RedisClusterSlots_SLOTS));\n this.shards = [];\n this.masters = [];\n this.replicas = [];\n __classPrivateFieldSet(this, _RedisClusterSlots_randomNodeIterator, undefined, \"f\");\n}, _RedisClusterSlots_discover = async function _RedisClusterSlots_discover(rootNode) {\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_resetSlots).call(this);\n const addressesInUse = new Set();\n try {\n const shards = await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_getShards).call(this, rootNode), promises = [], eagerConnect = __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").minimizeConnections !== true;\n for (const { from, to, master, replicas } of shards) {\n const shard = {\n master: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateSlotNode).call(this, master, false, eagerConnect, addressesInUse, promises)\n };\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").useReplicas) {\n shard.replicas = replicas.map(replica => __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateSlotNode).call(this, replica, true, eagerConnect, addressesInUse, promises));\n }\n this.shards.push(shard);\n for (let i = from; i <= to; i++) {\n this.slots[i] = shard;\n }\n }\n if (this.pubSubNode && !addressesInUse.has(this.pubSubNode.address)) {\n if (util_1.types.isPromise(this.pubSubNode.client)) {\n promises.push(this.pubSubNode.client.then(client => client.disconnect()));\n this.pubSubNode = undefined;\n }\n else {\n promises.push(this.pubSubNode.client.disconnect());\n const channelsListeners = this.pubSubNode.client.getPubSubListeners(pub_sub_1.PubSubType.CHANNELS), patternsListeners = this.pubSubNode.client.getPubSubListeners(pub_sub_1.PubSubType.PATTERNS);\n if (channelsListeners.size || patternsListeners.size) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiatePubSubClient).call(this, {\n [pub_sub_1.PubSubType.CHANNELS]: channelsListeners,\n [pub_sub_1.PubSubType.PATTERNS]: patternsListeners\n }));\n }\n }\n }\n for (const [address, node] of this.nodeByAddress.entries()) {\n if (addressesInUse.has(address))\n continue;\n if (node.client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, node.client, client => client.disconnect()));\n }\n const { pubSubClient } = node;\n if (pubSubClient) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, pubSubClient, client => client.disconnect()));\n }\n this.nodeByAddress.delete(address);\n }\n await Promise.all(promises);\n return true;\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err);\n return false;\n }\n}, _RedisClusterSlots_getShards = async function _RedisClusterSlots_getShards(rootNode) {\n const client = new (__classPrivateFieldGet(this, _RedisClusterSlots_Client, \"f\"))(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_clientOptionsDefaults).call(this, rootNode, true));\n client.on('error', err => __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err));\n await client.connect();\n try {\n // using `CLUSTER SLOTS` and not `CLUSTER SHARDS` to support older versions\n return await client.clusterSlots();\n }\n finally {\n await client.disconnect();\n }\n}, _RedisClusterSlots_getNodeAddress = function _RedisClusterSlots_getNodeAddress(address) {\n switch (typeof __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap) {\n case 'object':\n return __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap[address];\n case 'function':\n return __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap(address);\n }\n}, _RedisClusterSlots_clientOptionsDefaults = function _RedisClusterSlots_clientOptionsDefaults(options, disableReconnect) {\n let result;\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults) {\n let socket;\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket) {\n socket = options?.socket ? {\n ...__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket,\n ...options.socket\n } : __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket;\n }\n else {\n socket = options?.socket;\n }\n result = {\n ...__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults,\n ...options,\n socket\n };\n }\n else {\n result = options;\n }\n if (disableReconnect) {\n result ?? (result = {});\n result.socket ?? (result.socket = {});\n result.socket.reconnectStrategy = false;\n }\n return result;\n}, _RedisClusterSlots_initiateSlotNode = function _RedisClusterSlots_initiateSlotNode({ id, ip, port }, readonly, eagerConnent, addressesInUse, promises) {\n const address = `${ip}:${port}`;\n addressesInUse.add(address);\n let node = this.nodeByAddress.get(address);\n if (!node) {\n node = {\n id,\n host: ip,\n port,\n address,\n readonly,\n client: undefined\n };\n if (eagerConnent) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createNodeClient).call(this, node));\n }\n this.nodeByAddress.set(address, node);\n }\n (readonly ? this.replicas : this.masters).push(node);\n return node;\n}, _RedisClusterSlots_createClient = async function _RedisClusterSlots_createClient(node, readonly = node.readonly) {\n const client = new (__classPrivateFieldGet(this, _RedisClusterSlots_Client, \"f\"))(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_clientOptionsDefaults).call(this, {\n socket: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_getNodeAddress).call(this, node.address) ?? {\n host: node.host,\n port: node.port\n },\n readonly\n }));\n client.on('error', err => __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err));\n await client.connect();\n return client;\n}, _RedisClusterSlots_createNodeClient = function _RedisClusterSlots_createNodeClient(node) {\n const promise = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, node)\n .then(client => {\n node.client = client;\n return client;\n })\n .catch(err => {\n node.client = undefined;\n throw err;\n });\n node.client = promise;\n return promise;\n}, _RedisClusterSlots_rediscover = async function _RedisClusterSlots_rediscover(startWith) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, startWith.options))\n return;\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discoverWithRootNodes).call(this);\n}, _RedisClusterSlots_destroy = async function _RedisClusterSlots_destroy(fn) {\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, false, \"f\");\n const promises = [];\n for (const { master, replicas } of this.shards) {\n if (master.client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, master.client, fn));\n }\n if (master.pubSubClient) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, master.pubSubClient, fn));\n }\n if (replicas) {\n for (const { client } of replicas) {\n if (client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, client, fn));\n }\n }\n }\n }\n if (this.pubSubNode) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, this.pubSubNode.client, fn));\n this.pubSubNode = undefined;\n }\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_resetSlots).call(this);\n this.nodeByAddress.clear();\n await Promise.allSettled(promises);\n}, _RedisClusterSlots_execOnNodeClient = function _RedisClusterSlots_execOnNodeClient(client, fn) {\n return util_1.types.isPromise(client) ?\n client.then(fn) :\n fn(client);\n}, _RedisClusterSlots_iterateAllNodes = function* _RedisClusterSlots_iterateAllNodes() {\n let i = Math.floor(Math.random() * (this.masters.length + this.replicas.length));\n if (i < this.masters.length) {\n do {\n yield this.masters[i];\n } while (++i < this.masters.length);\n for (const replica of this.replicas) {\n yield replica;\n }\n }\n else {\n i -= this.masters.length;\n do {\n yield this.replicas[i];\n } while (++i < this.replicas.length);\n }\n while (true) {\n for (const master of this.masters) {\n yield master;\n }\n for (const replica of this.replicas) {\n yield replica;\n }\n }\n}, _RedisClusterSlots_slotNodesIterator = function* _RedisClusterSlots_slotNodesIterator(slot) {\n let i = Math.floor(Math.random() * (1 + slot.replicas.length));\n if (i < slot.replicas.length) {\n do {\n yield slot.replicas[i];\n } while (++i < slot.replicas.length);\n }\n while (true) {\n yield slot.master;\n for (const replica of slot.replicas) {\n yield replica;\n }\n }\n}, _RedisClusterSlots_initiatePubSubClient = async function _RedisClusterSlots_initiatePubSubClient(toResubscribe) {\n const index = Math.floor(Math.random() * (this.masters.length + this.replicas.length)), node = index < this.masters.length ?\n this.masters[index] :\n this.replicas[index - this.masters.length];\n this.pubSubNode = {\n address: node.address,\n client: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, node, true)\n .then(async (client) => {\n if (toResubscribe) {\n await Promise.all([\n client.extendPubSubListeners(pub_sub_1.PubSubType.CHANNELS, toResubscribe[pub_sub_1.PubSubType.CHANNELS]),\n client.extendPubSubListeners(pub_sub_1.PubSubType.PATTERNS, toResubscribe[pub_sub_1.PubSubType.PATTERNS])\n ]);\n }\n this.pubSubNode.client = client;\n return client;\n })\n .catch(err => {\n this.pubSubNode = undefined;\n throw err;\n })\n };\n return this.pubSubNode.client;\n}, _RedisClusterSlots_initiateShardedPubSubClient = function _RedisClusterSlots_initiateShardedPubSubClient(master) {\n const promise = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, master, true)\n .then(client => {\n client.on('server-sunsubscribe', async (channel, listeners) => {\n try {\n await this.rediscover(client);\n const redirectTo = await this.getShardedPubSubClient(channel);\n redirectTo.extendPubSubChannelListeners(pub_sub_1.PubSubType.SHARDED, channel, listeners);\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'sharded-shannel-moved-error', err, channel, listeners);\n }\n });\n master.pubSubClient = client;\n return client;\n })\n .catch(err => {\n master.pubSubClient = undefined;\n throw err;\n });\n master.pubSubClient = promise;\n return promise;\n};\n_RedisClusterSlots_SLOTS = { value: 16384 };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst APPEND = require(\"../commands/APPEND\");\nconst BITCOUNT = require(\"../commands/BITCOUNT\");\nconst BITFIELD_RO = require(\"../commands/BITFIELD_RO\");\nconst BITFIELD = require(\"../commands/BITFIELD\");\nconst BITOP = require(\"../commands/BITOP\");\nconst BITPOS = require(\"../commands/BITPOS\");\nconst BLMOVE = require(\"../commands/BLMOVE\");\nconst BLMPOP = require(\"../commands/BLMPOP\");\nconst BLPOP = require(\"../commands/BLPOP\");\nconst BRPOP = require(\"../commands/BRPOP\");\nconst BRPOPLPUSH = require(\"../commands/BRPOPLPUSH\");\nconst BZMPOP = require(\"../commands/BZMPOP\");\nconst BZPOPMAX = require(\"../commands/BZPOPMAX\");\nconst BZPOPMIN = require(\"../commands/BZPOPMIN\");\nconst COPY = require(\"../commands/COPY\");\nconst DECR = require(\"../commands/DECR\");\nconst DECRBY = require(\"../commands/DECRBY\");\nconst DEL = require(\"../commands/DEL\");\nconst DUMP = require(\"../commands/DUMP\");\nconst EVAL_RO = require(\"../commands/EVAL_RO\");\nconst EVAL = require(\"../commands/EVAL\");\nconst EVALSHA_RO = require(\"../commands/EVALSHA_RO\");\nconst EVALSHA = require(\"../commands/EVALSHA\");\nconst EXISTS = require(\"../commands/EXISTS\");\nconst EXPIRE = require(\"../commands/EXPIRE\");\nconst EXPIREAT = require(\"../commands/EXPIREAT\");\nconst EXPIRETIME = require(\"../commands/EXPIRETIME\");\nconst FCALL_RO = require(\"../commands/FCALL_RO\");\nconst FCALL = require(\"../commands/FCALL\");\nconst GEOADD = require(\"../commands/GEOADD\");\nconst GEODIST = require(\"../commands/GEODIST\");\nconst GEOHASH = require(\"../commands/GEOHASH\");\nconst GEOPOS = require(\"../commands/GEOPOS\");\nconst GEORADIUS_RO_WITH = require(\"../commands/GEORADIUS_RO_WITH\");\nconst GEORADIUS_RO = require(\"../commands/GEORADIUS_RO\");\nconst GEORADIUS_WITH = require(\"../commands/GEORADIUS_WITH\");\nconst GEORADIUS = require(\"../commands/GEORADIUS\");\nconst GEORADIUSBYMEMBER_RO_WITH = require(\"../commands/GEORADIUSBYMEMBER_RO_WITH\");\nconst GEORADIUSBYMEMBER_RO = require(\"../commands/GEORADIUSBYMEMBER_RO\");\nconst GEORADIUSBYMEMBER_WITH = require(\"../commands/GEORADIUSBYMEMBER_WITH\");\nconst GEORADIUSBYMEMBER = require(\"../commands/GEORADIUSBYMEMBER\");\nconst GEORADIUSBYMEMBERSTORE = require(\"../commands/GEORADIUSBYMEMBERSTORE\");\nconst GEORADIUSSTORE = require(\"../commands/GEORADIUSSTORE\");\nconst GEOSEARCH_WITH = require(\"../commands/GEOSEARCH_WITH\");\nconst GEOSEARCH = require(\"../commands/GEOSEARCH\");\nconst GEOSEARCHSTORE = require(\"../commands/GEOSEARCHSTORE\");\nconst GET = require(\"../commands/GET\");\nconst GETBIT = require(\"../commands/GETBIT\");\nconst GETDEL = require(\"../commands/GETDEL\");\nconst GETEX = require(\"../commands/GETEX\");\nconst GETRANGE = require(\"../commands/GETRANGE\");\nconst GETSET = require(\"../commands/GETSET\");\nconst HDEL = require(\"../commands/HDEL\");\nconst HEXISTS = require(\"../commands/HEXISTS\");\nconst HGET = require(\"../commands/HGET\");\nconst HGETALL = require(\"../commands/HGETALL\");\nconst HINCRBY = require(\"../commands/HINCRBY\");\nconst HINCRBYFLOAT = require(\"../commands/HINCRBYFLOAT\");\nconst HKEYS = require(\"../commands/HKEYS\");\nconst HLEN = require(\"../commands/HLEN\");\nconst HMGET = require(\"../commands/HMGET\");\nconst HRANDFIELD_COUNT_WITHVALUES = require(\"../commands/HRANDFIELD_COUNT_WITHVALUES\");\nconst HRANDFIELD_COUNT = require(\"../commands/HRANDFIELD_COUNT\");\nconst HRANDFIELD = require(\"../commands/HRANDFIELD\");\nconst HSCAN = require(\"../commands/HSCAN\");\nconst HSET = require(\"../commands/HSET\");\nconst HSETNX = require(\"../commands/HSETNX\");\nconst HSTRLEN = require(\"../commands/HSTRLEN\");\nconst HVALS = require(\"../commands/HVALS\");\nconst INCR = require(\"../commands/INCR\");\nconst INCRBY = require(\"../commands/INCRBY\");\nconst INCRBYFLOAT = require(\"../commands/INCRBYFLOAT\");\nconst LCS_IDX_WITHMATCHLEN = require(\"../commands/LCS_IDX_WITHMATCHLEN\");\nconst LCS_IDX = require(\"../commands/LCS_IDX\");\nconst LCS_LEN = require(\"../commands/LCS_LEN\");\nconst LCS = require(\"../commands/LCS\");\nconst LINDEX = require(\"../commands/LINDEX\");\nconst LINSERT = require(\"../commands/LINSERT\");\nconst LLEN = require(\"../commands/LLEN\");\nconst LMOVE = require(\"../commands/LMOVE\");\nconst LMPOP = require(\"../commands/LMPOP\");\nconst LPOP_COUNT = require(\"../commands/LPOP_COUNT\");\nconst LPOP = require(\"../commands/LPOP\");\nconst LPOS_COUNT = require(\"../commands/LPOS_COUNT\");\nconst LPOS = require(\"../commands/LPOS\");\nconst LPUSH = require(\"../commands/LPUSH\");\nconst LPUSHX = require(\"../commands/LPUSHX\");\nconst LRANGE = require(\"../commands/LRANGE\");\nconst LREM = require(\"../commands/LREM\");\nconst LSET = require(\"../commands/LSET\");\nconst LTRIM = require(\"../commands/LTRIM\");\nconst MGET = require(\"../commands/MGET\");\nconst MIGRATE = require(\"../commands/MIGRATE\");\nconst MSET = require(\"../commands/MSET\");\nconst MSETNX = require(\"../commands/MSETNX\");\nconst OBJECT_ENCODING = require(\"../commands/OBJECT_ENCODING\");\nconst OBJECT_FREQ = require(\"../commands/OBJECT_FREQ\");\nconst OBJECT_IDLETIME = require(\"../commands/OBJECT_IDLETIME\");\nconst OBJECT_REFCOUNT = require(\"../commands/OBJECT_REFCOUNT\");\nconst PERSIST = require(\"../commands/PERSIST\");\nconst PEXPIRE = require(\"../commands/PEXPIRE\");\nconst PEXPIREAT = require(\"../commands/PEXPIREAT\");\nconst PEXPIRETIME = require(\"../commands/PEXPIRETIME\");\nconst PFADD = require(\"../commands/PFADD\");\nconst PFCOUNT = require(\"../commands/PFCOUNT\");\nconst PFMERGE = require(\"../commands/PFMERGE\");\nconst PSETEX = require(\"../commands/PSETEX\");\nconst PTTL = require(\"../commands/PTTL\");\nconst PUBLISH = require(\"../commands/PUBLISH\");\nconst RENAME = require(\"../commands/RENAME\");\nconst RENAMENX = require(\"../commands/RENAMENX\");\nconst RPOP_COUNT = require(\"../commands/RPOP_COUNT\");\nconst RPOP = require(\"../commands/RPOP\");\nconst RPOPLPUSH = require(\"../commands/RPOPLPUSH\");\nconst RPUSH = require(\"../commands/RPUSH\");\nconst RPUSHX = require(\"../commands/RPUSHX\");\nconst SADD = require(\"../commands/SADD\");\nconst SCARD = require(\"../commands/SCARD\");\nconst SDIFF = require(\"../commands/SDIFF\");\nconst SDIFFSTORE = require(\"../commands/SDIFFSTORE\");\nconst SET = require(\"../commands/SET\");\nconst SETBIT = require(\"../commands/SETBIT\");\nconst SETEX = require(\"../commands/SETEX\");\nconst SETNX = require(\"../commands/SETNX\");\nconst SETRANGE = require(\"../commands/SETRANGE\");\nconst SINTER = require(\"../commands/SINTER\");\nconst SINTERCARD = require(\"../commands/SINTERCARD\");\nconst SINTERSTORE = require(\"../commands/SINTERSTORE\");\nconst SISMEMBER = require(\"../commands/SISMEMBER\");\nconst SMEMBERS = require(\"../commands/SMEMBERS\");\nconst SMISMEMBER = require(\"../commands/SMISMEMBER\");\nconst SMOVE = require(\"../commands/SMOVE\");\nconst SORT_RO = require(\"../commands/SORT_RO\");\nconst SORT_STORE = require(\"../commands/SORT_STORE\");\nconst SORT = require(\"../commands/SORT\");\nconst SPOP = require(\"../commands/SPOP\");\nconst SPUBLISH = require(\"../commands/SPUBLISH\");\nconst SRANDMEMBER_COUNT = require(\"../commands/SRANDMEMBER_COUNT\");\nconst SRANDMEMBER = require(\"../commands/SRANDMEMBER\");\nconst SREM = require(\"../commands/SREM\");\nconst SSCAN = require(\"../commands/SSCAN\");\nconst STRLEN = require(\"../commands/STRLEN\");\nconst SUNION = require(\"../commands/SUNION\");\nconst SUNIONSTORE = require(\"../commands/SUNIONSTORE\");\nconst TOUCH = require(\"../commands/TOUCH\");\nconst TTL = require(\"../commands/TTL\");\nconst TYPE = require(\"../commands/TYPE\");\nconst UNLINK = require(\"../commands/UNLINK\");\nconst WATCH = require(\"../commands/WATCH\");\nconst XACK = require(\"../commands/XACK\");\nconst XADD = require(\"../commands/XADD\");\nconst XAUTOCLAIM_JUSTID = require(\"../commands/XAUTOCLAIM_JUSTID\");\nconst XAUTOCLAIM = require(\"../commands/XAUTOCLAIM\");\nconst XCLAIM_JUSTID = require(\"../commands/XCLAIM_JUSTID\");\nconst XCLAIM = require(\"../commands/XCLAIM\");\nconst XDEL = require(\"../commands/XDEL\");\nconst XGROUP_CREATE = require(\"../commands/XGROUP_CREATE\");\nconst XGROUP_CREATECONSUMER = require(\"../commands/XGROUP_CREATECONSUMER\");\nconst XGROUP_DELCONSUMER = require(\"../commands/XGROUP_DELCONSUMER\");\nconst XGROUP_DESTROY = require(\"../commands/XGROUP_DESTROY\");\nconst XGROUP_SETID = require(\"../commands/XGROUP_SETID\");\nconst XINFO_CONSUMERS = require(\"../commands/XINFO_CONSUMERS\");\nconst XINFO_GROUPS = require(\"../commands/XINFO_GROUPS\");\nconst XINFO_STREAM = require(\"../commands/XINFO_STREAM\");\nconst XLEN = require(\"../commands/XLEN\");\nconst XPENDING_RANGE = require(\"../commands/XPENDING_RANGE\");\nconst XPENDING = require(\"../commands/XPENDING\");\nconst XRANGE = require(\"../commands/XRANGE\");\nconst XREAD = require(\"../commands/XREAD\");\nconst XREADGROUP = require(\"../commands/XREADGROUP\");\nconst XREVRANGE = require(\"../commands/XREVRANGE\");\nconst XSETID = require(\"../commands/XSETID\");\nconst XTRIM = require(\"../commands/XTRIM\");\nconst ZADD = require(\"../commands/ZADD\");\nconst ZCARD = require(\"../commands/ZCARD\");\nconst ZCOUNT = require(\"../commands/ZCOUNT\");\nconst ZDIFF_WITHSCORES = require(\"../commands/ZDIFF_WITHSCORES\");\nconst ZDIFF = require(\"../commands/ZDIFF\");\nconst ZDIFFSTORE = require(\"../commands/ZDIFFSTORE\");\nconst ZINCRBY = require(\"../commands/ZINCRBY\");\nconst ZINTER_WITHSCORES = require(\"../commands/ZINTER_WITHSCORES\");\nconst ZINTER = require(\"../commands/ZINTER\");\nconst ZINTERCARD = require(\"../commands/ZINTERCARD\");\nconst ZINTERSTORE = require(\"../commands/ZINTERSTORE\");\nconst ZLEXCOUNT = require(\"../commands/ZLEXCOUNT\");\nconst ZMPOP = require(\"../commands/ZMPOP\");\nconst ZMSCORE = require(\"../commands/ZMSCORE\");\nconst ZPOPMAX_COUNT = require(\"../commands/ZPOPMAX_COUNT\");\nconst ZPOPMAX = require(\"../commands/ZPOPMAX\");\nconst ZPOPMIN_COUNT = require(\"../commands/ZPOPMIN_COUNT\");\nconst ZPOPMIN = require(\"../commands/ZPOPMIN\");\nconst ZRANDMEMBER_COUNT_WITHSCORES = require(\"../commands/ZRANDMEMBER_COUNT_WITHSCORES\");\nconst ZRANDMEMBER_COUNT = require(\"../commands/ZRANDMEMBER_COUNT\");\nconst ZRANDMEMBER = require(\"../commands/ZRANDMEMBER\");\nconst ZRANGE_WITHSCORES = require(\"../commands/ZRANGE_WITHSCORES\");\nconst ZRANGE = require(\"../commands/ZRANGE\");\nconst ZRANGEBYLEX = require(\"../commands/ZRANGEBYLEX\");\nconst ZRANGEBYSCORE_WITHSCORES = require(\"../commands/ZRANGEBYSCORE_WITHSCORES\");\nconst ZRANGEBYSCORE = require(\"../commands/ZRANGEBYSCORE\");\nconst ZRANGESTORE = require(\"../commands/ZRANGESTORE\");\nconst ZRANK = require(\"../commands/ZRANK\");\nconst ZREM = require(\"../commands/ZREM\");\nconst ZREMRANGEBYLEX = require(\"../commands/ZREMRANGEBYLEX\");\nconst ZREMRANGEBYRANK = require(\"../commands/ZREMRANGEBYRANK\");\nconst ZREMRANGEBYSCORE = require(\"../commands/ZREMRANGEBYSCORE\");\nconst ZREVRANK = require(\"../commands/ZREVRANK\");\nconst ZSCAN = require(\"../commands/ZSCAN\");\nconst ZSCORE = require(\"../commands/ZSCORE\");\nconst ZUNION_WITHSCORES = require(\"../commands/ZUNION_WITHSCORES\");\nconst ZUNION = require(\"../commands/ZUNION\");\nconst ZUNIONSTORE = require(\"../commands/ZUNIONSTORE\");\nexports.default = {\n APPEND,\n append: APPEND,\n BITCOUNT,\n bitCount: BITCOUNT,\n BITFIELD_RO,\n bitFieldRo: BITFIELD_RO,\n BITFIELD,\n bitField: BITFIELD,\n BITOP,\n bitOp: BITOP,\n BITPOS,\n bitPos: BITPOS,\n BLMOVE,\n blMove: BLMOVE,\n BLMPOP,\n blmPop: BLMPOP,\n BLPOP,\n blPop: BLPOP,\n BRPOP,\n brPop: BRPOP,\n BRPOPLPUSH,\n brPopLPush: BRPOPLPUSH,\n BZMPOP,\n bzmPop: BZMPOP,\n BZPOPMAX,\n bzPopMax: BZPOPMAX,\n BZPOPMIN,\n bzPopMin: BZPOPMIN,\n COPY,\n copy: COPY,\n DECR,\n decr: DECR,\n DECRBY,\n decrBy: DECRBY,\n DEL,\n del: DEL,\n DUMP,\n dump: DUMP,\n EVAL_RO,\n evalRo: EVAL_RO,\n EVAL,\n eval: EVAL,\n EVALSHA,\n evalSha: EVALSHA,\n EVALSHA_RO,\n evalShaRo: EVALSHA_RO,\n EXISTS,\n exists: EXISTS,\n EXPIRE,\n expire: EXPIRE,\n EXPIREAT,\n expireAt: EXPIREAT,\n EXPIRETIME,\n expireTime: EXPIRETIME,\n FCALL_RO,\n fCallRo: FCALL_RO,\n FCALL,\n fCall: FCALL,\n GEOADD,\n geoAdd: GEOADD,\n GEODIST,\n geoDist: GEODIST,\n GEOHASH,\n geoHash: GEOHASH,\n GEOPOS,\n geoPos: GEOPOS,\n GEORADIUS_RO_WITH,\n geoRadiusRoWith: GEORADIUS_RO_WITH,\n GEORADIUS_RO,\n geoRadiusRo: GEORADIUS_RO,\n GEORADIUS_WITH,\n geoRadiusWith: GEORADIUS_WITH,\n GEORADIUS,\n geoRadius: GEORADIUS,\n GEORADIUSBYMEMBER_RO_WITH,\n geoRadiusByMemberRoWith: GEORADIUSBYMEMBER_RO_WITH,\n GEORADIUSBYMEMBER_RO,\n geoRadiusByMemberRo: GEORADIUSBYMEMBER_RO,\n GEORADIUSBYMEMBER_WITH,\n geoRadiusByMemberWith: GEORADIUSBYMEMBER_WITH,\n GEORADIUSBYMEMBER,\n geoRadiusByMember: GEORADIUSBYMEMBER,\n GEORADIUSBYMEMBERSTORE,\n geoRadiusByMemberStore: GEORADIUSBYMEMBERSTORE,\n GEORADIUSSTORE,\n geoRadiusStore: GEORADIUSSTORE,\n GEOSEARCH_WITH,\n geoSearchWith: GEOSEARCH_WITH,\n GEOSEARCH,\n geoSearch: GEOSEARCH,\n GEOSEARCHSTORE,\n geoSearchStore: GEOSEARCHSTORE,\n GET,\n get: GET,\n GETBIT,\n getBit: GETBIT,\n GETDEL,\n getDel: GETDEL,\n GETEX,\n getEx: GETEX,\n GETRANGE,\n getRange: GETRANGE,\n GETSET,\n getSet: GETSET,\n HDEL,\n hDel: HDEL,\n HEXISTS,\n hExists: HEXISTS,\n HGET,\n hGet: HGET,\n HGETALL,\n hGetAll: HGETALL,\n HINCRBY,\n hIncrBy: HINCRBY,\n HINCRBYFLOAT,\n hIncrByFloat: HINCRBYFLOAT,\n HKEYS,\n hKeys: HKEYS,\n HLEN,\n hLen: HLEN,\n HMGET,\n hmGet: HMGET,\n HRANDFIELD_COUNT_WITHVALUES,\n hRandFieldCountWithValues: HRANDFIELD_COUNT_WITHVALUES,\n HRANDFIELD_COUNT,\n hRandFieldCount: HRANDFIELD_COUNT,\n HRANDFIELD,\n hRandField: HRANDFIELD,\n HSCAN,\n hScan: HSCAN,\n HSET,\n hSet: HSET,\n HSETNX,\n hSetNX: HSETNX,\n HSTRLEN,\n hStrLen: HSTRLEN,\n HVALS,\n hVals: HVALS,\n INCR,\n incr: INCR,\n INCRBY,\n incrBy: INCRBY,\n INCRBYFLOAT,\n incrByFloat: INCRBYFLOAT,\n LCS_IDX_WITHMATCHLEN,\n lcsIdxWithMatchLen: LCS_IDX_WITHMATCHLEN,\n LCS_IDX,\n lcsIdx: LCS_IDX,\n LCS_LEN,\n lcsLen: LCS_LEN,\n LCS,\n lcs: LCS,\n LINDEX,\n lIndex: LINDEX,\n LINSERT,\n lInsert: LINSERT,\n LLEN,\n lLen: LLEN,\n LMOVE,\n lMove: LMOVE,\n LMPOP,\n lmPop: LMPOP,\n LPOP_COUNT,\n lPopCount: LPOP_COUNT,\n LPOP,\n lPop: LPOP,\n LPOS_COUNT,\n lPosCount: LPOS_COUNT,\n LPOS,\n lPos: LPOS,\n LPUSH,\n lPush: LPUSH,\n LPUSHX,\n lPushX: LPUSHX,\n LRANGE,\n lRange: LRANGE,\n LREM,\n lRem: LREM,\n LSET,\n lSet: LSET,\n LTRIM,\n lTrim: LTRIM,\n MGET,\n mGet: MGET,\n MIGRATE,\n migrate: MIGRATE,\n MSET,\n mSet: MSET,\n MSETNX,\n mSetNX: MSETNX,\n OBJECT_ENCODING,\n objectEncoding: OBJECT_ENCODING,\n OBJECT_FREQ,\n objectFreq: OBJECT_FREQ,\n OBJECT_IDLETIME,\n objectIdleTime: OBJECT_IDLETIME,\n OBJECT_REFCOUNT,\n objectRefCount: OBJECT_REFCOUNT,\n PERSIST,\n persist: PERSIST,\n PEXPIRE,\n pExpire: PEXPIRE,\n PEXPIREAT,\n pExpireAt: PEXPIREAT,\n PEXPIRETIME,\n pExpireTime: PEXPIRETIME,\n PFADD,\n pfAdd: PFADD,\n PFCOUNT,\n pfCount: PFCOUNT,\n PFMERGE,\n pfMerge: PFMERGE,\n PSETEX,\n pSetEx: PSETEX,\n PTTL,\n pTTL: PTTL,\n PUBLISH,\n publish: PUBLISH,\n RENAME,\n rename: RENAME,\n RENAMENX,\n renameNX: RENAMENX,\n RPOP_COUNT,\n rPopCount: RPOP_COUNT,\n RPOP,\n rPop: RPOP,\n RPOPLPUSH,\n rPopLPush: RPOPLPUSH,\n RPUSH,\n rPush: RPUSH,\n RPUSHX,\n rPushX: RPUSHX,\n SADD,\n sAdd: SADD,\n SCARD,\n sCard: SCARD,\n SDIFF,\n sDiff: SDIFF,\n SDIFFSTORE,\n sDiffStore: SDIFFSTORE,\n SINTER,\n sInter: SINTER,\n SINTERCARD,\n sInterCard: SINTERCARD,\n SINTERSTORE,\n sInterStore: SINTERSTORE,\n SET,\n set: SET,\n SETBIT,\n setBit: SETBIT,\n SETEX,\n setEx: SETEX,\n SETNX,\n setNX: SETNX,\n SETRANGE,\n setRange: SETRANGE,\n SISMEMBER,\n sIsMember: SISMEMBER,\n SMEMBERS,\n sMembers: SMEMBERS,\n SMISMEMBER,\n smIsMember: SMISMEMBER,\n SMOVE,\n sMove: SMOVE,\n SORT_RO,\n sortRo: SORT_RO,\n SORT_STORE,\n sortStore: SORT_STORE,\n SORT,\n sort: SORT,\n SPOP,\n sPop: SPOP,\n SPUBLISH,\n sPublish: SPUBLISH,\n SRANDMEMBER_COUNT,\n sRandMemberCount: SRANDMEMBER_COUNT,\n SRANDMEMBER,\n sRandMember: SRANDMEMBER,\n SREM,\n sRem: SREM,\n SSCAN,\n sScan: SSCAN,\n STRLEN,\n strLen: STRLEN,\n SUNION,\n sUnion: SUNION,\n SUNIONSTORE,\n sUnionStore: SUNIONSTORE,\n TOUCH,\n touch: TOUCH,\n TTL,\n ttl: TTL,\n TYPE,\n type: TYPE,\n UNLINK,\n unlink: UNLINK,\n WATCH,\n watch: WATCH,\n XACK,\n xAck: XACK,\n XADD,\n xAdd: XADD,\n XAUTOCLAIM_JUSTID,\n xAutoClaimJustId: XAUTOCLAIM_JUSTID,\n XAUTOCLAIM,\n xAutoClaim: XAUTOCLAIM,\n XCLAIM,\n xClaim: XCLAIM,\n XCLAIM_JUSTID,\n xClaimJustId: XCLAIM_JUSTID,\n XDEL,\n xDel: XDEL,\n XGROUP_CREATE,\n xGroupCreate: XGROUP_CREATE,\n XGROUP_CREATECONSUMER,\n xGroupCreateConsumer: XGROUP_CREATECONSUMER,\n XGROUP_DELCONSUMER,\n xGroupDelConsumer: XGROUP_DELCONSUMER,\n XGROUP_DESTROY,\n xGroupDestroy: XGROUP_DESTROY,\n XGROUP_SETID,\n xGroupSetId: XGROUP_SETID,\n XINFO_CONSUMERS,\n xInfoConsumers: XINFO_CONSUMERS,\n XINFO_GROUPS,\n xInfoGroups: XINFO_GROUPS,\n XINFO_STREAM,\n xInfoStream: XINFO_STREAM,\n XLEN,\n xLen: XLEN,\n XPENDING_RANGE,\n xPendingRange: XPENDING_RANGE,\n XPENDING,\n xPending: XPENDING,\n XRANGE,\n xRange: XRANGE,\n XREAD,\n xRead: XREAD,\n XREADGROUP,\n xReadGroup: XREADGROUP,\n XREVRANGE,\n xRevRange: XREVRANGE,\n XSETID,\n xSetId: XSETID,\n XTRIM,\n xTrim: XTRIM,\n ZADD,\n zAdd: ZADD,\n ZCARD,\n zCard: ZCARD,\n ZCOUNT,\n zCount: ZCOUNT,\n ZDIFF_WITHSCORES,\n zDiffWithScores: ZDIFF_WITHSCORES,\n ZDIFF,\n zDiff: ZDIFF,\n ZDIFFSTORE,\n zDiffStore: ZDIFFSTORE,\n ZINCRBY,\n zIncrBy: ZINCRBY,\n ZINTER_WITHSCORES,\n zInterWithScores: ZINTER_WITHSCORES,\n ZINTER,\n zInter: ZINTER,\n ZINTERCARD,\n zInterCard: ZINTERCARD,\n ZINTERSTORE,\n zInterStore: ZINTERSTORE,\n ZLEXCOUNT,\n zLexCount: ZLEXCOUNT,\n ZMPOP,\n zmPop: ZMPOP,\n ZMSCORE,\n zmScore: ZMSCORE,\n ZPOPMAX_COUNT,\n zPopMaxCount: ZPOPMAX_COUNT,\n ZPOPMAX,\n zPopMax: ZPOPMAX,\n ZPOPMIN_COUNT,\n zPopMinCount: ZPOPMIN_COUNT,\n ZPOPMIN,\n zPopMin: ZPOPMIN,\n ZRANDMEMBER_COUNT_WITHSCORES,\n zRandMemberCountWithScores: ZRANDMEMBER_COUNT_WITHSCORES,\n ZRANDMEMBER_COUNT,\n zRandMemberCount: ZRANDMEMBER_COUNT,\n ZRANDMEMBER,\n zRandMember: ZRANDMEMBER,\n ZRANGE_WITHSCORES,\n zRangeWithScores: ZRANGE_WITHSCORES,\n ZRANGE,\n zRange: ZRANGE,\n ZRANGEBYLEX,\n zRangeByLex: ZRANGEBYLEX,\n ZRANGEBYSCORE_WITHSCORES,\n zRangeByScoreWithScores: ZRANGEBYSCORE_WITHSCORES,\n ZRANGEBYSCORE,\n zRangeByScore: ZRANGEBYSCORE,\n ZRANGESTORE,\n zRangeStore: ZRANGESTORE,\n ZRANK,\n zRank: ZRANK,\n ZREM,\n zRem: ZREM,\n ZREMRANGEBYLEX,\n zRemRangeByLex: ZREMRANGEBYLEX,\n ZREMRANGEBYRANK,\n zRemRangeByRank: ZREMRANGEBYRANK,\n ZREMRANGEBYSCORE,\n zRemRangeByScore: ZREMRANGEBYSCORE,\n ZREVRANK,\n zRevRank: ZREVRANK,\n ZSCAN,\n zScan: ZSCAN,\n ZSCORE,\n zScore: ZSCORE,\n ZUNION_WITHSCORES,\n zUnionWithScores: ZUNION_WITHSCORES,\n ZUNION,\n zUnion: ZUNION,\n ZUNIONSTORE,\n zUnionStore: ZUNIONSTORE\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisCluster_instances, _RedisCluster_options, _RedisCluster_slots, _RedisCluster_Multi, _RedisCluster_execute;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst cluster_slots_1 = require(\"./cluster-slots\");\nconst commander_1 = require(\"../commander\");\nconst events_1 = require(\"events\");\nconst multi_command_1 = require(\"./multi-command\");\nconst errors_1 = require(\"../errors\");\nclass RedisCluster extends events_1.EventEmitter {\n static extractFirstKey(command, originalArgs, redisArgs) {\n if (command.FIRST_KEY_INDEX === undefined) {\n return undefined;\n }\n else if (typeof command.FIRST_KEY_INDEX === 'number') {\n return redisArgs[command.FIRST_KEY_INDEX];\n }\n return command.FIRST_KEY_INDEX(...originalArgs);\n }\n static create(options) {\n return new ((0, commander_1.attachExtensions)({\n BaseClass: RedisCluster,\n modulesExecutor: RedisCluster.prototype.commandsExecutor,\n modules: options?.modules,\n functionsExecutor: RedisCluster.prototype.functionsExecutor,\n functions: options?.functions,\n scriptsExecutor: RedisCluster.prototype.scriptsExecutor,\n scripts: options?.scripts\n }))(options);\n }\n get slots() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").slots;\n }\n get shards() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").shards;\n }\n get masters() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").masters;\n }\n get replicas() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").replicas;\n }\n get nodeByAddress() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").nodeByAddress;\n }\n get pubSubNode() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").pubSubNode;\n }\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").isOpen;\n }\n constructor(options) {\n super();\n _RedisCluster_instances.add(this);\n _RedisCluster_options.set(this, void 0);\n _RedisCluster_slots.set(this, void 0);\n _RedisCluster_Multi.set(this, void 0);\n Object.defineProperty(this, \"multi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.MULTI\n });\n Object.defineProperty(this, \"subscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUBSCRIBE\n });\n Object.defineProperty(this, \"unsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.UNSUBSCRIBE\n });\n Object.defineProperty(this, \"pSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PSUBSCRIBE\n });\n Object.defineProperty(this, \"pUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PUNSUBSCRIBE\n });\n Object.defineProperty(this, \"sSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SSUBSCRIBE\n });\n Object.defineProperty(this, \"sUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUNSUBSCRIBE\n });\n __classPrivateFieldSet(this, _RedisCluster_options, options, \"f\");\n __classPrivateFieldSet(this, _RedisCluster_slots, new cluster_slots_1.default(options, this.emit.bind(this)), \"f\");\n __classPrivateFieldSet(this, _RedisCluster_Multi, multi_command_1.default.extend(options), \"f\");\n }\n duplicate(overrides) {\n return new (Object.getPrototypeOf(this).constructor)({\n ...__classPrivateFieldGet(this, _RedisCluster_options, \"f\"),\n ...overrides\n });\n }\n connect() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").connect();\n }\n async commandsExecutor(command, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args);\n return (0, commander_1.transformCommandReply)(command, await this.sendCommand(RedisCluster.extractFirstKey(command, args, redisArgs), command.IS_READ_ONLY, redisArgs, options), redisArgs.preserve);\n }\n async sendCommand(firstKey, isReadonly, args, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, firstKey, isReadonly, client => client.sendCommand(args, options));\n }\n async functionsExecutor(fn, args, name) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(fn, args);\n return (0, commander_1.transformCommandReply)(fn, await this.executeFunction(name, fn, args, redisArgs, options), redisArgs.preserve);\n }\n async executeFunction(name, fn, originalArgs, redisArgs, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, RedisCluster.extractFirstKey(fn, originalArgs, redisArgs), fn.IS_READ_ONLY, client => client.executeFunction(name, fn, redisArgs, options));\n }\n async scriptsExecutor(script, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args);\n return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, args, redisArgs, options), redisArgs.preserve);\n }\n async executeScript(script, originalArgs, redisArgs, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, RedisCluster.extractFirstKey(script, originalArgs, redisArgs), script.IS_READ_ONLY, client => client.executeScript(script, redisArgs, options));\n }\n MULTI(routing) {\n return new (__classPrivateFieldGet(this, _RedisCluster_Multi, \"f\"))((commands, firstKey, chainId) => {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, firstKey, false, client => client.multiExecutor(commands, undefined, chainId));\n }, routing);\n }\n async SUBSCRIBE(channels, listener, bufferMode) {\n return (await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getPubSubClient())\n .SUBSCRIBE(channels, listener, bufferMode);\n }\n async UNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeUnsubscribeCommand(client => client.UNSUBSCRIBE(channels, listener, bufferMode));\n }\n async PSUBSCRIBE(patterns, listener, bufferMode) {\n return (await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getPubSubClient())\n .PSUBSCRIBE(patterns, listener, bufferMode);\n }\n async PUNSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeUnsubscribeCommand(client => client.PUNSUBSCRIBE(patterns, listener, bufferMode));\n }\n async SSUBSCRIBE(channels, listener, bufferMode) {\n const maxCommandRedirections = __classPrivateFieldGet(this, _RedisCluster_options, \"f\").maxCommandRedirections ?? 16, firstChannel = Array.isArray(channels) ? channels[0] : channels;\n let client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getShardedPubSubClient(firstChannel);\n for (let i = 0;; i++) {\n try {\n return await client.SSUBSCRIBE(channels, listener, bufferMode);\n }\n catch (err) {\n if (++i > maxCommandRedirections || !(err instanceof errors_1.ErrorReply)) {\n throw err;\n }\n if (err.message.startsWith('MOVED')) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getShardedPubSubClient(firstChannel);\n continue;\n }\n throw err;\n }\n }\n }\n SUNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeShardedUnsubscribeCommand(Array.isArray(channels) ? channels[0] : channels, client => client.SUNSUBSCRIBE(channels, listener, bufferMode));\n }\n quit() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").quit();\n }\n disconnect() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").disconnect();\n }\n nodeClient(node) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").nodeClient(node);\n }\n getRandomNode() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getRandomNode();\n }\n getSlotRandomNode(slot) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getSlotRandomNode(slot);\n }\n /**\n * @deprecated use `.masters` instead\n */\n getMasters() {\n return this.masters;\n }\n /**\n * @deprecated use `.slots[]` instead\n */\n getSlotMaster(slot) {\n return this.slots[slot].master;\n }\n}\nexports.default = RedisCluster;\n_RedisCluster_options = new WeakMap(), _RedisCluster_slots = new WeakMap(), _RedisCluster_Multi = new WeakMap(), _RedisCluster_instances = new WeakSet(), _RedisCluster_execute = async function _RedisCluster_execute(firstKey, isReadonly, executor) {\n const maxCommandRedirections = __classPrivateFieldGet(this, _RedisCluster_options, \"f\").maxCommandRedirections ?? 16;\n let client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getClient(firstKey, isReadonly);\n for (let i = 0;; i++) {\n try {\n return await executor(client);\n }\n catch (err) {\n if (++i > maxCommandRedirections || !(err instanceof errors_1.ErrorReply)) {\n throw err;\n }\n if (err.message.startsWith('ASK')) {\n const address = err.message.substring(err.message.lastIndexOf(' ') + 1);\n let redirectTo = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getMasterByAddress(address);\n if (!redirectTo) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n redirectTo = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getMasterByAddress(address);\n }\n if (!redirectTo) {\n throw new Error(`Cannot find node ${address}`);\n }\n await redirectTo.asking();\n client = redirectTo;\n continue;\n }\n else if (err.message.startsWith('MOVED')) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getClient(firstKey, isReadonly);\n continue;\n }\n throw err;\n }\n }\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisCluster,\n commands: commands_1.default,\n executor: RedisCluster.prototype.commandsExecutor\n});\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _RedisClusterMultiCommand_multi, _RedisClusterMultiCommand_executor, _RedisClusterMultiCommand_firstKey;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst multi_command_1 = require(\"../multi-command\");\nconst commander_1 = require(\"../commander\");\nconst _1 = require(\".\");\nclass RedisClusterMultiCommand {\n static extend(extensions) {\n return (0, commander_1.attachExtensions)({\n BaseClass: RedisClusterMultiCommand,\n modulesExecutor: RedisClusterMultiCommand.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClusterMultiCommand.prototype.functionsExecutor,\n functions: extensions?.functions,\n scriptsExecutor: RedisClusterMultiCommand.prototype.scriptsExecutor,\n scripts: extensions?.scripts\n });\n }\n constructor(executor, firstKey) {\n _RedisClusterMultiCommand_multi.set(this, new multi_command_1.default());\n _RedisClusterMultiCommand_executor.set(this, void 0);\n _RedisClusterMultiCommand_firstKey.set(this, void 0);\n Object.defineProperty(this, \"EXEC\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.exec\n });\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_executor, executor, \"f\");\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, firstKey, \"f\");\n }\n commandsExecutor(command, args) {\n const transformedArguments = command.transformArguments(...args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(command, args, transformedArguments), \"f\");\n return this.addCommand(undefined, transformedArguments, command.transformReply);\n }\n addCommand(firstKey, args, transformReply) {\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? firstKey, \"f\");\n __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addCommand(args, transformReply);\n return this;\n }\n functionsExecutor(fn, args, name) {\n const transformedArguments = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addFunction(name, fn, args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(fn, args, transformedArguments), \"f\");\n return this;\n }\n scriptsExecutor(script, args) {\n const transformedArguments = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addScript(script, args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(script, args, transformedArguments), \"f\");\n return this;\n }\n async exec(execAsPipeline = false) {\n if (execAsPipeline) {\n return this.execAsPipeline();\n }\n return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").handleExecReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\"), multi_command_1.default.generateChainId()));\n }\n async execAsPipeline() {\n return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").transformReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\")));\n }\n}\nexports.default = RedisClusterMultiCommand;\n_RedisClusterMultiCommand_multi = new WeakMap(), _RedisClusterMultiCommand_executor = new WeakMap(), _RedisClusterMultiCommand_firstKey = new WeakMap();\n(0, commander_1.attachCommands)({\n BaseClass: RedisClusterMultiCommand,\n commands: commands_1.default,\n executor: RedisClusterMultiCommand.prototype.commandsExecutor\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCommandOptions = exports.commandOptions = void 0;\nconst symbol = Symbol('Command Options');\nfunction commandOptions(options) {\n options[symbol] = true;\n return options;\n}\nexports.commandOptions = commandOptions;\nfunction isCommandOptions(options) {\n return options?.[symbol] === true;\n}\nexports.isCommandOptions = isCommandOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fCallArguments = exports.transformCommandReply = exports.transformLegacyCommandArguments = exports.transformCommandArguments = exports.attachExtensions = exports.attachCommands = void 0;\nconst command_options_1 = require(\"./command-options\");\nfunction attachCommands({ BaseClass, commands, executor }) {\n for (const [name, command] of Object.entries(commands)) {\n BaseClass.prototype[name] = function (...args) {\n return executor.call(this, command, args, name);\n };\n }\n}\nexports.attachCommands = attachCommands;\nfunction attachExtensions(config) {\n let Commander;\n if (config.modules) {\n Commander = attachWithNamespaces({\n BaseClass: config.BaseClass,\n namespaces: config.modules,\n executor: config.modulesExecutor\n });\n }\n if (config.functions) {\n Commander = attachWithNamespaces({\n BaseClass: Commander ?? config.BaseClass,\n namespaces: config.functions,\n executor: config.functionsExecutor\n });\n }\n if (config.scripts) {\n Commander ?? (Commander = class extends config.BaseClass {\n });\n attachCommands({\n BaseClass: Commander,\n commands: config.scripts,\n executor: config.scriptsExecutor\n });\n }\n return Commander ?? config.BaseClass;\n}\nexports.attachExtensions = attachExtensions;\nfunction attachWithNamespaces({ BaseClass, namespaces, executor }) {\n const Commander = class extends BaseClass {\n constructor(...args) {\n super(...args);\n for (const namespace of Object.keys(namespaces)) {\n this[namespace] = Object.create(this[namespace], {\n self: {\n value: this\n }\n });\n }\n }\n };\n for (const [namespace, commands] of Object.entries(namespaces)) {\n Commander.prototype[namespace] = {};\n for (const [name, command] of Object.entries(commands)) {\n Commander.prototype[namespace][name] = function (...args) {\n return executor.call(this.self, command, args, name);\n };\n }\n }\n return Commander;\n}\nfunction transformCommandArguments(command, args) {\n let options;\n if ((0, command_options_1.isCommandOptions)(args[0])) {\n options = args[0];\n args = args.slice(1);\n }\n return {\n args: command.transformArguments(...args),\n options\n };\n}\nexports.transformCommandArguments = transformCommandArguments;\nfunction transformLegacyCommandArguments(args) {\n return args.flat().map(arg => {\n return typeof arg === 'number' || arg instanceof Date ?\n arg.toString() :\n arg;\n });\n}\nexports.transformLegacyCommandArguments = transformLegacyCommandArguments;\nfunction transformCommandReply(command, rawReply, preserved) {\n if (!command.transformReply) {\n return rawReply;\n }\n return command.transformReply(rawReply, preserved);\n}\nexports.transformCommandReply = transformCommandReply;\nfunction fCallArguments(name, fn, args) {\n const actualArgs = [\n fn.IS_READ_ONLY ? 'FCALL_RO' : 'FCALL',\n name\n ];\n if (fn.NUMBER_OF_KEYS !== undefined) {\n actualArgs.push(fn.NUMBER_OF_KEYS.toString());\n }\n actualArgs.push(...args);\n return actualArgs;\n}\nexports.fCallArguments = fCallArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(categoryName) {\n const args = ['ACL', 'CAT'];\n if (categoryName) {\n args.push(categoryName);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(username) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'DELUSER'], username);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(username, command) {\n return [\n 'ACL',\n 'DRYRUN',\n username,\n ...command\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(bits) {\n const args = ['ACL', 'GENPASS'];\n if (bits) {\n args.push(bits.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(username) {\n return ['ACL', 'GETUSER', username];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n flags: reply[1],\n passwords: reply[3],\n commands: reply[5],\n keys: reply[7],\n channels: reply[9],\n selectors: reply[11]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LOAD'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(count) {\n const args = ['ACL', 'LOG'];\n if (count) {\n args.push(count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(log => ({\n count: log[1],\n reason: log[3],\n context: log[5],\n object: log[7],\n username: log[9],\n ageSeconds: Number(log[11]),\n clientInfo: log[13]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LOG', 'RESET'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'SAVE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(username, rule) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'SETUSER', username], rule);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'USERS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'WHOAMI'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['APPEND', key, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ASKING'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments({ username, password }) {\n if (!username) {\n return ['AUTH', password];\n }\n return ['AUTH', username, password];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['BGREWRITEAOF'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['BGSAVE'];\n if (options?.SCHEDULE) {\n args.push('SCHEDULE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, range) {\n const args = ['BITCOUNT', key];\n if (range) {\n args.push(range.start.toString(), range.end.toString());\n if (range.mode) {\n args.push(range.mode);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, operations) {\n const args = ['BITFIELD', key];\n for (const options of operations) {\n switch (options.operation) {\n case 'GET':\n args.push('GET', options.encoding, options.offset.toString());\n break;\n case 'SET':\n args.push('SET', options.encoding, options.offset.toString(), options.value.toString());\n break;\n case 'INCRBY':\n args.push('INCRBY', options.encoding, options.offset.toString(), options.increment.toString());\n break;\n case 'OVERFLOW':\n args.push('OVERFLOW', options.behavior);\n break;\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, operations) {\n const args = ['BITFIELD_RO', key];\n for (const operation of operations) {\n args.push('GET', operation.encoding, operation.offset.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(operation, destKey, key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['BITOP', operation, destKey], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, bit, start, end, mode) {\n const args = ['BITPOS', key, bit.toString()];\n if (typeof start === 'number') {\n args.push(start.toString());\n }\n if (typeof end === 'number') {\n args.push(end.toString());\n }\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, sourceDirection, destinationDirection, timeout) {\n return [\n 'BLMOVE',\n source,\n destination,\n sourceDirection,\n destinationDirection,\n timeout.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 3;\nfunction transformArguments(timeout, keys, side, options) {\n return (0, generic_transformers_1.transformLMPopArguments)(['BLMPOP', timeout.toString()], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nvar LMPOP_1 = require(\"./LMPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return LMPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BLPOP'], keys);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply === null)\n return null;\n return {\n key: reply[0],\n element: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BRPOP'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nvar BLPOP_1 = require(\"./BLPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return BLPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, timeout) {\n return ['BRPOPLPUSH', source, destination, timeout.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 3;\nfunction transformArguments(timeout, keys, side, options) {\n return (0, generic_transformers_1.transformZMPopArguments)(['BZMPOP', timeout.toString()], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nvar ZMPOP_1 = require(\"./ZMPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return ZMPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMAX'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (!reply)\n return null;\n return {\n key: reply[0],\n value: reply[1],\n score: (0, generic_transformers_1.transformNumberInfinityReply)(reply[2])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMIN'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nvar BZPOPMAX_1 = require(\"./BZPOPMAX\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return BZPOPMAX_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(value) {\n return [\n 'CLIENT',\n 'CACHING',\n value ? 'YES' : 'NO'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'GETNAME'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'GETREDIR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['CLIENT', 'ID'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['CLIENT', 'INFO'];\n}\nexports.transformArguments = transformArguments;\nconst CLIENT_INFO_REGEX = /([^\\s=]+)=([^\\s]*)/g;\nfunction transformReply(rawReply) {\n const map = {};\n for (const item of rawReply.matchAll(CLIENT_INFO_REGEX)) {\n map[item[1]] = item[2];\n }\n const reply = {\n id: Number(map.id),\n addr: map.addr,\n fd: Number(map.fd),\n name: map.name,\n age: Number(map.age),\n idle: Number(map.idle),\n flags: map.flags,\n db: Number(map.db),\n sub: Number(map.sub),\n psub: Number(map.psub),\n multi: Number(map.multi),\n qbuf: Number(map.qbuf),\n qbufFree: Number(map['qbuf-free']),\n argvMem: Number(map['argv-mem']),\n obl: Number(map.obl),\n oll: Number(map.oll),\n omem: Number(map.omem),\n totMem: Number(map['tot-mem']),\n events: map.events,\n cmd: map.cmd,\n user: map.user\n };\n if (map.laddr !== undefined) {\n reply.laddr = map.laddr;\n }\n if (map.redir !== undefined) {\n reply.redir = Number(map.redir);\n }\n if (map.ssub !== undefined) {\n reply.ssub = Number(map.ssub);\n }\n if (map['multi-mem'] !== undefined) {\n reply.multiMem = Number(map['multi-mem']);\n }\n if (map.resp !== undefined) {\n reply.resp = Number(map.resp);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.ClientKillFilters = void 0;\nvar ClientKillFilters;\n(function (ClientKillFilters) {\n ClientKillFilters[\"ADDRESS\"] = \"ADDR\";\n ClientKillFilters[\"LOCAL_ADDRESS\"] = \"LADDR\";\n ClientKillFilters[\"ID\"] = \"ID\";\n ClientKillFilters[\"TYPE\"] = \"TYPE\";\n ClientKillFilters[\"USER\"] = \"USER\";\n ClientKillFilters[\"SKIP_ME\"] = \"SKIPME\";\n})(ClientKillFilters = exports.ClientKillFilters || (exports.ClientKillFilters = {}));\nfunction transformArguments(filters) {\n const args = ['CLIENT', 'KILL'];\n if (Array.isArray(filters)) {\n for (const filter of filters) {\n pushFilter(args, filter);\n }\n }\n else {\n pushFilter(args, filters);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushFilter(args, filter) {\n if (filter === ClientKillFilters.SKIP_ME) {\n args.push('SKIPME');\n return;\n }\n args.push(filter.filter);\n switch (filter.filter) {\n case ClientKillFilters.ADDRESS:\n args.push(filter.address);\n break;\n case ClientKillFilters.LOCAL_ADDRESS:\n args.push(filter.localAddress);\n break;\n case ClientKillFilters.ID:\n args.push(typeof filter.id === 'number' ?\n filter.id.toString() :\n filter.id);\n break;\n case ClientKillFilters.TYPE:\n args.push(filter.type);\n break;\n case ClientKillFilters.USER:\n args.push(filter.username);\n break;\n case ClientKillFilters.SKIP_ME:\n args.push(filter.skipMe ? 'yes' : 'no');\n break;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst CLIENT_INFO_1 = require(\"./CLIENT_INFO\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter) {\n let args = ['CLIENT', 'LIST'];\n if (filter) {\n if (filter.TYPE !== undefined) {\n args.push('TYPE', filter.TYPE);\n }\n else {\n args.push('ID');\n args = (0, generic_transformers_1.pushVerdictArguments)(args, filter.ID);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const split = rawReply.split('\\n'), length = split.length - 1, reply = [];\n for (let i = 0; i < length; i++) {\n reply.push((0, CLIENT_INFO_1.transformReply)(split[i]));\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(value) {\n return [\n 'CLIENT',\n 'NO-EVICT',\n value ? 'ON' : 'OFF'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(timeout, mode) {\n const args = [\n 'CLIENT',\n 'PAUSE',\n timeout.toString()\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name) {\n return ['CLIENT', 'SETNAME', name];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode, options) {\n const args = [\n 'CLIENT',\n 'TRACKING',\n mode ? 'ON' : 'OFF'\n ];\n if (mode) {\n if (options?.REDIRECT) {\n args.push('REDIRECT', options.REDIRECT.toString());\n }\n if (isBroadcast(options)) {\n args.push('BCAST');\n if (options?.PREFIX) {\n if (Array.isArray(options.PREFIX)) {\n for (const prefix of options.PREFIX) {\n args.push('PREFIX', prefix);\n }\n }\n else {\n args.push('PREFIX', options.PREFIX);\n }\n }\n }\n else if (isOptIn(options)) {\n args.push('OPTIN');\n }\n else if (isOptOut(options)) {\n args.push('OPTOUT');\n }\n if (options?.NOLOOP) {\n args.push('NOLOOP');\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction isBroadcast(options) {\n return options?.BCAST === true;\n}\nfunction isOptIn(options) {\n return options?.OPTIN === true;\n}\nfunction isOptOut(options) {\n return options?.OPTOUT === true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'TRACKINGINFO'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n flags: new Set(reply[1]),\n redirect: reply[3],\n prefixes: reply[5]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'UNPAUSE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(slots) {\n return (0, generic_transformers_1.pushVerdictNumberArguments)(['CLUSTER', 'ADDSLOTS'], slots);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(ranges) {\n return (0, generic_transformers_1.pushSlotRangesArguments)(['CLUSTER', 'ADDSLOTSRANGE'], ranges);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'BUMPEPOCH'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'COUNT-FAILURE-REPORTS', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(slot) {\n return ['CLUSTER', 'COUNTKEYSINSLOT', slot.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(slots) {\n return (0, generic_transformers_1.pushVerdictNumberArguments)(['CLUSTER', 'DELSLOTS'], slots);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(ranges) {\n return (0, generic_transformers_1.pushSlotRangesArguments)(['CLUSTER', 'DELSLOTSRANGE'], ranges);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FailoverModes = void 0;\nvar FailoverModes;\n(function (FailoverModes) {\n FailoverModes[\"FORCE\"] = \"FORCE\";\n FailoverModes[\"TAKEOVER\"] = \"TAKEOVER\";\n})(FailoverModes = exports.FailoverModes || (exports.FailoverModes = {}));\nfunction transformArguments(mode) {\n const args = ['CLUSTER', 'FAILOVER'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'FLUSHSLOTS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'FORGET', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(slot, count) {\n return ['CLUSTER', 'GETKEYSINSLOT', slot.toString(), count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractLineValue = exports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'INFO'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const lines = reply.split('\\r\\n');\n return {\n state: extractLineValue(lines[0]),\n slots: {\n assigned: Number(extractLineValue(lines[1])),\n ok: Number(extractLineValue(lines[2])),\n pfail: Number(extractLineValue(lines[3])),\n fail: Number(extractLineValue(lines[4]))\n },\n knownNodes: Number(extractLineValue(lines[5])),\n size: Number(extractLineValue(lines[6])),\n currentEpoch: Number(extractLineValue(lines[7])),\n myEpoch: Number(extractLineValue(lines[8])),\n stats: {\n messagesSent: Number(extractLineValue(lines[9])),\n messagesReceived: Number(extractLineValue(lines[10]))\n }\n };\n}\nexports.transformReply = transformReply;\nfunction extractLineValue(line) {\n return line.substring(line.indexOf(':') + 1);\n}\nexports.extractLineValue = extractLineValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(key) {\n return ['CLUSTER', 'KEYSLOT', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'LINKS'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(peerLink => ({\n direction: peerLink[1],\n node: peerLink[3],\n createTime: Number(peerLink[5]),\n events: peerLink[7],\n sendBufferAllocated: Number(peerLink[9]),\n sendBufferUsed: Number(peerLink[11])\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(ip, port) {\n return ['CLUSTER', 'MEET', ip, port.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'MYID'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.RedisClusterNodeLinkStates = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'NODES'];\n}\nexports.transformArguments = transformArguments;\nvar RedisClusterNodeLinkStates;\n(function (RedisClusterNodeLinkStates) {\n RedisClusterNodeLinkStates[\"CONNECTED\"] = \"connected\";\n RedisClusterNodeLinkStates[\"DISCONNECTED\"] = \"disconnected\";\n})(RedisClusterNodeLinkStates = exports.RedisClusterNodeLinkStates || (exports.RedisClusterNodeLinkStates = {}));\nfunction transformReply(reply) {\n const lines = reply.split('\\n');\n lines.pop(); // last line is empty\n const mastersMap = new Map(), replicasMap = new Map();\n for (const line of lines) {\n const [id, address, flags, masterId, pingSent, pongRecv, configEpoch, linkState, ...slots] = line.split(' '), node = {\n id,\n address,\n ...transformNodeAddress(address),\n flags: flags.split(','),\n pingSent: Number(pingSent),\n pongRecv: Number(pongRecv),\n configEpoch: Number(configEpoch),\n linkState: linkState\n };\n if (masterId === '-') {\n let replicas = replicasMap.get(id);\n if (!replicas) {\n replicas = [];\n replicasMap.set(id, replicas);\n }\n mastersMap.set(id, {\n ...node,\n slots: slots.map(slot => {\n // TODO: importing & exporting (https://redis.io/commands/cluster-nodes#special-slot-entries)\n const [fromString, toString] = slot.split('-', 2), from = Number(fromString);\n return {\n from,\n to: toString ? Number(toString) : from\n };\n }),\n replicas\n });\n }\n else {\n const replicas = replicasMap.get(masterId);\n if (!replicas) {\n replicasMap.set(masterId, [node]);\n }\n else {\n replicas.push(node);\n }\n }\n }\n return [...mastersMap.values()];\n}\nexports.transformReply = transformReply;\nfunction transformNodeAddress(address) {\n const indexOfColon = address.lastIndexOf(':'), indexOfAt = address.indexOf('@', indexOfColon), host = address.substring(0, indexOfColon);\n if (indexOfAt === -1) {\n return {\n host,\n port: Number(address.substring(indexOfColon + 1)),\n cport: null\n };\n }\n return {\n host: address.substring(0, indexOfColon),\n port: Number(address.substring(indexOfColon + 1, indexOfAt)),\n cport: Number(address.substring(indexOfAt + 1))\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'REPLICAS', nodeId];\n}\nexports.transformArguments = transformArguments;\nvar CLUSTER_NODES_1 = require(\"./CLUSTER_NODES\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return CLUSTER_NODES_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'REPLICATE', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['CLUSTER', 'RESET'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'SAVECONFIG'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(configEpoch) {\n return ['CLUSTER', 'SET-CONFIG-EPOCH', configEpoch.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.ClusterSlotStates = void 0;\nvar ClusterSlotStates;\n(function (ClusterSlotStates) {\n ClusterSlotStates[\"IMPORTING\"] = \"IMPORTING\";\n ClusterSlotStates[\"MIGRATING\"] = \"MIGRATING\";\n ClusterSlotStates[\"STABLE\"] = \"STABLE\";\n ClusterSlotStates[\"NODE\"] = \"NODE\";\n})(ClusterSlotStates = exports.ClusterSlotStates || (exports.ClusterSlotStates = {}));\nfunction transformArguments(slot, state, nodeId) {\n const args = ['CLUSTER', 'SETSLOT', slot.toString(), state];\n if (nodeId) {\n args.push(nodeId);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'SLOTS'];\n}\nexports.transformArguments = transformArguments;\n;\nfunction transformReply(reply) {\n return reply.map(([from, to, master, ...replicas]) => {\n return {\n from,\n to,\n master: transformNode(master),\n replicas: replicas.map(transformNode)\n };\n });\n}\nexports.transformReply = transformReply;\nfunction transformNode([ip, port, id]) {\n return {\n ip,\n port,\n id\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['COMMAND'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(generic_transformers_1.transformCommandReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['COMMAND', 'COUNT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(args) {\n return ['COMMAND', 'GETKEYS', ...args];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(args) {\n return ['COMMAND', 'GETKEYSANDFLAGS', ...args];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([key, flags]) => ({\n key,\n flags\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(commands) {\n return ['COMMAND', 'INFO', ...commands];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(command => command ? (0, generic_transformers_1.transformCommandReply)(command) : null);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FilterBy = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nvar FilterBy;\n(function (FilterBy) {\n FilterBy[\"MODULE\"] = \"MODULE\";\n FilterBy[\"ACLCAT\"] = \"ACLCAT\";\n FilterBy[\"PATTERN\"] = \"PATTERN\";\n})(FilterBy = exports.FilterBy || (exports.FilterBy = {}));\nfunction transformArguments(filter) {\n const args = ['COMMAND', 'LIST'];\n if (filter) {\n args.push('FILTERBY', filter.filterBy, filter.value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(parameter) {\n return ['CONFIG', 'GET', parameter];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CONFIG', 'RESETSTAT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CONFIG', 'REWRITE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(...[parameterOrConfig, value]) {\n const args = ['CONFIG', 'SET'];\n if (typeof parameterOrConfig === 'string') {\n args.push(parameterOrConfig, value);\n }\n else {\n for (const [key, value] of Object.entries(parameterOrConfig)) {\n args.push(key, value);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, options) {\n const args = ['COPY', source, destination];\n if (options?.destinationDb) {\n args.push('DB', options.destinationDb.toString());\n }\n if (options?.replace) {\n args.push('REPLACE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['DBSIZE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['DECR', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, decrement) {\n return ['DECRBY', key, decrement.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['DEL'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['DISCARD'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['DUMP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(message) {\n return ['ECHO', message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(script, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVAL', script], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(sha1, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA', sha1], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(sha1, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA_RO', sha1], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(script, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVAL_RO', script], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['EXISTS'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, seconds, mode) {\n const args = ['EXPIRE', key, seconds.toString()];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timestamp, mode) {\n const args = [\n 'EXPIREAT',\n key,\n (0, generic_transformers_1.transformEXAT)(timestamp)\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['EXPIRETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['FAILOVER'];\n if (options?.TO) {\n args.push('TO', options.TO.host, options.TO.port.toString());\n if (options.TO.FORCE) {\n args.push('FORCE');\n }\n }\n if (options?.ABORT) {\n args.push('ABORT');\n }\n if (options?.TIMEOUT) {\n args.push('TIMEOUT', options.TIMEOUT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(fn, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['FCALL', fn], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fn, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['FCALL_RO', fn], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.RedisFlushModes = void 0;\nvar RedisFlushModes;\n(function (RedisFlushModes) {\n RedisFlushModes[\"ASYNC\"] = \"ASYNC\";\n RedisFlushModes[\"SYNC\"] = \"SYNC\";\n})(RedisFlushModes = exports.RedisFlushModes || (exports.RedisFlushModes = {}));\nfunction transformArguments(mode) {\n const args = ['FLUSHALL'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['FLUSHDB'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(library) {\n return ['FUNCTION', 'DELETE', library];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'DUMP'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['FUNCTION', 'FLUSH'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'KILL'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(pattern) {\n const args = ['FUNCTION', 'LIST'];\n if (pattern) {\n args.push(pattern);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(generic_transformers_1.transformFunctionListItemReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst FUNCTION_LIST_1 = require(\"./FUNCTION_LIST\");\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(pattern) {\n const args = (0, FUNCTION_LIST_1.transformArguments)(pattern);\n args.push('WITHCODE');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(library => ({\n ...(0, generic_transformers_1.transformFunctionListItemReply)(library),\n libraryCode: library[7]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(code, options) {\n const args = ['FUNCTION', 'LOAD'];\n if (options?.REPLACE) {\n args.push('REPLACE');\n }\n args.push(code);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(dump, mode) {\n const args = ['FUNCTION', 'RESTORE', dump];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'STATS'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const engines = Object.create(null);\n for (let i = 0; i < reply[3].length; i++) {\n engines[reply[3][i]] = {\n librariesCount: reply[3][++i][1],\n functionsCount: reply[3][i][3]\n };\n }\n return {\n runningScript: reply[1] === null ? null : {\n name: reply[1][1],\n command: reply[1][3],\n durationMs: reply[1][5]\n },\n engines\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, toAdd, options) {\n const args = ['GEOADD', key];\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n if (options?.CH) {\n args.push('CH');\n }\n for (const { longitude, latitude, member } of (Array.isArray(toAdd) ? toAdd : [toAdd])) {\n args.push(longitude.toString(), latitude.toString(), member);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member1, member2, unit) {\n const args = ['GEODIST', key, member1, member2];\n if (unit) {\n args.push(unit);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply === null ? null : Number(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['GEOHASH', key], member);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['GEOPOS', key], member);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(coordinates => coordinates === null ? null : {\n longitude: coordinates[0],\n latitude: coordinates[1]\n });\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, coordinates, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUS'], key, coordinates, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUSBYMEMBER'], key, member, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEORADIUSBYMEMBER_1 = require(\"./GEORADIUSBYMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_1.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, destination, options) {\n return (0, generic_transformers_1.pushGeoRadiusStoreArguments)(['GEORADIUSBYMEMBER'], key, member, radius, unit, destination, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUSBYMEMBER_RO'], key, member, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUSBYMEMBER_RO_1 = require(\"./GEORADIUSBYMEMBER_RO\");\nvar GEORADIUSBYMEMBER_RO_2 = require(\"./GEORADIUSBYMEMBER_RO\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_RO_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_RO_2.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, replyWith, options) {\n const args = (0, GEORADIUSBYMEMBER_RO_1.transformArguments)(key, member, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUSBYMEMBER_1 = require(\"./GEORADIUSBYMEMBER\");\nvar GEORADIUSBYMEMBER_2 = require(\"./GEORADIUSBYMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_2.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, replyWith, options) {\n const args = (0, GEORADIUSBYMEMBER_1.transformArguments)(key, member, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEORADIUS_1 = require(\"./GEORADIUS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_1.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, destination, options) {\n return (0, generic_transformers_1.pushGeoRadiusStoreArguments)(['GEORADIUS'], key, coordinates, radius, unit, destination, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, coordinates, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUS_RO'], key, coordinates, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUS_RO_1 = require(\"./GEORADIUS_RO\");\nvar GEORADIUS_RO_2 = require(\"./GEORADIUS_RO\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_RO_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_RO_2.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, replyWith, options) {\n const args = (0, GEORADIUS_RO_1.transformArguments)(key, coordinates, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUS_1 = require(\"./GEORADIUS\");\nvar GEORADIUS_2 = require(\"./GEORADIUS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_2.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, replyWith, options) {\n const args = (0, GEORADIUS_1.transformArguments)(key, coordinates, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, from, by, options) {\n return (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCH'], key, from, by, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEOSEARCH_1 = require(\"./GEOSEARCH\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEOSEARCH_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEOSEARCH_1.IS_READ_ONLY; } });\nfunction transformArguments(destination, source, from, by, options) {\n const args = (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCHSTORE', destination], source, from, by, options);\n if (options?.STOREDIST) {\n args.push('STOREDIST');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (typeof reply !== 'number') {\n throw new TypeError(`https://github.com/redis/redis/issues/9261`);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEOSEARCH_1 = require(\"./GEOSEARCH\");\nvar GEOSEARCH_2 = require(\"./GEOSEARCH\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEOSEARCH_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEOSEARCH_2.IS_READ_ONLY; } });\nfunction transformArguments(key, from, by, replyWith, options) {\n const args = (0, GEOSEARCH_1.transformArguments)(key, from, by, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['GET', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, offset) {\n return ['GETBIT', key, offset.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GETDEL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, mode) {\n const args = ['GETEX', key];\n if ('EX' in mode) {\n args.push('EX', mode.EX.toString());\n }\n else if ('PX' in mode) {\n args.push('PX', mode.PX.toString());\n }\n else if ('EXAT' in mode) {\n args.push('EXAT', (0, generic_transformers_1.transformEXAT)(mode.EXAT));\n }\n else if ('PXAT' in mode) {\n args.push('PXAT', (0, generic_transformers_1.transformPXAT)(mode.PXAT));\n }\n else { // PERSIST\n args.push('PERSIST');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end) {\n return ['GETRANGE', key, start.toString(), end.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['GETSET', key, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return (0, generic_transformers_1.pushVerdictArguments)(['HDEL', key], field);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['HELLO'];\n if (options) {\n args.push(options.protover.toString());\n if (options.auth) {\n args.push('AUTH', options.auth.username, options.auth.password);\n }\n if (options.clientName) {\n args.push('SETNAME', options.clientName);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n server: reply[1],\n version: reply[3],\n proto: reply[5],\n id: reply[7],\n mode: reply[9],\n role: reply[11],\n modules: reply[13]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return ['HEXISTS', key, field];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, field) {\n return ['HGET', key, field];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.TRANSFORM_LEGACY_REPLY = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nexports.TRANSFORM_LEGACY_REPLY = true;\nfunction transformArguments(key) {\n return ['HGETALL', key];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, increment) {\n return ['HINCRBY', key, field, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, increment) {\n return ['HINCRBYFLOAT', key, field, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HKEYS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fields) {\n return (0, generic_transformers_1.pushVerdictArguments)(['HMGET', key], fields);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['HRANDFIELD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst HRANDFIELD_1 = require(\"./HRANDFIELD\");\nvar HRANDFIELD_2 = require(\"./HRANDFIELD\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return HRANDFIELD_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return HRANDFIELD_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, HRANDFIELD_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst HRANDFIELD_COUNT_1 = require(\"./HRANDFIELD_COUNT\");\nvar HRANDFIELD_COUNT_2 = require(\"./HRANDFIELD_COUNT\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return HRANDFIELD_COUNT_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return HRANDFIELD_COUNT_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, HRANDFIELD_COUNT_1.transformArguments)(key, count),\n 'WITHVALUES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'HSCAN',\n key\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, rawTuples]) {\n const parsedTuples = [];\n for (let i = 0; i < rawTuples.length; i += 2) {\n parsedTuples.push({\n field: rawTuples[i],\n value: rawTuples[i + 1]\n });\n }\n return {\n cursor: Number(cursor),\n tuples: parsedTuples\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(...[key, value, fieldValue]) {\n const args = ['HSET', key];\n if (typeof value === 'string' || typeof value === 'number' || Buffer.isBuffer(value)) {\n args.push(convertValue(value), convertValue(fieldValue));\n }\n else if (value instanceof Map) {\n pushMap(args, value);\n }\n else if (Array.isArray(value)) {\n pushTuples(args, value);\n }\n else {\n pushObject(args, value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushMap(args, map) {\n for (const [key, value] of map.entries()) {\n args.push(convertValue(key), convertValue(value));\n }\n}\nfunction pushTuples(args, tuples) {\n for (const tuple of tuples) {\n if (Array.isArray(tuple)) {\n pushTuples(args, tuple);\n continue;\n }\n args.push(convertValue(tuple));\n }\n}\nfunction pushObject(args, object) {\n for (const key of Object.keys(object)) {\n args.push(convertValue(key), convertValue(object[key]));\n }\n}\nfunction convertValue(value) {\n return typeof value === 'number' ?\n value.toString() :\n value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, value) {\n return ['HSETNX', key, field, value];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return ['HSTRLEN', key, field];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HVALS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['INCR', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment) {\n return ['INCRBY', key, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment) {\n return ['INCRBYFLOAT', key, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(section) {\n const args = ['INFO'];\n if (section) {\n args.push(section);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(pattern) {\n return ['KEYS', pattern];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['LASTSAVE'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return new Date(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['LATENCY', 'DOCTOR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(event) {\n return ['LATENCY', 'GRAPH', event];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key1, key2) {\n return [\n 'LCS',\n key1,\n key2\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('IDX');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n matches: reply[1].map(([key1, key2]) => ({\n key1: (0, generic_transformers_1.transformRangeReply)(key1),\n key2: (0, generic_transformers_1.transformRangeReply)(key2)\n })),\n length: reply[3]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('IDX', 'WITHMATCHLEN');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n matches: reply[1].map(([key1, key2, length]) => ({\n key1: (0, generic_transformers_1.transformRangeReply)(key1),\n key2: (0, generic_transformers_1.transformRangeReply)(key2),\n length\n })),\n length: reply[3]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('LEN');\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, index) {\n return ['LINDEX', key, index.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, position, pivot, element) {\n return [\n 'LINSERT',\n key,\n position,\n pivot,\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['LLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, sourceSide, destinationSide) {\n return [\n 'LMOVE',\n source,\n destination,\n sourceSide,\n destinationSide,\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(keys, side, options) {\n return (0, generic_transformers_1.transformLMPopArguments)(['LMPOP'], keys, side, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(version, ...optionalArguments) {\n const args = ['LOLWUT'];\n if (version) {\n args.push('VERSION', version.toString(), ...optionalArguments.map(String));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['LPOP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n return ['LPOP', key, count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, element, options) {\n const args = ['LPOS', key, element];\n if (typeof options?.RANK === 'number') {\n args.push('RANK', options.RANK.toString());\n }\n if (typeof options?.MAXLEN === 'number') {\n args.push('MAXLEN', options.MAXLEN.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nvar LPOS_1 = require(\"./LPOS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LPOS_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LPOS_1.IS_READ_ONLY; } });\nfunction transformArguments(key, element, count, options) {\n const args = ['LPOS', key, element];\n if (typeof options?.RANK === 'number') {\n args.push('RANK', options.RANK.toString());\n }\n args.push('COUNT', count.toString());\n if (typeof options?.MAXLEN === 'number') {\n args.push('MAXLEN', options.MAXLEN.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, elements) {\n return (0, generic_transformers_1.pushVerdictArguments)(['LPUSH', key], elements);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['LPUSHX', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, stop) {\n return [\n 'LRANGE',\n key,\n start.toString(),\n stop.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count, element) {\n return [\n 'LREM',\n key,\n count.toString(),\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, index, element) {\n return [\n 'LSET',\n key,\n index.toString(),\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, start, stop) {\n return [\n 'LTRIM',\n key,\n start.toString(),\n stop.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'DOCTOR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'MALLOC-STATS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'PURGE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'STATS'];\n}\nexports.transformArguments = transformArguments;\nconst FIELDS_MAPPING = {\n 'peak.allocated': 'peakAllocated',\n 'total.allocated': 'totalAllocated',\n 'startup.allocated': 'startupAllocated',\n 'replication.backlog': 'replicationBacklog',\n 'clients.slaves': 'clientsReplicas',\n 'clients.normal': 'clientsNormal',\n 'aof.buffer': 'aofBuffer',\n 'lua.caches': 'luaCaches',\n 'overhead.total': 'overheadTotal',\n 'keys.count': 'keysCount',\n 'keys.bytes-per-key': 'keysBytesPerKey',\n 'dataset.bytes': 'datasetBytes',\n 'dataset.percentage': 'datasetPercentage',\n 'peak.percentage': 'peakPercentage',\n 'allocator.allocated': 'allocatorAllocated',\n 'allocator.active': 'allocatorActive',\n 'allocator.resident': 'allocatorResident',\n 'allocator-fragmentation.ratio': 'allocatorFragmentationRatio',\n 'allocator-fragmentation.bytes': 'allocatorFragmentationBytes',\n 'allocator-rss.ratio': 'allocatorRssRatio',\n 'allocator-rss.bytes': 'allocatorRssBytes',\n 'rss-overhead.ratio': 'rssOverheadRatio',\n 'rss-overhead.bytes': 'rssOverheadBytes',\n 'fragmentation': 'fragmentation',\n 'fragmentation.bytes': 'fragmentationBytes'\n}, DB_FIELDS_MAPPING = {\n 'overhead.hashtable.main': 'overheadHashtableMain',\n 'overhead.hashtable.expires': 'overheadHashtableExpires'\n};\nfunction transformReply(rawReply) {\n const reply = {\n db: {}\n };\n for (let i = 0; i < rawReply.length; i += 2) {\n const key = rawReply[i];\n if (key.startsWith('db.')) {\n const dbTuples = rawReply[i + 1], db = {};\n for (let j = 0; j < dbTuples.length; j += 2) {\n db[DB_FIELDS_MAPPING[dbTuples[j]]] = dbTuples[j + 1];\n }\n reply.db[key.substring(3)] = db;\n continue;\n }\n reply[FIELDS_MAPPING[key]] = Number(rawReply[i + 1]);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n const args = ['MEMORY', 'USAGE', key];\n if (options?.SAMPLES) {\n args.push('SAMPLES', options.SAMPLES.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return ['MGET', ...keys];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(host, port, key, destinationDb, timeout, options) {\n const args = ['MIGRATE', host, port.toString()], isKeyArray = Array.isArray(key);\n if (isKeyArray) {\n args.push('');\n }\n else {\n args.push(key);\n }\n args.push(destinationDb.toString(), timeout.toString());\n if (options?.COPY) {\n args.push('COPY');\n }\n if (options?.REPLACE) {\n args.push('REPLACE');\n }\n if (options?.AUTH) {\n if (options.AUTH.username) {\n args.push('AUTH2', options.AUTH.username, options.AUTH.password);\n }\n else {\n args.push('AUTH', options.AUTH.password);\n }\n }\n if (isKeyArray) {\n args.push('KEYS', ...key);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MODULE', 'LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(path, moduleArgs) {\n const args = ['MODULE', 'LOAD', path];\n if (moduleArgs) {\n args.push(...moduleArgs);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name) {\n return ['MODULE', 'UNLOAD', name];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, db) {\n return ['MOVE', key, db.toString()];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toSet) {\n const args = ['MSET'];\n if (Array.isArray(toSet)) {\n args.push(...toSet.flat());\n }\n else {\n for (const key of Object.keys(toSet)) {\n args.push(key, toSet[key]);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toSet) {\n const args = ['MSETNX'];\n if (Array.isArray(toSet)) {\n args.push(...toSet.flat());\n }\n else {\n for (const key of Object.keys(toSet)) {\n args.push(key, toSet[key]);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'ENCODING', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'FREQ', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'IDLETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'REFCOUNT', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['PERSIST', key];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, milliseconds, mode) {\n const args = ['PEXPIRE', key, milliseconds.toString()];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, millisecondsTimestamp, mode) {\n const args = [\n 'PEXPIREAT',\n key,\n (0, generic_transformers_1.transformPXAT)(millisecondsTimestamp)\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['PEXPIRETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFADD', key], element);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFCOUNT'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, source) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFMERGE', destination], source);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(message) {\n const args = ['PING'];\n if (message) {\n args.push(message);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, milliseconds, value) {\n return [\n 'PSETEX',\n key,\n milliseconds.toString(),\n value\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['PTTL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(channel, message) {\n return ['PUBLISH', channel, message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(pattern) {\n const args = ['PUBSUB', 'CHANNELS'];\n if (pattern) {\n args.push(pattern);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['PUBSUB', 'NUMPAT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(channels) {\n const args = ['PUBSUB', 'NUMSUB'];\n if (channels)\n return (0, generic_transformers_1.pushVerdictArguments)(args, channels);\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const transformedReply = Object.create(null);\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply[rawReply[i]] = rawReply[i + 1];\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(pattern) {\n const args = ['PUBSUB', 'SHARDCHANNELS'];\n if (pattern)\n args.push(pattern);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['RANDOMKEY'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['READONLY'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['READWRITE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, newKey) {\n return ['RENAME', key, newKey];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, newKey) {\n return ['RENAMENX', key, newKey];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(host, port) {\n return ['REPLICAOF', host, port.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['RESTORE-ASKING'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['ROLE'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n switch (reply[0]) {\n case 'master':\n return {\n role: 'master',\n replicationOffest: reply[1],\n replicas: reply[2].map(([ip, port, replicationOffest]) => ({\n ip,\n port: Number(port),\n replicationOffest: Number(replicationOffest)\n }))\n };\n case 'slave':\n return {\n role: 'slave',\n master: {\n ip: reply[1],\n port: reply[2]\n },\n state: reply[3],\n dataReceived: reply[4]\n };\n case 'sentinel':\n return {\n role: 'sentinel',\n masterNames: reply[1]\n };\n }\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['RPOP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination) {\n return ['RPOPLPUSH', source, destination];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n return ['RPOP', key, count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['RPUSH', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['RPUSHX', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SADD', key], members);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['SAVE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(cursor, options) {\n const args = (0, generic_transformers_1.pushScanArguments)(['SCAN'], cursor, options);\n if (options?.TYPE) {\n args.push('TYPE', options.TYPE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, keys]) {\n return {\n cursor: Number(cursor),\n keys\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SCARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n return ['SCRIPT', 'DEBUG', mode];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(sha1) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SCRIPT', 'EXISTS'], sha1);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['SCRIPT', 'FLUSH'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['SCRIPT', 'KILL'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(script) {\n return ['SCRIPT', 'LOAD', script];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SDIFF'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SDIFFSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n const args = [\n 'SET',\n key,\n typeof value === 'number' ? value.toString() : value\n ];\n if (options?.EX !== undefined) {\n args.push('EX', options.EX.toString());\n }\n else if (options?.PX !== undefined) {\n args.push('PX', options.PX.toString());\n }\n else if (options?.EXAT !== undefined) {\n args.push('EXAT', options.EXAT.toString());\n }\n else if (options?.PXAT !== undefined) {\n args.push('PXAT', options.PXAT.toString());\n }\n else if (options?.KEEPTTL) {\n args.push('KEEPTTL');\n }\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n if (options?.GET) {\n args.push('GET');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, offset, value) {\n return ['SETBIT', key, offset.toString(), value.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, seconds, value) {\n return [\n 'SETEX',\n key,\n seconds.toString(),\n value\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['SETNX', key, value];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, offset, value) {\n return ['SETRANGE', key, offset.toString(), value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['SHUTDOWN'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SINTER'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, limit) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['SINTERCARD'], keys);\n if (limit) {\n args.push('LIMIT', limit.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SINTERSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, member) {\n return ['SISMEMBER', key, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SMEMBERS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return ['SMISMEMBER', key, ...members];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, member) {\n return ['SMOVE', source, destination, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n return (0, generic_transformers_1.pushSortArguments)(['SORT', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n return (0, generic_transformers_1.pushSortArguments)(['SORT_RO', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst SORT_1 = require(\"./SORT\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, options) {\n const args = (0, SORT_1.transformArguments)(source, options);\n args.push('STORE', destination);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n const args = ['SPOP', key];\n if (typeof count === 'number') {\n args.push(count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(channel, message) {\n return ['SPUBLISH', channel, message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SRANDMEMBER', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst SRANDMEMBER_1 = require(\"./SRANDMEMBER\");\nvar SRANDMEMBER_2 = require(\"./SRANDMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return SRANDMEMBER_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, SRANDMEMBER_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SREM', key], members);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'SSCAN',\n key,\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, members]) {\n return {\n cursor: Number(cursor),\n members\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['STRLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SUNION'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SUNIONSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index1, index2) {\n return ['SWAPDB', index1.toString(), index2.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['TIME'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const seconds = Number(reply[0]), microseconds = Number(reply[1]), d = new Date(seconds * 1000 + microseconds / 1000);\n d.microseconds = microseconds;\n return d;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOUCH'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TTL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TYPE', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['UNLINK'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['UNWATCH'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(numberOfReplicas, timeout) {\n return ['WAIT', numberOfReplicas.toString(), timeout.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['WATCH'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, id) {\n return (0, generic_transformers_1.pushVerdictArguments)(['XACK', key, group], id);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, id, message, options) {\n const args = ['XADD', key];\n if (options?.NOMKSTREAM) {\n args.push('NOMKSTREAM');\n }\n if (options?.TRIM) {\n if (options.TRIM.strategy) {\n args.push(options.TRIM.strategy);\n }\n if (options.TRIM.strategyModifier) {\n args.push(options.TRIM.strategyModifier);\n }\n args.push(options.TRIM.threshold.toString());\n if (options.TRIM.limit) {\n args.push('LIMIT', options.TRIM.limit.toString());\n }\n }\n args.push(id);\n for (const [key, value] of Object.entries(message)) {\n args.push(key, value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, consumer, minIdleTime, start, options) {\n const args = ['XAUTOCLAIM', key, group, consumer, minIdleTime.toString(), start];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n nextId: reply[0],\n messages: (0, generic_transformers_1.transformStreamMessagesReply)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst XAUTOCLAIM_1 = require(\"./XAUTOCLAIM\");\nvar XAUTOCLAIM_2 = require(\"./XAUTOCLAIM\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return XAUTOCLAIM_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(...args) {\n return [\n ...(0, XAUTOCLAIM_1.transformArguments)(...args),\n 'JUSTID'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n nextId: reply[0],\n messages: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, consumer, minIdleTime, id, options) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['XCLAIM', key, group, consumer, minIdleTime.toString()], id);\n if (options?.IDLE) {\n args.push('IDLE', options.IDLE.toString());\n }\n if (options?.TIME) {\n args.push('TIME', (typeof options.TIME === 'number' ? options.TIME : options.TIME.getTime()).toString());\n }\n if (options?.RETRYCOUNT) {\n args.push('RETRYCOUNT', options.RETRYCOUNT.toString());\n }\n if (options?.FORCE) {\n args.push('FORCE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst XCLAIM_1 = require(\"./XCLAIM\");\nvar XCLAIM_2 = require(\"./XCLAIM\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return XCLAIM_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(...args) {\n return [\n ...(0, XCLAIM_1.transformArguments)(...args),\n 'JUSTID'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, id) {\n return (0, generic_transformers_1.pushVerdictArguments)(['XDEL', key], id);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, id, options) {\n const args = ['XGROUP', 'CREATE', key, group, id];\n if (options?.MKSTREAM) {\n args.push('MKSTREAM');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, consumer) {\n return ['XGROUP', 'CREATECONSUMER', key, group, consumer];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, consumer) {\n return ['XGROUP', 'DELCONSUMER', key, group, consumer];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group) {\n return ['XGROUP', 'DESTROY', key, group];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, id) {\n return ['XGROUP', 'SETID', key, group, id];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group) {\n return ['XINFO', 'CONSUMERS', key, group];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return rawReply.map(consumer => ({\n name: consumer[1],\n pending: consumer[3],\n idle: consumer[5]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XINFO', 'GROUPS', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return rawReply.map(group => ({\n name: group[1],\n consumers: group[3],\n pending: group[5],\n lastDeliveredId: group[7]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XINFO', 'STREAM', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const parsedReply = {};\n for (let i = 0; i < rawReply.length; i += 2) {\n switch (rawReply[i]) {\n case 'length':\n parsedReply.length = rawReply[i + 1];\n break;\n case 'radix-tree-keys':\n parsedReply.radixTreeKeys = rawReply[i + 1];\n break;\n case 'radix-tree-nodes':\n parsedReply.radixTreeNodes = rawReply[i + 1];\n break;\n case 'groups':\n parsedReply.groups = rawReply[i + 1];\n break;\n case 'last-generated-id':\n parsedReply.lastGeneratedId = rawReply[i + 1];\n break;\n case 'first-entry':\n parsedReply.firstEntry = rawReply[i + 1] ? {\n id: rawReply[i + 1][0],\n message: (0, generic_transformers_1.transformTuplesReply)(rawReply[i + 1][1])\n } : null;\n break;\n case 'last-entry':\n parsedReply.lastEntry = rawReply[i + 1] ? {\n id: rawReply[i + 1][0],\n message: (0, generic_transformers_1.transformTuplesReply)(rawReply[i + 1][1])\n } : null;\n break;\n }\n }\n return parsedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group) {\n return ['XPENDING', key, group];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n pending: reply[0],\n firstId: reply[1],\n lastId: reply[2],\n consumers: reply[3] === null ? null : reply[3].map(([name, deliveriesCounter]) => ({\n name,\n deliveriesCounter: Number(deliveriesCounter)\n }))\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group, start, end, count, options) {\n const args = ['XPENDING', key, group];\n if (options?.IDLE) {\n args.push('IDLE', options.IDLE.toString());\n }\n args.push(start, end, count.toString());\n if (options?.consumer) {\n args.push(options.consumer);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([id, owner, millisecondsSinceLastDelivery, deliveriesCounter]) => ({\n id,\n owner,\n millisecondsSinceLastDelivery,\n deliveriesCounter\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end, options) {\n const args = ['XRANGE', key, start, end];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst FIRST_KEY_INDEX = (streams) => {\n return Array.isArray(streams) ? streams[0].key : streams.key;\n};\nexports.FIRST_KEY_INDEX = FIRST_KEY_INDEX;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(streams, options) {\n const args = ['XREAD'];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (typeof options?.BLOCK === 'number') {\n args.push('BLOCK', options.BLOCK.toString());\n }\n args.push('STREAMS');\n const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length;\n for (let i = 0; i < streamsArray.length; i++) {\n const stream = streamsArray[i];\n args[argsLength + i] = stream.key;\n args[argsLength + streamsArray.length + i] = stream.id;\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamsMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst FIRST_KEY_INDEX = (_group, _consumer, streams) => {\n return Array.isArray(streams) ? streams[0].key : streams.key;\n};\nexports.FIRST_KEY_INDEX = FIRST_KEY_INDEX;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(group, consumer, streams, options) {\n const args = ['XREADGROUP', 'GROUP', group, consumer];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (typeof options?.BLOCK === 'number') {\n args.push('BLOCK', options.BLOCK.toString());\n }\n if (options?.NOACK) {\n args.push('NOACK');\n }\n args.push('STREAMS');\n const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length;\n for (let i = 0; i < streamsArray.length; i++) {\n const stream = streamsArray[i];\n args[argsLength + i] = stream.key;\n args[argsLength + streamsArray.length + i] = stream.id;\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamsMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end, options) {\n const args = ['XREVRANGE', key, start, end];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, lastId, options) {\n const args = ['XSETID', key, lastId];\n if (options?.ENTRIESADDED) {\n args.push('ENTRIESADDED', options.ENTRIESADDED.toString());\n }\n if (options?.MAXDELETEDID) {\n args.push('MAXDELETEDID', options.MAXDELETEDID);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, strategy, threshold, options) {\n const args = ['XTRIM', key, strategy];\n if (options?.strategyModifier) {\n args.push(options.strategyModifier);\n }\n args.push(threshold.toString());\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members, options) {\n const args = ['ZADD', key];\n if (options?.NX) {\n args.push('NX');\n }\n else {\n if (options?.XX) {\n args.push('XX');\n }\n if (options?.GT) {\n args.push('GT');\n }\n else if (options?.LT) {\n args.push('LT');\n }\n }\n if (options?.CH) {\n args.push('CH');\n }\n if (options?.INCR) {\n args.push('INCR');\n }\n for (const { score, value } of (Array.isArray(members) ? members : [members])) {\n args.push((0, generic_transformers_1.transformNumberInfinityArgument)(score), value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['ZCARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max) {\n return [\n 'ZCOUNT',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFF'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFFSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZDIFF_1 = require(\"./ZDIFF\");\nvar ZDIFF_2 = require(\"./ZDIFF\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZDIFF_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZDIFF_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZDIFF_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment, member) {\n return [\n 'ZINCRBY',\n key,\n (0, generic_transformers_1.transformNumberInfinityArgument)(increment),\n member\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTER'], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, limit) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTERCARD'], keys);\n if (limit) {\n args.push('LIMIT', limit.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTERSTORE', destination], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZINTER_1 = require(\"./ZINTER\");\nvar ZINTER_2 = require(\"./ZINTER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZINTER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZINTER_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZINTER_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max) {\n return [\n 'ZLEXCOUNT',\n key,\n min,\n max\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(keys, side, options) {\n return (0, generic_transformers_1.transformZMPopArguments)(['ZMPOP'], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply === null ? null : {\n key: reply[0],\n elements: reply[1].map(generic_transformers_1.transformSortedSetMemberReply)\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ZMSCORE', key], member);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityNullArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return [\n 'ZPOPMAX',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetMemberNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst ZPOPMAX_1 = require(\"./ZPOPMAX\");\nvar ZPOPMAX_2 = require(\"./ZPOPMAX\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZPOPMAX_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZPOPMAX_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return [\n 'ZPOPMIN',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetMemberNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst ZPOPMIN_1 = require(\"./ZPOPMIN\");\nvar ZPOPMIN_2 = require(\"./ZPOPMIN\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZPOPMIN_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZPOPMIN_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['ZRANDMEMBER', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANDMEMBER_1 = require(\"./ZRANDMEMBER\");\nvar ZRANDMEMBER_2 = require(\"./ZRANDMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANDMEMBER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANDMEMBER_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZRANDMEMBER_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANDMEMBER_COUNT_1 = require(\"./ZRANDMEMBER_COUNT\");\nvar ZRANDMEMBER_COUNT_2 = require(\"./ZRANDMEMBER_COUNT\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZRANDMEMBER_COUNT_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n switch (options?.BY) {\n case 'SCORE':\n args.push('BYSCORE');\n break;\n case 'LEX':\n args.push('BYLEX');\n break;\n }\n if (options?.REV) {\n args.push('REV');\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGEBYLEX',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGEBYSCORE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANGEBYSCORE_1 = require(\"./ZRANGEBYSCORE\");\nvar ZRANGEBYSCORE_2 = require(\"./ZRANGEBYSCORE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.IS_READ_ONLY; } });\nfunction transformArguments(key, min, max, options) {\n return [\n ...(0, ZRANGEBYSCORE_1.transformArguments)(key, min, max, options),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(dst, src, min, max, options) {\n const args = [\n 'ZRANGESTORE',\n dst,\n src,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n switch (options?.BY) {\n case 'SCORE':\n args.push('BYSCORE');\n break;\n case 'LEX':\n args.push('BYLEX');\n break;\n }\n if (options?.REV) {\n args.push('REV');\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n if (options?.WITHSCORES) {\n args.push('WITHSCORES');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (typeof reply !== 'number') {\n throw new TypeError(`Upgrade to Redis 6.2.5 and up (https://github.com/redis/redis/pull/9089)`);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANGE_1 = require(\"./ZRANGE\");\nvar ZRANGE_2 = require(\"./ZRANGE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANGE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANGE_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZRANGE_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZRANK', key, member];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ZREM', key], member);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, min, max) {\n return [\n 'ZREMRANGEBYLEX',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, start, stop) {\n return ['ZREMRANGEBYRANK', key, start.toString(), stop.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, min, max) {\n return [\n 'ZREMRANGEBYSCORE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZREVRANK', key, member];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'ZSCAN',\n key\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, rawMembers]) {\n const parsedMembers = [];\n for (let i = 0; i < rawMembers.length; i += 2) {\n parsedMembers.push({\n value: rawMembers[i],\n score: (0, generic_transformers_1.transformNumberInfinityReply)(rawMembers[i + 1])\n });\n }\n return {\n cursor: Number(cursor),\n members: parsedMembers\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZSCORE', key, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformNumberInfinityNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNION'], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNIONSTORE', destination], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZUNION_1 = require(\"./ZUNION\");\nvar ZUNION_2 = require(\"./ZUNION\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZUNION_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZUNION_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZUNION_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformRangeReply = exports.pushSlotRangesArguments = exports.pushSortArguments = exports.transformFunctionListItemReply = exports.RedisFunctionFlags = exports.transformCommandReply = exports.CommandCategories = exports.CommandFlags = exports.pushOptionalVerdictArgument = exports.pushVerdictArgument = exports.pushVerdictNumberArguments = exports.pushVerdictArguments = exports.pushEvalArguments = exports.evalFirstKeyIndex = exports.transformPXAT = exports.transformEXAT = exports.transformGeoMembersWithReply = exports.GeoReplyWith = exports.pushGeoRadiusStoreArguments = exports.pushGeoRadiusArguments = exports.pushGeoSearchArguments = exports.pushGeoCountArgument = exports.transformLMPopArguments = exports.transformZMPopArguments = exports.transformSortedSetWithScoresReply = exports.transformSortedSetMemberReply = exports.transformSortedSetMemberNullReply = exports.transformStreamsMessagesReply = exports.transformStreamMessagesReply = exports.transformTuplesReply = exports.transformStringNumberInfinityArgument = exports.transformNumberInfinityArgument = exports.transformNumberInfinityNullArrayReply = exports.transformNumberInfinityNullReply = exports.transformNumberInfinityReply = exports.pushScanArguments = exports.transformBooleanArrayReply = exports.transformBooleanReply = void 0;\nfunction transformBooleanReply(reply) {\n return reply === 1;\n}\nexports.transformBooleanReply = transformBooleanReply;\nfunction transformBooleanArrayReply(reply) {\n return reply.map(transformBooleanReply);\n}\nexports.transformBooleanArrayReply = transformBooleanArrayReply;\nfunction pushScanArguments(args, cursor, options) {\n args.push(cursor.toString());\n if (options?.MATCH) {\n args.push('MATCH', options.MATCH);\n }\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.pushScanArguments = pushScanArguments;\nfunction transformNumberInfinityReply(reply) {\n switch (reply.toString()) {\n case '+inf':\n return Infinity;\n case '-inf':\n return -Infinity;\n default:\n return Number(reply);\n }\n}\nexports.transformNumberInfinityReply = transformNumberInfinityReply;\nfunction transformNumberInfinityNullReply(reply) {\n if (reply === null)\n return null;\n return transformNumberInfinityReply(reply);\n}\nexports.transformNumberInfinityNullReply = transformNumberInfinityNullReply;\nfunction transformNumberInfinityNullArrayReply(reply) {\n return reply.map(transformNumberInfinityNullReply);\n}\nexports.transformNumberInfinityNullArrayReply = transformNumberInfinityNullArrayReply;\nfunction transformNumberInfinityArgument(num) {\n switch (num) {\n case Infinity:\n return '+inf';\n case -Infinity:\n return '-inf';\n default:\n return num.toString();\n }\n}\nexports.transformNumberInfinityArgument = transformNumberInfinityArgument;\nfunction transformStringNumberInfinityArgument(num) {\n if (typeof num !== 'number')\n return num;\n return transformNumberInfinityArgument(num);\n}\nexports.transformStringNumberInfinityArgument = transformStringNumberInfinityArgument;\nfunction transformTuplesReply(reply) {\n const message = Object.create(null);\n for (let i = 0; i < reply.length; i += 2) {\n message[reply[i].toString()] = reply[i + 1];\n }\n return message;\n}\nexports.transformTuplesReply = transformTuplesReply;\nfunction transformStreamMessagesReply(reply) {\n const messages = [];\n for (const [id, message] of reply) {\n messages.push({\n id,\n message: transformTuplesReply(message)\n });\n }\n return messages;\n}\nexports.transformStreamMessagesReply = transformStreamMessagesReply;\nfunction transformStreamsMessagesReply(reply) {\n if (reply === null)\n return null;\n return reply.map(([name, rawMessages]) => ({\n name,\n messages: transformStreamMessagesReply(rawMessages)\n }));\n}\nexports.transformStreamsMessagesReply = transformStreamsMessagesReply;\nfunction transformSortedSetMemberNullReply(reply) {\n if (!reply.length)\n return null;\n return transformSortedSetMemberReply(reply);\n}\nexports.transformSortedSetMemberNullReply = transformSortedSetMemberNullReply;\nfunction transformSortedSetMemberReply(reply) {\n return {\n value: reply[0],\n score: transformNumberInfinityReply(reply[1])\n };\n}\nexports.transformSortedSetMemberReply = transformSortedSetMemberReply;\nfunction transformSortedSetWithScoresReply(reply) {\n const members = [];\n for (let i = 0; i < reply.length; i += 2) {\n members.push({\n value: reply[i],\n score: transformNumberInfinityReply(reply[i + 1])\n });\n }\n return members;\n}\nexports.transformSortedSetWithScoresReply = transformSortedSetWithScoresReply;\nfunction transformZMPopArguments(args, keys, side, options) {\n pushVerdictArgument(args, keys);\n args.push(side);\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformZMPopArguments = transformZMPopArguments;\nfunction transformLMPopArguments(args, keys, side, options) {\n pushVerdictArgument(args, keys);\n args.push(side);\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformLMPopArguments = transformLMPopArguments;\nfunction pushGeoCountArgument(args, count) {\n if (typeof count === 'number') {\n args.push('COUNT', count.toString());\n }\n else if (count) {\n args.push('COUNT', count.value.toString());\n if (count.ANY) {\n args.push('ANY');\n }\n }\n return args;\n}\nexports.pushGeoCountArgument = pushGeoCountArgument;\nfunction pushGeoSearchArguments(args, key, from, by, options) {\n args.push(key);\n if (typeof from === 'string') {\n args.push('FROMMEMBER', from);\n }\n else {\n args.push('FROMLONLAT', from.longitude.toString(), from.latitude.toString());\n }\n if ('radius' in by) {\n args.push('BYRADIUS', by.radius.toString());\n }\n else {\n args.push('BYBOX', by.width.toString(), by.height.toString());\n }\n args.push(by.unit);\n if (options?.SORT) {\n args.push(options.SORT);\n }\n pushGeoCountArgument(args, options?.COUNT);\n return args;\n}\nexports.pushGeoSearchArguments = pushGeoSearchArguments;\nfunction pushGeoRadiusArguments(args, key, from, radius, unit, options) {\n args.push(key);\n if (typeof from === 'string') {\n args.push(from);\n }\n else {\n args.push(from.longitude.toString(), from.latitude.toString());\n }\n args.push(radius.toString(), unit);\n if (options?.SORT) {\n args.push(options.SORT);\n }\n pushGeoCountArgument(args, options?.COUNT);\n return args;\n}\nexports.pushGeoRadiusArguments = pushGeoRadiusArguments;\nfunction pushGeoRadiusStoreArguments(args, key, from, radius, unit, destination, options) {\n pushGeoRadiusArguments(args, key, from, radius, unit, options);\n if (options?.STOREDIST) {\n args.push('STOREDIST', destination);\n }\n else {\n args.push('STORE', destination);\n }\n return args;\n}\nexports.pushGeoRadiusStoreArguments = pushGeoRadiusStoreArguments;\nvar GeoReplyWith;\n(function (GeoReplyWith) {\n GeoReplyWith[\"DISTANCE\"] = \"WITHDIST\";\n GeoReplyWith[\"HASH\"] = \"WITHHASH\";\n GeoReplyWith[\"COORDINATES\"] = \"WITHCOORD\";\n})(GeoReplyWith = exports.GeoReplyWith || (exports.GeoReplyWith = {}));\nfunction transformGeoMembersWithReply(reply, replyWith) {\n const replyWithSet = new Set(replyWith);\n let index = 0;\n const distanceIndex = replyWithSet.has(GeoReplyWith.DISTANCE) && ++index, hashIndex = replyWithSet.has(GeoReplyWith.HASH) && ++index, coordinatesIndex = replyWithSet.has(GeoReplyWith.COORDINATES) && ++index;\n return reply.map(member => {\n const transformedMember = {\n member: member[0]\n };\n if (distanceIndex) {\n transformedMember.distance = member[distanceIndex];\n }\n if (hashIndex) {\n transformedMember.hash = member[hashIndex];\n }\n if (coordinatesIndex) {\n const [longitude, latitude] = member[coordinatesIndex];\n transformedMember.coordinates = {\n longitude,\n latitude\n };\n }\n return transformedMember;\n });\n}\nexports.transformGeoMembersWithReply = transformGeoMembersWithReply;\nfunction transformEXAT(EXAT) {\n return (typeof EXAT === 'number' ? EXAT : Math.floor(EXAT.getTime() / 1000)).toString();\n}\nexports.transformEXAT = transformEXAT;\nfunction transformPXAT(PXAT) {\n return (typeof PXAT === 'number' ? PXAT : PXAT.getTime()).toString();\n}\nexports.transformPXAT = transformPXAT;\nfunction evalFirstKeyIndex(options) {\n return options?.keys?.[0];\n}\nexports.evalFirstKeyIndex = evalFirstKeyIndex;\nfunction pushEvalArguments(args, options) {\n if (options?.keys) {\n args.push(options.keys.length.toString(), ...options.keys);\n }\n else {\n args.push('0');\n }\n if (options?.arguments) {\n args.push(...options.arguments);\n }\n return args;\n}\nexports.pushEvalArguments = pushEvalArguments;\nfunction pushVerdictArguments(args, value) {\n if (Array.isArray(value)) {\n // https://github.com/redis/node-redis/pull/2160\n args = args.concat(value);\n }\n else {\n args.push(value);\n }\n return args;\n}\nexports.pushVerdictArguments = pushVerdictArguments;\nfunction pushVerdictNumberArguments(args, value) {\n if (Array.isArray(value)) {\n for (const item of value) {\n args.push(item.toString());\n }\n }\n else {\n args.push(value.toString());\n }\n return args;\n}\nexports.pushVerdictNumberArguments = pushVerdictNumberArguments;\nfunction pushVerdictArgument(args, value) {\n if (Array.isArray(value)) {\n args.push(value.length.toString(), ...value);\n }\n else {\n args.push('1', value);\n }\n return args;\n}\nexports.pushVerdictArgument = pushVerdictArgument;\nfunction pushOptionalVerdictArgument(args, name, value) {\n if (value === undefined)\n return args;\n args.push(name);\n return pushVerdictArgument(args, value);\n}\nexports.pushOptionalVerdictArgument = pushOptionalVerdictArgument;\nvar CommandFlags;\n(function (CommandFlags) {\n CommandFlags[\"WRITE\"] = \"write\";\n CommandFlags[\"READONLY\"] = \"readonly\";\n CommandFlags[\"DENYOOM\"] = \"denyoom\";\n CommandFlags[\"ADMIN\"] = \"admin\";\n CommandFlags[\"PUBSUB\"] = \"pubsub\";\n CommandFlags[\"NOSCRIPT\"] = \"noscript\";\n CommandFlags[\"RANDOM\"] = \"random\";\n CommandFlags[\"SORT_FOR_SCRIPT\"] = \"sort_for_script\";\n CommandFlags[\"LOADING\"] = \"loading\";\n CommandFlags[\"STALE\"] = \"stale\";\n CommandFlags[\"SKIP_MONITOR\"] = \"skip_monitor\";\n CommandFlags[\"ASKING\"] = \"asking\";\n CommandFlags[\"FAST\"] = \"fast\";\n CommandFlags[\"MOVABLEKEYS\"] = \"movablekeys\"; // keys have no pre-determined position. You must discover keys yourself.\n})(CommandFlags = exports.CommandFlags || (exports.CommandFlags = {}));\nvar CommandCategories;\n(function (CommandCategories) {\n CommandCategories[\"KEYSPACE\"] = \"@keyspace\";\n CommandCategories[\"READ\"] = \"@read\";\n CommandCategories[\"WRITE\"] = \"@write\";\n CommandCategories[\"SET\"] = \"@set\";\n CommandCategories[\"SORTEDSET\"] = \"@sortedset\";\n CommandCategories[\"LIST\"] = \"@list\";\n CommandCategories[\"HASH\"] = \"@hash\";\n CommandCategories[\"STRING\"] = \"@string\";\n CommandCategories[\"BITMAP\"] = \"@bitmap\";\n CommandCategories[\"HYPERLOGLOG\"] = \"@hyperloglog\";\n CommandCategories[\"GEO\"] = \"@geo\";\n CommandCategories[\"STREAM\"] = \"@stream\";\n CommandCategories[\"PUBSUB\"] = \"@pubsub\";\n CommandCategories[\"ADMIN\"] = \"@admin\";\n CommandCategories[\"FAST\"] = \"@fast\";\n CommandCategories[\"SLOW\"] = \"@slow\";\n CommandCategories[\"BLOCKING\"] = \"@blocking\";\n CommandCategories[\"DANGEROUS\"] = \"@dangerous\";\n CommandCategories[\"CONNECTION\"] = \"@connection\";\n CommandCategories[\"TRANSACTION\"] = \"@transaction\";\n CommandCategories[\"SCRIPTING\"] = \"@scripting\";\n})(CommandCategories = exports.CommandCategories || (exports.CommandCategories = {}));\nfunction transformCommandReply([name, arity, flags, firstKeyIndex, lastKeyIndex, step, categories]) {\n return {\n name,\n arity,\n flags: new Set(flags),\n firstKeyIndex,\n lastKeyIndex,\n step,\n categories: new Set(categories)\n };\n}\nexports.transformCommandReply = transformCommandReply;\nvar RedisFunctionFlags;\n(function (RedisFunctionFlags) {\n RedisFunctionFlags[\"NO_WRITES\"] = \"no-writes\";\n RedisFunctionFlags[\"ALLOW_OOM\"] = \"allow-oom\";\n RedisFunctionFlags[\"ALLOW_STALE\"] = \"allow-stale\";\n RedisFunctionFlags[\"NO_CLUSTER\"] = \"no-cluster\";\n})(RedisFunctionFlags = exports.RedisFunctionFlags || (exports.RedisFunctionFlags = {}));\nfunction transformFunctionListItemReply(reply) {\n return {\n libraryName: reply[1],\n engine: reply[3],\n functions: reply[5].map(fn => ({\n name: fn[1],\n description: fn[3],\n flags: fn[5]\n }))\n };\n}\nexports.transformFunctionListItemReply = transformFunctionListItemReply;\nfunction pushSortArguments(args, options) {\n if (options?.BY) {\n args.push('BY', options.BY);\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n if (options?.GET) {\n for (const pattern of (typeof options.GET === 'string' ? [options.GET] : options.GET)) {\n args.push('GET', pattern);\n }\n }\n if (options?.DIRECTION) {\n args.push(options.DIRECTION);\n }\n if (options?.ALPHA) {\n args.push('ALPHA');\n }\n return args;\n}\nexports.pushSortArguments = pushSortArguments;\nfunction pushSlotRangeArguments(args, range) {\n args.push(range.start.toString(), range.end.toString());\n}\nfunction pushSlotRangesArguments(args, ranges) {\n if (Array.isArray(ranges)) {\n for (const range of ranges) {\n pushSlotRangeArguments(args, range);\n }\n }\n else {\n pushSlotRangeArguments(args, ranges);\n }\n return args;\n}\nexports.pushSlotRangesArguments = pushSlotRangesArguments;\nfunction transformRangeReply([start, end]) {\n return {\n start,\n end\n };\n}\nexports.transformRangeReply = transformRangeReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorReply = exports.ReconnectStrategyError = exports.RootNodesUnavailableError = exports.SocketClosedUnexpectedlyError = exports.DisconnectsClientError = exports.ClientOfflineError = exports.ClientClosedError = exports.ConnectionTimeoutError = exports.WatchError = exports.AbortError = void 0;\nclass AbortError extends Error {\n constructor() {\n super('The command was aborted');\n }\n}\nexports.AbortError = AbortError;\nclass WatchError extends Error {\n constructor() {\n super('One (or more) of the watched keys has been changed');\n }\n}\nexports.WatchError = WatchError;\nclass ConnectionTimeoutError extends Error {\n constructor() {\n super('Connection timeout');\n }\n}\nexports.ConnectionTimeoutError = ConnectionTimeoutError;\nclass ClientClosedError extends Error {\n constructor() {\n super('The client is closed');\n }\n}\nexports.ClientClosedError = ClientClosedError;\nclass ClientOfflineError extends Error {\n constructor() {\n super('The client is offline');\n }\n}\nexports.ClientOfflineError = ClientOfflineError;\nclass DisconnectsClientError extends Error {\n constructor() {\n super('Disconnects client');\n }\n}\nexports.DisconnectsClientError = DisconnectsClientError;\nclass SocketClosedUnexpectedlyError extends Error {\n constructor() {\n super('Socket closed unexpectedly');\n }\n}\nexports.SocketClosedUnexpectedlyError = SocketClosedUnexpectedlyError;\nclass RootNodesUnavailableError extends Error {\n constructor() {\n super('All the root nodes are unavailable');\n }\n}\nexports.RootNodesUnavailableError = RootNodesUnavailableError;\nclass ReconnectStrategyError extends Error {\n constructor(originalError, socketError) {\n super(originalError.message);\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"socketError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n this.socketError = socketError;\n }\n}\nexports.ReconnectStrategyError = ReconnectStrategyError;\nclass ErrorReply extends Error {\n constructor(message) {\n super(message);\n this.stack = undefined;\n }\n}\nexports.ErrorReply = ErrorReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scriptSha1 = exports.defineScript = void 0;\nconst crypto_1 = require(\"crypto\");\nfunction defineScript(script) {\n return {\n ...script,\n SHA1: scriptSha1(script.SCRIPT)\n };\n}\nexports.defineScript = defineScript;\nfunction scriptSha1(script) {\n return (0, crypto_1.createHash)('sha1').update(script).digest('hex');\n}\nexports.scriptSha1 = scriptSha1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commander_1 = require(\"./commander\");\nconst errors_1 = require(\"./errors\");\nclass RedisMultiCommand {\n constructor() {\n Object.defineProperty(this, \"queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"scriptsInUse\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n }\n static generateChainId() {\n return Symbol('RedisMultiCommand Chain Id');\n }\n addCommand(args, transformReply) {\n this.queue.push({\n args,\n transformReply\n });\n }\n addFunction(name, fn, args) {\n const transformedArguments = (0, commander_1.fCallArguments)(name, fn, fn.transformArguments(...args));\n this.queue.push({\n args: transformedArguments,\n transformReply: fn.transformReply\n });\n return transformedArguments;\n }\n addScript(script, args) {\n const transformedArguments = [];\n if (this.scriptsInUse.has(script.SHA1)) {\n transformedArguments.push('EVALSHA', script.SHA1);\n }\n else {\n this.scriptsInUse.add(script.SHA1);\n transformedArguments.push('EVAL', script.SCRIPT);\n }\n if (script.NUMBER_OF_KEYS !== undefined) {\n transformedArguments.push(script.NUMBER_OF_KEYS.toString());\n }\n const scriptArguments = script.transformArguments(...args);\n transformedArguments.push(...scriptArguments);\n if (scriptArguments.preserve) {\n transformedArguments.preserve = scriptArguments.preserve;\n }\n this.addCommand(transformedArguments, script.transformReply);\n return transformedArguments;\n }\n handleExecReplies(rawReplies) {\n const execReply = rawReplies[rawReplies.length - 1];\n if (execReply === null) {\n throw new errors_1.WatchError();\n }\n return this.transformReplies(execReply);\n }\n transformReplies(rawReplies) {\n return rawReplies.map((reply, i) => {\n const { transformReply, args } = this.queue[i];\n return transformReply ? transformReply(reply, args.preserve) : reply;\n });\n }\n}\nexports.default = RedisMultiCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promiseTimeout = void 0;\nfunction promiseTimeout(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\nexports.promiseTimeout = promiseTimeout;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(configKey) {\n return ['GRAPH.CONFIG', 'GET', configKey];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(configKey, value) {\n return [\n 'GRAPH.CONFIG',\n 'SET',\n configKey,\n value.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GRAPH.DELETE', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, query) {\n return ['GRAPH.EXPLAIN', key, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['GRAPH.LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, query) {\n return ['GRAPH.PROFILE', key, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(graph, query, options, compact) {\n return (0, _1.pushQueryArguments)(['GRAPH.QUERY'], graph, query, options, compact);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.length === 1 ? {\n headers: undefined,\n data: undefined,\n metadata: reply[0]\n } : {\n headers: reply[0],\n data: reply[1],\n metadata: reply[2]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nvar QUERY_1 = require(\"./QUERY\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return QUERY_1.FIRST_KEY_INDEX; } });\nexports.IS_READ_ONLY = true;\nfunction transformArguments(graph, query, options, compact) {\n return (0, _1.pushQueryArguments)(['GRAPH.RO_QUERY'], graph, query, options, compact);\n}\nexports.transformArguments = transformArguments;\nvar QUERY_2 = require(\"./QUERY\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return QUERY_2.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GRAPH.SLOWLOG', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(logs) {\n return logs.map(([timestamp, command, query, took]) => ({\n timestamp: new Date(Number(timestamp) * 1000),\n command,\n query,\n took: Number(took)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushQueryArguments = void 0;\nconst CONFIG_GET = require(\"./CONFIG_GET\");\nconst CONFIG_SET = require(\"./CONFIG_SET\");\n;\nconst DELETE = require(\"./DELETE\");\nconst EXPLAIN = require(\"./EXPLAIN\");\nconst LIST = require(\"./LIST\");\nconst PROFILE = require(\"./PROFILE\");\nconst QUERY = require(\"./QUERY\");\nconst RO_QUERY = require(\"./RO_QUERY\");\nconst SLOWLOG = require(\"./SLOWLOG\");\nexports.default = {\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_SET,\n configSet: CONFIG_SET,\n DELETE,\n delete: DELETE,\n EXPLAIN,\n explain: EXPLAIN,\n LIST,\n list: LIST,\n PROFILE,\n profile: PROFILE,\n QUERY,\n query: QUERY,\n RO_QUERY,\n roQuery: RO_QUERY,\n SLOWLOG,\n slowLog: SLOWLOG\n};\nfunction pushQueryArguments(args, graph, query, options, compact) {\n args.push(graph);\n if (typeof options === 'number') {\n args.push(query);\n pushTimeout(args, options);\n }\n else {\n args.push(options?.params ?\n `CYPHER ${queryParamsToString(options.params)} ${query}` :\n query);\n if (options?.TIMEOUT !== undefined) {\n pushTimeout(args, options.TIMEOUT);\n }\n }\n if (compact) {\n args.push('--compact');\n }\n return args;\n}\nexports.pushQueryArguments = pushQueryArguments;\nfunction pushTimeout(args, timeout) {\n args.push('TIMEOUT', timeout.toString());\n}\nfunction queryParamsToString(params) {\n const parts = [];\n for (const [key, value] of Object.entries(params)) {\n parts.push(`${key}=${queryParamToString(value)}`);\n }\n return parts.join(' ');\n}\nfunction queryParamToString(param) {\n if (param === null) {\n return 'null';\n }\n switch (typeof param) {\n case 'string':\n return `\"${param.replace(/[\"\\\\]/g, '\\\\$&')}\"`;\n case 'number':\n case 'boolean':\n return param.toString();\n }\n if (Array.isArray(param)) {\n return `[${param.map(queryParamToString).join(',')}]`;\n }\n else if (typeof param === 'object') {\n const body = [];\n for (const [key, value] of Object.entries(param)) {\n body.push(`${key}:${queryParamToString(value)}`);\n }\n return `{${body.join(',')}}`;\n }\n else {\n throw new TypeError(`Unexpected param type ${typeof param} ${param}`);\n }\n}\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Graph_instances, _Graph_client, _Graph_name, _Graph_metadata, _Graph_setMetadataPromise, _Graph_updateMetadata, _Graph_setMetadata, _Graph_cleanMetadataArray, _Graph_getMetadata, _Graph_getMetadataAsync, _Graph_parseReply, _Graph_parseValue, _Graph_parseEdge, _Graph_parseNode, _Graph_parseProperties;\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/RedisGraph/RedisGraph/blob/master/src/resultset/formatters/resultset_formatter.h#L20\nvar GraphValueTypes;\n(function (GraphValueTypes) {\n GraphValueTypes[GraphValueTypes[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n GraphValueTypes[GraphValueTypes[\"NULL\"] = 1] = \"NULL\";\n GraphValueTypes[GraphValueTypes[\"STRING\"] = 2] = \"STRING\";\n GraphValueTypes[GraphValueTypes[\"INTEGER\"] = 3] = \"INTEGER\";\n GraphValueTypes[GraphValueTypes[\"BOOLEAN\"] = 4] = \"BOOLEAN\";\n GraphValueTypes[GraphValueTypes[\"DOUBLE\"] = 5] = \"DOUBLE\";\n GraphValueTypes[GraphValueTypes[\"ARRAY\"] = 6] = \"ARRAY\";\n GraphValueTypes[GraphValueTypes[\"EDGE\"] = 7] = \"EDGE\";\n GraphValueTypes[GraphValueTypes[\"NODE\"] = 8] = \"NODE\";\n GraphValueTypes[GraphValueTypes[\"PATH\"] = 9] = \"PATH\";\n GraphValueTypes[GraphValueTypes[\"MAP\"] = 10] = \"MAP\";\n GraphValueTypes[GraphValueTypes[\"POINT\"] = 11] = \"POINT\";\n})(GraphValueTypes || (GraphValueTypes = {}));\nclass Graph {\n constructor(client, name) {\n _Graph_instances.add(this);\n _Graph_client.set(this, void 0);\n _Graph_name.set(this, void 0);\n _Graph_metadata.set(this, void 0);\n _Graph_setMetadataPromise.set(this, void 0);\n __classPrivateFieldSet(this, _Graph_client, client, \"f\");\n __classPrivateFieldSet(this, _Graph_name, name, \"f\");\n }\n async query(query, options) {\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseReply).call(this, await __classPrivateFieldGet(this, _Graph_client, \"f\").graph.query(__classPrivateFieldGet(this, _Graph_name, \"f\"), query, options, true));\n }\n async roQuery(query, options) {\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseReply).call(this, await __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), query, options, true));\n }\n}\nexports.default = Graph;\n_Graph_client = new WeakMap(), _Graph_name = new WeakMap(), _Graph_metadata = new WeakMap(), _Graph_setMetadataPromise = new WeakMap(), _Graph_instances = new WeakSet(), _Graph_updateMetadata = function _Graph_updateMetadata() {\n __classPrivateFieldSet(this, _Graph_setMetadataPromise, __classPrivateFieldGet(this, _Graph_setMetadataPromise, \"f\") ?? __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_setMetadata).call(this)\n .finally(() => __classPrivateFieldSet(this, _Graph_setMetadataPromise, undefined, \"f\")), \"f\");\n return __classPrivateFieldGet(this, _Graph_setMetadataPromise, \"f\");\n}, _Graph_setMetadata = \n// DO NOT use directly, use #updateMetadata instead\nasync function _Graph_setMetadata() {\n const [labels, relationshipTypes, propertyKeys] = await Promise.all([\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.labels()'),\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.relationshipTypes()'),\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.propertyKeys()')\n ]);\n __classPrivateFieldSet(this, _Graph_metadata, {\n labels: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, labels.data),\n relationshipTypes: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, relationshipTypes.data),\n propertyKeys: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, propertyKeys.data)\n }, \"f\");\n return __classPrivateFieldGet(this, _Graph_metadata, \"f\");\n}, _Graph_cleanMetadataArray = function _Graph_cleanMetadataArray(arr) {\n return arr.map(([value]) => value);\n}, _Graph_getMetadata = function _Graph_getMetadata(key, id) {\n return __classPrivateFieldGet(this, _Graph_metadata, \"f\")?.[key][id] ?? __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadataAsync).call(this, key, id);\n}, _Graph_getMetadataAsync = \n// DO NOT use directly, use #getMetadata instead\nasync function _Graph_getMetadataAsync(key, id) {\n const value = (await __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_updateMetadata).call(this))[key][id];\n if (value === undefined)\n throw new Error(`Cannot find value from ${key}[${id}]`);\n return value;\n}, _Graph_parseReply = async function _Graph_parseReply(reply) {\n if (!reply.data)\n return reply;\n const promises = [], parsed = {\n metadata: reply.metadata,\n data: reply.data.map((row) => {\n const data = {};\n for (let i = 0; i < row.length; i++) {\n data[reply.headers[i][1]] = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, row[i], promises);\n }\n return data;\n })\n };\n if (promises.length)\n await Promise.all(promises);\n return parsed;\n}, _Graph_parseValue = function _Graph_parseValue([valueType, value], promises) {\n switch (valueType) {\n case GraphValueTypes.NULL:\n return null;\n case GraphValueTypes.STRING:\n case GraphValueTypes.INTEGER:\n return value;\n case GraphValueTypes.BOOLEAN:\n return value === 'true';\n case GraphValueTypes.DOUBLE:\n return parseFloat(value);\n case GraphValueTypes.ARRAY:\n return value.map(x => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, x, promises));\n case GraphValueTypes.EDGE:\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseEdge).call(this, value, promises);\n case GraphValueTypes.NODE:\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseNode).call(this, value, promises);\n case GraphValueTypes.PATH:\n return {\n nodes: value[0][1].map(([, node]) => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseNode).call(this, node, promises)),\n edges: value[1][1].map(([, edge]) => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseEdge).call(this, edge, promises))\n };\n case GraphValueTypes.MAP:\n const map = {};\n for (let i = 0; i < value.length; i++) {\n map[value[i++]] = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, value[i], promises);\n }\n return map;\n case GraphValueTypes.POINT:\n return {\n latitude: parseFloat(value[0]),\n longitude: parseFloat(value[1])\n };\n default:\n throw new Error(`unknown scalar type: ${valueType}`);\n }\n}, _Graph_parseEdge = function _Graph_parseEdge([id, relationshipTypeId, sourceId, destinationId, properties], promises) {\n const edge = {\n id,\n sourceId,\n destinationId,\n properties: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseProperties).call(this, properties, promises)\n };\n const relationshipType = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'relationshipTypes', relationshipTypeId);\n if (relationshipType instanceof Promise) {\n promises.push(relationshipType.then(value => edge.relationshipType = value));\n }\n else {\n edge.relationshipType = relationshipType;\n }\n return edge;\n}, _Graph_parseNode = function _Graph_parseNode([id, labelIds, properties], promises) {\n const labels = new Array(labelIds.length);\n for (let i = 0; i < labelIds.length; i++) {\n const value = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'labels', labelIds[i]);\n if (value instanceof Promise) {\n promises.push(value.then(value => labels[i] = value));\n }\n else {\n labels[i] = value;\n }\n }\n return {\n id,\n labels,\n properties: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseProperties).call(this, properties, promises)\n };\n}, _Graph_parseProperties = function _Graph_parseProperties(raw, promises) {\n const parsed = {};\n for (const [id, type, value] of raw) {\n const parsedValue = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, [type, value], promises), key = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'propertyKeys', id);\n if (key instanceof Promise) {\n promises.push(key.then(key => parsed[key] = parsedValue));\n }\n else {\n parsed[key] = parsedValue;\n }\n }\n return parsed;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Graph = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar graph_1 = require(\"./graph\");\nObject.defineProperty(exports, \"Graph\", { enumerable: true, get: function () { return graph_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, ...jsons) {\n const args = ['JSON.ARRAPPEND', key, path];\n for (const json of jsons) {\n args.push((0, _1.transformRedisJsonArgument)(json));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path, json, start, stop) {\n const args = ['JSON.ARRINDEX', key, path, (0, _1.transformRedisJsonArgument)(json)];\n if (start !== undefined && start !== null) {\n args.push(start.toString());\n if (stop !== undefined && stop !== null) {\n args.push(stop.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, index, ...jsons) {\n const args = ['JSON.ARRINSERT', key, path, index.toString()];\n for (const json of jsons) {\n args.push((0, _1.transformRedisJsonArgument)(json));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path) {\n const args = ['JSON.ARRLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, index) {\n const args = ['JSON.ARRPOP', key];\n if (path) {\n args.push(path);\n if (index !== undefined && index !== null) {\n args.push(index.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply === null)\n return null;\n if (Array.isArray(reply)) {\n return reply.map(_1.transformRedisJsonNullReply);\n }\n return (0, _1.transformRedisJsonNullReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, start, stop) {\n return ['JSON.ARRTRIM', key, path, start.toString(), stop.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, path) {\n const args = ['JSON.DEBUG', 'MEMORY', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.DEL', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.FORGET', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n let args = ['JSON.GET', key];\n if (options?.path) {\n args = (0, generic_transformers_1.pushVerdictArguments)(args, options.path);\n }\n if (options?.INDENT) {\n args.push('INDENT', options.INDENT);\n }\n if (options?.NEWLINE) {\n args.push('NEWLINE', options.NEWLINE);\n }\n if (options?.SPACE) {\n args.push('SPACE', options.SPACE);\n }\n if (options?.NOESCAPE) {\n args.push('NOESCAPE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformRedisJsonNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys, path) {\n return [\n 'JSON.MGET',\n ...keys,\n path\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(_1.transformRedisJsonNullReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, by) {\n return ['JSON.NUMINCRBY', key, path, by.toString()];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformNumbersReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, by) {\n return ['JSON.NUMMULTBY', key, path, by.toString()];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformNumbersReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.OBJKEYS', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.OBJLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.RESP', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, json, options) {\n const args = ['JSON.SET', key, path, (0, _1.transformRedisJsonArgument)(json)];\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(...[key, pathOrAppend, append]) {\n const args = ['JSON.STRAPPEND', key];\n if (append !== undefined && append !== null) {\n args.push(pathOrAppend, (0, _1.transformRedisJsonArgument)(append));\n }\n else {\n args.push((0, _1.transformRedisJsonArgument)(pathOrAppend));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path) {\n const args = ['JSON.STRLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.TYPE', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformNumbersReply = exports.transformRedisJsonNullReply = exports.transformRedisJsonReply = exports.transformRedisJsonArgument = void 0;\nconst ARRAPPEND = require(\"./ARRAPPEND\");\nconst ARRINDEX = require(\"./ARRINDEX\");\nconst ARRINSERT = require(\"./ARRINSERT\");\nconst ARRLEN = require(\"./ARRLEN\");\nconst ARRPOP = require(\"./ARRPOP\");\nconst ARRTRIM = require(\"./ARRTRIM\");\nconst DEBUG_MEMORY = require(\"./DEBUG_MEMORY\");\nconst DEL = require(\"./DEL\");\nconst FORGET = require(\"./FORGET\");\nconst GET = require(\"./GET\");\nconst MGET = require(\"./MGET\");\nconst NUMINCRBY = require(\"./NUMINCRBY\");\nconst NUMMULTBY = require(\"./NUMMULTBY\");\nconst OBJKEYS = require(\"./OBJKEYS\");\nconst OBJLEN = require(\"./OBJLEN\");\nconst RESP = require(\"./RESP\");\nconst SET = require(\"./SET\");\nconst STRAPPEND = require(\"./STRAPPEND\");\nconst STRLEN = require(\"./STRLEN\");\nconst TYPE = require(\"./TYPE\");\nexports.default = {\n ARRAPPEND,\n arrAppend: ARRAPPEND,\n ARRINDEX,\n arrIndex: ARRINDEX,\n ARRINSERT,\n arrInsert: ARRINSERT,\n ARRLEN,\n arrLen: ARRLEN,\n ARRPOP,\n arrPop: ARRPOP,\n ARRTRIM,\n arrTrim: ARRTRIM,\n DEBUG_MEMORY,\n debugMemory: DEBUG_MEMORY,\n DEL,\n del: DEL,\n FORGET,\n forget: FORGET,\n GET,\n get: GET,\n MGET,\n mGet: MGET,\n NUMINCRBY,\n numIncrBy: NUMINCRBY,\n NUMMULTBY,\n numMultBy: NUMMULTBY,\n OBJKEYS,\n objKeys: OBJKEYS,\n OBJLEN,\n objLen: OBJLEN,\n RESP,\n resp: RESP,\n SET,\n set: SET,\n STRAPPEND,\n strAppend: STRAPPEND,\n STRLEN,\n strLen: STRLEN,\n TYPE,\n type: TYPE\n};\nfunction transformRedisJsonArgument(json) {\n return JSON.stringify(json);\n}\nexports.transformRedisJsonArgument = transformRedisJsonArgument;\nfunction transformRedisJsonReply(json) {\n return JSON.parse(json);\n}\nexports.transformRedisJsonReply = transformRedisJsonReply;\nfunction transformRedisJsonNullReply(json) {\n if (json === null)\n return null;\n return transformRedisJsonReply(json);\n}\nexports.transformRedisJsonNullReply = transformRedisJsonNullReply;\nfunction transformNumbersReply(reply) {\n return JSON.parse(reply);\n}\nexports.transformNumbersReply = transformNumbersReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.pushAggregatehOptions = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = exports.AggregateGroupByReducers = exports.AggregateSteps = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nvar AggregateSteps;\n(function (AggregateSteps) {\n AggregateSteps[\"GROUPBY\"] = \"GROUPBY\";\n AggregateSteps[\"SORTBY\"] = \"SORTBY\";\n AggregateSteps[\"APPLY\"] = \"APPLY\";\n AggregateSteps[\"LIMIT\"] = \"LIMIT\";\n AggregateSteps[\"FILTER\"] = \"FILTER\";\n})(AggregateSteps = exports.AggregateSteps || (exports.AggregateSteps = {}));\nvar AggregateGroupByReducers;\n(function (AggregateGroupByReducers) {\n AggregateGroupByReducers[\"COUNT\"] = \"COUNT\";\n AggregateGroupByReducers[\"COUNT_DISTINCT\"] = \"COUNT_DISTINCT\";\n AggregateGroupByReducers[\"COUNT_DISTINCTISH\"] = \"COUNT_DISTINCTISH\";\n AggregateGroupByReducers[\"SUM\"] = \"SUM\";\n AggregateGroupByReducers[\"MIN\"] = \"MIN\";\n AggregateGroupByReducers[\"MAX\"] = \"MAX\";\n AggregateGroupByReducers[\"AVG\"] = \"AVG\";\n AggregateGroupByReducers[\"STDDEV\"] = \"STDDEV\";\n AggregateGroupByReducers[\"QUANTILE\"] = \"QUANTILE\";\n AggregateGroupByReducers[\"TOLIST\"] = \"TOLIST\";\n AggregateGroupByReducers[\"TO_LIST\"] = \"TOLIST\";\n AggregateGroupByReducers[\"FIRST_VALUE\"] = \"FIRST_VALUE\";\n AggregateGroupByReducers[\"RANDOM_SAMPLE\"] = \"RANDOM_SAMPLE\";\n})(AggregateGroupByReducers = exports.AggregateGroupByReducers || (exports.AggregateGroupByReducers = {}));\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n return pushAggregatehOptions(['FT.AGGREGATE', index, query], options);\n}\nexports.transformArguments = transformArguments;\nfunction pushAggregatehOptions(args, options) {\n if (options?.VERBATIM) {\n args.push('VERBATIM');\n }\n if (options?.LOAD) {\n args.push('LOAD');\n (0, _1.pushArgumentsWithLength)(args, () => {\n if (Array.isArray(options.LOAD)) {\n for (const load of options.LOAD) {\n pushLoadField(args, load);\n }\n }\n else {\n pushLoadField(args, options.LOAD);\n }\n });\n }\n if (options?.STEPS) {\n for (const step of options.STEPS) {\n switch (step.type) {\n case AggregateSteps.GROUPBY:\n args.push('GROUPBY');\n if (!step.properties) {\n args.push('0');\n }\n else {\n (0, generic_transformers_1.pushVerdictArgument)(args, step.properties);\n }\n if (Array.isArray(step.REDUCE)) {\n for (const reducer of step.REDUCE) {\n pushGroupByReducer(args, reducer);\n }\n }\n else {\n pushGroupByReducer(args, step.REDUCE);\n }\n break;\n case AggregateSteps.SORTBY:\n (0, _1.pushSortByArguments)(args, 'SORTBY', step.BY);\n if (step.MAX) {\n args.push('MAX', step.MAX.toString());\n }\n break;\n case AggregateSteps.APPLY:\n args.push('APPLY', step.expression, 'AS', step.AS);\n break;\n case AggregateSteps.LIMIT:\n args.push('LIMIT', step.from.toString(), step.size.toString());\n break;\n case AggregateSteps.FILTER:\n args.push('FILTER', step.expression);\n break;\n }\n }\n }\n (0, _1.pushParamsArgs)(args, options?.PARAMS);\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.pushAggregatehOptions = pushAggregatehOptions;\nfunction pushLoadField(args, toLoad) {\n if (typeof toLoad === 'string') {\n args.push(toLoad);\n }\n else {\n args.push(toLoad.identifier);\n if (toLoad.AS) {\n args.push('AS', toLoad.AS);\n }\n }\n}\nfunction pushGroupByReducer(args, reducer) {\n args.push('REDUCE', reducer.type);\n switch (reducer.type) {\n case AggregateGroupByReducers.COUNT:\n args.push('0');\n break;\n case AggregateGroupByReducers.COUNT_DISTINCT:\n case AggregateGroupByReducers.COUNT_DISTINCTISH:\n case AggregateGroupByReducers.SUM:\n case AggregateGroupByReducers.MIN:\n case AggregateGroupByReducers.MAX:\n case AggregateGroupByReducers.AVG:\n case AggregateGroupByReducers.STDDEV:\n case AggregateGroupByReducers.TOLIST:\n args.push('1', reducer.property);\n break;\n case AggregateGroupByReducers.QUANTILE:\n args.push('2', reducer.property, reducer.quantile.toString());\n break;\n case AggregateGroupByReducers.FIRST_VALUE: {\n (0, _1.pushArgumentsWithLength)(args, () => {\n args.push(reducer.property);\n if (reducer.BY) {\n args.push('BY');\n if (typeof reducer.BY === 'string') {\n args.push(reducer.BY);\n }\n else {\n args.push(reducer.BY.property);\n if (reducer.BY.direction) {\n args.push(reducer.BY.direction);\n }\n }\n }\n });\n break;\n }\n case AggregateGroupByReducers.RANDOM_SAMPLE:\n args.push('2', reducer.property, reducer.sampleSize.toString());\n break;\n }\n if (reducer.AS) {\n args.push('AS', reducer.AS);\n }\n}\nfunction transformReply(rawReply) {\n const results = [];\n for (let i = 1; i < rawReply.length; i++) {\n results.push((0, generic_transformers_1.transformTuplesReply)(rawReply[i]));\n }\n return {\n total: rawReply[0],\n results\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst AGGREGATE_1 = require(\"./AGGREGATE\");\nvar AGGREGATE_2 = require(\"./AGGREGATE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return AGGREGATE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return AGGREGATE_2.IS_READ_ONLY; } });\nfunction transformArguments(index, query, options) {\n const args = (0, AGGREGATE_1.transformArguments)(index, query, options);\n args.push('WITHCURSOR');\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n ...(0, AGGREGATE_1.transformReply)(reply[0]),\n cursor: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASADD', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASDEL', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASUPDATE', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst _1 = require(\".\");\nfunction transformArguments(index, schema) {\n const args = ['FT.ALTER', index, 'SCHEMA', 'ADD'];\n (0, _1.pushSchema)(args, schema);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(option) {\n return ['FT.CONFIG', 'GET', option];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const transformedReply = Object.create(null);\n for (const [key, value] of rawReply) {\n transformedReply[key] = value;\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(option, value) {\n return ['FT.CONFIG', 'SET', option, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nfunction transformArguments(index, schema, options) {\n const args = ['FT.CREATE', index];\n if (options?.ON) {\n args.push('ON', options.ON);\n }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'PREFIX', options?.PREFIX);\n if (options?.FILTER) {\n args.push('FILTER', options.FILTER);\n }\n if (options?.LANGUAGE) {\n args.push('LANGUAGE', options.LANGUAGE);\n }\n if (options?.LANGUAGE_FIELD) {\n args.push('LANGUAGE_FIELD', options.LANGUAGE_FIELD);\n }\n if (options?.SCORE) {\n args.push('SCORE', options.SCORE.toString());\n }\n if (options?.SCORE_FIELD) {\n args.push('SCORE_FIELD', options.SCORE_FIELD);\n }\n // if (options?.PAYLOAD_FIELD) {\n // args.push('PAYLOAD_FIELD', options.PAYLOAD_FIELD);\n // }\n if (options?.MAXTEXTFIELDS) {\n args.push('MAXTEXTFIELDS');\n }\n if (options?.TEMPORARY) {\n args.push('TEMPORARY', options.TEMPORARY.toString());\n }\n if (options?.NOOFFSETS) {\n args.push('NOOFFSETS');\n }\n if (options?.NOHL) {\n args.push('NOHL');\n }\n if (options?.NOFIELDS) {\n args.push('NOFIELDS');\n }\n if (options?.NOFREQS) {\n args.push('NOFREQS');\n }\n if (options?.SKIPINITIALSCAN) {\n args.push('SKIPINITIALSCAN');\n }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'STOPWORDS', options?.STOPWORDS);\n args.push('SCHEMA');\n (0, _1.pushSchema)(args, schema);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(index, cursorId) {\n return [\n 'FT.CURSOR',\n 'DEL',\n index,\n cursorId.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, cursor) {\n return [\n 'FT.CURSOR',\n 'READ',\n index,\n cursor.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar AGGREGATE_WITHCURSOR_1 = require(\"./AGGREGATE_WITHCURSOR\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return AGGREGATE_WITHCURSOR_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(dictionary, term) {\n return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTADD', dictionary], term);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(dictionary, term) {\n return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTDEL', dictionary], term);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(dictionary) {\n return ['FT.DICTDUMP', dictionary];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index, options) {\n const args = ['FT.DROPINDEX', index];\n if (options?.DD) {\n args.push('DD');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n const args = ['FT.EXPLAIN', index, query];\n (0, _1.pushParamsArgs)(args, options?.PARAMS);\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query) {\n return ['FT.EXPLAINCLI', index, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(index) {\n return ['FT.INFO', index];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return {\n indexName: rawReply[1],\n indexOptions: rawReply[3],\n indexDefinition: (0, generic_transformers_1.transformTuplesReply)(rawReply[5]),\n attributes: rawReply[7].map(attribute => (0, generic_transformers_1.transformTuplesReply)(attribute)),\n numDocs: rawReply[9],\n maxDocId: rawReply[11],\n numTerms: rawReply[13],\n numRecords: rawReply[15],\n invertedSzMb: rawReply[17],\n vectorIndexSzMb: rawReply[19],\n totalInvertedIndexBlocks: rawReply[21],\n offsetVectorsSzMb: rawReply[23],\n docTableSizeMb: rawReply[25],\n sortableValuesSizeMb: rawReply[27],\n keyTableSizeMb: rawReply[29],\n recordsPerDocAvg: rawReply[31],\n bytesPerRecordAvg: rawReply[33],\n offsetsPerTermAvg: rawReply[35],\n offsetBitsPerRecordAvg: rawReply[37],\n hashIndexingFailures: rawReply[39],\n indexing: rawReply[41],\n percentIndexed: rawReply[43],\n gcStats: {\n bytesCollected: rawReply[45][1],\n totalMsRun: rawReply[45][3],\n totalCycles: rawReply[45][5],\n averageCycleTimeMs: rawReply[45][7],\n lastRunTimeMs: rawReply[45][9],\n gcNumericTreesMissed: rawReply[45][11],\n gcBlocksDenied: rawReply[45][13]\n },\n cursorStats: {\n globalIdle: rawReply[47][1],\n globalTotal: rawReply[47][3],\n indexCapacity: rawReply[47][5],\n idnexTotal: rawReply[47][7]\n },\n stopWords: rawReply[49]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst AGGREGATE_1 = require(\"./AGGREGATE\");\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n const args = ['FT.PROFILE', index, 'AGGREGATE'];\n if (options?.LIMITED) {\n args.push('LIMITED');\n }\n args.push('QUERY', query);\n (0, AGGREGATE_1.pushAggregatehOptions)(args, options);\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n results: (0, AGGREGATE_1.transformReply)(reply[0]),\n profile: (0, _1.transformProfile)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SEARCH_1 = require(\"./SEARCH\");\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n let args = ['FT.PROFILE', index, 'SEARCH'];\n if (options?.LIMITED) {\n args.push('LIMITED');\n }\n args.push('QUERY', query);\n return (0, _1.pushSearchOptions)(args, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply, withoutDocuments) {\n return {\n results: (0, SEARCH_1.transformReply)(reply[0], withoutDocuments),\n profile: (0, _1.transformProfile)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n return (0, _1.pushSearchOptions)(['FT.SEARCH', index, query], options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply, withoutDocuments) {\n const documents = [];\n let i = 1;\n while (i < reply.length) {\n documents.push({\n id: reply[i++],\n value: withoutDocuments ? Object.create(null) : documentValue(reply[i++])\n });\n }\n return {\n total: reply[0],\n documents\n };\n}\nexports.transformReply = transformReply;\nfunction documentValue(tuples) {\n const message = Object.create(null);\n let i = 0;\n while (i < tuples.length) {\n const key = tuples[i++], value = tuples[i++];\n if (key === '$') { // might be a JSON reply\n try {\n Object.assign(message, JSON.parse(value));\n continue;\n }\n catch {\n // set as a regular property if not a valid JSON\n }\n }\n message[key] = value;\n }\n return message;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(index, query, options) {\n const args = ['FT.SPELLCHECK', index, query];\n if (options?.DISTANCE) {\n args.push('DISTANCE', options.DISTANCE.toString());\n }\n if (options?.TERMS) {\n if (Array.isArray(options.TERMS)) {\n for (const term of options.TERMS) {\n pushTerms(args, term);\n }\n }\n else {\n pushTerms(args, options.TERMS);\n }\n }\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushTerms(args, { mode, dictionary }) {\n args.push('TERMS', mode, dictionary);\n}\nfunction transformReply(rawReply) {\n return rawReply.map(([, term, suggestions]) => ({\n term,\n suggestions: suggestions.map(([score, suggestion]) => ({\n score: Number(score),\n suggestion\n }))\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(key, string, score, options) {\n const args = ['FT.SUGADD', key, string, score.toString()];\n if (options?.INCR) {\n args.push('INCR');\n }\n if (options?.PAYLOAD) {\n args.push('PAYLOAD', options.PAYLOAD);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(key, string) {\n return ['FT.SUGDEL', key, string];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, prefix, options) {\n const args = ['FT.SUGGET', key, prefix];\n if (options?.FUZZY) {\n args.push('FUZZY');\n }\n if (options?.MAX) {\n args.push('MAX', options.MAX.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHPAYLOADS'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply.push({\n suggestion: rawReply[i],\n payload: rawReply[i + 1]\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply.push({\n suggestion: rawReply[i],\n score: Number(rawReply[i + 1])\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHSCORES',\n 'WITHPAYLOADS'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 3) {\n transformedReply.push({\n suggestion: rawReply[i],\n score: Number(rawReply[i + 1]),\n payload: rawReply[i + 2]\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['FT.SUGLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index) {\n return ['FT.SYNDUMP', index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(index, groupId, terms, options) {\n const args = ['FT.SYNUPDATE', index, groupId];\n if (options?.SKIPINITIALSCAN) {\n args.push('SKIPINITIALSCAN');\n }\n return (0, generic_transformers_1.pushVerdictArguments)(args, terms);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index, fieldName) {\n return ['FT.TAGVALS', index, fieldName];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FT._LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformProfile = exports.pushSearchOptions = exports.pushParamsArgs = exports.pushSchema = exports.VectorAlgorithms = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = exports.pushArgumentsWithLength = exports.pushSortByArguments = exports.pushSortByProperty = exports.RedisSearchLanguages = void 0;\nconst _LIST = require(\"./_LIST\");\nconst ALTER = require(\"./ALTER\");\nconst AGGREGATE_WITHCURSOR = require(\"./AGGREGATE_WITHCURSOR\");\nconst AGGREGATE = require(\"./AGGREGATE\");\nconst ALIASADD = require(\"./ALIASADD\");\nconst ALIASDEL = require(\"./ALIASDEL\");\nconst ALIASUPDATE = require(\"./ALIASUPDATE\");\nconst CONFIG_GET = require(\"./CONFIG_GET\");\nconst CONFIG_SET = require(\"./CONFIG_SET\");\nconst CREATE = require(\"./CREATE\");\nconst CURSOR_DEL = require(\"./CURSOR_DEL\");\nconst CURSOR_READ = require(\"./CURSOR_READ\");\nconst DICTADD = require(\"./DICTADD\");\nconst DICTDEL = require(\"./DICTDEL\");\nconst DICTDUMP = require(\"./DICTDUMP\");\nconst DROPINDEX = require(\"./DROPINDEX\");\nconst EXPLAIN = require(\"./EXPLAIN\");\nconst EXPLAINCLI = require(\"./EXPLAINCLI\");\nconst INFO = require(\"./INFO\");\nconst PROFILESEARCH = require(\"./PROFILE_SEARCH\");\nconst PROFILEAGGREGATE = require(\"./PROFILE_AGGREGATE\");\nconst SEARCH = require(\"./SEARCH\");\nconst SPELLCHECK = require(\"./SPELLCHECK\");\nconst SUGADD = require(\"./SUGADD\");\nconst SUGDEL = require(\"./SUGDEL\");\nconst SUGGET_WITHPAYLOADS = require(\"./SUGGET_WITHPAYLOADS\");\nconst SUGGET_WITHSCORES_WITHPAYLOADS = require(\"./SUGGET_WITHSCORES_WITHPAYLOADS\");\nconst SUGGET_WITHSCORES = require(\"./SUGGET_WITHSCORES\");\nconst SUGGET = require(\"./SUGGET\");\nconst SUGLEN = require(\"./SUGLEN\");\nconst SYNDUMP = require(\"./SYNDUMP\");\nconst SYNUPDATE = require(\"./SYNUPDATE\");\nconst TAGVALS = require(\"./TAGVALS\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n _LIST,\n _list: _LIST,\n ALTER,\n alter: ALTER,\n AGGREGATE_WITHCURSOR,\n aggregateWithCursor: AGGREGATE_WITHCURSOR,\n AGGREGATE,\n aggregate: AGGREGATE,\n ALIASADD,\n aliasAdd: ALIASADD,\n ALIASDEL,\n aliasDel: ALIASDEL,\n ALIASUPDATE,\n aliasUpdate: ALIASUPDATE,\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_SET,\n configSet: CONFIG_SET,\n CREATE,\n create: CREATE,\n CURSOR_DEL,\n cursorDel: CURSOR_DEL,\n CURSOR_READ,\n cursorRead: CURSOR_READ,\n DICTADD,\n dictAdd: DICTADD,\n DICTDEL,\n dictDel: DICTDEL,\n DICTDUMP,\n dictDump: DICTDUMP,\n DROPINDEX,\n dropIndex: DROPINDEX,\n EXPLAIN,\n explain: EXPLAIN,\n EXPLAINCLI,\n explainCli: EXPLAINCLI,\n INFO,\n info: INFO,\n PROFILESEARCH,\n profileSearch: PROFILESEARCH,\n PROFILEAGGREGATE,\n profileAggregate: PROFILEAGGREGATE,\n SEARCH,\n search: SEARCH,\n SPELLCHECK,\n spellCheck: SPELLCHECK,\n SUGADD,\n sugAdd: SUGADD,\n SUGDEL,\n sugDel: SUGDEL,\n SUGGET_WITHPAYLOADS,\n sugGetWithPayloads: SUGGET_WITHPAYLOADS,\n SUGGET_WITHSCORES_WITHPAYLOADS,\n sugGetWithScoresWithPayloads: SUGGET_WITHSCORES_WITHPAYLOADS,\n SUGGET_WITHSCORES,\n sugGetWithScores: SUGGET_WITHSCORES,\n SUGGET,\n sugGet: SUGGET,\n SUGLEN,\n sugLen: SUGLEN,\n SYNDUMP,\n synDump: SYNDUMP,\n SYNUPDATE,\n synUpdate: SYNUPDATE,\n TAGVALS,\n tagVals: TAGVALS\n};\nvar RedisSearchLanguages;\n(function (RedisSearchLanguages) {\n RedisSearchLanguages[\"ARABIC\"] = \"Arabic\";\n RedisSearchLanguages[\"BASQUE\"] = \"Basque\";\n RedisSearchLanguages[\"CATALANA\"] = \"Catalan\";\n RedisSearchLanguages[\"DANISH\"] = \"Danish\";\n RedisSearchLanguages[\"DUTCH\"] = \"Dutch\";\n RedisSearchLanguages[\"ENGLISH\"] = \"English\";\n RedisSearchLanguages[\"FINNISH\"] = \"Finnish\";\n RedisSearchLanguages[\"FRENCH\"] = \"French\";\n RedisSearchLanguages[\"GERMAN\"] = \"German\";\n RedisSearchLanguages[\"GREEK\"] = \"Greek\";\n RedisSearchLanguages[\"HUNGARIAN\"] = \"Hungarian\";\n RedisSearchLanguages[\"INDONESAIN\"] = \"Indonesian\";\n RedisSearchLanguages[\"IRISH\"] = \"Irish\";\n RedisSearchLanguages[\"ITALIAN\"] = \"Italian\";\n RedisSearchLanguages[\"LITHUANIAN\"] = \"Lithuanian\";\n RedisSearchLanguages[\"NEPALI\"] = \"Nepali\";\n RedisSearchLanguages[\"NORWEIGAN\"] = \"Norwegian\";\n RedisSearchLanguages[\"PORTUGUESE\"] = \"Portuguese\";\n RedisSearchLanguages[\"ROMANIAN\"] = \"Romanian\";\n RedisSearchLanguages[\"RUSSIAN\"] = \"Russian\";\n RedisSearchLanguages[\"SPANISH\"] = \"Spanish\";\n RedisSearchLanguages[\"SWEDISH\"] = \"Swedish\";\n RedisSearchLanguages[\"TAMIL\"] = \"Tamil\";\n RedisSearchLanguages[\"TURKISH\"] = \"Turkish\";\n RedisSearchLanguages[\"CHINESE\"] = \"Chinese\";\n})(RedisSearchLanguages = exports.RedisSearchLanguages || (exports.RedisSearchLanguages = {}));\nfunction pushSortByProperty(args, sortBy) {\n if (typeof sortBy === 'string') {\n args.push(sortBy);\n }\n else {\n args.push(sortBy.BY);\n if (sortBy.DIRECTION) {\n args.push(sortBy.DIRECTION);\n }\n }\n}\nexports.pushSortByProperty = pushSortByProperty;\nfunction pushSortByArguments(args, name, sortBy) {\n const lengthBefore = args.push(name, '' // will be overwritten\n );\n if (Array.isArray(sortBy)) {\n for (const field of sortBy) {\n pushSortByProperty(args, field);\n }\n }\n else {\n pushSortByProperty(args, sortBy);\n }\n args[lengthBefore - 1] = (args.length - lengthBefore).toString();\n return args;\n}\nexports.pushSortByArguments = pushSortByArguments;\nfunction pushArgumentsWithLength(args, fn) {\n const lengthIndex = args.push('') - 1;\n fn(args);\n args[lengthIndex] = (args.length - lengthIndex - 1).toString();\n return args;\n}\nexports.pushArgumentsWithLength = pushArgumentsWithLength;\nvar SchemaFieldTypes;\n(function (SchemaFieldTypes) {\n SchemaFieldTypes[\"TEXT\"] = \"TEXT\";\n SchemaFieldTypes[\"NUMERIC\"] = \"NUMERIC\";\n SchemaFieldTypes[\"GEO\"] = \"GEO\";\n SchemaFieldTypes[\"TAG\"] = \"TAG\";\n SchemaFieldTypes[\"VECTOR\"] = \"VECTOR\";\n})(SchemaFieldTypes = exports.SchemaFieldTypes || (exports.SchemaFieldTypes = {}));\nvar SchemaTextFieldPhonetics;\n(function (SchemaTextFieldPhonetics) {\n SchemaTextFieldPhonetics[\"DM_EN\"] = \"dm:en\";\n SchemaTextFieldPhonetics[\"DM_FR\"] = \"dm:fr\";\n SchemaTextFieldPhonetics[\"FM_PT\"] = \"dm:pt\";\n SchemaTextFieldPhonetics[\"DM_ES\"] = \"dm:es\";\n})(SchemaTextFieldPhonetics = exports.SchemaTextFieldPhonetics || (exports.SchemaTextFieldPhonetics = {}));\nvar VectorAlgorithms;\n(function (VectorAlgorithms) {\n VectorAlgorithms[\"FLAT\"] = \"FLAT\";\n VectorAlgorithms[\"HNSW\"] = \"HNSW\";\n})(VectorAlgorithms = exports.VectorAlgorithms || (exports.VectorAlgorithms = {}));\nfunction pushSchema(args, schema) {\n for (const [field, fieldOptions] of Object.entries(schema)) {\n args.push(field);\n if (typeof fieldOptions === 'string') {\n args.push(fieldOptions);\n continue;\n }\n if (fieldOptions.AS) {\n args.push('AS', fieldOptions.AS);\n }\n args.push(fieldOptions.type);\n switch (fieldOptions.type) {\n case SchemaFieldTypes.TEXT:\n if (fieldOptions.NOSTEM) {\n args.push('NOSTEM');\n }\n if (fieldOptions.WEIGHT) {\n args.push('WEIGHT', fieldOptions.WEIGHT.toString());\n }\n if (fieldOptions.PHONETIC) {\n args.push('PHONETIC', fieldOptions.PHONETIC);\n }\n if (fieldOptions.WITHSUFFIXTRIE) {\n args.push('WITHSUFFIXTRIE');\n }\n break;\n // case SchemaFieldTypes.NUMERIC:\n // case SchemaFieldTypes.GEO:\n // break;\n case SchemaFieldTypes.TAG:\n if (fieldOptions.SEPARATOR) {\n args.push('SEPARATOR', fieldOptions.SEPARATOR);\n }\n if (fieldOptions.CASESENSITIVE) {\n args.push('CASESENSITIVE');\n }\n if (fieldOptions.WITHSUFFIXTRIE) {\n args.push('WITHSUFFIXTRIE');\n }\n break;\n case SchemaFieldTypes.VECTOR:\n args.push(fieldOptions.ALGORITHM);\n pushArgumentsWithLength(args, () => {\n args.push('TYPE', fieldOptions.TYPE, 'DIM', fieldOptions.DIM.toString(), 'DISTANCE_METRIC', fieldOptions.DISTANCE_METRIC);\n if (fieldOptions.INITIAL_CAP) {\n args.push('INITIAL_CAP', fieldOptions.INITIAL_CAP.toString());\n }\n switch (fieldOptions.ALGORITHM) {\n case VectorAlgorithms.FLAT:\n if (fieldOptions.BLOCK_SIZE) {\n args.push('BLOCK_SIZE', fieldOptions.BLOCK_SIZE.toString());\n }\n break;\n case VectorAlgorithms.HNSW:\n if (fieldOptions.M) {\n args.push('M', fieldOptions.M.toString());\n }\n if (fieldOptions.EF_CONSTRUCTION) {\n args.push('EF_CONSTRUCTION', fieldOptions.EF_CONSTRUCTION.toString());\n }\n if (fieldOptions.EF_RUNTIME) {\n args.push('EF_RUNTIME', fieldOptions.EF_RUNTIME.toString());\n }\n break;\n }\n });\n continue; // vector fields do not contain SORTABLE and NOINDEX options\n }\n if (fieldOptions.SORTABLE) {\n args.push('SORTABLE');\n if (fieldOptions.SORTABLE === 'UNF') {\n args.push('UNF');\n }\n }\n if (fieldOptions.NOINDEX) {\n args.push('NOINDEX');\n }\n }\n}\nexports.pushSchema = pushSchema;\nfunction pushParamsArgs(args, params) {\n if (params) {\n const enrties = Object.entries(params);\n args.push('PARAMS', (enrties.length * 2).toString());\n for (const [key, value] of enrties) {\n args.push(key, typeof value === 'number' ? value.toString() : value);\n }\n }\n return args;\n}\nexports.pushParamsArgs = pushParamsArgs;\nfunction pushSearchOptions(args, options) {\n if (options?.VERBATIM) {\n args.push('VERBATIM');\n }\n if (options?.NOSTOPWORDS) {\n args.push('NOSTOPWORDS');\n }\n // if (options?.WITHSCORES) {\n // args.push('WITHSCORES');\n // }\n // if (options?.WITHPAYLOADS) {\n // args.push('WITHPAYLOADS');\n // }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INKEYS', options?.INKEYS);\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INFIELDS', options?.INFIELDS);\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'RETURN', options?.RETURN);\n if (options?.SUMMARIZE) {\n args.push('SUMMARIZE');\n if (typeof options.SUMMARIZE === 'object') {\n if (options.SUMMARIZE.FIELDS) {\n args.push('FIELDS');\n (0, generic_transformers_1.pushVerdictArgument)(args, options.SUMMARIZE.FIELDS);\n }\n if (options.SUMMARIZE.FRAGS) {\n args.push('FRAGS', options.SUMMARIZE.FRAGS.toString());\n }\n if (options.SUMMARIZE.LEN) {\n args.push('LEN', options.SUMMARIZE.LEN.toString());\n }\n if (options.SUMMARIZE.SEPARATOR) {\n args.push('SEPARATOR', options.SUMMARIZE.SEPARATOR);\n }\n }\n }\n if (options?.HIGHLIGHT) {\n args.push('HIGHLIGHT');\n if (typeof options.HIGHLIGHT === 'object') {\n if (options.HIGHLIGHT.FIELDS) {\n args.push('FIELDS');\n (0, generic_transformers_1.pushVerdictArgument)(args, options.HIGHLIGHT.FIELDS);\n }\n if (options.HIGHLIGHT.TAGS) {\n args.push('TAGS', options.HIGHLIGHT.TAGS.open, options.HIGHLIGHT.TAGS.close);\n }\n }\n }\n if (options?.SLOP) {\n args.push('SLOP', options.SLOP.toString());\n }\n if (options?.INORDER) {\n args.push('INORDER');\n }\n if (options?.LANGUAGE) {\n args.push('LANGUAGE', options.LANGUAGE);\n }\n if (options?.EXPANDER) {\n args.push('EXPANDER', options.EXPANDER);\n }\n if (options?.SCORER) {\n args.push('SCORER', options.SCORER);\n }\n // if (options?.EXPLAINSCORE) {\n // args.push('EXPLAINSCORE');\n // }\n // if (options?.PAYLOAD) {\n // args.push('PAYLOAD', options.PAYLOAD);\n // }\n if (options?.SORTBY) {\n args.push('SORTBY');\n pushSortByProperty(args, options.SORTBY);\n }\n // if (options?.MSORTBY) {\n // pushSortByArguments(args, 'MSORTBY', options.MSORTBY);\n // }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.from.toString(), options.LIMIT.size.toString());\n }\n if (options?.PARAMS) {\n pushParamsArgs(args, options.PARAMS);\n }\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n if (options?.RETURN?.length === 0) {\n args.preserve = true;\n }\n return args;\n}\nexports.pushSearchOptions = pushSearchOptions;\nfunction transformProfile(reply) {\n return {\n totalProfileTime: reply[0][1],\n parsingTime: reply[1][1],\n pipelineCreationTime: reply[2][1],\n iteratorsProfile: transformIterators(reply[3][1])\n };\n}\nexports.transformProfile = transformProfile;\nfunction transformIterators(IteratorsProfile) {\n var res = {};\n for (let i = 0; i < IteratorsProfile.length; i += 2) {\n const value = IteratorsProfile[i + 1];\n switch (IteratorsProfile[i]) {\n case 'Type':\n res.type = value;\n break;\n case 'Counter':\n res.counter = value;\n break;\n case 'Time':\n res.time = value;\n break;\n case 'Query type':\n res.queryType = value;\n break;\n case 'Child iterators':\n res.childIterators = value.map(transformChildIterators);\n break;\n }\n }\n return res;\n}\nfunction transformChildIterators(IteratorsProfile) {\n var res = {};\n for (let i = 1; i < IteratorsProfile.length; i += 2) {\n const value = IteratorsProfile[i + 1];\n switch (IteratorsProfile[i]) {\n case 'Type':\n res.type = value;\n break;\n case 'Counter':\n res.counter = value;\n break;\n case 'Time':\n res.time = value;\n break;\n case 'Size':\n res.size = value;\n break;\n case 'Term':\n res.term = value;\n break;\n case 'Child iterators':\n res.childIterators = value.map(transformChildIterators);\n break;\n }\n }\n return res;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AggregateGroupByReducers = exports.AggregateSteps = exports.VectorAlgorithms = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar commands_2 = require(\"./commands\");\nObject.defineProperty(exports, \"SchemaFieldTypes\", { enumerable: true, get: function () { return commands_2.SchemaFieldTypes; } });\nObject.defineProperty(exports, \"SchemaTextFieldPhonetics\", { enumerable: true, get: function () { return commands_2.SchemaTextFieldPhonetics; } });\nObject.defineProperty(exports, \"VectorAlgorithms\", { enumerable: true, get: function () { return commands_2.VectorAlgorithms; } });\nvar AGGREGATE_1 = require(\"./commands/AGGREGATE\");\nObject.defineProperty(exports, \"AggregateSteps\", { enumerable: true, get: function () { return AGGREGATE_1.AggregateSteps; } });\nObject.defineProperty(exports, \"AggregateGroupByReducers\", { enumerable: true, get: function () { return AGGREGATE_1.AggregateGroupByReducers; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timestamp, value, options) {\n const args = [\n 'TS.ADD',\n key,\n (0, _1.transformTimestampArgument)(timestamp),\n value.toString()\n ];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushEncodingArgument)(args, options?.ENCODING);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n if (options?.ON_DUPLICATE) {\n args.push('ON_DUPLICATE', options.ON_DUPLICATE);\n }\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n const args = ['TS.ALTER', key];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n (0, _1.pushDuplicatePolicy)(args, options?.DUPLICATE_POLICY);\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n const args = ['TS.CREATE', key];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushEncodingArgument)(args, options?.ENCODING);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n (0, _1.pushDuplicatePolicy)(args, options?.DUPLICATE_POLICY);\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(sourceKey, destinationKey, aggregationType, bucketDuration, alignTimestamp) {\n const args = [\n 'TS.CREATERULE',\n sourceKey,\n destinationKey,\n 'AGGREGATION',\n aggregationType,\n bucketDuration.toString()\n ];\n if (alignTimestamp) {\n args.push(alignTimestamp.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n return (0, _1.transformIncrDecrArguments)('TS.DECRBY', key, value, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRTS_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRTS_KEY_INDEX = 1;\nfunction transformArguments(key, fromTimestamp, toTimestamp) {\n return [\n 'TS.DEL',\n key,\n (0, _1.transformTimestampArgument)(fromTimestamp),\n (0, _1.transformTimestampArgument)(toTimestamp)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(sourceKey, destinationKey) {\n return [\n 'TS.DELETERULE',\n sourceKey,\n destinationKey\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n return (0, _1.pushLatestArgument)(['TS.GET', key], options?.LATEST);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply.length === 0)\n return null;\n return (0, _1.transformSampleReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n return (0, _1.transformIncrDecrArguments)('TS.INCRBY', key, value, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TS.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n totalSamples: reply[1],\n memoryUsage: reply[3],\n firstTimestamp: reply[5],\n lastTimestamp: reply[7],\n retentionTime: reply[9],\n chunkCount: reply[11],\n chunkSize: reply[13],\n chunkType: reply[15],\n duplicatePolicy: reply[17],\n labels: reply[19].map(([name, value]) => ({\n name,\n value\n })),\n sourceKey: reply[21],\n rules: reply[23].map(([key, timeBucket, aggregationType]) => ({\n key,\n timeBucket,\n aggregationType\n }))\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nconst INFO_1 = require(\"./INFO\");\nvar INFO_2 = require(\"./INFO\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return INFO_2.IS_READ_ONLY; } });\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return INFO_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key) {\n const args = (0, INFO_1.transformArguments)(key);\n args.push('DEBUG');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const reply = (0, INFO_1.transformReply)(rawReply);\n reply.keySelfName = rawReply[25];\n reply.chunks = rawReply[27].map(chunk => ({\n startTimestamp: chunk[1],\n endTimestamp: chunk[3],\n samples: chunk[5],\n size: chunk[7],\n bytesPerSample: chunk[9]\n }));\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toAdd) {\n const args = ['TS.MADD'];\n for (const { key, timestamp, value } of toAdd) {\n args.push(key, (0, _1.transformTimestampArgument)(timestamp), value.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter, options) {\n const args = (0, _1.pushLatestArgument)(['TS.MGET'], options?.LATEST);\n return (0, _1.pushFilterArgument)(args, filter);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([key, _, sample]) => ({\n key,\n sample: (0, _1.transformSampleReply)(sample)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter, options) {\n const args = (0, _1.pushWithLabelsArgument)(['TS.MGET'], options?.SELECTED_LABELS);\n return (0, _1.pushFilterArgument)(args, filter);\n}\nexports.transformArguments = transformArguments;\n;\nfunction transformReply(reply) {\n return reply.map(([key, labels, sample]) => ({\n key,\n labels: (0, _1.transformLablesReply)(labels),\n sample: (0, _1.transformSampleReply)(sample)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeArguments)(['TS.MRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeWithLabelsArguments)(['TS.MRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeWithLabelsReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeArguments)(['TS.MREVRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeWithLabelsArguments)(['TS.MREVRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeWithLabelsReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TS.QUERYINDEX'], filter);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fromTimestamp, toTimestamp, options) {\n return (0, _1.pushRangeArguments)(['TS.RANGE', key], fromTimestamp, toTimestamp, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return (0, _1.transformRangeReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fromTimestamp, toTimestamp, options) {\n return (0, _1.pushRangeArguments)(['TS.REVRANGE', key], fromTimestamp, toTimestamp, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return (0, _1.transformRangeReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushLatestArgument = exports.transformMRangeWithLabelsReply = exports.transformMRangeReply = exports.transformRangeReply = exports.pushMRangeWithLabelsArguments = exports.pushWithLabelsArgument = exports.pushMRangeArguments = exports.pushFilterArgument = exports.pushMRangeGroupByArguments = exports.pushRangeArguments = exports.TimeSeriesBucketTimestamp = exports.transformSampleReply = exports.transformIncrDecrArguments = exports.pushLabelsArgument = exports.transformLablesReply = exports.pushDuplicatePolicy = exports.pushChunkSizeArgument = exports.pushEncodingArgument = exports.TimeSeriesEncoding = exports.pushRetentionArgument = exports.transformTimestampArgument = exports.TimeSeriesReducers = exports.TimeSeriesDuplicatePolicies = exports.TimeSeriesAggregationType = void 0;\nconst ADD = require(\"./ADD\");\nconst ALTER = require(\"./ALTER\");\nconst CREATE = require(\"./CREATE\");\nconst CREATERULE = require(\"./CREATERULE\");\nconst DECRBY = require(\"./DECRBY\");\nconst DEL = require(\"./DEL\");\nconst DELETERULE = require(\"./DELETERULE\");\nconst GET = require(\"./GET\");\nconst INCRBY = require(\"./INCRBY\");\nconst INFO_DEBUG = require(\"./INFO_DEBUG\");\nconst INFO = require(\"./INFO\");\nconst MADD = require(\"./MADD\");\nconst MGET = require(\"./MGET\");\nconst MGET_WITHLABELS = require(\"./MGET_WITHLABELS\");\nconst QUERYINDEX = require(\"./QUERYINDEX\");\nconst RANGE = require(\"./RANGE\");\nconst REVRANGE = require(\"./REVRANGE\");\nconst MRANGE = require(\"./MRANGE\");\nconst MRANGE_WITHLABELS = require(\"./MRANGE_WITHLABELS\");\nconst MREVRANGE = require(\"./MREVRANGE\");\nconst MREVRANGE_WITHLABELS = require(\"./MREVRANGE_WITHLABELS\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n ADD,\n add: ADD,\n ALTER,\n alter: ALTER,\n CREATE,\n create: CREATE,\n CREATERULE,\n createRule: CREATERULE,\n DECRBY,\n decrBy: DECRBY,\n DEL,\n del: DEL,\n DELETERULE,\n deleteRule: DELETERULE,\n GET,\n get: GET,\n INCRBY,\n incrBy: INCRBY,\n INFO_DEBUG,\n infoDebug: INFO_DEBUG,\n INFO,\n info: INFO,\n MADD,\n mAdd: MADD,\n MGET,\n mGet: MGET,\n MGET_WITHLABELS,\n mGetWithLabels: MGET_WITHLABELS,\n QUERYINDEX,\n queryIndex: QUERYINDEX,\n RANGE,\n range: RANGE,\n REVRANGE,\n revRange: REVRANGE,\n MRANGE,\n mRange: MRANGE,\n MRANGE_WITHLABELS,\n mRangeWithLabels: MRANGE_WITHLABELS,\n MREVRANGE,\n mRevRange: MREVRANGE,\n MREVRANGE_WITHLABELS,\n mRevRangeWithLabels: MREVRANGE_WITHLABELS\n};\nvar TimeSeriesAggregationType;\n(function (TimeSeriesAggregationType) {\n TimeSeriesAggregationType[\"AVG\"] = \"AVG\";\n // @deprecated\n TimeSeriesAggregationType[\"AVERAGE\"] = \"AVG\";\n TimeSeriesAggregationType[\"FIRST\"] = \"FIRST\";\n TimeSeriesAggregationType[\"LAST\"] = \"LAST\";\n TimeSeriesAggregationType[\"MIN\"] = \"MIN\";\n // @deprecated\n TimeSeriesAggregationType[\"MINIMUM\"] = \"MIN\";\n TimeSeriesAggregationType[\"MAX\"] = \"MAX\";\n // @deprecated\n TimeSeriesAggregationType[\"MAXIMUM\"] = \"MAX\";\n TimeSeriesAggregationType[\"SUM\"] = \"SUM\";\n TimeSeriesAggregationType[\"RANGE\"] = \"RANGE\";\n TimeSeriesAggregationType[\"COUNT\"] = \"COUNT\";\n TimeSeriesAggregationType[\"STD_P\"] = \"STD.P\";\n TimeSeriesAggregationType[\"STD_S\"] = \"STD.S\";\n TimeSeriesAggregationType[\"VAR_P\"] = \"VAR.P\";\n TimeSeriesAggregationType[\"VAR_S\"] = \"VAR.S\";\n TimeSeriesAggregationType[\"TWA\"] = \"TWA\";\n})(TimeSeriesAggregationType = exports.TimeSeriesAggregationType || (exports.TimeSeriesAggregationType = {}));\nvar TimeSeriesDuplicatePolicies;\n(function (TimeSeriesDuplicatePolicies) {\n TimeSeriesDuplicatePolicies[\"BLOCK\"] = \"BLOCK\";\n TimeSeriesDuplicatePolicies[\"FIRST\"] = \"FIRST\";\n TimeSeriesDuplicatePolicies[\"LAST\"] = \"LAST\";\n TimeSeriesDuplicatePolicies[\"MIN\"] = \"MIN\";\n TimeSeriesDuplicatePolicies[\"MAX\"] = \"MAX\";\n TimeSeriesDuplicatePolicies[\"SUM\"] = \"SUM\";\n})(TimeSeriesDuplicatePolicies = exports.TimeSeriesDuplicatePolicies || (exports.TimeSeriesDuplicatePolicies = {}));\nvar TimeSeriesReducers;\n(function (TimeSeriesReducers) {\n TimeSeriesReducers[\"AVG\"] = \"AVG\";\n TimeSeriesReducers[\"SUM\"] = \"SUM\";\n TimeSeriesReducers[\"MIN\"] = \"MIN\";\n // @deprecated\n TimeSeriesReducers[\"MINIMUM\"] = \"MIN\";\n TimeSeriesReducers[\"MAX\"] = \"MAX\";\n // @deprecated\n TimeSeriesReducers[\"MAXIMUM\"] = \"MAX\";\n TimeSeriesReducers[\"RANGE\"] = \"range\";\n TimeSeriesReducers[\"COUNT\"] = \"COUNT\";\n TimeSeriesReducers[\"STD_P\"] = \"STD.P\";\n TimeSeriesReducers[\"STD_S\"] = \"STD.S\";\n TimeSeriesReducers[\"VAR_P\"] = \"VAR.P\";\n TimeSeriesReducers[\"VAR_S\"] = \"VAR.S\";\n})(TimeSeriesReducers = exports.TimeSeriesReducers || (exports.TimeSeriesReducers = {}));\nfunction transformTimestampArgument(timestamp) {\n if (typeof timestamp === 'string')\n return timestamp;\n return (typeof timestamp === 'number' ?\n timestamp :\n timestamp.getTime()).toString();\n}\nexports.transformTimestampArgument = transformTimestampArgument;\nfunction pushRetentionArgument(args, retention) {\n if (retention) {\n args.push('RETENTION', retention.toString());\n }\n return args;\n}\nexports.pushRetentionArgument = pushRetentionArgument;\nvar TimeSeriesEncoding;\n(function (TimeSeriesEncoding) {\n TimeSeriesEncoding[\"COMPRESSED\"] = \"COMPRESSED\";\n TimeSeriesEncoding[\"UNCOMPRESSED\"] = \"UNCOMPRESSED\";\n})(TimeSeriesEncoding = exports.TimeSeriesEncoding || (exports.TimeSeriesEncoding = {}));\nfunction pushEncodingArgument(args, encoding) {\n if (encoding) {\n args.push('ENCODING', encoding);\n }\n return args;\n}\nexports.pushEncodingArgument = pushEncodingArgument;\nfunction pushChunkSizeArgument(args, chunkSize) {\n if (chunkSize) {\n args.push('CHUNK_SIZE', chunkSize.toString());\n }\n return args;\n}\nexports.pushChunkSizeArgument = pushChunkSizeArgument;\nfunction pushDuplicatePolicy(args, duplicatePolicy) {\n if (duplicatePolicy) {\n args.push('DUPLICATE_POLICY', duplicatePolicy);\n }\n return args;\n}\nexports.pushDuplicatePolicy = pushDuplicatePolicy;\nfunction transformLablesReply(reply) {\n const labels = {};\n for (const [key, value] of reply) {\n labels[key] = value;\n }\n return labels;\n}\nexports.transformLablesReply = transformLablesReply;\nfunction pushLabelsArgument(args, labels) {\n if (labels) {\n args.push('LABELS');\n for (const [label, value] of Object.entries(labels)) {\n args.push(label, value);\n }\n }\n return args;\n}\nexports.pushLabelsArgument = pushLabelsArgument;\nfunction transformIncrDecrArguments(command, key, value, options) {\n const args = [\n command,\n key,\n value.toString()\n ];\n if (options?.TIMESTAMP !== undefined && options?.TIMESTAMP !== null) {\n args.push('TIMESTAMP', transformTimestampArgument(options.TIMESTAMP));\n }\n pushRetentionArgument(args, options?.RETENTION);\n if (options?.UNCOMPRESSED) {\n args.push('UNCOMPRESSED');\n }\n pushChunkSizeArgument(args, options?.CHUNK_SIZE);\n pushLabelsArgument(args, options?.LABELS);\n return args;\n}\nexports.transformIncrDecrArguments = transformIncrDecrArguments;\nfunction transformSampleReply(reply) {\n return {\n timestamp: reply[0],\n value: Number(reply[1])\n };\n}\nexports.transformSampleReply = transformSampleReply;\nvar TimeSeriesBucketTimestamp;\n(function (TimeSeriesBucketTimestamp) {\n TimeSeriesBucketTimestamp[\"LOW\"] = \"-\";\n TimeSeriesBucketTimestamp[\"HIGH\"] = \"+\";\n TimeSeriesBucketTimestamp[\"MID\"] = \"~\";\n})(TimeSeriesBucketTimestamp = exports.TimeSeriesBucketTimestamp || (exports.TimeSeriesBucketTimestamp = {}));\nfunction pushRangeArguments(args, fromTimestamp, toTimestamp, options) {\n args.push(transformTimestampArgument(fromTimestamp), transformTimestampArgument(toTimestamp));\n pushLatestArgument(args, options?.LATEST);\n if (options?.FILTER_BY_TS) {\n args.push('FILTER_BY_TS');\n for (const ts of options.FILTER_BY_TS) {\n args.push(transformTimestampArgument(ts));\n }\n }\n if (options?.FILTER_BY_VALUE) {\n args.push('FILTER_BY_VALUE', options.FILTER_BY_VALUE.min.toString(), options.FILTER_BY_VALUE.max.toString());\n }\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (options?.ALIGN) {\n args.push('ALIGN', transformTimestampArgument(options.ALIGN));\n }\n if (options?.AGGREGATION) {\n args.push('AGGREGATION', options.AGGREGATION.type, transformTimestampArgument(options.AGGREGATION.timeBucket));\n if (options.AGGREGATION.BUCKETTIMESTAMP) {\n args.push('BUCKETTIMESTAMP', options.AGGREGATION.BUCKETTIMESTAMP);\n }\n if (options.AGGREGATION.EMPTY) {\n args.push('EMPTY');\n }\n }\n return args;\n}\nexports.pushRangeArguments = pushRangeArguments;\nfunction pushMRangeGroupByArguments(args, groupBy) {\n if (groupBy) {\n args.push('GROUPBY', groupBy.label, 'REDUCE', groupBy.reducer);\n }\n return args;\n}\nexports.pushMRangeGroupByArguments = pushMRangeGroupByArguments;\nfunction pushFilterArgument(args, filter) {\n args.push('FILTER');\n return (0, generic_transformers_1.pushVerdictArguments)(args, filter);\n}\nexports.pushFilterArgument = pushFilterArgument;\nfunction pushMRangeArguments(args, fromTimestamp, toTimestamp, filter, options) {\n args = pushRangeArguments(args, fromTimestamp, toTimestamp, options);\n args = pushFilterArgument(args, filter);\n return pushMRangeGroupByArguments(args, options?.GROUPBY);\n}\nexports.pushMRangeArguments = pushMRangeArguments;\nfunction pushWithLabelsArgument(args, selectedLabels) {\n if (!selectedLabels) {\n args.push('WITHLABELS');\n }\n else {\n args.push('SELECTED_LABELS');\n args = (0, generic_transformers_1.pushVerdictArguments)(args, selectedLabels);\n }\n return args;\n}\nexports.pushWithLabelsArgument = pushWithLabelsArgument;\nfunction pushMRangeWithLabelsArguments(args, fromTimestamp, toTimestamp, filter, options) {\n args = pushRangeArguments(args, fromTimestamp, toTimestamp, options);\n args = pushWithLabelsArgument(args, options?.SELECTED_LABELS);\n args = pushFilterArgument(args, filter);\n return pushMRangeGroupByArguments(args, options?.GROUPBY);\n}\nexports.pushMRangeWithLabelsArguments = pushMRangeWithLabelsArguments;\nfunction transformRangeReply(reply) {\n return reply.map(transformSampleReply);\n}\nexports.transformRangeReply = transformRangeReply;\nfunction transformMRangeReply(reply) {\n const args = [];\n for (const [key, _, sample] of reply) {\n args.push({\n key,\n samples: sample.map(transformSampleReply)\n });\n }\n return args;\n}\nexports.transformMRangeReply = transformMRangeReply;\nfunction transformMRangeWithLabelsReply(reply) {\n const args = [];\n for (const [key, labels, samples] of reply) {\n args.push({\n key,\n labels: transformLablesReply(labels),\n samples: samples.map(transformSampleReply)\n });\n }\n return args;\n}\nexports.transformMRangeWithLabelsReply = transformMRangeWithLabelsReply;\nfunction pushLatestArgument(args, latest) {\n if (latest) {\n args.push('LATEST');\n }\n return args;\n}\nexports.pushLatestArgument = pushLatestArgument;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeSeriesBucketTimestamp = exports.TimeSeriesReducers = exports.TimeSeriesAggregationType = exports.TimeSeriesEncoding = exports.TimeSeriesDuplicatePolicies = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar commands_2 = require(\"./commands\");\nObject.defineProperty(exports, \"TimeSeriesDuplicatePolicies\", { enumerable: true, get: function () { return commands_2.TimeSeriesDuplicatePolicies; } });\nObject.defineProperty(exports, \"TimeSeriesEncoding\", { enumerable: true, get: function () { return commands_2.TimeSeriesEncoding; } });\nObject.defineProperty(exports, \"TimeSeriesAggregationType\", { enumerable: true, get: function () { return commands_2.TimeSeriesAggregationType; } });\nObject.defineProperty(exports, \"TimeSeriesReducers\", { enumerable: true, get: function () { return commands_2.TimeSeriesReducers; } });\nObject.defineProperty(exports, \"TimeSeriesBucketTimestamp\", { enumerable: true, get: function () { return commands_2.TimeSeriesBucketTimestamp; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst events_1 = require(\"events\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst promisify_1 = __importDefault(require(\"./promisify\"));\nconst debug = debug_1.default('agent-base');\nfunction isAgent(v) {\n return Boolean(v) && typeof v.addRequest === 'function';\n}\nfunction isSecureEndpoint() {\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n}\nfunction createAgent(callback, opts) {\n return new createAgent.Agent(callback, opts);\n}\n(function (createAgent) {\n /**\n * Base `http.Agent` implementation.\n * No pooling/keep-alive is implemented by default.\n *\n * @param {Function} callback\n * @api public\n */\n class Agent extends events_1.EventEmitter {\n constructor(callback, _opts) {\n super();\n let opts = _opts;\n if (typeof callback === 'function') {\n this.callback = callback;\n }\n else if (callback) {\n opts = callback;\n }\n // Timeout for the socket to be returned from the callback\n this.timeout = null;\n if (opts && typeof opts.timeout === 'number') {\n this.timeout = opts.timeout;\n }\n // These aren't actually used by `agent-base`, but are required\n // for the TypeScript definition files in `@types/node` :/\n this.maxFreeSockets = 1;\n this.maxSockets = 1;\n this.maxTotalSockets = Infinity;\n this.sockets = {};\n this.freeSockets = {};\n this.requests = {};\n this.options = {};\n }\n get defaultPort() {\n if (typeof this.explicitDefaultPort === 'number') {\n return this.explicitDefaultPort;\n }\n return isSecureEndpoint() ? 443 : 80;\n }\n set defaultPort(v) {\n this.explicitDefaultPort = v;\n }\n get protocol() {\n if (typeof this.explicitProtocol === 'string') {\n return this.explicitProtocol;\n }\n return isSecureEndpoint() ? 'https:' : 'http:';\n }\n set protocol(v) {\n this.explicitProtocol = v;\n }\n callback(req, opts, fn) {\n throw new Error('\"agent-base\" has no default implementation, you must subclass and override `callback()`');\n }\n /**\n * Called by node-core's \"_http_client.js\" module when creating\n * a new HTTP request with this Agent instance.\n *\n * @api public\n */\n addRequest(req, _opts) {\n const opts = Object.assign({}, _opts);\n if (typeof opts.secureEndpoint !== 'boolean') {\n opts.secureEndpoint = isSecureEndpoint();\n }\n if (opts.host == null) {\n opts.host = 'localhost';\n }\n if (opts.port == null) {\n opts.port = opts.secureEndpoint ? 443 : 80;\n }\n if (opts.protocol == null) {\n opts.protocol = opts.secureEndpoint ? 'https:' : 'http:';\n }\n if (opts.host && opts.path) {\n // If both a `host` and `path` are specified then it's most\n // likely the result of a `url.parse()` call... we need to\n // remove the `path` portion so that `net.connect()` doesn't\n // attempt to open that as a unix socket file.\n delete opts.path;\n }\n delete opts.agent;\n delete opts.hostname;\n delete opts._defaultAgent;\n delete opts.defaultPort;\n delete opts.createConnection;\n // Hint to use \"Connection: close\"\n // XXX: non-documented `http` module API :(\n req._last = true;\n req.shouldKeepAlive = false;\n let timedOut = false;\n let timeoutId = null;\n const timeoutMs = opts.timeout || this.timeout;\n const onerror = (err) => {\n if (req._hadError)\n return;\n req.emit('error', err);\n // For Safety. Some additional errors might fire later on\n // and we need to make sure we don't double-fire the error event.\n req._hadError = true;\n };\n const ontimeout = () => {\n timeoutId = null;\n timedOut = true;\n const err = new Error(`A \"socket\" was not created for HTTP request before ${timeoutMs}ms`);\n err.code = 'ETIMEOUT';\n onerror(err);\n };\n const callbackError = (err) => {\n if (timedOut)\n return;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n onerror(err);\n };\n const onsocket = (socket) => {\n if (timedOut)\n return;\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (isAgent(socket)) {\n // `socket` is actually an `http.Agent` instance, so\n // relinquish responsibility for this `req` to the Agent\n // from here on\n debug('Callback returned another Agent instance %o', socket.constructor.name);\n socket.addRequest(req, opts);\n return;\n }\n if (socket) {\n socket.once('free', () => {\n this.freeSocket(socket, opts);\n });\n req.onSocket(socket);\n return;\n }\n const err = new Error(`no Duplex stream was returned to agent-base for \\`${req.method} ${req.path}\\``);\n onerror(err);\n };\n if (typeof this.callback !== 'function') {\n onerror(new Error('`callback` is not defined'));\n return;\n }\n if (!this.promisifiedCallback) {\n if (this.callback.length >= 3) {\n debug('Converting legacy callback function to promise');\n this.promisifiedCallback = promisify_1.default(this.callback);\n }\n else {\n this.promisifiedCallback = this.callback;\n }\n }\n if (typeof timeoutMs === 'number' && timeoutMs > 0) {\n timeoutId = setTimeout(ontimeout, timeoutMs);\n }\n if ('port' in opts && typeof opts.port !== 'number') {\n opts.port = Number(opts.port);\n }\n try {\n debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`);\n Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError);\n }\n catch (err) {\n Promise.reject(err).catch(callbackError);\n }\n }\n freeSocket(socket, opts) {\n debug('Freeing socket %o %o', socket.constructor.name, opts);\n socket.destroy();\n }\n destroy() {\n debug('Destroying agent %o', this.constructor.name);\n }\n }\n createAgent.Agent = Agent;\n // So that `instanceof` works correctly\n createAgent.prototype = createAgent.Agent.prototype;\n})(createAgent || (createAgent = {}));\nmodule.exports = createAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisify(fn) {\n return function (req, opts) {\n return new Promise((resolve, reject) => {\n fn.call(this, req, opts, (err, rtn) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(rtn);\n }\n });\n });\n };\n}\nexports.default = promisify;\n//# sourceMappingURL=promisify.js.map","module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n","// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n","var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n","module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n","var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n","// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n","var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n","var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","var _ = require(\"underscore\")._;\n\nvar LocalStorageBackend = function(options) {\n var options = options || {};\n var name = options.name || Math.floor(Math.random() * 100000);\n\n this.prefix = 'classifier.bayesian.' + name;\n\n if (options.testing) {\n this.storage = {};\n }\n else {\n this.storage = localStorage;\n }\n\n this.storage[this.prefix + '.cats'] = '{}';\n}\n\nLocalStorageBackend.prototype = {\n async : false,\n\n getCats : function() {\n return JSON.parse(this.storage[this.prefix + '.cats']);\n },\n\n setCats : function(cats) {\n this.storage[this.prefix + '.cats'] = JSON.stringify(cats);\n },\n\n getWordCount : function(word) {\n return JSON.parse(this.storage[this.prefix + '.words.' + word] || '{}');\n },\n\n setWordCount : function(word, counts) {\n this.storage[this.prefix + '.words.' + word] = JSON.stringify(counts);\n },\n\n getWordCounts : function(words) {\n var counts = {};\n words.forEach(function(word) {\n counts[word] = this.getWordCount(word);\n }, this);\n return counts;\n },\n\n incCounts : function(catIncs, wordIncs) {\n var cats = this.getCats();\n _(catIncs).each(function(inc, cat) {\n cats[cat] = cats[cat] + inc || inc;\n }, this);\n this.setCats(cats);\n\n _(wordIncs).each(function(incs, word) {\n var wordCounts = this.getWordCount(word);\n _(incs).each(function(inc, cat) {\n wordCounts[cat] = wordCounts[cat] + inc || inc;\n }, this);\n this.setWordCount(word, wordCounts);\n }, this);\n },\n\n toJSON : function() {\n var words = {};\n var regex = new RegExp(\"^\" + this.prefix + \"\\.words\\.(.+)$\")\n for (var item in this.storage) {\n var match = regex.exec(item);\n if (match) {\n words[match[1]] = JSON.parse(this.storage[item]);\n }\n }\n return {\n cats: JSON.parse(this.storage[this.prefix + '.cats']),\n words: words\n };\n },\n\n fromJSON : function(json) {\n this.incCounts(json.cats, json.words);\n }\n}\n\nexports.LocalStorageBackend = LocalStorageBackend;","var _ = require(\"underscore\")._;\n\nvar MemoryBackend = function() {\n this.catCounts = {};\n this.wordCounts = {};\n}\n\nMemoryBackend.prototype = {\n async : false,\n\n incCounts : function(catIncs, wordIncs) {\n _(catIncs).each(function(inc, cat) {\n this.catCounts[cat] = this.catCounts[cat] + inc || inc;\n }, this);\n\n _(wordIncs).each(function(incs, word) {\n this.wordCounts[word] = this.wordCounts[word] || {};\n _(incs).each(function(inc, cat) {\n this.wordCounts[word][cat] = this.wordCounts[word][cat] + inc || inc;\n }, this);\n }, this);\n },\n\n getCats : function() {\n return this.catCounts;\n },\n\n getWordCounts : function(words, cats) {\n return this.wordCounts;\n },\n \n toJSON : function() {\n return {cats: this.catCounts, words: this.wordCounts}\n },\n \n fromJSON : function(json) {\n this.catCounts = json.cats;\n this.wordCounts = json.words;\n }\n}\n\nexports.MemoryBackend = MemoryBackend;","var redis = require(\"redis\"),\n _ = require(\"underscore\")._;\n\nvar RedisBackend = function(options) {\n options = options || {};\n var port = options.port || 6379;\n var host = options.hostname || \"localhost\";\n var opts = options.options || {};\n\n this.client = function() {\n var client = redis.createClient(port, host, opts);\n if (options.error) {\n client.on('error', options.error);\n }\n if (options.password) {\n client.auth(options.password, options.error);\n }\n return client;\n }\n\n var name = options.name || Math.floor(Math.random() * 100000);\n this.catsKey = 'classifier_bayes_cats_' + name;\n this.wordsKey = 'classifier_bayes_words_' + name;\n\n if (options.db) {\n this.client().select(options.db);\n }\n}\n\nRedisBackend.prototype = {\n async : true,\n\n key : function(word, cat) {\n return word + \"____\" + cat; // flatten word count hash\n },\n\n pair : function(key) {\n return /(.*)____(.*)/.exec(key).slice(1);\n },\n\n incCounts : function(catIncs, wordIncs, callback) {\n // create new client for each call so we can close each time\n var client = this.client();\n var multi = client.multi(); // make multi so we can have one callback\n\n _(catIncs).each(function(inc, cat) {\n multi.hincrby(this.catsKey, cat, inc);\n }, this);\n\n _(wordIncs).each(function(wordCounts, word) {\n _(wordCounts).each(function(inc, cat) {\n multi.hincrby(this.wordsKey, this.key(word, cat), inc);\n }, this);\n }, this);\n\n multi.exec(function(err, ret) {\n if (callback) {\n callback(ret);\n }\n client.quit();\n });\n },\n\n getCats : function(callback) {\n var client = this.client();\n client.hgetall(this.catsKey, function(err, cats) {\n _(cats).each(function(val, cat) {\n cats[cat] = parseInt(val);\n });\n callback(cats);\n client.quit();\n });\n },\n\n getWordCounts : function(words, cats, callback) {\n var keys = _(words).reduce(function(keys, word) {\n return keys.concat(_(cats).map(function(count, cat) {\n return this.key(word, cat);\n },this));\n }, [], this);\n\n var that = this;\n var args = [this.wordsKey].concat(keys);\n var client = this.client();\n\n client.hmget(args, function(err, vals) {\n var counts = {};\n keys.map(function(key, i) {\n var pair = that.pair(key);\n var word = pair[0], cat = pair[1];\n counts[word] = counts[word] ? counts[word] : {};\n counts[word][cat] = parseInt(vals[i]) || 0;\n });\n\n callback(counts);\n client.quit();\n });\n },\n\n toJSON: function(callback) {\n var that = this;\n this.getCats(function(cats) {\n var client = that.client();\n\n client.hgetall(that.wordsKey, function(err, wordCounts) {\n var words = {};\n for (var key in wordCounts) {\n var pair = that.pair(key);\n var word = pair[0], cat = pair[1];\n words[word] = words[word] ? words[word] : {};\n words[word][cat] = parseInt(wordCounts[key]) || 0;\n }\n\n callback({cats: cats, words: words});\n client.quit();\n });\n });\n },\n\n fromJSON: function(json, callback) {\n this.incCounts(json.cats, json.words, callback);\n }\n}\n\nexports.RedisBackend = RedisBackend;\n","var _ = require(\"underscore\")._;\n\nvar Bayesian = function(options) {\n options = options || {}\n this.thresholds = options.thresholds || {};\n this.default = options.default || 'unclassified';\n this.weight = options.weight || 1;\n this.assumed = options.assumed || 0.5;\n\n var backend = options.backend || { type: 'memory' };\n switch(backend.type.toLowerCase()) {\n case 'redis':\n this.backend = new (require(\"./backends/redis\").RedisBackend)(backend.options);\n break;\n case 'localstorage':\n this.backend = new (require(\"./backends/localStorage\")\n .LocalStorageBackend)(backend.options);\n break;\n default:\n this.backend = new (require(\"./backends/memory\").MemoryBackend)();\n }\n}\n\nBayesian.prototype = {\n getCats : function(callback) {\n return this.backend.getCats(callback);\n },\n\n getWordCounts : function(words, cats, callback) {\n return this.backend.getWordCounts(words, cats, callback);\n },\n\n incDocCounts : function(docs, callback) {\n // accumulate all the pending increments\n var wordIncs = {};\n var catIncs = {};\n docs.forEach(function(doc) {\n var cat = doc.cat;\n catIncs[cat] = catIncs[cat] ? catIncs[cat] + 1 : 1;\n\n var words = this.getWords(doc.doc);\n words.forEach(function(word) {\n wordIncs[word] = wordIncs[word] || {};\n wordIncs[word][cat] = wordIncs[word][cat] ? wordIncs[word][cat] + 1 : 1;\n }, this);\n }, this);\n\n return this.backend.incCounts(catIncs, wordIncs, callback);\n },\n\n setThresholds : function(thresholds) {\n this.thresholds = thresholds;\n },\n\n getWords : function(doc) {\n if (_(doc).isArray()) {\n return doc;\n }\n var words = doc.split(/\\W+/);\n return _(words).uniq();\n },\n\n train : function(doc, cat, callback) {\n this.incDocCounts([{doc: doc, cat: cat}], function(err, ret) {\n if (callback) {\n callback(ret);\n }\n });\n },\n\n trainAll : function(data, callback) {\n data = data.map(function(item) {\n return {doc: item.input, cat: item.output};\n });\n this.incDocCounts(data, function(err, ret) {\n if (callback) {\n callback(ret);\n }\n });\n },\n\n wordProb : function(word, cat, cats, counts) {\n // times word appears in a doc in this cat / docs in this cat\n var prob = (counts[cat] || 0) / cats[cat];\n\n // get weighted average with assumed so prob won't be extreme on rare words\n var total = _(cats).reduce(function(sum, p, cat) {\n return sum + (counts[cat] || 0);\n }, 0, this);\n return (this.weight * this.assumed + total * prob) / (this.weight + total);\n },\n\n getCatProbs : function(cats, words, counts) {\n var numDocs = _(cats).reduce(function(sum, count) {\n return sum + count;\n }, 0);\n\n var probs = {};\n _(cats).each(function(catCount, cat) {\n var catProb = (catCount || 0) / numDocs;\n\n var docProb = _(words).reduce(function(prob, word) {\n var wordCounts = counts[word] || {};\n return prob * this.wordProb(word, cat, cats, wordCounts);\n }, 1, this);\n\n // the probability this doc is in this category\n probs[cat] = catProb * docProb;\n }, this);\n return probs;\n },\n\n getProbs : function(doc, callback) {\n var that = this;\n this.getCats(function(cats) {\n var words = that.getWords(doc);\n that.getWordCounts(words, cats, function(counts) {\n var probs = that.getCatProbs(cats, words, counts);\n callback(probs);\n });\n });\n },\n\n getProbsSync : function(doc) {\n var words = this.getWords(doc);\n var cats = this.getCats();\n var counts = this.getWordCounts(words, cats);\n return this.getCatProbs(cats, words, counts);\n },\n\n bestMatch : function(probs) {\n var max = _(probs).reduce(function(max, prob, cat) {\n return max.prob > prob ? max : {cat: cat, prob: prob};\n }, {prob: 0});\n\n var category = max.cat || this.default;\n var threshold = this.thresholds[max.cat] || 1;\n\n _(probs).map(function(prob, cat) {\n if (!(cat == max.cat) && prob * threshold > max.prob) {\n category = this.default; // not greater than other category by enough\n }\n }, this);\n\n return category;\n },\n\n classify : function(doc, callback) {\n if (!this.backend.async) {\n return this.classifySync(doc);\n }\n\n var that = this;\n this.getProbs(doc, function(probs) {\n callback(that.bestMatch(probs));\n });\n },\n\n classifySync : function(doc) {\n var probs = this.getProbsSync(doc);\n return this.bestMatch(probs);\n },\n\n test : function(data) {\n // misclassification error\n var error = 0;\n data.forEach(function(datum) {\n var output = this.classify(datum.input);\n error += output == datum.output ? 0 : 1;\n }, this);\n return error / data.length;\n },\n\n toJSON : function(callback) {\n return this.backend.toJSON(callback);\n },\n\n fromJSON : function(json, callback) {\n this.backend.fromJSON(json, callback);\n return this;\n }\n}\n\nexports.Bayesian = Bayesian;\n","/*\n * Copyright 2001-2010 Georges Menie (www.menie.org)\n * Copyright 2010 Salvatore Sanfilippo (adapted to Redis coding style)\n * Copyright 2015 Zihua Li (http://zihua.li) (ported to JavaScript)\n * Copyright 2016 Mike Diarmid (http://github.com/salakar) (re-write for performance, ~700% perf inc)\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of the University of California, Berkeley nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* CRC16 implementation according to CCITT standards.\n *\n * Note by @antirez: this is actually the XMODEM CRC 16 algorithm, using the\n * following parameters:\n *\n * Name : \"XMODEM\", also known as \"ZMODEM\", \"CRC-16/ACORN\"\n * Width : 16 bit\n * Poly : 1021 (That is actually x^16 + x^12 + x^5 + 1)\n * Initialization : 0000\n * Reflect Input byte : False\n * Reflect Output CRC : False\n * Xor constant to output CRC : 0000\n * Output for \"123456789\" : 31C3\n */\n\nvar lookup = [\n 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,\n 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,\n 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,\n 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,\n 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,\n 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,\n 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,\n 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,\n 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,\n 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,\n 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,\n 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,\n 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,\n 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,\n 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,\n 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,\n 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,\n 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,\n 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,\n 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,\n 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,\n 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,\n 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,\n 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,\n 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,\n 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,\n 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,\n 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,\n 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,\n 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,\n 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,\n 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0\n];\n\n/**\n * Convert a string to a UTF8 array - faster than via buffer\n * @param str\n * @returns {Array}\n */\nvar toUTF8Array = function toUTF8Array(str) {\n var char;\n var i = 0;\n var p = 0;\n var utf8 = [];\n var len = str.length;\n\n for (; i < len; i++) {\n char = str.charCodeAt(i);\n if (char < 128) {\n utf8[p++] = char;\n } else if (char < 2048) {\n utf8[p++] = (char >> 6) | 192;\n utf8[p++] = (char & 63) | 128;\n } else if (\n ((char & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n char = 0x10000 + ((char & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF);\n utf8[p++] = (char >> 18) | 240;\n utf8[p++] = ((char >> 12) & 63) | 128;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n } else {\n utf8[p++] = (char >> 12) | 224;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n }\n }\n\n return utf8;\n};\n\n/**\n * Convert a string into a redis slot hash.\n * @param str\n * @returns {number}\n */\nvar generate = module.exports = function generate(str) {\n var char;\n var i = 0;\n var start = -1;\n var result = 0;\n var resultHash = 0;\n var utf8 = typeof str === 'string' ? toUTF8Array(str) : str;\n var len = utf8.length;\n\n while (i < len) {\n char = utf8[i++];\n if (start === -1) {\n if (char === 0x7B) {\n start = i;\n }\n } else if (char !== 0x7D) {\n resultHash = lookup[(char ^ (resultHash >> 8)) & 0xFF] ^ (resultHash << 8);\n } else if (i - 1 !== start) {\n return resultHash & 0x3FFF;\n }\n\n result = lookup[(char ^ (result >> 8)) & 0xFF] ^ (result << 8);\n }\n\n return result & 0x3FFF;\n};\n\n/**\n * Convert an array of multiple strings into a redis slot hash.\n * Returns -1 if one of the keys is not for the same slot as the others\n * @param keys\n * @returns {number}\n */\nmodule.exports.generateMulti = function generateMulti(keys) {\n var i = 1;\n var len = keys.length;\n var base = generate(keys[0]);\n\n while (i < len) {\n if (generate(keys[i++]) !== base) return -1;\n }\n\n return base;\n};\n","var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\n// Error types with codes\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\"\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n abortRequest(this._currentRequest);\n this.emit(\"abort\");\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230§5.3.1: When making a request directly to an origin server, […]\n // a client MUST send only the absolute path […] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, […]\n // a client MUST send the target URI in absolute-form […].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n abortRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n this.emit(\"error\", new TooManyRedirectsError());\n return;\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = url.parse(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Determine the URL of the redirection\n var redirectUrl;\n try {\n redirectUrl = url.resolve(currentUrl, location);\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError({ cause: cause }));\n return;\n }\n\n // Create the redirected request\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrlParts.protocol !== currentUrlParts.protocol &&\n redirectUrlParts.protocol !== \"https:\" ||\n redirectUrlParts.host !== currentHost &&\n !isSubdomain(redirectUrlParts.host, currentHost)) {\n removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n try {\n beforeRedirect(this._options, responseDetails, requestDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError({ cause: cause }));\n }\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters\n if (isString(input)) {\n var parsed;\n try {\n parsed = urlToOptions(new URL(input));\n }\n catch (err) {\n /* istanbul ignore next */\n parsed = url.parse(input);\n }\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n input = parsed;\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n Error.captureStackTrace(this, this.constructor);\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n return CustomError;\n}\n\nfunction abortRequest(request) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.abort();\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (util.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity –> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function(boundary) {\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function() {\n var dataBuffer = new Buffer.alloc( 0 );\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n\n // Add content to the buffer.\n if(Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);\n }else {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n","// populates missing values\nmodule.exports = function(dst, src) {\n\n Object.keys(src).forEach(function(prop)\n {\n dst[prop] = dst[prop] || src[prop];\n });\n\n return dst;\n};\n","const Pool = require(\"./lib/Pool\");\nconst Deque = require(\"./lib/Deque\");\nconst PriorityQueue = require(\"./lib/PriorityQueue\");\nconst DefaultEvictor = require(\"./lib/DefaultEvictor\");\nmodule.exports = {\n Pool: Pool,\n Deque: Deque,\n PriorityQueue: PriorityQueue,\n DefaultEvictor: DefaultEvictor,\n createPool: function(factory, config) {\n return new Pool(DefaultEvictor, Deque, PriorityQueue, factory, config);\n }\n};\n","\"use strict\";\n\nclass DefaultEvictor {\n evict(config, pooledResource, availableObjectsCount) {\n const idleTime = Date.now() - pooledResource.lastIdleTime;\n\n if (\n config.softIdleTimeoutMillis > 0 &&\n config.softIdleTimeoutMillis < idleTime &&\n config.min < availableObjectsCount\n ) {\n return true;\n }\n\n if (config.idleTimeoutMillis < idleTime) {\n return true;\n }\n\n return false;\n }\n}\n\nmodule.exports = DefaultEvictor;\n","\"use strict\";\n\n/**\n * This is apparently a bit like a Jquery deferred, hence the name\n */\n\nclass Deferred {\n constructor(Promise) {\n this._state = Deferred.PENDING;\n this._resolve = undefined;\n this._reject = undefined;\n\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get state() {\n return this._state;\n }\n\n get promise() {\n return this._promise;\n }\n\n reject(reason) {\n if (this._state !== Deferred.PENDING) {\n return;\n }\n this._state = Deferred.REJECTED;\n this._reject(reason);\n }\n\n resolve(value) {\n if (this._state !== Deferred.PENDING) {\n return;\n }\n this._state = Deferred.FULFILLED;\n this._resolve(value);\n }\n}\n\n// TODO: should these really live here? or be a seperate 'state' enum\nDeferred.PENDING = \"PENDING\";\nDeferred.FULFILLED = \"FULFILLED\";\nDeferred.REJECTED = \"REJECTED\";\n\nmodule.exports = Deferred;\n","\"use strict\";\n\nconst DoublyLinkedList = require(\"./DoublyLinkedList\");\nconst DequeIterator = require(\"./DequeIterator\");\n/**\n * DoublyLinkedList backed double ended queue\n * implements just enough to keep the Pool\n */\nclass Deque {\n constructor() {\n this._list = new DoublyLinkedList();\n }\n\n /**\n * removes and returns the first element from the queue\n * @return {any} [description]\n */\n shift() {\n if (this.length === 0) {\n return undefined;\n }\n\n const node = this._list.head;\n this._list.remove(node);\n\n return node.data;\n }\n\n /**\n * adds one elemts to the beginning of the queue\n * @param {any} element [description]\n * @return {any} [description]\n */\n unshift(element) {\n const node = DoublyLinkedList.createNode(element);\n\n this._list.insertBeginning(node);\n }\n\n /**\n * adds one to the end of the queue\n * @param {any} element [description]\n * @return {any} [description]\n */\n push(element) {\n const node = DoublyLinkedList.createNode(element);\n\n this._list.insertEnd(node);\n }\n\n /**\n * removes and returns the last element from the queue\n */\n pop() {\n if (this.length === 0) {\n return undefined;\n }\n\n const node = this._list.tail;\n this._list.remove(node);\n\n return node.data;\n }\n\n [Symbol.iterator]() {\n return new DequeIterator(this._list);\n }\n\n iterator() {\n return new DequeIterator(this._list);\n }\n\n reverseIterator() {\n return new DequeIterator(this._list, true);\n }\n\n /**\n * get a reference to the item at the head of the queue\n * @return {any} [description]\n */\n get head() {\n if (this.length === 0) {\n return undefined;\n }\n const node = this._list.head;\n return node.data;\n }\n\n /**\n * get a reference to the item at the tail of the queue\n * @return {any} [description]\n */\n get tail() {\n if (this.length === 0) {\n return undefined;\n }\n const node = this._list.tail;\n return node.data;\n }\n\n get length() {\n return this._list.length;\n }\n}\n\nmodule.exports = Deque;\n","\"use strict\";\n\nconst DoublyLinkedListIterator = require(\"./DoublyLinkedListIterator\");\n/**\n * Thin wrapper around an underlying DDL iterator\n */\nclass DequeIterator extends DoublyLinkedListIterator {\n next() {\n const result = super.next();\n\n // unwrap the node...\n if (result.value) {\n result.value = result.value.data;\n }\n\n return result;\n }\n}\n\nmodule.exports = DequeIterator;\n","\"use strict\";\n\n/**\n * A Doubly Linked List, because there aren't enough in the world...\n * this is pretty much a direct JS port of the one wikipedia\n * https://en.wikipedia.org/wiki/Doubly_linked_list\n *\n * For most usage 'insertBeginning' and 'insertEnd' should be enough\n *\n * nodes are expected to something like a POJSO like\n * {\n * prev: null,\n * next: null,\n * something: 'whatever you like'\n * }\n */\nclass DoublyLinkedList {\n constructor() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n insertBeginning(node) {\n if (this.head === null) {\n this.head = node;\n this.tail = node;\n node.prev = null;\n node.next = null;\n this.length++;\n } else {\n this.insertBefore(this.head, node);\n }\n }\n\n insertEnd(node) {\n if (this.tail === null) {\n this.insertBeginning(node);\n } else {\n this.insertAfter(this.tail, node);\n }\n }\n\n insertAfter(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next === null) {\n this.tail = newNode;\n } else {\n node.next.prev = newNode;\n }\n node.next = newNode;\n this.length++;\n }\n\n insertBefore(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev === null) {\n this.head = newNode;\n } else {\n node.prev.next = newNode;\n }\n node.prev = newNode;\n this.length++;\n }\n\n remove(node) {\n if (node.prev === null) {\n this.head = node.next;\n } else {\n node.prev.next = node.next;\n }\n if (node.next === null) {\n this.tail = node.prev;\n } else {\n node.next.prev = node.prev;\n }\n node.prev = null;\n node.next = null;\n this.length--;\n }\n\n // FIXME: this should not live here and has become a dumping ground...\n static createNode(data) {\n return {\n prev: null,\n next: null,\n data: data\n };\n }\n}\n\nmodule.exports = DoublyLinkedList;\n","\"use strict\";\n\n/**\n * Creates an interator for a DoublyLinkedList starting at the given node\n * It's internal cursor will remains relative to the last \"iterated\" node as that\n * node moves through the list until it either iterates to the end of the list,\n * or the the node it's tracking is removed from the list. Until the first 'next'\n * call it tracks the head/tail of the linked list. This means that one can create\n * an iterator on an empty list, then add nodes, and then the iterator will follow\n * those nodes. Because the DoublyLinkedList nodes don't track their owning \"list\" and\n * it's highly inefficient to walk the list for every iteration, the iterator won't know\n * if the node has been detached from one List and added to another list, or if the iterator\n *\n * The created object is an es6 compatible iterator\n */\nclass DoublyLinkedListIterator {\n /**\n * @param {Object} doublyLinkedList a node that is part of a doublyLinkedList\n * @param {Boolean} [reverse=false] is this a reverse iterator? default: false\n */\n constructor(doublyLinkedList, reverse) {\n this._list = doublyLinkedList;\n // NOTE: these key names are tied to the DoublyLinkedListIterator\n this._direction = reverse === true ? \"prev\" : \"next\";\n this._startPosition = reverse === true ? \"tail\" : \"head\";\n this._started = false;\n this._cursor = null;\n this._done = false;\n }\n\n _start() {\n this._cursor = this._list[this._startPosition];\n this._started = true;\n }\n\n _advanceCursor() {\n if (this._started === false) {\n this._started = true;\n this._cursor = this._list[this._startPosition];\n return;\n }\n this._cursor = this._cursor[this._direction];\n }\n\n reset() {\n this._done = false;\n this._started = false;\n this._cursor = null;\n }\n\n remove() {\n if (\n this._started === false ||\n this._done === true ||\n this._isCursorDetached()\n ) {\n return false;\n }\n this._list.remove(this._cursor);\n }\n\n next() {\n if (this._done === true) {\n return { done: true };\n }\n\n this._advanceCursor();\n\n // if there is no node at the cursor or the node at the cursor is no longer part of\n // a doubly linked list then we are done/finished/kaput\n if (this._cursor === null || this._isCursorDetached()) {\n this._done = true;\n return { done: true };\n }\n\n return {\n value: this._cursor,\n done: false\n };\n }\n\n /**\n * Is the node detached from a list?\n * NOTE: you can trick/bypass/confuse this check by removing a node from one DoublyLinkedList\n * and adding it to another.\n * TODO: We can make this smarter by checking the direction of travel and only checking\n * the required next/prev/head/tail rather than all of them\n * @return {Boolean} [description]\n */\n _isCursorDetached() {\n return (\n this._cursor.prev === null &&\n this._cursor.next === null &&\n this._list.tail !== this._cursor &&\n this._list.head !== this._cursor\n );\n }\n}\n\nmodule.exports = DoublyLinkedListIterator;\n","\"use strict\";\n\nconst EventEmitter = require(\"events\").EventEmitter;\n\nconst factoryValidator = require(\"./factoryValidator\");\nconst PoolOptions = require(\"./PoolOptions\");\nconst ResourceRequest = require(\"./ResourceRequest\");\nconst ResourceLoan = require(\"./ResourceLoan\");\nconst PooledResource = require(\"./PooledResource\");\nconst DefaultEvictor = require(\"./DefaultEvictor\");\nconst Deque = require(\"./Deque\");\nconst Deferred = require(\"./Deferred\");\nconst PriorityQueue = require(\"./PriorityQueue\");\nconst DequeIterator = require(\"./DequeIterator\");\n\nconst reflector = require(\"./utils\").reflector;\n\n/**\n * TODO: move me\n */\nconst FACTORY_CREATE_ERROR = \"factoryCreateError\";\nconst FACTORY_DESTROY_ERROR = \"factoryDestroyError\";\n\nclass Pool extends EventEmitter {\n /**\n * Generate an Object pool with a specified `factory` and `config`.\n *\n * @param {typeof DefaultEvictor} Evictor\n * @param {typeof Deque} Deque\n * @param {typeof PriorityQueue} PriorityQueue\n * @param {Object} factory\n * Factory to be used for generating and destroying the items.\n * @param {Function} factory.create\n * Should create the item to be acquired,\n * and call it's first callback argument with the generated item as it's argument.\n * @param {Function} factory.destroy\n * Should gently close any resources that the item is using.\n * Called before the items is destroyed.\n * @param {Function} factory.validate\n * Test if a resource is still valid .Should return a promise that resolves to a boolean, true if resource is still valid and false\n * If it should be removed from pool.\n * @param {Object} options\n */\n constructor(Evictor, Deque, PriorityQueue, factory, options) {\n super();\n\n factoryValidator(factory);\n\n this._config = new PoolOptions(options);\n\n // TODO: fix up this ugly glue-ing\n this._Promise = this._config.Promise;\n\n this._factory = factory;\n this._draining = false;\n this._started = false;\n /**\n * Holds waiting clients\n * @type {PriorityQueue}\n */\n this._waitingClientsQueue = new PriorityQueue(this._config.priorityRange);\n\n /**\n * Collection of promises for resource creation calls made by the pool to factory.create\n * @type {Set}\n */\n this._factoryCreateOperations = new Set();\n\n /**\n * Collection of promises for resource destruction calls made by the pool to factory.destroy\n * @type {Set}\n */\n this._factoryDestroyOperations = new Set();\n\n /**\n * A queue/stack of pooledResources awaiting acquisition\n * TODO: replace with LinkedList backed array\n * @type {Deque}\n */\n this._availableObjects = new Deque();\n\n /**\n * Collection of references for any resource that are undergoing validation before being acquired\n * @type {Set}\n */\n this._testOnBorrowResources = new Set();\n\n /**\n * Collection of references for any resource that are undergoing validation before being returned\n * @type {Set}\n */\n this._testOnReturnResources = new Set();\n\n /**\n * Collection of promises for any validations currently in process\n * @type {Set}\n */\n this._validationOperations = new Set();\n\n /**\n * All objects associated with this pool in any state (except destroyed)\n * @type {Set}\n */\n this._allObjects = new Set();\n\n /**\n * Loans keyed by the borrowed resource\n * @type {Map}\n */\n this._resourceLoans = new Map();\n\n /**\n * Infinitely looping iterator over available object\n * @type {DequeIterator}\n */\n this._evictionIterator = this._availableObjects.iterator();\n\n this._evictor = new Evictor();\n\n /**\n * handle for setTimeout for next eviction run\n * @type {(number|null)}\n */\n this._scheduledEviction = null;\n\n // create initial resources (if factory.min > 0)\n if (this._config.autostart === true) {\n this.start();\n }\n }\n\n _destroy(pooledResource) {\n // FIXME: do we need another state for \"in destruction\"?\n pooledResource.invalidate();\n this._allObjects.delete(pooledResource);\n // NOTE: this maybe very bad promise usage?\n const destroyPromise = this._factory.destroy(pooledResource.obj);\n const wrappedDestroyPromise = this._config.destroyTimeoutMillis\n ? this._Promise.resolve(this._applyDestroyTimeout(destroyPromise))\n : this._Promise.resolve(destroyPromise);\n\n this._trackOperation(\n wrappedDestroyPromise,\n this._factoryDestroyOperations\n ).catch(reason => {\n this.emit(FACTORY_DESTROY_ERROR, reason);\n });\n\n // TODO: maybe ensuring minimum pool size should live outside here\n this._ensureMinimum();\n }\n\n _applyDestroyTimeout(promise) {\n const timeoutPromise = new this._Promise((resolve, reject) => {\n setTimeout(() => {\n reject(new Error(\"destroy timed out\"));\n }, this._config.destroyTimeoutMillis).unref();\n });\n return this._Promise.race([timeoutPromise, promise]);\n }\n\n /**\n * Attempt to move an available resource into test and then onto a waiting client\n * @return {Boolean} could we move an available resource into test\n */\n _testOnBorrow() {\n if (this._availableObjects.length < 1) {\n return false;\n }\n\n const pooledResource = this._availableObjects.shift();\n // Mark the resource as in test\n pooledResource.test();\n this._testOnBorrowResources.add(pooledResource);\n const validationPromise = this._factory.validate(pooledResource.obj);\n const wrappedValidationPromise = this._Promise.resolve(validationPromise);\n\n this._trackOperation(\n wrappedValidationPromise,\n this._validationOperations\n ).then(isValid => {\n this._testOnBorrowResources.delete(pooledResource);\n\n if (isValid === false) {\n pooledResource.invalidate();\n this._destroy(pooledResource);\n this._dispense();\n return;\n }\n this._dispatchPooledResourceToNextWaitingClient(pooledResource);\n });\n\n return true;\n }\n\n /**\n * Attempt to move an available resource to a waiting client\n * @return {Boolean} [description]\n */\n _dispatchResource() {\n if (this._availableObjects.length < 1) {\n return false;\n }\n\n const pooledResource = this._availableObjects.shift();\n this._dispatchPooledResourceToNextWaitingClient(pooledResource);\n return false;\n }\n\n /**\n * Attempt to resolve an outstanding resource request using an available resource from\n * the pool, or creating new ones\n *\n * @private\n */\n _dispense() {\n /**\n * Local variables for ease of reading/writing\n * these don't (shouldn't) change across the execution of this fn\n */\n const numWaitingClients = this._waitingClientsQueue.length;\n\n // If there aren't any waiting requests then there is nothing to do\n // so lets short-circuit\n if (numWaitingClients < 1) {\n return;\n }\n\n const resourceShortfall =\n numWaitingClients - this._potentiallyAllocableResourceCount;\n\n const actualNumberOfResourcesToCreate = Math.min(\n this.spareResourceCapacity,\n resourceShortfall\n );\n for (let i = 0; actualNumberOfResourcesToCreate > i; i++) {\n this._createResource();\n }\n\n // If we are doing test-on-borrow see how many more resources need to be moved into test\n // to help satisfy waitingClients\n if (this._config.testOnBorrow === true) {\n // how many available resources do we need to shift into test\n const desiredNumberOfResourcesToMoveIntoTest =\n numWaitingClients - this._testOnBorrowResources.size;\n const actualNumberOfResourcesToMoveIntoTest = Math.min(\n this._availableObjects.length,\n desiredNumberOfResourcesToMoveIntoTest\n );\n for (let i = 0; actualNumberOfResourcesToMoveIntoTest > i; i++) {\n this._testOnBorrow();\n }\n }\n\n // if we aren't testing-on-borrow then lets try to allocate what we can\n if (this._config.testOnBorrow === false) {\n const actualNumberOfResourcesToDispatch = Math.min(\n this._availableObjects.length,\n numWaitingClients\n );\n for (let i = 0; actualNumberOfResourcesToDispatch > i; i++) {\n this._dispatchResource();\n }\n }\n }\n\n /**\n * Dispatches a pooledResource to the next waiting client (if any) else\n * puts the PooledResource back on the available list\n * @param {PooledResource} pooledResource [description]\n * @return {Boolean} [description]\n */\n _dispatchPooledResourceToNextWaitingClient(pooledResource) {\n const clientResourceRequest = this._waitingClientsQueue.dequeue();\n if (\n clientResourceRequest === undefined ||\n clientResourceRequest.state !== Deferred.PENDING\n ) {\n // While we were away either all the waiting clients timed out\n // or were somehow fulfilled. put our pooledResource back.\n this._addPooledResourceToAvailableObjects(pooledResource);\n // TODO: do need to trigger anything before we leave?\n return false;\n }\n const loan = new ResourceLoan(pooledResource, this._Promise);\n this._resourceLoans.set(pooledResource.obj, loan);\n pooledResource.allocate();\n clientResourceRequest.resolve(pooledResource.obj);\n return true;\n }\n\n /**\n * tracks on operation using given set\n * handles adding/removing from the set and resolve/rejects the value/reason\n * @param {Promise} operation\n * @param {Set} set Set holding operations\n * @return {Promise} Promise that resolves once operation has been removed from set\n */\n _trackOperation(operation, set) {\n set.add(operation);\n\n return operation.then(\n v => {\n set.delete(operation);\n return this._Promise.resolve(v);\n },\n e => {\n set.delete(operation);\n return this._Promise.reject(e);\n }\n );\n }\n\n /**\n * @private\n */\n _createResource() {\n // An attempt to create a resource\n const factoryPromise = this._factory.create();\n const wrappedFactoryPromise = this._Promise\n .resolve(factoryPromise)\n .then(resource => {\n const pooledResource = new PooledResource(resource);\n this._allObjects.add(pooledResource);\n this._addPooledResourceToAvailableObjects(pooledResource);\n });\n\n this._trackOperation(wrappedFactoryPromise, this._factoryCreateOperations)\n .then(() => {\n this._dispense();\n // Stop bluebird complaining about this side-effect only handler\n // - a promise was created in a handler but was not returned from it\n // https://goo.gl/rRqMUw\n return null;\n })\n .catch(reason => {\n this.emit(FACTORY_CREATE_ERROR, reason);\n this._dispense();\n });\n }\n\n /**\n * @private\n */\n _ensureMinimum() {\n if (this._draining === true) {\n return;\n }\n const minShortfall = this._config.min - this._count;\n for (let i = 0; i < minShortfall; i++) {\n this._createResource();\n }\n }\n\n _evict() {\n const testsToRun = Math.min(\n this._config.numTestsPerEvictionRun,\n this._availableObjects.length\n );\n const evictionConfig = {\n softIdleTimeoutMillis: this._config.softIdleTimeoutMillis,\n idleTimeoutMillis: this._config.idleTimeoutMillis,\n min: this._config.min\n };\n for (let testsHaveRun = 0; testsHaveRun < testsToRun; ) {\n const iterationResult = this._evictionIterator.next();\n\n // Safety check incase we could get stuck in infinite loop because we\n // somehow emptied the array after checking its length.\n if (iterationResult.done === true && this._availableObjects.length < 1) {\n this._evictionIterator.reset();\n return;\n }\n // If this happens it should just mean we reached the end of the\n // list and can reset the cursor.\n if (iterationResult.done === true && this._availableObjects.length > 0) {\n this._evictionIterator.reset();\n continue;\n }\n\n const resource = iterationResult.value;\n\n const shouldEvict = this._evictor.evict(\n evictionConfig,\n resource,\n this._availableObjects.length\n );\n testsHaveRun++;\n\n if (shouldEvict === true) {\n // take it out of the _availableObjects list\n this._evictionIterator.remove();\n this._destroy(resource);\n }\n }\n }\n\n _scheduleEvictorRun() {\n // Start eviction if set\n if (this._config.evictionRunIntervalMillis > 0) {\n // @ts-ignore\n this._scheduledEviction = setTimeout(() => {\n this._evict();\n this._scheduleEvictorRun();\n }, this._config.evictionRunIntervalMillis).unref();\n }\n }\n\n _descheduleEvictorRun() {\n if (this._scheduledEviction) {\n clearTimeout(this._scheduledEviction);\n }\n this._scheduledEviction = null;\n }\n\n start() {\n if (this._draining === true) {\n return;\n }\n if (this._started === true) {\n return;\n }\n this._started = true;\n this._scheduleEvictorRun();\n this._ensureMinimum();\n }\n\n /**\n * Request a new resource. The callback will be called,\n * when a new resource is available, passing the resource to the callback.\n * TODO: should we add a seperate \"acquireWithPriority\" function\n *\n * @param {Number} [priority=0]\n * Optional. Integer between 0 and (priorityRange - 1). Specifies the priority\n * of the caller if there are no available resources. Lower numbers mean higher\n * priority.\n *\n * @returns {Promise}\n */\n acquire(priority) {\n if (this._started === false && this._config.autostart === false) {\n this.start();\n }\n\n if (this._draining) {\n return this._Promise.reject(\n new Error(\"pool is draining and cannot accept work\")\n );\n }\n\n // TODO: should we defer this check till after this event loop incase \"the situation\" changes in the meantime\n if (\n this.spareResourceCapacity < 1 &&\n this._availableObjects.length < 1 &&\n this._config.maxWaitingClients !== undefined &&\n this._waitingClientsQueue.length >= this._config.maxWaitingClients\n ) {\n return this._Promise.reject(\n new Error(\"max waitingClients count exceeded\")\n );\n }\n\n const resourceRequest = new ResourceRequest(\n this._config.acquireTimeoutMillis,\n this._Promise\n );\n this._waitingClientsQueue.enqueue(resourceRequest, priority);\n this._dispense();\n\n return resourceRequest.promise;\n }\n\n /**\n * [use method, aquires a resource, passes the resource to a user supplied function and releases it]\n * @param {Function} fn [a function that accepts a resource and returns a promise that resolves/rejects once it has finished using the resource]\n * @return {Promise} [resolves once the resource is released to the pool]\n */\n use(fn, priority) {\n return this.acquire(priority).then(resource => {\n return fn(resource).then(\n result => {\n this.release(resource);\n return result;\n },\n err => {\n this.destroy(resource);\n throw err;\n }\n );\n });\n }\n\n /**\n * Check if resource is currently on loan from the pool\n *\n * @param {Function} resource\n * Resource for checking.\n *\n * @returns {Boolean}\n * True if resource belongs to this pool and false otherwise\n */\n isBorrowedResource(resource) {\n return this._resourceLoans.has(resource);\n }\n\n /**\n * Return the resource to the pool when it is no longer required.\n *\n * @param {Object} resource\n * The acquired object to be put back to the pool.\n */\n release(resource) {\n // check for an outstanding loan\n const loan = this._resourceLoans.get(resource);\n\n if (loan === undefined) {\n return this._Promise.reject(\n new Error(\"Resource not currently part of this pool\")\n );\n }\n\n this._resourceLoans.delete(resource);\n loan.resolve();\n const pooledResource = loan.pooledResource;\n\n pooledResource.deallocate();\n this._addPooledResourceToAvailableObjects(pooledResource);\n\n this._dispense();\n return this._Promise.resolve();\n }\n\n /**\n * Request the resource to be destroyed. The factory's destroy handler\n * will also be called.\n *\n * This should be called within an acquire() block as an alternative to release().\n *\n * @param {Object} resource\n * The acquired resource to be destoyed.\n */\n destroy(resource) {\n // check for an outstanding loan\n const loan = this._resourceLoans.get(resource);\n\n if (loan === undefined) {\n return this._Promise.reject(\n new Error(\"Resource not currently part of this pool\")\n );\n }\n\n this._resourceLoans.delete(resource);\n loan.resolve();\n const pooledResource = loan.pooledResource;\n\n pooledResource.deallocate();\n this._destroy(pooledResource);\n\n this._dispense();\n return this._Promise.resolve();\n }\n\n _addPooledResourceToAvailableObjects(pooledResource) {\n pooledResource.idle();\n if (this._config.fifo === true) {\n this._availableObjects.push(pooledResource);\n } else {\n this._availableObjects.unshift(pooledResource);\n }\n }\n\n /**\n * Disallow any new acquire calls and let the request backlog dissapate.\n * The Pool will no longer attempt to maintain a \"min\" number of resources\n * and will only make new resources on demand.\n * Resolves once all resource requests are fulfilled and all resources are returned to pool and available...\n * Should probably be called \"drain work\"\n * @returns {Promise}\n */\n drain() {\n this._draining = true;\n return this.__allResourceRequestsSettled()\n .then(() => {\n return this.__allResourcesReturned();\n })\n .then(() => {\n this._descheduleEvictorRun();\n });\n }\n\n __allResourceRequestsSettled() {\n if (this._waitingClientsQueue.length > 0) {\n // wait for last waiting client to be settled\n // FIXME: what if they can \"resolve\" out of order....?\n return reflector(this._waitingClientsQueue.tail.promise);\n }\n return this._Promise.resolve();\n }\n\n // FIXME: this is a horrific mess\n __allResourcesReturned() {\n const ps = Array.from(this._resourceLoans.values())\n .map(loan => loan.promise)\n .map(reflector);\n return this._Promise.all(ps);\n }\n\n /**\n * Forcibly destroys all available resources regardless of timeout. Intended to be\n * invoked as part of a drain. Does not prevent the creation of new\n * resources as a result of subsequent calls to acquire.\n *\n * Note that if factory.min > 0 and the pool isn't \"draining\", the pool will destroy all idle resources\n * in the pool, but replace them with newly created resources up to the\n * specified factory.min value. If this is not desired, set factory.min\n * to zero before calling clear()\n *\n */\n clear() {\n const reflectedCreatePromises = Array.from(\n this._factoryCreateOperations\n ).map(reflector);\n\n // wait for outstanding factory.create to complete\n return this._Promise.all(reflectedCreatePromises).then(() => {\n // Destroy existing resources\n // @ts-ignore\n for (const resource of this._availableObjects) {\n this._destroy(resource);\n }\n const reflectedDestroyPromises = Array.from(\n this._factoryDestroyOperations\n ).map(reflector);\n return reflector(this._Promise.all(reflectedDestroyPromises));\n });\n }\n\n /**\n * Waits until the pool is ready.\n * We define ready by checking if the current resource number is at least\n * the minimum number defined.\n * @returns {Promise} that resolves when the minimum number is ready.\n */\n ready() {\n return new this._Promise(resolve => {\n const isReady = () => {\n if (this.available >= this.min) {\n resolve();\n } else {\n setTimeout(isReady, 100);\n }\n };\n\n isReady();\n });\n }\n\n /**\n * How many resources are available to allocated\n * (includes resources that have not been tested and may faul validation)\n * NOTE: internal for now as the name is awful and might not be useful to anyone\n * @return {Number} number of resources the pool has to allocate\n */\n get _potentiallyAllocableResourceCount() {\n return (\n this._availableObjects.length +\n this._testOnBorrowResources.size +\n this._testOnReturnResources.size +\n this._factoryCreateOperations.size\n );\n }\n\n /**\n * The combined count of the currently created objects and those in the\n * process of being created\n * Does NOT include resources in the process of being destroyed\n * sort of legacy...\n * @return {Number}\n */\n get _count() {\n return this._allObjects.size + this._factoryCreateOperations.size;\n }\n\n /**\n * How many more resources does the pool have room for\n * @return {Number} number of resources the pool could create before hitting any limits\n */\n get spareResourceCapacity() {\n return (\n this._config.max -\n (this._allObjects.size + this._factoryCreateOperations.size)\n );\n }\n\n /**\n * see _count above\n * @return {Number} [description]\n */\n get size() {\n return this._count;\n }\n\n /**\n * number of available resources\n * @return {Number} [description]\n */\n get available() {\n return this._availableObjects.length;\n }\n\n /**\n * number of resources that are currently acquired\n * @return {Number} [description]\n */\n get borrowed() {\n return this._resourceLoans.size;\n }\n\n /**\n * number of waiting acquire calls\n * @return {Number} [description]\n */\n get pending() {\n return this._waitingClientsQueue.length;\n }\n\n /**\n * maximum size of the pool\n * @return {Number} [description]\n */\n get max() {\n return this._config.max;\n }\n\n /**\n * minimum size of the pool\n * @return {Number} [description]\n */\n get min() {\n return this._config.min;\n }\n}\n\nmodule.exports = Pool;\n","\"use strict\";\n/**\n * Create the default settings used by the pool\n *\n * @class\n */\nclass PoolDefaults {\n constructor() {\n this.fifo = true;\n this.priorityRange = 1;\n\n this.testOnBorrow = false;\n this.testOnReturn = false;\n\n this.autostart = true;\n\n this.evictionRunIntervalMillis = 0;\n this.numTestsPerEvictionRun = 3;\n this.softIdleTimeoutMillis = -1;\n this.idleTimeoutMillis = 30000;\n\n // FIXME: no defaults!\n this.acquireTimeoutMillis = null;\n this.destroyTimeoutMillis = null;\n this.maxWaitingClients = null;\n\n this.min = null;\n this.max = null;\n // FIXME: this seems odd?\n this.Promise = Promise;\n }\n}\n\nmodule.exports = PoolDefaults;\n","\"use strict\";\n\nconst PoolDefaults = require(\"./PoolDefaults\");\n\nclass PoolOptions {\n /**\n * @param {Object} opts\n * configuration for the pool\n * @param {Number} [opts.max=null]\n * Maximum number of items that can exist at the same time. Default: 1.\n * Any further acquire requests will be pushed to the waiting list.\n * @param {Number} [opts.min=null]\n * Minimum number of items in pool (including in-use). Default: 0.\n * When the pool is created, or a resource destroyed, this minimum will\n * be checked. If the pool resource count is below the minimum, a new\n * resource will be created and added to the pool.\n * @param {Number} [opts.maxWaitingClients=null]\n * maximum number of queued requests allowed after which acquire calls will be rejected\n * @param {Boolean} [opts.testOnBorrow=false]\n * should the pool validate resources before giving them to clients. Requires that\n * `factory.validate` is specified.\n * @param {Boolean} [opts.testOnReturn=false]\n * should the pool validate resources before returning them to the pool.\n * @param {Number} [opts.acquireTimeoutMillis=null]\n * Delay in milliseconds after which the an `acquire` call will fail. optional.\n * Default: undefined. Should be positive and non-zero\n * @param {Number} [opts.destroyTimeoutMillis=null]\n * Delay in milliseconds after which the an `destroy` call will fail, causing it to emit a factoryDestroyError event. optional.\n * Default: undefined. Should be positive and non-zero\n * @param {Number} [opts.priorityRange=1]\n * The range from 1 to be treated as a valid priority\n * @param {Boolean} [opts.fifo=true]\n * Sets whether the pool has LIFO (last in, first out) behaviour with respect to idle objects.\n * if false then pool has FIFO behaviour\n * @param {Boolean} [opts.autostart=true]\n * Should the pool start creating resources etc once the constructor is called\n * @param {Number} [opts.evictionRunIntervalMillis=0]\n * How often to run eviction checks. Default: 0 (does not run).\n * @param {Number} [opts.numTestsPerEvictionRun=3]\n * Number of resources to check each eviction run. Default: 3.\n * @param {Number} [opts.softIdleTimeoutMillis=-1]\n * amount of time an object may sit idle in the pool before it is eligible\n * for eviction by the idle object evictor (if any), with the extra condition\n * that at least \"min idle\" object instances remain in the pool. Default -1 (nothing can get evicted)\n * @param {Number} [opts.idleTimeoutMillis=30000]\n * the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction\n * due to idle time. Supercedes \"softIdleTimeoutMillis\" Default: 30000\n * @param {typeof Promise} [opts.Promise=Promise]\n * What promise implementation should the pool use, defaults to native promises.\n */\n constructor(opts) {\n const poolDefaults = new PoolDefaults();\n\n opts = opts || {};\n\n this.fifo = typeof opts.fifo === \"boolean\" ? opts.fifo : poolDefaults.fifo;\n this.priorityRange = opts.priorityRange || poolDefaults.priorityRange;\n\n this.testOnBorrow =\n typeof opts.testOnBorrow === \"boolean\"\n ? opts.testOnBorrow\n : poolDefaults.testOnBorrow;\n this.testOnReturn =\n typeof opts.testOnReturn === \"boolean\"\n ? opts.testOnReturn\n : poolDefaults.testOnReturn;\n\n this.autostart =\n typeof opts.autostart === \"boolean\"\n ? opts.autostart\n : poolDefaults.autostart;\n\n if (opts.acquireTimeoutMillis) {\n // @ts-ignore\n this.acquireTimeoutMillis = parseInt(opts.acquireTimeoutMillis, 10);\n }\n\n if (opts.destroyTimeoutMillis) {\n // @ts-ignore\n this.destroyTimeoutMillis = parseInt(opts.destroyTimeoutMillis, 10);\n }\n\n if (opts.maxWaitingClients !== undefined) {\n // @ts-ignore\n this.maxWaitingClients = parseInt(opts.maxWaitingClients, 10);\n }\n\n // @ts-ignore\n this.max = parseInt(opts.max, 10);\n // @ts-ignore\n this.min = parseInt(opts.min, 10);\n\n this.max = Math.max(isNaN(this.max) ? 1 : this.max, 1);\n this.min = Math.min(isNaN(this.min) ? 0 : this.min, this.max);\n\n this.evictionRunIntervalMillis =\n opts.evictionRunIntervalMillis || poolDefaults.evictionRunIntervalMillis;\n this.numTestsPerEvictionRun =\n opts.numTestsPerEvictionRun || poolDefaults.numTestsPerEvictionRun;\n this.softIdleTimeoutMillis =\n opts.softIdleTimeoutMillis || poolDefaults.softIdleTimeoutMillis;\n this.idleTimeoutMillis =\n opts.idleTimeoutMillis || poolDefaults.idleTimeoutMillis;\n\n this.Promise = opts.Promise != null ? opts.Promise : poolDefaults.Promise;\n }\n}\n\nmodule.exports = PoolOptions;\n","\"use strict\";\n\nconst PooledResourceStateEnum = require(\"./PooledResourceStateEnum\");\n\n/**\n * @class\n * @private\n */\nclass PooledResource {\n constructor(resource) {\n this.creationTime = Date.now();\n this.lastReturnTime = null;\n this.lastBorrowTime = null;\n this.lastIdleTime = null;\n this.obj = resource;\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n // mark the resource as \"allocated\"\n allocate() {\n this.lastBorrowTime = Date.now();\n this.state = PooledResourceStateEnum.ALLOCATED;\n }\n\n // mark the resource as \"deallocated\"\n deallocate() {\n this.lastReturnTime = Date.now();\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n invalidate() {\n this.state = PooledResourceStateEnum.INVALID;\n }\n\n test() {\n this.state = PooledResourceStateEnum.VALIDATION;\n }\n\n idle() {\n this.lastIdleTime = Date.now();\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n returning() {\n this.state = PooledResourceStateEnum.RETURNING;\n }\n}\n\nmodule.exports = PooledResource;\n","\"use strict\";\n\nconst PooledResourceStateEnum = {\n ALLOCATED: \"ALLOCATED\", // In use\n IDLE: \"IDLE\", // In the queue, not in use.\n INVALID: \"INVALID\", // Failed validation\n RETURNING: \"RETURNING\", // Resource is in process of returning\n VALIDATION: \"VALIDATION\" // Currently being tested\n};\n\nmodule.exports = PooledResourceStateEnum;\n","\"use strict\";\n\nconst Queue = require(\"./Queue\");\n\n/**\n * @class\n * @private\n */\nclass PriorityQueue {\n constructor(size) {\n this._size = Math.max(+size | 0, 1);\n /** @type {Queue[]} */\n this._slots = [];\n // initialize arrays to hold queue elements\n for (let i = 0; i < this._size; i++) {\n this._slots.push(new Queue());\n }\n }\n\n get length() {\n let _length = 0;\n for (let i = 0, slots = this._slots.length; i < slots; i++) {\n _length += this._slots[i].length;\n }\n return _length;\n }\n\n enqueue(obj, priority) {\n // Convert to integer with a default value of 0.\n priority = (priority && +priority | 0) || 0;\n\n if (priority) {\n if (priority < 0 || priority >= this._size) {\n priority = this._size - 1;\n // put obj at the end of the line\n }\n }\n this._slots[priority].push(obj);\n }\n\n dequeue() {\n for (let i = 0, sl = this._slots.length; i < sl; i += 1) {\n if (this._slots[i].length) {\n return this._slots[i].shift();\n }\n }\n return;\n }\n\n get head() {\n for (let i = 0, sl = this._slots.length; i < sl; i += 1) {\n if (this._slots[i].length > 0) {\n return this._slots[i].head;\n }\n }\n return;\n }\n\n get tail() {\n for (let i = this._slots.length - 1; i >= 0; i--) {\n if (this._slots[i].length > 0) {\n return this._slots[i].tail;\n }\n }\n return;\n }\n}\n\nmodule.exports = PriorityQueue;\n","\"use strict\";\n\nconst DoublyLinkedList = require(\"./DoublyLinkedList\");\nconst Deque = require(\"./Deque\");\n\n/**\n * Sort of a internal queue for holding the waiting\n * resource requets for a given \"priority\".\n * Also handles managing timeouts rejections on items (is this the best place for this?)\n * This is the last point where we know which queue a resourceRequest is in\n *\n */\nclass Queue extends Deque {\n /**\n * Adds the obj to the end of the list for this slot\n * we completely override the parent method because we need access to the\n * node for our rejection handler\n * @param {any} resourceRequest [description]\n */\n push(resourceRequest) {\n const node = DoublyLinkedList.createNode(resourceRequest);\n resourceRequest.promise.catch(this._createTimeoutRejectionHandler(node));\n this._list.insertEnd(node);\n }\n\n _createTimeoutRejectionHandler(node) {\n return reason => {\n if (reason.name === \"TimeoutError\") {\n this._list.remove(node);\n }\n };\n }\n}\n\nmodule.exports = Queue;\n","\"use strict\";\n\nconst Deferred = require(\"./Deferred\");\n\n/**\n * Plan is to maybe add tracking via Error objects\n * and other fun stuff!\n */\n\nclass ResourceLoan extends Deferred {\n /**\n *\n * @param {any} pooledResource the PooledResource this loan belongs to\n * @return {any} [description]\n */\n constructor(pooledResource, Promise) {\n super(Promise);\n this._creationTimestamp = Date.now();\n this.pooledResource = pooledResource;\n }\n\n reject() {\n /**\n * Loans can only be resolved at the moment\n */\n }\n}\n\nmodule.exports = ResourceLoan;\n","\"use strict\";\n\nconst Deferred = require(\"./Deferred\");\nconst errors = require(\"./errors\");\n\nfunction fbind(fn, ctx) {\n return function bound() {\n return fn.apply(ctx, arguments);\n };\n}\n\n/**\n * Wraps a users request for a resource\n * Basically a promise mashed in with a timeout\n * @private\n */\nclass ResourceRequest extends Deferred {\n /**\n * [constructor description]\n * @param {Number} ttl timeout\n */\n constructor(ttl, Promise) {\n super(Promise);\n this._creationTimestamp = Date.now();\n this._timeout = null;\n\n if (ttl !== undefined) {\n this.setTimeout(ttl);\n }\n }\n\n setTimeout(delay) {\n if (this._state !== ResourceRequest.PENDING) {\n return;\n }\n const ttl = parseInt(delay, 10);\n\n if (isNaN(ttl) || ttl <= 0) {\n throw new Error(\"delay must be a positive int\");\n }\n\n const age = Date.now() - this._creationTimestamp;\n\n if (this._timeout) {\n this.removeTimeout();\n }\n\n this._timeout = setTimeout(\n fbind(this._fireTimeout, this),\n Math.max(ttl - age, 0)\n );\n }\n\n removeTimeout() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n this._timeout = null;\n }\n\n _fireTimeout() {\n this.reject(new errors.TimeoutError(\"ResourceRequest timed out\"));\n }\n\n reject(reason) {\n this.removeTimeout();\n super.reject(reason);\n }\n\n resolve(value) {\n this.removeTimeout();\n super.resolve(value);\n }\n}\n\nmodule.exports = ResourceRequest;\n","\"use strict\";\n\nclass ExtendableError extends Error {\n constructor(message) {\n super(message);\n // @ts-ignore\n this.name = this.constructor.name;\n this.message = message;\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(message).stack;\n }\n }\n}\n\n/* eslint-disable no-useless-constructor */\nclass TimeoutError extends ExtendableError {\n constructor(m) {\n super(m);\n }\n}\n/* eslint-enable no-useless-constructor */\n\nmodule.exports = {\n TimeoutError: TimeoutError\n};\n","module.exports = function(factory) {\n if (typeof factory.create !== \"function\") {\n throw new TypeError(\"factory.create must be a function\");\n }\n\n if (typeof factory.destroy !== \"function\") {\n throw new TypeError(\"factory.destroy must be a function\");\n }\n\n if (\n typeof factory.validate !== \"undefined\" &&\n typeof factory.validate !== \"function\"\n ) {\n throw new TypeError(\"factory.validate must be a function\");\n }\n};\n","\"use strict\";\n\nfunction noop() {}\n\n/**\n * Reflects a promise but does not expose any\n * underlying value or rejection from that promise.\n * @param {Promise} promise [description]\n * @return {Promise} [description]\n */\nexports.reflector = function(promise) {\n return promise.then(noop, noop);\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = __importDefault(require(\"net\"));\nconst tls_1 = __importDefault(require(\"tls\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst parse_proxy_response_1 = __importDefault(require(\"./parse-proxy-response\"));\nconst debug = debug_1.default('https-proxy-agent:agent');\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n *\n * @api public\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(_opts) {\n let opts;\n if (typeof _opts === 'string') {\n opts = url_1.default.parse(_opts);\n }\n else {\n opts = _opts;\n }\n if (!opts) {\n throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!');\n }\n debug('creating new HttpsProxyAgent instance: %o', opts);\n super(opts);\n const proxy = Object.assign({}, opts);\n // If `true`, then connect to the proxy server over TLS.\n // Defaults to `false`.\n this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol);\n // Prefer `hostname` over `host`, and set the `port` if needed.\n proxy.host = proxy.hostname || proxy.host;\n if (typeof proxy.port === 'string') {\n proxy.port = parseInt(proxy.port, 10);\n }\n if (!proxy.port && proxy.host) {\n proxy.port = this.secureProxy ? 443 : 80;\n }\n // ALPN is supported by Node.js >= v5.\n // attempt to negotiate http/1.1 for proxy servers that support http/2\n if (this.secureProxy && !('ALPNProtocols' in proxy)) {\n proxy.ALPNProtocols = ['http 1.1'];\n }\n if (proxy.host && proxy.path) {\n // If both a `host` and `path` are specified then it's most likely\n // the result of a `url.parse()` call... we need to remove the\n // `path` portion so that `net.connect()` doesn't attempt to open\n // that as a Unix socket file.\n delete proxy.path;\n delete proxy.pathname;\n }\n this.proxy = proxy;\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n *\n * @api protected\n */\n callback(req, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const { proxy, secureProxy } = this;\n // Create a socket connection to the proxy server.\n let socket;\n if (secureProxy) {\n debug('Creating `tls.Socket`: %o', proxy);\n socket = tls_1.default.connect(proxy);\n }\n else {\n debug('Creating `net.Socket`: %o', proxy);\n socket = net_1.default.connect(proxy);\n }\n const headers = Object.assign({}, proxy.headers);\n const hostname = `${opts.host}:${opts.port}`;\n let payload = `CONNECT ${hostname} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.auth) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`;\n }\n // The `Host` header should only include the port\n // number when it is not the default port.\n let { host, port, secureEndpoint } = opts;\n if (!isDefaultPort(port, secureEndpoint)) {\n host += `:${port}`;\n }\n headers.Host = host;\n headers.Connection = 'close';\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = parse_proxy_response_1.default(socket);\n socket.write(`${payload}\\r\\n`);\n const { statusCode, buffered } = yield proxyResponsePromise;\n if (statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket,\n servername }));\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net_1.default.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('replaying proxy buffer for failed request');\n assert_1.default(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n });\n }\n}\nexports.default = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction isDefaultPort(port, secure) {\n return Boolean((!secure && port === 80) || (secure && port === 443));\n}\nfunction isHTTPS(protocol) {\n return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false;\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=agent.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst agent_1 = __importDefault(require(\"./agent\"));\nfunction createHttpsProxyAgent(opts) {\n return new agent_1.default(opts);\n}\n(function (createHttpsProxyAgent) {\n createHttpsProxyAgent.HttpsProxyAgent = agent_1.default;\n createHttpsProxyAgent.prototype = agent_1.default.prototype;\n})(createHttpsProxyAgent || (createHttpsProxyAgent = {}));\nmodule.exports = createHttpsProxyAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = debug_1.default('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('close', onclose);\n socket.removeListener('readable', read);\n }\n function onclose(err) {\n debug('onclose had error %o', err);\n }\n function onend() {\n debug('onend');\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\\r\\n'));\n const statusCode = +firstLine.split(' ')[1];\n debug('got proxy server response: %o', firstLine);\n resolve({\n statusCode,\n buffered\n });\n }\n socket.on('error', onerror);\n socket.on('close', onclose);\n socket.on('end', onend);\n read();\n });\n}\nexports.default = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","\n/**\n * Module dependencies.\n */\n\nvar Bayesian = require('classifier').Bayesian;\n\n/**\n * Memory from classifier training.\n */\n\nvar memory = require('./memory.json');\n\n/**\n * Classifier singleton.\n */\n\nvar classifier = new Bayesian;\n\n// input training data\n\nclassifier.fromJSON(memory);\n\n/**\n * Expose the classifier.\n */\n\nmodule.exports = classifier.classify.bind(classifier);\n","var fs = require('fs');\nvar path = require('path');\nvar classify = require('language-classifier');\n\n/**\n * Map classification language names to mapped language names.\n *\n * @type {Object}\n */\nvar classifyMap = {\n 'ruby': 'Ruby',\n 'python': 'Python',\n 'javascript': 'JavaScript',\n 'objective-c': 'Objective-C',\n 'html': 'HTML',\n 'css': 'CSS',\n 'shell': 'Shell',\n 'c++': 'C++',\n 'c': 'C',\n 'coffee-script': 'CoffeeScript'\n};\n\n/**\n * Return the programming language of a given filename.\n *\n * @param {String} filename\n * @param {Function} done\n */\nexports = module.exports = function (filename, done) {\n fs.stat(filename, function (err, stats) {\n if (err) {\n return done(err);\n }\n\n if (!stats.isFile()) {\n return done(new Error('Should only detect files: ' + filename));\n }\n\n // Do the simplest synchronous test based on filenames first.\n var fileDetected = exports.filename(filename);\n\n if (fileDetected) {\n return done(null, fileDetected);\n }\n\n var languages = {};\n var shebang = '';\n var firstChunk = true;\n var hasShebang = false;\n var shebangDetected;\n\n // Open a file read stream. This should be the simplest way to do\n // dynamic language detection while the stream is running.\n var stream = fs.createReadStream(filename);\n\n // Call `done` with the error when something breaks.\n stream.on('error', done);\n\n stream.on('data', function (data) {\n var chunk = data.toString();\n\n // If it's the first chunk we want to\n if (firstChunk) {\n chunk = chunk.replace(/^ +/, '');\n\n // If we have at least two characters left in the chunk, we can assume\n // enough of the first chunk has been received to test the shebang.\n if (chunk.length > 1) {\n firstChunk = false;\n\n // If we have a shebang, we need to special case the stream until\n // the first new line.\n if (chunk.substr(0, 2) === '#!') {\n hasShebang = true;\n }\n }\n }\n\n // While we have the shebang line, concat each chunk together for testing.\n if (hasShebang) {\n shebang += chunk;\n\n // On the first new line, test the shebang and attempt to close the\n // stream early.\n if (/\\r?\\n/.test(shebang)) {\n hasShebang = false;\n shebangDetected = exports.shebang(shebang);\n\n if (shebangDetected) {\n return stream.close();\n }\n }\n }\n\n // If the shebang doesn't exist, fall back to language classification.\n var classified = exports.classify(chunk);\n\n if (classified) {\n (languages[classified]++ || (languages[classified] = 1));\n }\n });\n\n stream.on('close', function () {\n // We can short-circuit if the shebang was detected.\n if (shebangDetected) {\n return done(null, shebangDetected);\n }\n\n // No languages were detected in the entire file.\n if (!Object.keys(languages).length) {\n return done();\n }\n\n // Get the most popular language from language detection.\n var popular = Object.keys(languages).reduce(function (highest, language) {\n return languages[highest] > languages[language] ? highest : language;\n });\n\n return done(null, popular);\n });\n });\n};\n\n/**\n * Export useful direct aliases.\n *\n * @type {Object}\n */\nexports.aliases = require('./vendor/aliases.json');\nexports.filenames = require('./vendor/filenames.json');\nexports.extensions = require('./vendor/extensions.json');\nexports.interpreters = require('./vendor/interpreters.json');\n\n/**\n * Detect file language synchronously.\n *\n * @param {String} filename\n * @return {String}\n */\nexports.sync = function (filename) {\n if (!fs.statSync(filename).isFile()) {\n throw new Error('Should only detect files: ' + filename);\n }\n\n return (\n exports.filename(filename) ||\n exports.contents(path, fs.readFileSync(filename))\n );\n}\n\n/**\n * Check against the contents of a file synchronously.\n\n * @param {String} filename\n * @param {String} contents\n * @return {String}\n */\nexports.contents = function (filename, contents) {\n return (\n exports.filename(filename) ||\n exports.shebang(contents) ||\n exports.classify(contents)\n );\n};\n\n/**\n * Attempt to get the language based on a filename.\n *\n * @param {String} filename\n * @return {String}\n */\nexports.filename = function (filename) {\n var basename = path.basename(filename);\n\n // The filename was detected.\n if (typeof exports.filenames[basename] === 'string') {\n return exports.filenames[basename];\n }\n\n var extension = (path.extname(basename) || '').toLowerCase();\n\n // The extension was recognised.\n if (typeof exports.extensions[extension] === 'string') {\n return exports.extensions[extension];\n }\n};\n\n/**\n * Return the language from a shebang definition.\n *\n * @param {String} contents\n * @return {String}\n */\nexports.shebang = function (contents) {\n // Coerece to a string (in case of Buffer) and replace preceding whitespace.\n var file = contents.toString().replace(/^\\s*/, '');\n\n // Return early if it doesn't start with a shebang.\n if (file.substr(0, 2) !== '#!') {\n return;\n }\n\n var bang = file.split(/\\r?\\n/g)[0];\n var tokens = bang.replace(/^#! +/, '#!').split(' ');\n var pieces = tokens[0].split('/');\n var script = pieces[pieces.length - 1];\n\n if (script === 'env') {\n script = tokens[1];\n }\n\n // \"python2.6\" -> \"python\"\n script = script.replace(/(?:\\d+\\.?)+$/, '');\n\n return exports.interpreters[script] || exports.aliases[script];\n};\n\n/**\n * Attempt to classify the file contents.\n *\n * @param {String} contents\n * @return {String}\n */\nexports.classify = function (contents) {\n return classifyMap[classify(contents.toString())];\n};\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\n\nvar parseUrl = require('url').parse;\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nvar stringEndsWith = String.prototype.endsWith || function(s) {\n return s.length <= this.length &&\n this.indexOf(s, this.length - s.length) !== -1;\n};\n\n/**\n * @param {string|object} url - The URL, or the result from url.parse.\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nfunction getProxyForUrl(url) {\n var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy =\n getEnv('npm_config_' + proto + '_proxy') ||\n getEnv(proto + '_proxy') ||\n getEnv('npm_config_proxy') ||\n getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY =\n (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !stringEndsWith.call(hostname, parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n\nexports.getProxyForUrl = getProxyForUrl;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCluster = exports.createClient = void 0;\nconst client_1 = require(\"@redis/client\");\nconst bloom_1 = require(\"@redis/bloom\");\nconst graph_1 = require(\"@redis/graph\");\nconst json_1 = require(\"@redis/json\");\nconst search_1 = require(\"@redis/search\");\nconst time_series_1 = require(\"@redis/time-series\");\n__exportStar(require(\"@redis/client\"), exports);\n__exportStar(require(\"@redis/bloom\"), exports);\n__exportStar(require(\"@redis/graph\"), exports);\n__exportStar(require(\"@redis/json\"), exports);\n__exportStar(require(\"@redis/search\"), exports);\n__exportStar(require(\"@redis/time-series\"), exports);\nconst modules = {\n ...bloom_1.default,\n graph: graph_1.default,\n json: json_1.default,\n ft: search_1.default,\n ts: time_series_1.default\n};\nfunction createClient(options) {\n return (0, client_1.createClient)({\n ...options,\n modules: {\n ...modules,\n ...options?.modules\n }\n });\n}\nexports.createClient = createClient;\nfunction createCluster(options) {\n return (0, client_1.createCluster)({\n ...options,\n modules: {\n ...modules,\n ...options?.modules\n }\n });\n}\nexports.createCluster = createCluster;\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let 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 const seedBytes = options.random || (options.rng || _rng.default)();\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 let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const 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 const 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 const 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 (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\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 offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n",null,"module.exports = require(\"assert\");","module.exports = require(\"crypto\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"punycode\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");","// Axios v1.3.4 Copyright (c) 2023 Matt Zabriskie and contributors\n'use strict';\n\nconst FormData$1 = require('form-data');\nconst url = require('url');\nconst proxyFromEnv = require('proxy-from-env');\nconst http = require('http');\nconst https = require('https');\nconst util = require('util');\nconst followRedirects = require('follow-redirects');\nconst zlib = require('zlib');\nconst stream = require('stream');\nconst EventEmitter = require('events');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nconst FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);\nconst url__default = /*#__PURE__*/_interopDefaultLegacy(url);\nconst http__default = /*#__PURE__*/_interopDefaultLegacy(http);\nconst https__default = /*#__PURE__*/_interopDefaultLegacy(https);\nconst util__default = /*#__PURE__*/_interopDefaultLegacy(util);\nconst followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);\nconst zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);\nconst stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);\nconst EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n};\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0];\n }\n\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst utils = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData__default[\"default\"] || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nconst InterceptorManager$1 = InterceptorManager;\n\nconst transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nconst URLSearchParams = url__default[\"default\"].URLSearchParams;\n\nconst platform = {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData: FormData__default[\"default\"],\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nconst defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nconst parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nfunction isValidHeaderName(str) {\n return /^[-_a-zA-Z]+$/.test(str.trim());\n}\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nconst AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst VERSION = \"1.3.4\";\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nfunction fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled(force, args) {\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, args);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, args);\n }, threshold - (now - timestamp));\n }\n };\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream__default[\"default\"].Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n 'loaded': bytesTransferred,\n 'total': totalBytes,\n 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined,\n 'bytes': progressBytes,\n 'rate': rate ? rate : undefined,\n 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nconst AxiosTransformStream$1 = AxiosTransformStream;\n\nconst {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream();\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer();\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n};\n\nconst readBlob$1 = readBlob;\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new util.TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`;\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob$1(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n };\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return stream.Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nconst formDataToStream$1 = formDataToStream;\n\nclass ZlibHeaderTransformStream extends stream__default[\"default\"].Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nconst ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream;\n\nconst zlibOptions = {\n flush: zlib__default[\"default\"].constants.Z_SYNC_FLUSH,\n finishFlush: zlib__default[\"default\"].constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib__default[\"default\"].constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib__default[\"default\"].constants.BROTLI_OPERATION_FLUSH\n};\n\nconst isBrotliSupported = utils.isFunction(zlib__default[\"default\"].createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects__default[\"default\"];\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = proxyFromEnv.getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n };\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n };\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\n/*eslint consistent-return:0*/\nconst httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter__default[\"default\"]();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n };\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream__default[\"default\"].Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders$1(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders$1.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream$1(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util__default[\"default\"].promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream__default[\"default\"].Readable.from(readBlob$1(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) ; else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream__default[\"default\"].Readable.from(data, {objectMode: false});\n }\n\n data = stream__default[\"default\"].pipeline([data, new AxiosTransformStream$1({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https__default[\"default\"] : http__default[\"default\"];\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream$1({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch (res.headers['content-encoding']) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib__default[\"default\"].createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream$1());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib__default[\"default\"].createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib__default[\"default\"].createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream__default[\"default\"].pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream__default[\"default\"].finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders$1(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n};\n\nconst cookies = platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n\nconst isURLSameOrigin = platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nconst xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders$1.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv)) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n};\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst adapters = {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nconst validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nconst Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nconst CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nconst HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","// Underscore.js 1.13.6\n// https://underscorejs.org\n// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.6';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.6\n// https://underscorejs.org\n// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const core = require('@actions/core');\nconst github = require('@actions/github');\nconst axios = require('axios');\nconst detect = require('language-detect');\nconst httpsProxyAgent = require('https-proxy-agent');\n\nfunction configWithProxy(config) {\n var c = config || {};\n if (process.env.OPENAI_PROXY) {\n core.debug(`use proxy: ${process.env.OPENAI_PROXY}`);\n c.proxy = false;\n c.httpsAgent = new httpsProxyAgent(process.env.OPENAI_PROXY);\n return c;\n }\n return c;\n}\n\n\n\nasync function run() {\n try {\n // Get input values\n const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE');\n const openaiToken = core.getInput('OPENAI_TOKEN');\n const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT');\n const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX');\n const githubToken = core.getInput('GITHUB_TOKEN');\n const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL;\n const promptTemplate = core.getInput('PROMPT_TEMPLATE');\n const codeTemplate = core.getInput('CODE_TEMPLATE');\n const jokeTemplate = core.getInput('JOKE_TEMPLATE');\n const maxCodeLength = core.getInput('MAX_CODE_LENGTH');\n const answerTemplate = core.getInput('ANSWER_TEMPLATE');\n const giteaToken = core.getInput('GITHUB_TOKEN');\n const sourceAt = core.getInput('SOURCE_AT');\n\n core.debug(`programmingLanguage: ${programmingLanguage}`);\n core.debug(`openaiToken length: ${openaiToken.length}`);\n core.debug(`fullReviewComment: ${fullReviewComment}`);\n core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`);\n core.debug(`githubToken length: ${githubToken.length}`);\n core.debug(`githubBaseURL: ${githubBaseURL}`);\n core.debug(`promptTemplate: ${promptTemplate}`);\n core.debug(`codeTemplate: ${codeTemplate}`);\n core.debug(`jokeTemplate: ${jokeTemplate}`);\n core.debug(`maxCodeLength: ${maxCodeLength}`);\n core.debug(`answerTemplate: ${answerTemplate}`);\n core.debug(`SourceAt: ${sourceAt}`);\n\n // Get information about the pull request review\n const comment = github.context.payload.comment;\n const repoName = github.context.payload.repository.name;\n const repoOwner = github.context.payload.repository.owner.login;\n const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event\n\n // Get the code to analyze from the review comment\n var content = comment && comment.body || '';\n var completeContent = comment && comment.body || '';\n if(sourceAt === 'github') {\n\n const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`;\n console.log(`diff url: ${url}`);\n var response = await axios.get(url, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/vnd.github.diff'\n }\n });\n const code = response.data;\n core.debug(`diff code: ${code}`);\n const files = parsePullRequestDiff(code);\n core.debug(`diff files: ${files}`);\n\n if (!content || content == fullReviewComment) {\n // Extract the code from the pull request content\n content = code;\n } else {\n content = content.substring(reviewCommentPrefix.length);\n content = content.replace('${code}', code);\n const fileNames = findFileNames(content);\n core.debug(`found files name in commment: ${fileNames}`);\n for (const fileName of fileNames) {\n for (const key of Object.keys(files)) {\n if (key.includes(fileName)) {\n core.debug(`replace \\${file:${fileName}} with ${key}'s diff`);\n content = content.replace(`\\${file:${fileName}}`, files[key]);\n break;\n }\n }\n }\n }\n content = content.substring(0, maxCodeLength);\n }\n else if(sourceAt === 'gitea')\n {\n const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`;\n console.log(`diff url: ${url}`);\n var response = await axios.get(url, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/vnd.github.diff'\n }\n });\n const code = response.data;\n core.debug(`diff code: ${code}`);\n const files = parsePullRequestDiff(code);\n core.debug(`diff files: ${files}`);\n\n if (!content || content == fullReviewComment) {\n // Extract the code from the pull request content\n content = code;\n } else {\n content = content.substring(reviewCommentPrefix.length);\n content = content.replace('${code}', code);\n const fileNames = findFileNames(content);\n core.debug(`found files name in commment: ${fileNames}`);\n for (const fileName of fileNames) {\n for (const key of Object.keys(files)) {\n if (key.includes(fileName)) {\n core.debug(`replace \\${file:${fileName}} with ${key}'s diff`);\n content = content.replace(`\\${file:${fileName}}`, files[key]);\n break;\n }\n }\n }\n }\n content = content.substring(0, maxCodeLength);\n }\n // Determine the programming language if it was not provided\n if (programmingLanguage == 'auto') {\n const detectedLanguage = detect(code);\n core.debug(`Detected programming language: ${detectedLanguage}`);\n programmingLanguage = detectedLanguage;\n }\n\n var messageReview = promptTemplate.replace('${code}', content);\n var messageJoke = jokeTemplate.replace('${code}', content);\n var reviewInputMessages = [{\n role: \"system\",\n content: `You are a master of programming language ${programmingLanguage}`\n }, {\n role: \"user\",\n content: messageReview\n }];\n\n var jokeInputMessages = [{\n role: \"system\",\n content: `You are a master of programming language ${programmingLanguage}`\n }, {\n role: \"user\",\n content: messageJoke\n }];\n\n core.debug(`content: ${content}`);\n\n // Call the OpenAI ChatGPT API to analyze the code\n responseReview = await axios.post('https://api.openai.com/v1/chat/completions', {\n \"model\": \"gpt-3.5-turbo\",\n \"messages\": reviewInputMessages\n }, configWithProxy({\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${openaiToken}`\n }\n }));\n\n // Call the OpenAI ChatGPT API to analyze the code\n responseJoke = await axios.post('https://api.openai.com/v1/chat/completions', {\n \"model\": \"gpt-3.5-turbo\",\n \"messages\": jokeInputMessages\n }, configWithProxy({\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${openaiToken}`\n }\n }));\n\n\n const answer = response.data.choices[0].message.content + '/n/n' + '### Funny Joke about this PR:' +'/n/n' + responseJoke.data.choices[0].message.content;\n core.debug(`openai response: ${answer}`);\n\n if(sourceAt === 'github') {\n // Reply to the review comment with the OpenAI response\n const octokit = new github.getOctokit(githubToken, {\n baseUrl: githubBaseURL\n });\n\n await octokit.rest.issues.createComment({\n owner: repoOwner,\n repo: repoName,\n issue_number: prNumber,\n body: answerTemplate.replace('${answer}', answer)\n\n });\n } else if (sourceAt === 'gitea')\n {\n\n\n // Make a POST request to create a comment on a pull request\n const comment = answerTemplate.replace('${answer}', answer);\n const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`;\n const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` };\n const data = { 'body': `${comment}`};\n core.debug(`url: ${url}`);\n core.debug(`githubToken: ${githubToken}`);\n core.debug(`data.body: ${data.body}`);\n var response = await axios.post(url, data, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/json'\n }\n });\n }\n } catch (error) {\n core.setFailed(error.message);\n }\n}\n\nfunction parsePullRequestDiff(diffContent) {\n const files = {};\n const diffLines = diffContent.split('\\n');\n\n let currentFile = null;\n let currentLines = [];\n\n for (const line of diffLines) {\n if (line.startsWith('diff --git')) {\n // Start of a new file\n if (currentFile) {\n files[currentFile] = currentLines.join('\\n');\n }\n currentFile = line.substring('diff --git'.length + 1);\n currentLines = [line];\n } else {\n // Add the line to the current file's diff\n currentLines.push(line);\n }\n }\n\n // Add the last file's diff\n if (currentFile) {\n files[currentFile] = currentLines.join('\\n');\n }\n\n return files;\n}\n\nfunction findFileNames(str) {\n const pattern = /\\${file:([^{}]+)}/g;\n const matches = str.matchAll(pattern);\n const names = [];\n for (const match of matches) {\n names.push(match[1]);\n }\n return names;\n}\n\nrun();\n"],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACllCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1gBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5nBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5KA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1aA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5mBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvuBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1vDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChMA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzaA;;;;;;;;AAAA;;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7lIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7mEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7BA;AACA;;;;;;ACDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","sources":["../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/command.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/core.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/file-command.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/oidc-utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/path-utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/summary.js","../webpack://gitea-code-review-action/./node_modules/@actions/core/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/context.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/github.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/internal/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/github/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/auth.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/index.js","../webpack://gitea-code-review-action/./node_modules/@actions/http-client/lib/proxy.js","../webpack://gitea-code-review-action/./node_modules/@octokit/auth-token/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/core/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/endpoint/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/graphql/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/plugin-paginate-rest/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/request-error/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@octokit/request/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/CARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/INSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/LOADCHUNK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/MADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/MEXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/SCANDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/bloom/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYDIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/INITBYPROB.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/MERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/count-min-sketch/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/ADDNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/INSERTNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/LOADCHUNK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/SCANDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/cuckoo/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/BYRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/BYREVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/CDF.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/MIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/QUANTILE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/RANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/REVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/TRIMMED_MEAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/t-digest/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/LIST_WITHCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/RESERVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/commands/top-k/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/bloom/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/composers/buffer.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/composers/string.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/decoder.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/RESP2/encoder.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/commands-queue.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/commands.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/pub-sub.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/client/socket.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/cluster-slots.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/commands.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/cluster/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/command-options.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commander.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_CAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_DELUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_DRYRUN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_GENPASS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_GETUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_LOG_RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_SAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_SETUSER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_USERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ACL_WHOAMI.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/APPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ASKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/AUTH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BGREWRITEAOF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BGSAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITFIELD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITFIELD_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BITPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BLPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BRPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BRPOPLPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZPOPMAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/BZPOPMIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_CACHING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_GETNAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_GETREDIR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_ID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_NO-EVICT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_PAUSE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_SETNAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_TRACKINGINFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLIENT_UNPAUSE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_ADDSLOTSRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_BUMPEPOCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNT-FAILURE-REPORTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_COUNTKEYSINSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_DELSLOTSRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FAILOVER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FLUSHSLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_FORGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_GETKEYSINSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_KEYSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_LINKS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_MEET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_MYID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_NODES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICAS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_REPLICATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_RESET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SAVECONFIG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SET-CONFIG-EPOCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SETSLOT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CLUSTER_SLOTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_GETKEYSANDFLAGS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COMMAND_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_RESETSTAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_REWRITE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/COPY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DBSIZE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DECR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DECRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DISCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/DUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ECHO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVAL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVALSHA.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVALSHA_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EVAL_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIRE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIREAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/EXPIRETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FAILOVER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FCALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FCALL_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FLUSHALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FLUSHDB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_DELETE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_DUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_FLUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LIST_WITHCODE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_RESTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/FUNCTION_STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEODIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOHASH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_RO_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSBYMEMBER_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUSSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_RO_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEORADIUS_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCHSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GEOSEARCH_WITH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETBIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/GETSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HELLO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HEXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HGETALL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HINCRBYFLOAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HMGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HRANDFIELD_COUNT_WITHVALUES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HSTRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/HVALS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INCRBYFLOAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/KEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LASTSAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LATENCY_DOCTOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LATENCY_GRAPH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_IDX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_IDX_WITHMATCHLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LCS_LEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LINSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LOLWUT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOP_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPOS_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LPUSHX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/LTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_DOCTOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_MALLOC-STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_PURGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_STATS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MEMORY_USAGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MIGRATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MODULE_UNLOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MSET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/MSETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_ENCODING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_FREQ.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_IDLETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/OBJECT_REFCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PERSIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIRE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIREAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PEXPIRETIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PFMERGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PSETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PTTL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBLISH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_CHANNELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMPAT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_NUMSUB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/PUBSUB_SHARDCHANNELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RANDOMKEY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/READONLY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/READWRITE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RENAME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RENAMENX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/REPLICAOF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RESTORE-ASKING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ROLE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOPLPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPOP_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/RPUSHX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SAVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_DEBUG.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_EXISTS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_FLUSH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_KILL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SCRIPT_LOAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SDIFF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SDIFFSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETBIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETNX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SETRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SHUTDOWN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTERCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SINTERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SISMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMEMBERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMISMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SMOVE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT_RO.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SORT_STORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SPUBLISH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SRANDMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SRANDMEMBER_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/STRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SUNION.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SUNIONSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/SWAPDB.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TIME.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TOUCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TTL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/TYPE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/UNLINK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/UNWATCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/WAIT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/WATCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XACK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XAUTOCLAIM_JUSTID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XCLAIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XCLAIM_JUSTID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_CREATECONSUMER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_DELCONSUMER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_DESTROY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XGROUP_SETID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_CONSUMERS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_GROUPS.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XINFO_STREAM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XPENDING.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XPENDING_RANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREAD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREADGROUP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XREVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XSETID.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/XTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFF.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFFSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZDIFF_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTERCARD.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTERSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZINTER_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZLEXCOUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZMPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZMSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMAX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMAX_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZPOPMIN_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANDMEMBER_COUNT_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYLEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGEBYSCORE_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGESTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANGE_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREM.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYLEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREMRANGEBYSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZREVRANK.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZSCAN.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZSCORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNION.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNIONSTORE.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/ZUNION_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/commands/generic-transformers.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/errors.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/lua-script.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/multi-command.js","../webpack://gitea-code-review-action/./node_modules/@redis/client/dist/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/DELETE.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/EXPLAIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/PROFILE.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/RO_QUERY.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/SLOWLOG.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/graph.js","../webpack://gitea-code-review-action/./node_modules/@redis/graph/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRAPPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRINSERT.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRPOP.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/ARRTRIM.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/DEBUG_MEMORY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/FORGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/NUMINCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/NUMMULTBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/OBJKEYS.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/OBJLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/RESP.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/STRAPPEND.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/STRLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/TYPE.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/json/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/AGGREGATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/AGGREGATE_WITHCURSOR.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALIASUPDATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/ALTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CONFIG_GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CONFIG_SET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CURSOR_DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/CURSOR_READ.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DICTDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/DROPINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/EXPLAIN.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/EXPLAINCLI.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/PROFILE_AGGREGATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/PROFILE_SEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SEARCH.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SPELLCHECK.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGDEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHPAYLOADS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHSCORES.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGGET_WITHSCORES_WITHPAYLOADS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SUGLEN.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SYNDUMP.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/SYNUPDATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/TAGVALS.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/_LIST.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/search/dist/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/ADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/ALTER.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/CREATE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/CREATERULE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DECRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DEL.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/DELETERULE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/GET.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INCRBY.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INFO.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/INFO_DEBUG.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MADD.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MGET.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MGET_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MRANGE_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MREVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/MREVRANGE_WITHLABELS.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/QUERYINDEX.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/RANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/REVRANGE.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/commands/index.js","../webpack://gitea-code-review-action/./node_modules/@redis/time-series/dist/index.js","../webpack://gitea-code-review-action/./node_modules/agent-base/dist/src/index.js","../webpack://gitea-code-review-action/./node_modules/agent-base/dist/src/promisify.js","../webpack://gitea-code-review-action/./node_modules/asynckit/index.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/abort.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/async.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/defer.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/iterate.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/state.js","../webpack://gitea-code-review-action/./node_modules/asynckit/lib/terminator.js","../webpack://gitea-code-review-action/./node_modules/asynckit/parallel.js","../webpack://gitea-code-review-action/./node_modules/asynckit/serial.js","../webpack://gitea-code-review-action/./node_modules/asynckit/serialOrdered.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/index.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/add.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/register.js","../webpack://gitea-code-review-action/./node_modules/before-after-hook/lib/remove.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/localStorage.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/memory.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/backends/redis.js","../webpack://gitea-code-review-action/./node_modules/classifier/lib/bayesian.js","../webpack://gitea-code-review-action/./node_modules/cluster-key-slot/lib/index.js","../webpack://gitea-code-review-action/./node_modules/combined-stream/lib/combined_stream.js","../webpack://gitea-code-review-action/./node_modules/debug/src/browser.js","../webpack://gitea-code-review-action/./node_modules/debug/src/common.js","../webpack://gitea-code-review-action/./node_modules/debug/src/index.js","../webpack://gitea-code-review-action/./node_modules/debug/src/node.js","../webpack://gitea-code-review-action/./node_modules/delayed-stream/lib/delayed_stream.js","../webpack://gitea-code-review-action/./node_modules/deprecation/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/follow-redirects/debug.js","../webpack://gitea-code-review-action/./node_modules/follow-redirects/index.js","../webpack://gitea-code-review-action/./node_modules/form-data/lib/form_data.js","../webpack://gitea-code-review-action/./node_modules/form-data/lib/populate.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/index.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DefaultEvictor.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Deferred.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Deque.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DequeIterator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DoublyLinkedList.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/DoublyLinkedListIterator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Pool.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PoolDefaults.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PoolOptions.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PooledResource.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PooledResourceStateEnum.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/PriorityQueue.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/Queue.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/ResourceLoan.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/ResourceRequest.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/errors.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/factoryValidator.js","../webpack://gitea-code-review-action/./node_modules/generic-pool/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/agent.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/index.js","../webpack://gitea-code-review-action/./node_modules/https-proxy-agent/dist/parse-proxy-response.js","../webpack://gitea-code-review-action/./node_modules/is-plain-object/dist/is-plain-object.js","../webpack://gitea-code-review-action/./node_modules/language-classifier/index.js","../webpack://gitea-code-review-action/./node_modules/language-detect/language-detect.js","../webpack://gitea-code-review-action/./node_modules/mime-db/index.js","../webpack://gitea-code-review-action/./node_modules/mime-types/index.js","../webpack://gitea-code-review-action/./node_modules/ms/index.js","../webpack://gitea-code-review-action/./node_modules/node-fetch/lib/index.js","../webpack://gitea-code-review-action/./node_modules/once/once.js","../webpack://gitea-code-review-action/./node_modules/proxy-from-env/index.js","../webpack://gitea-code-review-action/./node_modules/redis/dist/index.js","../webpack://gitea-code-review-action/./node_modules/tr46/index.js","../webpack://gitea-code-review-action/./node_modules/tunnel/index.js","../webpack://gitea-code-review-action/./node_modules/tunnel/lib/tunnel.js","../webpack://gitea-code-review-action/./node_modules/universal-user-agent/dist-node/index.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/index.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/md5.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/nil.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/parse.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/regex.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/rng.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/sha1.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/stringify.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v1.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v3.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v35.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v4.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/v5.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/validate.js","../webpack://gitea-code-review-action/./node_modules/uuid/dist/version.js","../webpack://gitea-code-review-action/./node_modules/webidl-conversions/lib/index.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/URL-impl.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/URL.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/public-api.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/url-state-machine.js","../webpack://gitea-code-review-action/./node_modules/whatwg-url/lib/utils.js","../webpack://gitea-code-review-action/./node_modules/wrappy/wrappy.js","../webpack://gitea-code-review-action/./node_modules/yallist/iterator.js","../webpack://gitea-code-review-action/./node_modules/yallist/yallist.js","../webpack://gitea-code-review-action/./node_modules/@vercel/ncc/dist/ncc/@@notfound.js","../webpack://gitea-code-review-action/external node-commonjs \"assert\"","../webpack://gitea-code-review-action/external node-commonjs \"crypto\"","../webpack://gitea-code-review-action/external node-commonjs \"events\"","../webpack://gitea-code-review-action/external node-commonjs \"fs\"","../webpack://gitea-code-review-action/external node-commonjs \"http\"","../webpack://gitea-code-review-action/external node-commonjs \"https\"","../webpack://gitea-code-review-action/external node-commonjs \"net\"","../webpack://gitea-code-review-action/external node-commonjs \"os\"","../webpack://gitea-code-review-action/external node-commonjs \"path\"","../webpack://gitea-code-review-action/external node-commonjs \"punycode\"","../webpack://gitea-code-review-action/external node-commonjs \"stream\"","../webpack://gitea-code-review-action/external node-commonjs \"string_decoder\"","../webpack://gitea-code-review-action/external node-commonjs \"tls\"","../webpack://gitea-code-review-action/external node-commonjs \"tty\"","../webpack://gitea-code-review-action/external node-commonjs \"url\"","../webpack://gitea-code-review-action/external node-commonjs \"util\"","../webpack://gitea-code-review-action/external node-commonjs \"zlib\"","../webpack://gitea-code-review-action/./node_modules/axios/dist/node/axios.cjs","../webpack://gitea-code-review-action/./node_modules/underscore/underscore-node-f.cjs","../webpack://gitea-code-review-action/./node_modules/underscore/underscore-node.cjs","../webpack://gitea-code-review-action/webpack/bootstrap","../webpack://gitea-code-review-action/webpack/runtime/compat","../webpack://gitea-code-review-action/./index.js"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.result.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if (fs_1.existsSync(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse(fs_1.readFileSync(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl = (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins(utils_1.getOctokitOptions(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers = exports.Headers || (exports.Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (this._keepAlive && !useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if reusing agent across request and tunneling agent isn't assigned create a new agent\n if (this._keepAlive && !agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n // if not using private agent and tunnel agent isn't setup then use global agent\n if (!agent) {\n agent = usingSsl ? https.globalAgent : http.globalAgent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n return new URL(proxyVar);\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperReqHosts.some(x => x === upperNoProxyItem)) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\n//# sourceMappingURL=proxy.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nconst REGEX_IS_INSTALLATION = /^ghs_/;\nconst REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token: token,\n tokenType\n };\n}\n\n/**\n * Prefix token for usage in the Authorization header\n *\n * @param token OAuth token or JSON Web Token\n */\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n\n return `token ${token}`;\n}\n\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(route, parameters);\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\nconst createTokenAuth = function createTokenAuth(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n\n if (typeof token !== \"string\") {\n throw new Error(\"[@octokit/auth-token] Token passed to createTokenAuth is not a string\");\n }\n\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n\nexports.createTokenAuth = createTokenAuth;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar universalUserAgent = require('universal-user-agent');\nvar beforeAfterHook = require('before-after-hook');\nvar request = require('@octokit/request');\nvar graphql = require('@octokit/graphql');\nvar authToken = require('@octokit/auth-token');\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nconst VERSION = \"3.6.0\";\n\nconst _excluded = [\"authStrategy\"];\nclass Octokit {\n constructor(options = {}) {\n const hook = new beforeAfterHook.Collection();\n const requestDefaults = {\n baseUrl: request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n }; // prepend default user agent with `options.userAgent` if set\n\n requestDefaults.headers[\"user-agent\"] = [options.userAgent, `octokit-core.js/${VERSION} ${universalUserAgent.getUserAgent()}`].filter(Boolean).join(\" \");\n\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n\n this.request = request.request.defaults(requestDefaults);\n this.graphql = graphql.withCustomRequest(this.request).defaults(requestDefaults);\n this.log = Object.assign({\n debug: () => {},\n info: () => {},\n warn: console.warn.bind(console),\n error: console.error.bind(console)\n }, options.log);\n this.hook = hook; // (1) If neither `options.authStrategy` nor `options.auth` are set, the `octokit` instance\n // is unauthenticated. The `this.auth()` method is a no-op and no request hook is registered.\n // (2) If only `options.auth` is set, use the default token authentication strategy.\n // (3) If `options.authStrategy` is set then use it and pass in `options.auth`. Always pass own request as many strategies accept a custom request instance.\n // TODO: type `options.auth` based on `options.authStrategy`.\n\n if (!options.authStrategy) {\n if (!options.auth) {\n // (1)\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n // (2)\n const auth = authToken.createTokenAuth(options.auth); // @ts-ignore ¯\\_(ツ)_/¯\n\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const {\n authStrategy\n } = options,\n otherOptions = _objectWithoutProperties(options, _excluded);\n\n const auth = authStrategy(Object.assign({\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n }, options.auth)); // @ts-ignore ¯\\_(ツ)_/¯\n\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n } // apply plugins\n // https://stackoverflow.com/a/16345172\n\n\n const classConstructor = this.constructor;\n classConstructor.plugins.forEach(plugin => {\n Object.assign(this, plugin(this, options));\n });\n }\n\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n\n super(Object.assign({}, defaults, options, options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null));\n }\n\n };\n return OctokitWithDefaults;\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n\n\n static plugin(...newPlugins) {\n var _a;\n\n const currentPlugins = this.plugins;\n const NewOctokit = (_a = class extends this {}, _a.plugins = currentPlugins.concat(newPlugins.filter(plugin => !currentPlugins.includes(plugin))), _a);\n return NewOctokit;\n }\n\n}\nOctokit.VERSION = VERSION;\nOctokit.plugins = [];\n\nexports.Octokit = Octokit;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar isPlainObject = require('is-plain-object');\nvar universalUserAgent = require('universal-user-agent');\n\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach(key => {\n if (isPlainObject.isPlainObject(options[key])) {\n if (!(key in defaults)) Object.assign(result, {\n [key]: options[key]\n });else result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, {\n [key]: options[key]\n });\n }\n });\n return result;\n}\n\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === undefined) {\n delete obj[key];\n }\n }\n\n return obj;\n}\n\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? {\n method,\n url\n } : {\n url: method\n }, options);\n } else {\n options = Object.assign({}, route);\n } // lowercase header names before merging with defaults to avoid duplicates\n\n\n options.headers = lowercaseKeys(options.headers); // remove properties with undefined values before merging\n\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options); // mediaType.previews arrays are merged, instead of overwritten\n\n if (defaults && defaults.mediaType.previews.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(preview => !mergedOptions.mediaType.previews.includes(preview)).concat(mergedOptions.mediaType.previews);\n }\n\n mergedOptions.mediaType.previews = mergedOptions.mediaType.previews.map(preview => preview.replace(/-preview/, \"\"));\n return mergedOptions;\n}\n\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n\n if (names.length === 0) {\n return url;\n }\n\n return url + separator + names.map(name => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\nconst urlVariableRegex = /\\{[^}]+\\}/g;\n\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\n\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n\n if (!matches) {\n return [];\n }\n\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\nfunction omit(object, keysToOmit) {\n return Object.keys(object).filter(option => !keysToOmit.includes(option)).reduce((obj, key) => {\n obj[key] = object[key];\n return obj;\n }, {});\n}\n\n// Based on https://github.com/bramstein/url-template, licensed under BSD\n// TODO: create separate package.\n//\n// Copyright (c) 2012-2014, Bram Stein\n// All rights reserved.\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n// 1. Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// 2. Redistributions in binary form must reproduce the above copyright\n// notice, this list of conditions and the following disclaimer in the\n// documentation and/or other materials provided with the distribution.\n// 3. The name of the author may not be used to endorse or promote products\n// derived from this software without specific prior written permission.\n// THIS SOFTWARE IS PROVIDED BY THE AUTHOR \"AS IS\" AND ANY EXPRESS OR IMPLIED\n// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO\n// EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\n// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n// OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,\n// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n/* istanbul ignore file */\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function (part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n\n return part;\n }).join(\"\");\n}\n\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\n\nfunction isDefined(value) {\n return value !== undefined && value !== null;\n}\n\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\n\nfunction getValues(context, operator, key, modifier) {\n var value = context[key],\n result = [];\n\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n result.push(encodeValue(operator, value, isKeyOperator(operator) ? key : \"\"));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function (value) {\n tmp.push(encodeValue(operator, value));\n });\n } else {\n Object.keys(value).forEach(function (k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n\n return result;\n}\n\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\n\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n return template.replace(/\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g, function (_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n\n expression.split(/,/g).forEach(function (variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n\n if (operator && operator !== \"+\") {\n var separator = \",\";\n\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n });\n}\n\nfunction parse(options) {\n // https://fetch.spec.whatwg.org/#methods\n let method = options.method.toUpperCase(); // replace :varname with {varname} to make it RFC 6570 compatible\n\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"mediaType\"]); // extract variable names from URL to calculate remaining variables later\n\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n\n const omittedParameters = Object.keys(options).filter(option => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n // e.g. application/vnd.github.v3+json => application/vnd.github.v3.raw\n headers.accept = headers.accept.split(/,/).map(preview => preview.replace(/application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/, `application/vnd$1$2.${options.mediaType.format}`)).join(\",\");\n }\n\n if (options.mediaType.previews.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map(preview => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n } // for GET/HEAD requests, set URL query parameters from remaining parameters\n // for PATCH/POST/PUT/DELETE requests, set request body from remaining parameters\n\n\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n } else {\n headers[\"content-length\"] = 0;\n }\n }\n } // default content-type for JSON if body is set\n\n\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n } // GitHub expects 'content-length: 0' header for PUT/PATCH requests without body.\n // fetch does not allow to set `content-length` header, but we can set body to an empty string\n\n\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n } // Only return body/request keys if present\n\n\n return Object.assign({\n method,\n url,\n headers\n }, typeof body !== \"undefined\" ? {\n body\n } : null, options.request ? {\n request: options.request\n } : null);\n}\n\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS = merge(oldDefaults, newDefaults);\n const endpoint = endpointWithDefaults.bind(null, DEFAULTS);\n return Object.assign(endpoint, {\n DEFAULTS,\n defaults: withDefaults.bind(null, DEFAULTS),\n merge: merge.bind(null, DEFAULTS),\n parse\n });\n}\n\nconst VERSION = \"6.0.12\";\n\nconst userAgent = `octokit-endpoint.js/${VERSION} ${universalUserAgent.getUserAgent()}`; // DEFAULTS has all properties set that EndpointOptions has, except url.\n// So we use RequestParameters and add method as additional required property.\n\nconst DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\",\n previews: []\n }\n};\n\nconst endpoint = withDefaults(null, DEFAULTS);\n\nexports.endpoint = endpoint;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar request = require('@octokit/request');\nvar universalUserAgent = require('universal-user-agent');\n\nconst VERSION = \"4.8.0\";\n\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\\n` + data.errors.map(e => ` - ${e.message}`).join(\"\\n\");\n}\n\nclass GraphqlResponseError extends Error {\n constructor(request, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\"; // Expose the errors and response data in their shorthand properties.\n\n this.errors = response.errors;\n this.data = response.data; // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n\n}\n\nconst NON_VARIABLE_OPTIONS = [\"method\", \"baseUrl\", \"url\", \"headers\", \"request\", \"query\", \"mediaType\"];\nconst FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nconst GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`));\n }\n\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key)) continue;\n return Promise.reject(new Error(`[@octokit/graphql] \"${key}\" cannot be used as variable name`));\n }\n }\n\n const parsedOptions = typeof query === \"string\" ? Object.assign({\n query\n }, options) : query;\n const requestOptions = Object.keys(parsedOptions).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n\n if (!result.variables) {\n result.variables = {};\n }\n\n result.variables[key] = parsedOptions[key];\n return result;\n }, {}); // workaround for GitHub Enterprise baseUrl set with /api/v3 suffix\n // https://github.com/octokit/auth-app.js/issues/111#issuecomment-657610451\n\n const baseUrl = parsedOptions.baseUrl || request.endpoint.DEFAULTS.baseUrl;\n\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n\n return request(requestOptions).then(response => {\n if (response.data.errors) {\n const headers = {};\n\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n\n throw new GraphqlResponseError(requestOptions, headers, response.data);\n }\n\n return response.data.data;\n });\n}\n\nfunction withDefaults(request$1, newDefaults) {\n const newRequest = request$1.defaults(newDefaults);\n\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: request.request.endpoint\n });\n}\n\nconst graphql$1 = withDefaults(request.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${universalUserAgent.getUserAgent()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n\nexports.GraphqlResponseError = GraphqlResponseError;\nexports.graphql = graphql$1;\nexports.withCustomRequest = withCustomRequest;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst VERSION = \"2.21.3\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\n/**\n * Some “list” response that can be paginated have a different response structure\n *\n * They have a `total_count` key in the response (search also has `incomplete_results`,\n * /installation/repositories also has `repository_selection`), as well as a key with\n * the list of the items which name varies from endpoint to endpoint.\n *\n * Octokit normalizes these responses so that paginated results are always returned following\n * the same structure. One challenge is that if the list response has only one page, no Link\n * header is provided, so this header alone is not sufficient to check wether a response is\n * paginated or not.\n *\n * We check if a \"total_count\" key is present in the response data, but also make sure that\n * a \"url\" property is not, as the \"Get the combined status for a specific ref\" endpoint would\n * otherwise match: https://developer.github.com/v3/repos/statuses/#get-the-combined-status-for-a-specific-ref\n */\nfunction normalizePaginatedListResponse(response) {\n // endpoints can respond with 204 if repository is empty\n if (!response.data) {\n return _objectSpread2(_objectSpread2({}, response), {}, {\n data: []\n });\n }\n\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization) return response; // keep the additional properties intact as there is currently no other way\n // to retrieve the same information.\n\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n\n response.data.total_count = totalCount;\n return response;\n}\n\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url) return {\n done: true\n };\n\n try {\n const response = await requestMethod({\n method,\n url,\n headers\n });\n const normalizedResponse = normalizePaginatedListResponse(response); // `response.headers.link` format:\n // '; rel=\"next\", ; rel=\"last\"'\n // sets `url` to undefined if \"next\" URL is not present or `link` header is not set\n\n url = ((normalizedResponse.headers.link || \"\").match(/<([^>]+)>;\\s*rel=\"next\"/) || [])[1];\n return {\n value: normalizedResponse\n };\n } catch (error) {\n if (error.status !== 409) throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n\n })\n };\n}\n\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = undefined;\n }\n\n return gather(octokit, [], iterator(octokit, route, parameters)[Symbol.asyncIterator](), mapFn);\n}\n\nfunction gather(octokit, results, iterator, mapFn) {\n return iterator.next().then(result => {\n if (result.done) {\n return results;\n }\n\n let earlyExit = false;\n\n function done() {\n earlyExit = true;\n }\n\n results = results.concat(mapFn ? mapFn(result.value, done) : result.value.data);\n\n if (earlyExit) {\n return results;\n }\n\n return gather(octokit, results, iterator, mapFn);\n });\n}\n\nconst composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\nconst paginatingEndpoints = [\"GET /app/hook/deliveries\", \"GET /app/installations\", \"GET /applications/grants\", \"GET /authorizations\", \"GET /enterprises/{enterprise}/actions/permissions/organizations\", \"GET /enterprises/{enterprise}/actions/runner-groups\", \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/organizations\", \"GET /enterprises/{enterprise}/actions/runner-groups/{runner_group_id}/runners\", \"GET /enterprises/{enterprise}/actions/runners\", \"GET /enterprises/{enterprise}/audit-log\", \"GET /enterprises/{enterprise}/secret-scanning/alerts\", \"GET /enterprises/{enterprise}/settings/billing/advanced-security\", \"GET /events\", \"GET /gists\", \"GET /gists/public\", \"GET /gists/starred\", \"GET /gists/{gist_id}/comments\", \"GET /gists/{gist_id}/commits\", \"GET /gists/{gist_id}/forks\", \"GET /installation/repositories\", \"GET /issues\", \"GET /licenses\", \"GET /marketplace_listing/plans\", \"GET /marketplace_listing/plans/{plan_id}/accounts\", \"GET /marketplace_listing/stubbed/plans\", \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\", \"GET /networks/{owner}/{repo}/events\", \"GET /notifications\", \"GET /organizations\", \"GET /orgs/{org}/actions/cache/usage-by-repository\", \"GET /orgs/{org}/actions/permissions/repositories\", \"GET /orgs/{org}/actions/runner-groups\", \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/repositories\", \"GET /orgs/{org}/actions/runner-groups/{runner_group_id}/runners\", \"GET /orgs/{org}/actions/runners\", \"GET /orgs/{org}/actions/secrets\", \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\", \"GET /orgs/{org}/audit-log\", \"GET /orgs/{org}/blocks\", \"GET /orgs/{org}/code-scanning/alerts\", \"GET /orgs/{org}/codespaces\", \"GET /orgs/{org}/credential-authorizations\", \"GET /orgs/{org}/dependabot/secrets\", \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\", \"GET /orgs/{org}/events\", \"GET /orgs/{org}/external-groups\", \"GET /orgs/{org}/failed_invitations\", \"GET /orgs/{org}/hooks\", \"GET /orgs/{org}/hooks/{hook_id}/deliveries\", \"GET /orgs/{org}/installations\", \"GET /orgs/{org}/invitations\", \"GET /orgs/{org}/invitations/{invitation_id}/teams\", \"GET /orgs/{org}/issues\", \"GET /orgs/{org}/members\", \"GET /orgs/{org}/migrations\", \"GET /orgs/{org}/migrations/{migration_id}/repositories\", \"GET /orgs/{org}/outside_collaborators\", \"GET /orgs/{org}/packages\", \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\", \"GET /orgs/{org}/projects\", \"GET /orgs/{org}/public_members\", \"GET /orgs/{org}/repos\", \"GET /orgs/{org}/secret-scanning/alerts\", \"GET /orgs/{org}/settings/billing/advanced-security\", \"GET /orgs/{org}/team-sync/groups\", \"GET /orgs/{org}/teams\", \"GET /orgs/{org}/teams/{team_slug}/discussions\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\", \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\", \"GET /orgs/{org}/teams/{team_slug}/invitations\", \"GET /orgs/{org}/teams/{team_slug}/members\", \"GET /orgs/{org}/teams/{team_slug}/projects\", \"GET /orgs/{org}/teams/{team_slug}/repos\", \"GET /orgs/{org}/teams/{team_slug}/teams\", \"GET /projects/columns/{column_id}/cards\", \"GET /projects/{project_id}/collaborators\", \"GET /projects/{project_id}/columns\", \"GET /repos/{owner}/{repo}/actions/artifacts\", \"GET /repos/{owner}/{repo}/actions/caches\", \"GET /repos/{owner}/{repo}/actions/runners\", \"GET /repos/{owner}/{repo}/actions/runs\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\", \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\", \"GET /repos/{owner}/{repo}/actions/secrets\", \"GET /repos/{owner}/{repo}/actions/workflows\", \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\", \"GET /repos/{owner}/{repo}/assignees\", \"GET /repos/{owner}/{repo}/branches\", \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\", \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\", \"GET /repos/{owner}/{repo}/code-scanning/alerts\", \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\", \"GET /repos/{owner}/{repo}/code-scanning/analyses\", \"GET /repos/{owner}/{repo}/codespaces\", \"GET /repos/{owner}/{repo}/codespaces/devcontainers\", \"GET /repos/{owner}/{repo}/codespaces/secrets\", \"GET /repos/{owner}/{repo}/collaborators\", \"GET /repos/{owner}/{repo}/comments\", \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/commits\", \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\", \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\", \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\", \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\", \"GET /repos/{owner}/{repo}/commits/{ref}/status\", \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\", \"GET /repos/{owner}/{repo}/contributors\", \"GET /repos/{owner}/{repo}/dependabot/secrets\", \"GET /repos/{owner}/{repo}/deployments\", \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\", \"GET /repos/{owner}/{repo}/environments\", \"GET /repos/{owner}/{repo}/events\", \"GET /repos/{owner}/{repo}/forks\", \"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\", \"GET /repos/{owner}/{repo}/hooks\", \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\", \"GET /repos/{owner}/{repo}/invitations\", \"GET /repos/{owner}/{repo}/issues\", \"GET /repos/{owner}/{repo}/issues/comments\", \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/issues/events\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\", \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\", \"GET /repos/{owner}/{repo}/keys\", \"GET /repos/{owner}/{repo}/labels\", \"GET /repos/{owner}/{repo}/milestones\", \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\", \"GET /repos/{owner}/{repo}/notifications\", \"GET /repos/{owner}/{repo}/pages/builds\", \"GET /repos/{owner}/{repo}/projects\", \"GET /repos/{owner}/{repo}/pulls\", \"GET /repos/{owner}/{repo}/pulls/comments\", \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\", \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\", \"GET /repos/{owner}/{repo}/releases\", \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\", \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\", \"GET /repos/{owner}/{repo}/secret-scanning/alerts\", \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\", \"GET /repos/{owner}/{repo}/stargazers\", \"GET /repos/{owner}/{repo}/subscribers\", \"GET /repos/{owner}/{repo}/tags\", \"GET /repos/{owner}/{repo}/teams\", \"GET /repos/{owner}/{repo}/topics\", \"GET /repositories\", \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\", \"GET /search/code\", \"GET /search/commits\", \"GET /search/issues\", \"GET /search/labels\", \"GET /search/repositories\", \"GET /search/topics\", \"GET /search/users\", \"GET /teams/{team_id}/discussions\", \"GET /teams/{team_id}/discussions/{discussion_number}/comments\", \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\", \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\", \"GET /teams/{team_id}/invitations\", \"GET /teams/{team_id}/members\", \"GET /teams/{team_id}/projects\", \"GET /teams/{team_id}/repos\", \"GET /teams/{team_id}/teams\", \"GET /user/blocks\", \"GET /user/codespaces\", \"GET /user/codespaces/secrets\", \"GET /user/emails\", \"GET /user/followers\", \"GET /user/following\", \"GET /user/gpg_keys\", \"GET /user/installations\", \"GET /user/installations/{installation_id}/repositories\", \"GET /user/issues\", \"GET /user/keys\", \"GET /user/marketplace_purchases\", \"GET /user/marketplace_purchases/stubbed\", \"GET /user/memberships/orgs\", \"GET /user/migrations\", \"GET /user/migrations/{migration_id}/repositories\", \"GET /user/orgs\", \"GET /user/packages\", \"GET /user/packages/{package_type}/{package_name}/versions\", \"GET /user/public_emails\", \"GET /user/repos\", \"GET /user/repository_invitations\", \"GET /user/starred\", \"GET /user/subscriptions\", \"GET /user/teams\", \"GET /users\", \"GET /users/{username}/events\", \"GET /users/{username}/events/orgs/{org}\", \"GET /users/{username}/events/public\", \"GET /users/{username}/followers\", \"GET /users/{username}/following\", \"GET /users/{username}/gists\", \"GET /users/{username}/gpg_keys\", \"GET /users/{username}/keys\", \"GET /users/{username}/orgs\", \"GET /users/{username}/packages\", \"GET /users/{username}/projects\", \"GET /users/{username}/received_events\", \"GET /users/{username}/received_events/public\", \"GET /users/{username}/repos\", \"GET /users/{username}/starred\", \"GET /users/{username}/subscriptions\"];\n\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n/**\n * @param octokit Octokit instance\n * @param options Options passed to Octokit constructor\n */\n\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n\nexports.composePaginateRest = composePaginateRest;\nexports.isPaginatingEndpoint = isPaginatingEndpoint;\nexports.paginateRest = paginateRest;\nexports.paginatingEndpoints = paginatingEndpoints;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nconst Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\"POST /orgs/{org}/actions/runners/{runner_id}/labels\"],\n addCustomLabelsToSelfHostedRunnerForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n addSelectedRepoToOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\n approveWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"],\n cancelWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"],\n createOrUpdateEnvironmentSecret: [\"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n createRegistrationTokenForOrg: [\"POST /orgs/{org}/actions/runners/registration-token\"],\n createRegistrationTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/registration-token\"],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\"POST /repos/{owner}/{repo}/actions/runners/remove-token\"],\n createWorkflowDispatch: [\"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"],\n deleteActionsCacheById: [\"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"],\n deleteActionsCacheByKey: [\"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"],\n deleteArtifact: [\"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n deleteEnvironmentSecret: [\"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n deleteSelfHostedRunnerFromOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}\"],\n deleteSelfHostedRunnerFromRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\n disableSelectedRepositoryGithubActionsOrganization: [\"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\n disableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"],\n downloadArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"],\n downloadJobLogsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"],\n downloadWorkflowRunAttemptLogs: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"],\n downloadWorkflowRunLogs: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"],\n enableSelectedRepositoryGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"],\n enableWorkflow: [\"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\"GET /orgs/{org}/actions/cache/usage-by-repository\"],\n getActionsCacheUsageForEnterprise: [\"GET /enterprises/{enterprise}/actions/cache/usage\"],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\"GET /orgs/{org}/actions/permissions/selected-actions\"],\n getAllowedActionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getEnvironmentPublicKey: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"],\n getEnvironmentSecret: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"],\n getGithubActionsDefaultWorkflowPermissionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/workflow\"],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\"GET /orgs/{org}/actions/permissions/workflow\"],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/workflow\"],\n getGithubActionsPermissionsOrganization: [\"GET /orgs/{org}/actions/permissions\"],\n getGithubActionsPermissionsRepository: [\"GET /repos/{owner}/{repo}/actions/permissions\"],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getPendingDeploymentsForRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"],\n getRepoPermissions: [\"GET /repos/{owner}/{repo}/actions/permissions\", {}, {\n renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"]\n }],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getReviewsForRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\"GET /repos/{owner}/{repo}/actions/permissions/access\"],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"],\n getWorkflowRunUsage: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"],\n getWorkflowUsage: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"],\n listJobsForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"],\n listJobsForWorkflowRunAttempt: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"],\n listLabelsForSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}/labels\"],\n listLabelsForSelfHostedRunnerForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\"GET /repos/{owner}/{repo}/actions/runners/downloads\"],\n listSelectedReposForOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\"GET /orgs/{org}/actions/permissions/repositories\"],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"],\n listWorkflowRuns: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"],\n removeSelectedRepoFromOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"],\n reviewPendingDeploymentsForRun: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"],\n setAllowedActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/selected-actions\"],\n setAllowedActionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"],\n setCustomLabelsForSelfHostedRunnerForOrg: [\"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"],\n setCustomLabelsForSelfHostedRunnerForRepo: [\"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"],\n setGithubActionsDefaultWorkflowPermissionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/workflow\"],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\"PUT /orgs/{org}/actions/permissions/workflow\"],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"],\n setGithubActionsPermissionsOrganization: [\"PUT /orgs/{org}/actions/permissions\"],\n setGithubActionsPermissionsRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions\"],\n setSelectedReposForOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\"PUT /orgs/{org}/actions/permissions/repositories\"],\n setWorkflowAccessToRepository: [\"PUT /repos/{owner}/{repo}/actions/permissions/access\"]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\"DELETE /notifications/threads/{thread_id}/subscription\"],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\"GET /notifications/threads/{thread_id}/subscription\"],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\"GET /users/{username}/events/orgs/{org}\"],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\"GET /users/{username}/received_events/public\"],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/notifications\"],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\"PUT /notifications/threads/{thread_id}/subscription\"],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\"PUT /user/installations/{installation_id}/repositories/{repository_id}\", {}, {\n renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"]\n }],\n addRepoToInstallationForAuthenticatedUser: [\"PUT /user/installations/{installation_id}/repositories/{repository_id}\"],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\"POST /app/installations/{installation_id}/access_tokens\"],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\"GET /marketplace_listing/accounts/{account_id}\"],\n getSubscriptionPlanForAccountStubbed: [\"GET /marketplace_listing/stubbed/accounts/{account_id}\"],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"],\n listInstallationReposForAuthenticatedUser: [\"GET /user/installations/{installation_id}/repositories\"],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\"GET /user/marketplace_purchases/stubbed\"],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\"POST /app/hook/deliveries/{delivery_id}/attempts\"],\n removeRepoFromInstallation: [\"DELETE /user/installations/{installation_id}/repositories/{repository_id}\", {}, {\n renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"]\n }],\n removeRepoFromInstallationForAuthenticatedUser: [\"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\"DELETE /app/installations/{installation_id}/suspended\"],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\"GET /users/{username}/settings/billing/actions\"],\n getGithubAdvancedSecurityBillingGhe: [\"GET /enterprises/{enterprise}/settings/billing/advanced-security\"],\n getGithubAdvancedSecurityBillingOrg: [\"GET /orgs/{org}/settings/billing/advanced-security\"],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\"GET /users/{username}/settings/billing/packages\"],\n getSharedStorageBillingOrg: [\"GET /orgs/{org}/settings/billing/shared-storage\"],\n getSharedStorageBillingUser: [\"GET /users/{username}/settings/billing/shared-storage\"]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"],\n rerequestSuite: [\"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"],\n setSuitesPreferences: [\"PATCH /repos/{owner}/{repo}/check-suites/preferences\"],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"],\n getAlert: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\", {}, {\n renamedParameters: {\n alert_id: \"alert_number\"\n }\n }],\n getAnalysis: [\"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\", {}, {\n renamed: [\"codeScanning\", \"listAlertInstances\"]\n }],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"],\n codespaceMachinesForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}/machines\"],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n createOrUpdateSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}\"],\n createWithPrForAuthenticatedUser: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"],\n createWithRepoForAuthenticatedUser: [\"POST /repos/{owner}/{repo}/codespaces\"],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n deleteSecretForAuthenticatedUser: [\"DELETE /user/codespaces/secrets/{secret_name}\"],\n exportForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/exports\"],\n getExportDetailsForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}/exports/{export_id}\"],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getPublicKeyForAuthenticatedUser: [\"GET /user/codespaces/secrets/public-key\"],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"],\n getSecretForAuthenticatedUser: [\"GET /user/codespaces/secrets/{secret_name}\"],\n listDevcontainersInRepositoryForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces/devcontainers\"],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\"GET /orgs/{org}/codespaces\", {}, {\n renamedParameters: {\n org_id: \"org\"\n }\n }],\n listInRepositoryForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\"GET /user/codespaces/secrets/{secret_name}/repositories\"],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n removeRepositoryForSecretForAuthenticatedUser: [\"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"],\n repoMachinesForAuthenticatedUser: [\"GET /repos/{owner}/{repo}/codespaces/machines\"],\n setRepositoriesForSecretForAuthenticatedUser: [\"PUT /user/codespaces/secrets/{secret_name}/repositories\"],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"],\n removeSelectedRepoFromOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"],\n setSelectedReposForOrgSecret: [\"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"],\n diffRange: [\"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"]\n },\n emojis: {\n get: [\"GET /emojis\"]\n },\n enterpriseAdmin: {\n addCustomLabelsToSelfHostedRunnerForEnterprise: [\"POST /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n disableSelectedOrganizationGithubActionsEnterprise: [\"DELETE /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\n enableSelectedOrganizationGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations/{org_id}\"],\n getAllowedActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/selected-actions\"],\n getGithubActionsPermissionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions\"],\n getServerStatistics: [\"GET /enterprise-installation/{enterprise_or_org}/server-statistics\"],\n listLabelsForSelfHostedRunnerForEnterprise: [\"GET /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n listSelectedOrganizationsEnabledGithubActionsEnterprise: [\"GET /enterprises/{enterprise}/actions/permissions/organizations\"],\n removeAllCustomLabelsFromSelfHostedRunnerForEnterprise: [\"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n removeCustomLabelFromSelfHostedRunnerForEnterprise: [\"DELETE /enterprises/{enterprise}/actions/runners/{runner_id}/labels/{name}\"],\n setAllowedActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/selected-actions\"],\n setCustomLabelsForSelfHostedRunnerForEnterprise: [\"PUT /enterprises/{enterprise}/actions/runners/{runner_id}/labels\"],\n setGithubActionsPermissionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions\"],\n setSelectedOrganizationsEnabledGithubActionsEnterprise: [\"PUT /enterprises/{enterprise}/actions/permissions/organizations\"]\n },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\"GET /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"]\n }],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\"DELETE /repos/{owner}/{repo}/interaction-limits\"],\n removeRestrictionsForYourPublicRepos: [\"DELETE /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"]\n }],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\"PUT /user/interaction-limits\", {}, {\n renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"]\n }]\n },\n issues: {\n addAssignees: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n removeAssignees: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"],\n removeLabel: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\"POST /markdown/raw\", {\n headers: {\n \"content-type\": \"text/plain; charset=utf-8\"\n }\n }]\n },\n meta: {\n get: [\"GET /meta\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\"DELETE /repos/{owner}/{repo}/import\"],\n deleteArchiveForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/archive\"],\n deleteArchiveForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/archive\"],\n downloadArchiveForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/archive\"],\n getArchiveForAuthenticatedUser: [\"GET /user/migrations/{migration_id}/archive\"],\n getCommitAuthors: [\"GET /repos/{owner}/{repo}/import/authors\"],\n getImportStatus: [\"GET /repos/{owner}/{repo}/import\"],\n getLargeFiles: [\"GET /repos/{owner}/{repo}/import/large_files\"],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\"GET /user/migrations/{migration_id}/repositories\"],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\"GET /user/migrations/{migration_id}/repositories\", {}, {\n renamed: [\"migrations\", \"listReposForAuthenticatedUser\"]\n }],\n mapCommitAuthor: [\"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\"],\n setLfsPreference: [\"PATCH /repos/{owner}/{repo}/import/lfs\"],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\"PUT /repos/{owner}/{repo}/import\"],\n unlockRepoForAuthenticatedUser: [\"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"],\n unlockRepoForOrg: [\"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"],\n updateImport: [\"PATCH /repos/{owner}/{repo}/import\"]\n },\n orgs: {\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\"PUT /orgs/{org}/outside_collaborators/{username}\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n get: [\"GET /orgs/{org}\"],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomRoles: [\"GET /organizations/{organization_id}/custom_roles\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\"DELETE /orgs/{org}/outside_collaborators/{username}\"],\n removePublicMembershipForAuthenticatedUser: [\"DELETE /orgs/{org}/public_members/{username}\"],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\"PUT /orgs/{org}/public_members/{username}\"],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\"PATCH /user/memberships/orgs/{org}\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\"DELETE /user/packages/{package_type}/{package_name}\"],\n deletePackageForOrg: [\"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"],\n deletePackageForUser: [\"DELETE /users/{username}/packages/{package_type}/{package_name}\"],\n deletePackageVersionForAuthenticatedUser: [\"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n deletePackageVersionForOrg: [\"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n deletePackageVersionForUser: [\"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\", {}, {\n renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"]\n }],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions\", {}, {\n renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"]\n }],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions\"],\n getAllPackageVersionsForPackageOwnedByOrg: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"],\n getAllPackageVersionsForPackageOwnedByUser: [\"GET /users/{username}/packages/{package_type}/{package_name}/versions\"],\n getPackageForAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}\"],\n getPackageForOrganization: [\"GET /orgs/{org}/packages/{package_type}/{package_name}\"],\n getPackageForUser: [\"GET /users/{username}/packages/{package_type}/{package_name}\"],\n getPackageVersionForAuthenticatedUser: [\"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getPackageVersionForOrganization: [\"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n getPackageVersionForUser: [\"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\"POST /user/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageForOrg: [\"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageForUser: [\"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"],\n restorePackageVersionForAuthenticatedUser: [\"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"],\n restorePackageVersionForOrg: [\"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"],\n restorePackageVersionForUser: [\"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\"GET /projects/{project_id}/collaborators/{username}/permission\"],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\"DELETE /projects/{project_id}/collaborators/{username}\"],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\n deletePendingReview: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n deleteReviewComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n dismissReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n listReviewComments: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n requestReviewers: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"],\n submitReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"],\n updateReview: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"],\n updateReviewComment: [\"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"]\n },\n rateLimit: {\n get: [\"GET /rate_limit\"]\n },\n reactions: {\n createForCommitComment: [\"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"],\n createForIssue: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n createForIssueComment: [\"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"],\n createForPullRequestReviewComment: [\"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"],\n createForRelease: [\"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"],\n createForTeamDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"],\n createForTeamDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"],\n deleteForCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForIssue: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"],\n deleteForIssueComment: [\"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForPullRequestComment: [\"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"],\n deleteForRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"],\n deleteForTeamDiscussion: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"],\n deleteForTeamDiscussionComment: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"],\n listForCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"],\n listForPullRequestReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"],\n listForRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"],\n listForTeamDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"],\n listForTeamDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"]\n },\n repos: {\n acceptInvitation: [\"PATCH /user/repository_invitations/{invitation_id}\", {}, {\n renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"]\n }],\n acceptInvitationForAuthenticatedUser: [\"PATCH /user/repository_invitations/{invitation_id}\"],\n addAppAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n addTeamAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n addUserAccessRestrictions: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\"GET /repos/{owner}/{repo}/vulnerability-alerts\"],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\"GET /repos/{owner}/{repo}/compare/{basehead}\"],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\n createCommitSignatureProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentStatus: [\"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateEnvironment: [\"PUT /repos/{owner}/{repo}/environments/{environment_name}\"],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\"POST /repos/{template_owner}/{template_repo}/generate\"],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\"DELETE /user/repository_invitations/{invitation_id}\", {}, {\n renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"]\n }],\n declineInvitationForAuthenticatedUser: [\"DELETE /user/repository_invitations/{invitation_id}\"],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\n deleteAdminBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n deleteAnEnvironment: [\"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n deleteTagProtection: [\"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\"DELETE /repos/{owner}/{repo}/automated-security-fixes\"],\n disableLfsForRepo: [\"DELETE /repos/{owner}/{repo}/lfs\"],\n disableVulnerabilityAlerts: [\"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"],\n downloadArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\", {}, {\n renamed: [\"repos\", \"downloadZipballArchive\"]\n }],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\"PUT /repos/{owner}/{repo}/automated-security-fixes\"],\n enableLfsForRepo: [\"PUT /repos/{owner}/{repo}/lfs\"],\n enableVulnerabilityAlerts: [\"PUT /repos/{owner}/{repo}/vulnerability-alerts\"],\n generateReleaseNotes: [\"POST /repos/{owner}/{repo}/releases/generate-notes\"],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"],\n getAdminBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentStatus: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"],\n getEnvironment: [\"GET /repos/{owner}/{repo}/environments/{environment_name}\"],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getStatusChecksProtection: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n getTeamsWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentStatuses: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"],\n listReleaseAssets: [\"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"],\n removeAppAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n removeCollaborator: [\"DELETE /repos/{owner}/{repo}/collaborators/{username}\"],\n removeStatusCheckContexts: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n removeStatusCheckProtection: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n removeTeamAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n removeUserAccessRestrictions: [\"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"],\n setAppAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\", {}, {\n mapToData: \"apps\"\n }],\n setStatusCheckContexts: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\", {}, {\n mapToData: \"contexts\"\n }],\n setTeamAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\", {}, {\n mapToData: \"teams\"\n }],\n setUserAccessRestrictions: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\", {}, {\n mapToData: \"users\"\n }],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"],\n updatePullRequestReviewProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n updateStatusCheckPotection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\", {}, {\n renamed: [\"repos\", \"updateStatusCheckProtection\"]\n }],\n updateStatusCheckProtection: [\"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"],\n uploadReleaseAsset: [\"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\", {\n baseUrl: \"https://uploads.github.com\"\n }]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"],\n listAlertsForEnterprise: [\"GET /enterprises/{enterprise}/secret-scanning/alerts\"],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"],\n updateAlert: [\"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n addOrUpdateProjectPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n addOrUpdateRepoPermissionsInOrg: [\"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n checkPermissionsForProjectInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n checkPermissionsForRepoInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n deleteDiscussionInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n getDiscussionInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n getMembershipForUserInOrg: [\"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/invitations\"],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"],\n removeProjectInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"],\n removeRepoInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"],\n updateDiscussionCommentInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"],\n updateDiscussionInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\"POST /user/emails\", {}, {\n renamed: [\"users\", \"addEmailForAuthenticatedUser\"]\n }],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\"POST /user/gpg_keys\", {}, {\n renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"]\n }],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\"POST /user/keys\", {}, {\n renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"]\n }],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n deleteEmailForAuthenticated: [\"DELETE /user/emails\", {}, {\n renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"]\n }],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\"DELETE /user/gpg_keys/{gpg_key_id}\", {}, {\n renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"]\n }],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\"DELETE /user/keys/{key_id}\", {}, {\n renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"]\n }],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\"GET /user/gpg_keys/{gpg_key_id}\", {}, {\n renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"]\n }],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\"GET /user/keys/{key_id}\", {}, {\n renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"]\n }],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\"GET /user/blocks\", {}, {\n renamed: [\"users\", \"listBlockedByAuthenticatedUser\"]\n }],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\"GET /user/emails\", {}, {\n renamed: [\"users\", \"listEmailsForAuthenticatedUser\"]\n }],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\"GET /user/following\", {}, {\n renamed: [\"users\", \"listFollowedByAuthenticatedUser\"]\n }],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\"GET /user/gpg_keys\", {}, {\n renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"]\n }],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\"GET /user/public_emails\", {}, {\n renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"]\n }],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\"GET /user/keys\", {}, {\n renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"]\n }],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\"PATCH /user/email/visibility\", {}, {\n renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"]\n }],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\"PATCH /user/email/visibility\"],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\n\nconst VERSION = \"5.16.2\";\n\nfunction endpointsToMethods(octokit, endpointsMap) {\n const newMethods = {};\n\n for (const [scope, endpoints] of Object.entries(endpointsMap)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign({\n method,\n url\n }, defaults);\n\n if (!newMethods[scope]) {\n newMethods[scope] = {};\n }\n\n const scopeMethods = newMethods[scope];\n\n if (decorations) {\n scopeMethods[methodName] = decorate(octokit, scope, methodName, endpointDefaults, decorations);\n continue;\n }\n\n scopeMethods[methodName] = octokit.request.defaults(endpointDefaults);\n }\n }\n\n return newMethods;\n}\n\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n /* istanbul ignore next */\n\n function withDecorations(...args) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n let options = requestWithDefaults.endpoint.merge(...args); // There are currently no other decorations than `.mapToData`\n\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: undefined\n });\n return requestWithDefaults(options);\n }\n\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(`octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`);\n }\n\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n\n if (decorations.renamedParameters) {\n // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n const options = requestWithDefaults.endpoint.merge(...args);\n\n for (const [name, alias] of Object.entries(decorations.renamedParameters)) {\n if (name in options) {\n octokit.log.warn(`\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`);\n\n if (!(alias in options)) {\n options[alias] = options[name];\n }\n\n delete options[name];\n }\n }\n\n return requestWithDefaults(options);\n } // @ts-ignore https://github.com/microsoft/TypeScript/issues/25488\n\n\n return requestWithDefaults(...args);\n }\n\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, Endpoints);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit, Endpoints);\n return _objectSpread2(_objectSpread2({}, api), {}, {\n rest: api\n });\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n\nexports.legacyRestEndpointMethods = legacyRestEndpointMethods;\nexports.restEndpointMethods = restEndpointMethods;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar deprecation = require('deprecation');\nvar once = _interopDefault(require('once'));\n\nconst logOnceCode = once(deprecation => console.warn(deprecation));\nconst logOnceHeaders = once(deprecation => console.warn(deprecation));\n/**\n * Error with extra properties to help with debugging\n */\n\nclass RequestError extends Error {\n constructor(message, statusCode, options) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n } // redact request credentials without mutating original request options\n\n\n const requestCopy = Object.assign({}, options.request);\n\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(/ .*$/, \" [REDACTED]\")\n });\n }\n\n requestCopy.url = requestCopy.url // client_id & client_secret can be passed as URL query parameters to increase rate limit\n // see https://developer.github.com/v3/#increasing-the-unauthenticated-rate-limit-for-oauth-applications\n .replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\") // OAuth tokens can be passed as URL query parameters, although it is not recommended\n // see https://developer.github.com/v3/#oauth2-token-sent-in-a-header\n .replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy; // deprecations\n\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(new deprecation.Deprecation(\"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"));\n return statusCode;\n }\n\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(new deprecation.Deprecation(\"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"));\n return headers || {};\n }\n\n });\n }\n\n}\n\nexports.RequestError = RequestError;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar endpoint = require('@octokit/endpoint');\nvar universalUserAgent = require('universal-user-agent');\nvar isPlainObject = require('is-plain-object');\nvar nodeFetch = _interopDefault(require('node-fetch'));\nvar requestError = require('@octokit/request-error');\n\nconst VERSION = \"5.6.3\";\n\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\nfunction fetchWrapper(requestOptions) {\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n\n if (isPlainObject.isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n\n let headers = {};\n let status;\n let url;\n const fetch = requestOptions.request && requestOptions.request.fetch || nodeFetch;\n return fetch(requestOptions.url, Object.assign({\n method: requestOptions.method,\n body: requestOptions.body,\n headers: requestOptions.headers,\n redirect: requestOptions.redirect\n }, // `requestOptions.request.agent` type is incompatible\n // see https://github.com/octokit/types.ts/pull/264\n requestOptions.request)).then(async response => {\n url = response.url;\n status = response.status;\n\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(`[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`);\n }\n\n if (status === 204 || status === 205) {\n return;\n } // GitHub API returns 200 for HEAD requests\n\n\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n\n throw new requestError.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: undefined\n },\n request: requestOptions\n });\n }\n\n if (status === 304) {\n throw new requestError.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new requestError.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n\n return getResponseData(response);\n }).then(data => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch(error => {\n if (error instanceof requestError.RequestError) throw error;\n throw new requestError.RequestError(error.message, 500, {\n request: requestOptions\n });\n });\n}\n\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n\n if (/application\\/json/.test(contentType)) {\n return response.json();\n }\n\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n\n return getBufferResponse(response);\n}\n\nfunction toErrorMessage(data) {\n if (typeof data === \"string\") return data; // istanbul ignore else - just in case\n\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}`;\n }\n\n return data.message;\n } // istanbul ignore next - just in case\n\n\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint = oldEndpoint.defaults(newDefaults);\n\n const newApi = function (route, parameters) {\n const endpointOptions = endpoint.merge(route, parameters);\n\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint.parse(endpointOptions));\n }\n\n const request = (route, parameters) => {\n return fetchWrapper(endpoint.parse(endpoint.merge(route, parameters)));\n };\n\n Object.assign(request, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n return endpointOptions.request.hook(request, endpointOptions);\n };\n\n return Object.assign(newApi, {\n endpoint,\n defaults: withDefaults.bind(null, endpoint)\n });\n}\n\nconst request = withDefaults(endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${universalUserAgent.getUserAgent()}`\n }\n});\n\nexports.request = request;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['BF.ADD', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['BF.CARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, item) {\n return ['BF.EXISTS', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['BF.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n capacity: reply[1],\n size: reply[3],\n numberOfFilters: reply[5],\n numberOfInsertedItems: reply[7],\n expansionRate: reply[9]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n const args = ['BF.INSERT', key];\n if (options?.CAPACITY) {\n args.push('CAPACITY', options.CAPACITY.toString());\n }\n if (options?.ERROR) {\n args.push('ERROR', options.ERROR.toString());\n }\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n if (options?.NOCREATE) {\n args.push('NOCREATE');\n }\n if (options?.NONSCALING) {\n args.push('NONSCALING');\n }\n args.push('ITEMS');\n return (0, generic_transformers_1.pushVerdictArguments)(args, items);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iteretor, chunk) {\n return ['BF.LOADCHUNK', key, iteretor.toString(), chunk];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n return ['BF.MADD', key, ...items];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return ['BF.MEXISTS', key, ...items];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, errorRate, capacity, options) {\n const args = ['BF.RESERVE', key, errorRate.toString(), capacity.toString()];\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n if (options?.NONSCALING) {\n args.push('NONSCALING');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, iterator) {\n return ['BF.SCANDUMP', key, iterator.toString()];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([iterator, chunk]) {\n return {\n iterator,\n chunk\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ADD = require(\"./ADD\");\nconst CARD = require(\"./CARD\");\nconst EXISTS = require(\"./EXISTS\");\nconst INFO = require(\"./INFO\");\nconst INSERT = require(\"./INSERT\");\nconst LOADCHUNK = require(\"./LOADCHUNK\");\nconst MADD = require(\"./MADD\");\nconst MEXISTS = require(\"./MEXISTS\");\nconst RESERVE = require(\"./RESERVE\");\nconst SCANDUMP = require(\"./SCANDUMP\");\nexports.default = {\n ADD,\n add: ADD,\n CARD,\n card: CARD,\n EXISTS,\n exists: EXISTS,\n INFO,\n info: INFO,\n INSERT,\n insert: INSERT,\n LOADCHUNK,\n loadChunk: LOADCHUNK,\n MADD,\n mAdd: MADD,\n MEXISTS,\n mExists: MEXISTS,\n RESERVE,\n reserve: RESERVE,\n SCANDUMP,\n scanDump: SCANDUMP\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n const args = ['CMS.INCRBY', key];\n if (Array.isArray(items)) {\n for (const item of items) {\n pushIncrByItem(args, item);\n }\n }\n else {\n pushIncrByItem(args, items);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushIncrByItem(args, { item, incrementBy }) {\n args.push(item, incrementBy.toString());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['CMS.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n width: reply[1],\n depth: reply[3],\n count: reply[5]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, width, depth) {\n return ['CMS.INITBYDIM', key, width.toString(), depth.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, error, probability) {\n return ['CMS.INITBYPROB', key, error.toString(), probability.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(dest, src) {\n const args = [\n 'CMS.MERGE',\n dest,\n src.length.toString()\n ];\n if (isStringSketches(src)) {\n args.push(...src);\n }\n else {\n for (const sketch of src) {\n args.push(sketch.name);\n }\n args.push('WEIGHTS');\n for (const sketch of src) {\n args.push(sketch.weight.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction isStringSketches(src) {\n return typeof src[0] === 'string';\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['CMS.QUERY', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst INCRBY = require(\"./INCRBY\");\nconst INFO = require(\"./INFO\");\nconst INITBYDIM = require(\"./INITBYDIM\");\nconst INITBYPROB = require(\"./INITBYPROB\");\nconst MERGE = require(\"./MERGE\");\nconst QUERY = require(\"./QUERY\");\nexports.default = {\n INCRBY,\n incrBy: INCRBY,\n INFO,\n info: INFO,\n INITBYDIM,\n initByDim: INITBYDIM,\n INITBYPROB,\n initByProb: INITBYPROB,\n MERGE,\n merge: MERGE,\n QUERY,\n query: QUERY\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.ADD', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.ADDNX', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.COUNT', key, item];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, item) {\n return ['CF.DEL', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, item) {\n return ['CF.EXISTS', key, item];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['CF.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n size: reply[1],\n numberOfBuckets: reply[3],\n numberOfFilters: reply[5],\n numberOfInsertedItems: reply[7],\n numberOfDeletedItems: reply[9],\n bucketSize: reply[11],\n expansionRate: reply[13],\n maxIteration: reply[15]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n return (0, _1.pushInsertOptions)(['CF.INSERT', key], items, options);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items, options) {\n return (0, _1.pushInsertOptions)(['CF.INSERTNX', key], items, options);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iterator, chunk) {\n return ['CF.LOADCHUNK', key, iterator.toString(), chunk];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, capacity, options) {\n const args = ['CF.RESERVE', key, capacity.toString()];\n if (options?.BUCKETSIZE) {\n args.push('BUCKETSIZE', options.BUCKETSIZE.toString());\n }\n if (options?.MAXITERATIONS) {\n args.push('MAXITERATIONS', options.MAXITERATIONS.toString());\n }\n if (options?.EXPANSION) {\n args.push('EXPANSION', options.EXPANSION.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, iterator) {\n return ['CF.SCANDUMP', key, iterator.toString()];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([iterator, chunk]) {\n return {\n iterator,\n chunk\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushInsertOptions = void 0;\nconst ADD = require(\"./ADD\");\nconst ADDNX = require(\"./ADDNX\");\nconst COUNT = require(\"./COUNT\");\nconst DEL = require(\"./DEL\");\nconst EXISTS = require(\"./EXISTS\");\nconst INFO = require(\"./INFO\");\nconst INSERT = require(\"./INSERT\");\nconst INSERTNX = require(\"./INSERTNX\");\nconst LOADCHUNK = require(\"./LOADCHUNK\");\nconst RESERVE = require(\"./RESERVE\");\nconst SCANDUMP = require(\"./SCANDUMP\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n ADD,\n add: ADD,\n ADDNX,\n addNX: ADDNX,\n COUNT,\n count: COUNT,\n DEL,\n del: DEL,\n EXISTS,\n exists: EXISTS,\n INFO,\n info: INFO,\n INSERT,\n insert: INSERT,\n INSERTNX,\n insertNX: INSERTNX,\n LOADCHUNK,\n loadChunk: LOADCHUNK,\n RESERVE,\n reserve: RESERVE,\n SCANDUMP,\n scanDump: SCANDUMP\n};\nfunction pushInsertOptions(args, items, options) {\n if (options?.CAPACITY) {\n args.push('CAPACITY');\n args.push(options.CAPACITY.toString());\n }\n if (options?.NOCREATE) {\n args.push('NOCREATE');\n }\n args.push('ITEMS');\n return (0, generic_transformers_1.pushVerdictArguments)(args, items);\n}\nexports.pushInsertOptions = pushInsertOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst bloom_1 = require(\"./bloom\");\nconst count_min_sketch_1 = require(\"./count-min-sketch\");\nconst cuckoo_1 = require(\"./cuckoo\");\nconst t_digest_1 = require(\"./t-digest\");\nconst top_k_1 = require(\"./top-k\");\nexports.default = {\n bf: bloom_1.default,\n cms: count_min_sketch_1.default,\n cf: cuckoo_1.default,\n tDigest: t_digest_1.default,\n topK: top_k_1.default\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.ADD', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, ranks) {\n const args = ['TDIGEST.BYRANK', key];\n for (const rank of ranks) {\n args.push(rank.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, ranks) {\n const args = ['TDIGEST.BYREVRANK', key];\n for (const rank of ranks) {\n args.push(rank.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.CDF', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n return (0, _1.pushCompressionArgument)(['TDIGEST.CREATE', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.INFO',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n comperssion: reply[1],\n capacity: reply[3],\n mergedNodes: reply[5],\n unmergedNodes: reply[7],\n mergedWeight: Number(reply[9]),\n unmergedWeight: Number(reply[11]),\n totalCompression: reply[13]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.MAX',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destKey, srcKeys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['TDIGEST.MERGE', destKey], srcKeys);\n (0, _1.pushCompressionArgument)(args, options);\n if (options?.OVERRIDE) {\n args.push('OVERRIDE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return [\n 'TDIGEST.MIN',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, quantiles) {\n const args = [\n 'TDIGEST.QUANTILE',\n key\n ];\n for (const quantile of quantiles) {\n args.push(quantile.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoublesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.RANK', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['TDIGEST.RESET', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, values) {\n const args = ['TDIGEST.REVRANK', key];\n for (const item of values) {\n args.push(item.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, lowCutPercentile, highCutPercentile) {\n return [\n 'TDIGEST.TRIMMED_MEAN',\n key,\n lowCutPercentile.toString(),\n highCutPercentile.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformDoubleReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformDoublesReply = exports.transformDoubleReply = exports.pushCompressionArgument = void 0;\nconst ADD = require(\"./ADD\");\nconst BYRANK = require(\"./BYRANK\");\nconst BYREVRANK = require(\"./BYREVRANK\");\nconst CDF = require(\"./CDF\");\nconst CREATE = require(\"./CREATE\");\nconst INFO = require(\"./INFO\");\nconst MAX = require(\"./MAX\");\nconst MERGE = require(\"./MERGE\");\nconst MIN = require(\"./MIN\");\nconst QUANTILE = require(\"./QUANTILE\");\nconst RANK = require(\"./RANK\");\nconst RESET = require(\"./RESET\");\nconst REVRANK = require(\"./REVRANK\");\nconst TRIMMED_MEAN = require(\"./TRIMMED_MEAN\");\nexports.default = {\n ADD,\n add: ADD,\n BYRANK,\n byRank: BYRANK,\n BYREVRANK,\n byRevRank: BYREVRANK,\n CDF,\n cdf: CDF,\n CREATE,\n create: CREATE,\n INFO,\n info: INFO,\n MAX,\n max: MAX,\n MERGE,\n merge: MERGE,\n MIN,\n min: MIN,\n QUANTILE,\n quantile: QUANTILE,\n RANK,\n rank: RANK,\n RESET,\n reset: RESET,\n REVRANK,\n revRank: REVRANK,\n TRIMMED_MEAN,\n trimmedMean: TRIMMED_MEAN\n};\nfunction pushCompressionArgument(args, options) {\n if (options?.COMPRESSION) {\n args.push('COMPRESSION', options.COMPRESSION.toString());\n }\n return args;\n}\nexports.pushCompressionArgument = pushCompressionArgument;\nfunction transformDoubleReply(reply) {\n switch (reply) {\n case 'inf':\n return Infinity;\n case '-inf':\n return -Infinity;\n case 'nan':\n return NaN;\n default:\n return parseFloat(reply);\n }\n}\nexports.transformDoubleReply = transformDoubleReply;\nfunction transformDoublesReply(reply) {\n return reply.map(transformDoubleReply);\n}\nexports.transformDoublesReply = transformDoublesReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.ADD', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.COUNT', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, items) {\n const args = ['TOPK.INCRBY', key];\n if (Array.isArray(items)) {\n for (const item of items) {\n pushIncrByItem(args, item);\n }\n }\n else {\n pushIncrByItem(args, items);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushIncrByItem(args, { item, incrementBy }) {\n args.push(item, incrementBy.toString());\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n k: reply[1],\n width: reply[3],\n depth: reply[5],\n decay: Number(reply[7])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.LIST', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TOPK.LIST', key, 'WITHCOUNT'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const reply = [];\n for (let i = 0; i < rawReply.length; i++) {\n reply.push({\n item: rawReply[i],\n count: rawReply[++i]\n });\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, items) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOPK.QUERY', key], items);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, topK, options) {\n const args = ['TOPK.RESERVE', key, topK.toString()];\n if (options) {\n args.push(options.width.toString(), options.depth.toString(), options.decay.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst ADD = require(\"./ADD\");\nconst COUNT = require(\"./COUNT\");\nconst INCRBY = require(\"./INCRBY\");\nconst INFO = require(\"./INFO\");\nconst LIST_WITHCOUNT = require(\"./LIST_WITHCOUNT\");\nconst LIST = require(\"./LIST\");\nconst QUERY = require(\"./QUERY\");\nconst RESERVE = require(\"./RESERVE\");\nexports.default = {\n ADD,\n add: ADD,\n COUNT,\n count: COUNT,\n INCRBY,\n incrBy: INCRBY,\n INFO,\n info: INFO,\n LIST_WITHCOUNT,\n listWithCount: LIST_WITHCOUNT,\n LIST,\n list: LIST,\n QUERY,\n query: QUERY,\n RESERVE,\n reserve: RESERVE\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RedisFlushModes = exports.GeoReplyWith = exports.defineScript = exports.createCluster = exports.commandOptions = exports.createClient = void 0;\nconst client_1 = require(\"./lib/client\");\nconst cluster_1 = require(\"./lib/cluster\");\nexports.createClient = client_1.default.create;\nexports.commandOptions = client_1.default.commandOptions;\nexports.createCluster = cluster_1.default.create;\nvar lua_script_1 = require(\"./lib/lua-script\");\nObject.defineProperty(exports, \"defineScript\", { enumerable: true, get: function () { return lua_script_1.defineScript; } });\n__exportStar(require(\"./lib/errors\"), exports);\nvar generic_transformers_1 = require(\"./lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"GeoReplyWith\", { enumerable: true, get: function () { return generic_transformers_1.GeoReplyWith; } });\nvar FLUSHALL_1 = require(\"./lib/commands/FLUSHALL\");\nObject.defineProperty(exports, \"RedisFlushModes\", { enumerable: true, get: function () { return FLUSHALL_1.RedisFlushModes; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nclass BufferComposer {\n constructor() {\n Object.defineProperty(this, \"chunks\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n }\n write(buffer) {\n this.chunks.push(buffer);\n }\n end(buffer) {\n this.write(buffer);\n return Buffer.concat(this.chunks.splice(0));\n }\n reset() {\n this.chunks = [];\n }\n}\nexports.default = BufferComposer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst string_decoder_1 = require(\"string_decoder\");\nclass StringComposer {\n constructor() {\n Object.defineProperty(this, \"decoder\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new string_decoder_1.StringDecoder()\n });\n Object.defineProperty(this, \"string\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: ''\n });\n }\n write(buffer) {\n this.string += this.decoder.write(buffer);\n }\n end(buffer) {\n const string = this.string + this.decoder.end(buffer);\n this.string = '';\n return string;\n }\n reset() {\n this.string = '';\n }\n}\nexports.default = StringComposer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst errors_1 = require(\"../../errors\");\nconst buffer_1 = require(\"./composers/buffer\");\nconst string_1 = require(\"./composers/string\");\n// RESP2 specification\n// https://redis.io/topics/protocol\nvar Types;\n(function (Types) {\n Types[Types[\"SIMPLE_STRING\"] = 43] = \"SIMPLE_STRING\";\n Types[Types[\"ERROR\"] = 45] = \"ERROR\";\n Types[Types[\"INTEGER\"] = 58] = \"INTEGER\";\n Types[Types[\"BULK_STRING\"] = 36] = \"BULK_STRING\";\n Types[Types[\"ARRAY\"] = 42] = \"ARRAY\"; // *\n})(Types || (Types = {}));\nvar ASCII;\n(function (ASCII) {\n ASCII[ASCII[\"CR\"] = 13] = \"CR\";\n ASCII[ASCII[\"ZERO\"] = 48] = \"ZERO\";\n ASCII[ASCII[\"MINUS\"] = 45] = \"MINUS\";\n})(ASCII || (ASCII = {}));\n// Using TypeScript `private` and not the build-in `#` to avoid __classPrivateFieldGet and __classPrivateFieldSet\nclass RESP2Decoder {\n constructor(options) {\n Object.defineProperty(this, \"options\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: options\n });\n Object.defineProperty(this, \"cursor\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"type\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"bufferComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new buffer_1.default()\n });\n Object.defineProperty(this, \"stringComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new string_1.default()\n });\n Object.defineProperty(this, \"currentStringComposer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.stringComposer\n });\n Object.defineProperty(this, \"integer\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: 0\n });\n Object.defineProperty(this, \"isNegativeInteger\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"bulkStringRemainingLength\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"arraysInProcess\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"initializeArray\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: false\n });\n Object.defineProperty(this, \"arrayItemType\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n }\n reset() {\n this.cursor = 0;\n this.type = undefined;\n this.bufferComposer.reset();\n this.stringComposer.reset();\n this.currentStringComposer = this.stringComposer;\n }\n write(chunk) {\n while (this.cursor < chunk.length) {\n if (!this.type) {\n this.currentStringComposer = this.options.returnStringsAsBuffers() ?\n this.bufferComposer :\n this.stringComposer;\n this.type = chunk[this.cursor];\n if (++this.cursor >= chunk.length)\n break;\n }\n const reply = this.parseType(chunk, this.type);\n if (reply === undefined)\n break;\n this.type = undefined;\n this.options.onReply(reply);\n }\n this.cursor -= chunk.length;\n }\n parseType(chunk, type, arraysToKeep) {\n switch (type) {\n case Types.SIMPLE_STRING:\n return this.parseSimpleString(chunk);\n case Types.ERROR:\n return this.parseError(chunk);\n case Types.INTEGER:\n return this.parseInteger(chunk);\n case Types.BULK_STRING:\n return this.parseBulkString(chunk);\n case Types.ARRAY:\n return this.parseArray(chunk, arraysToKeep);\n }\n }\n compose(chunk, composer) {\n for (let i = this.cursor; i < chunk.length; i++) {\n if (chunk[i] === ASCII.CR) {\n const reply = composer.end(chunk.subarray(this.cursor, i));\n this.cursor = i + 2;\n return reply;\n }\n }\n const toWrite = chunk.subarray(this.cursor);\n composer.write(toWrite);\n this.cursor = chunk.length;\n }\n parseSimpleString(chunk) {\n return this.compose(chunk, this.currentStringComposer);\n }\n parseError(chunk) {\n const message = this.compose(chunk, this.stringComposer);\n if (message !== undefined) {\n return new errors_1.ErrorReply(message);\n }\n }\n parseInteger(chunk) {\n if (this.isNegativeInteger === undefined) {\n this.isNegativeInteger = chunk[this.cursor] === ASCII.MINUS;\n if (this.isNegativeInteger && ++this.cursor === chunk.length)\n return;\n }\n do {\n const byte = chunk[this.cursor];\n if (byte === ASCII.CR) {\n const integer = this.isNegativeInteger ? -this.integer : this.integer;\n this.integer = 0;\n this.isNegativeInteger = undefined;\n this.cursor += 2;\n return integer;\n }\n this.integer = this.integer * 10 + byte - ASCII.ZERO;\n } while (++this.cursor < chunk.length);\n }\n parseBulkString(chunk) {\n if (this.bulkStringRemainingLength === undefined) {\n const length = this.parseInteger(chunk);\n if (length === undefined)\n return;\n if (length === -1)\n return null;\n this.bulkStringRemainingLength = length;\n if (this.cursor >= chunk.length)\n return;\n }\n const end = this.cursor + this.bulkStringRemainingLength;\n if (chunk.length >= end) {\n const reply = this.currentStringComposer.end(chunk.subarray(this.cursor, end));\n this.bulkStringRemainingLength = undefined;\n this.cursor = end + 2;\n return reply;\n }\n const toWrite = chunk.subarray(this.cursor);\n this.currentStringComposer.write(toWrite);\n this.bulkStringRemainingLength -= toWrite.length;\n this.cursor = chunk.length;\n }\n parseArray(chunk, arraysToKeep = 0) {\n if (this.initializeArray || this.arraysInProcess.length === arraysToKeep) {\n const length = this.parseInteger(chunk);\n if (length === undefined) {\n this.initializeArray = true;\n return undefined;\n }\n this.initializeArray = false;\n this.arrayItemType = undefined;\n if (length === -1) {\n return this.returnArrayReply(null, arraysToKeep, chunk);\n }\n else if (length === 0) {\n return this.returnArrayReply([], arraysToKeep, chunk);\n }\n this.arraysInProcess.push({\n array: new Array(length),\n pushCounter: 0\n });\n }\n while (this.cursor < chunk.length) {\n if (!this.arrayItemType) {\n this.arrayItemType = chunk[this.cursor];\n if (++this.cursor >= chunk.length)\n break;\n }\n const item = this.parseType(chunk, this.arrayItemType, arraysToKeep + 1);\n if (item === undefined)\n break;\n this.arrayItemType = undefined;\n const reply = this.pushArrayItem(item, arraysToKeep);\n if (reply !== undefined)\n return reply;\n }\n }\n returnArrayReply(reply, arraysToKeep, chunk) {\n if (this.arraysInProcess.length <= arraysToKeep)\n return reply;\n return this.pushArrayItem(reply, arraysToKeep, chunk);\n }\n pushArrayItem(item, arraysToKeep, chunk) {\n const to = this.arraysInProcess[this.arraysInProcess.length - 1];\n to.array[to.pushCounter] = item;\n if (++to.pushCounter === to.array.length) {\n return this.returnArrayReply(this.arraysInProcess.pop().array, arraysToKeep, chunk);\n }\n else if (chunk && chunk.length > this.cursor) {\n return this.parseArray(chunk, arraysToKeep);\n }\n }\n}\nexports.default = RESP2Decoder;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst CRLF = '\\r\\n';\nfunction encodeCommand(args) {\n const toWrite = [];\n let strings = '*' + args.length + CRLF;\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n if (typeof arg === 'string') {\n strings += '$' + Buffer.byteLength(arg) + CRLF + arg + CRLF;\n }\n else if (arg instanceof Buffer) {\n toWrite.push(strings + '$' + arg.length.toString() + CRLF, arg);\n strings = CRLF;\n }\n else {\n throw new TypeError('Invalid argument type');\n }\n }\n toWrite.push(strings);\n return toWrite;\n}\nexports.default = encodeCommand;\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisCommandsQueue_instances, _a, _RedisCommandsQueue_flushQueue, _RedisCommandsQueue_maxLength, _RedisCommandsQueue_waitingToBeSent, _RedisCommandsQueue_waitingForReply, _RedisCommandsQueue_onShardedChannelMoved, _RedisCommandsQueue_pubSub, _RedisCommandsQueue_chainInExecution, _RedisCommandsQueue_decoder, _RedisCommandsQueue_pushPubSubCommand;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst LinkedList = require(\"yallist\");\nconst errors_1 = require(\"../errors\");\nconst decoder_1 = require(\"./RESP2/decoder\");\nconst encoder_1 = require(\"./RESP2/encoder\");\nconst pub_sub_1 = require(\"./pub-sub\");\nconst PONG = Buffer.from('pong');\nclass RedisCommandsQueue {\n get isPubSubActive() {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive;\n }\n constructor(maxLength, onShardedChannelMoved) {\n _RedisCommandsQueue_instances.add(this);\n _RedisCommandsQueue_maxLength.set(this, void 0);\n _RedisCommandsQueue_waitingToBeSent.set(this, new LinkedList());\n _RedisCommandsQueue_waitingForReply.set(this, new LinkedList());\n _RedisCommandsQueue_onShardedChannelMoved.set(this, void 0);\n _RedisCommandsQueue_pubSub.set(this, new pub_sub_1.PubSub());\n _RedisCommandsQueue_chainInExecution.set(this, void 0);\n _RedisCommandsQueue_decoder.set(this, new decoder_1.default({\n returnStringsAsBuffers: () => {\n return !!__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").head?.value.returnBuffers ||\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive;\n },\n onReply: reply => {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").isActive && Array.isArray(reply)) {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").handleMessageReply(reply))\n return;\n const isShardedUnsubscribe = pub_sub_1.PubSub.isShardedUnsubscribe(reply);\n if (isShardedUnsubscribe && !__classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").length) {\n const channel = reply[1].toString();\n __classPrivateFieldGet(this, _RedisCommandsQueue_onShardedChannelMoved, \"f\").call(this, channel, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").removeShardedListeners(channel));\n return;\n }\n else if (isShardedUnsubscribe || pub_sub_1.PubSub.isStatusReply(reply)) {\n const head = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").head.value;\n if ((Number.isNaN(head.channelsCounter) && reply[2] === 0) ||\n --head.channelsCounter === 0) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift().resolve();\n }\n return;\n }\n if (PONG.equals(reply[0])) {\n const { resolve, returnBuffers } = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift(), buffer = (reply[1].length === 0 ? reply[0] : reply[1]);\n resolve(returnBuffers ? buffer : buffer.toString());\n return;\n }\n }\n const { resolve, reject } = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").shift();\n if (reply instanceof errors_1.ErrorReply) {\n reject(reply);\n }\n else {\n resolve(reply);\n }\n }\n }));\n __classPrivateFieldSet(this, _RedisCommandsQueue_maxLength, maxLength, \"f\");\n __classPrivateFieldSet(this, _RedisCommandsQueue_onShardedChannelMoved, onShardedChannelMoved, \"f\");\n }\n addCommand(args, options) {\n if (__classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, \"f\") && __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").length + __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").length >= __classPrivateFieldGet(this, _RedisCommandsQueue_maxLength, \"f\")) {\n return Promise.reject(new Error('The queue is full'));\n }\n else if (options?.signal?.aborted) {\n return Promise.reject(new errors_1.AbortError());\n }\n return new Promise((resolve, reject) => {\n const node = new LinkedList.Node({\n args,\n chainId: options?.chainId,\n returnBuffers: options?.returnBuffers,\n resolve,\n reject\n });\n if (options?.signal) {\n const listener = () => {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").removeNode(node);\n node.value.reject(new errors_1.AbortError());\n };\n node.value.abort = {\n signal: options.signal,\n listener\n };\n // AbortSignal type is incorrent\n options.signal.addEventListener('abort', listener, {\n once: true\n });\n }\n if (options?.asap) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").unshiftNode(node);\n }\n else {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").pushNode(node);\n }\n });\n }\n subscribe(type, channels, listener, returnBuffers) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").subscribe(type, channels, listener, returnBuffers));\n }\n unsubscribe(type, channels, listener, returnBuffers) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").unsubscribe(type, channels, listener, returnBuffers));\n }\n resubscribe() {\n const commands = __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").resubscribe();\n if (!commands.length)\n return;\n return Promise.all(commands.map(command => __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, command)));\n }\n extendPubSubChannelListeners(type, channel, listeners) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").extendChannelListeners(type, channel, listeners));\n }\n extendPubSubListeners(type, listeners) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_instances, \"m\", _RedisCommandsQueue_pushPubSubCommand).call(this, __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").extendTypeListeners(type, listeners));\n }\n getPubSubListeners(type) {\n return __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").getTypeListeners(type);\n }\n getCommandToSend() {\n const toSend = __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").shift();\n if (!toSend)\n return;\n let encoded;\n try {\n encoded = (0, encoder_1.default)(toSend.args);\n }\n catch (err) {\n toSend.reject(err);\n return;\n }\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\").push({\n resolve: toSend.resolve,\n reject: toSend.reject,\n channelsCounter: toSend.channelsCounter,\n returnBuffers: toSend.returnBuffers\n });\n __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, toSend.chainId, \"f\");\n return encoded;\n }\n onReplyChunk(chunk) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").write(chunk);\n }\n flushWaitingForReply(err) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").reset();\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").reset();\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\"), err);\n if (!__classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, \"f\"))\n return;\n while (__classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").head?.value.chainId === __classPrivateFieldGet(this, _RedisCommandsQueue_chainInExecution, \"f\")) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").shift();\n }\n __classPrivateFieldSet(this, _RedisCommandsQueue_chainInExecution, undefined, \"f\");\n }\n flushAll(err) {\n __classPrivateFieldGet(this, _RedisCommandsQueue_decoder, \"f\").reset();\n __classPrivateFieldGet(this, _RedisCommandsQueue_pubSub, \"f\").reset();\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingForReply, \"f\"), err);\n __classPrivateFieldGet(RedisCommandsQueue, _a, \"m\", _RedisCommandsQueue_flushQueue).call(RedisCommandsQueue, __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\"), err);\n }\n}\nexports.default = RedisCommandsQueue;\n_a = RedisCommandsQueue, _RedisCommandsQueue_maxLength = new WeakMap(), _RedisCommandsQueue_waitingToBeSent = new WeakMap(), _RedisCommandsQueue_waitingForReply = new WeakMap(), _RedisCommandsQueue_onShardedChannelMoved = new WeakMap(), _RedisCommandsQueue_pubSub = new WeakMap(), _RedisCommandsQueue_chainInExecution = new WeakMap(), _RedisCommandsQueue_decoder = new WeakMap(), _RedisCommandsQueue_instances = new WeakSet(), _RedisCommandsQueue_flushQueue = function _RedisCommandsQueue_flushQueue(queue, err) {\n while (queue.length) {\n queue.shift().reject(err);\n }\n}, _RedisCommandsQueue_pushPubSubCommand = function _RedisCommandsQueue_pushPubSubCommand(command) {\n if (command === undefined)\n return;\n return new Promise((resolve, reject) => {\n __classPrivateFieldGet(this, _RedisCommandsQueue_waitingToBeSent, \"f\").push({\n args: command.args,\n channelsCounter: command.channelsCounter,\n returnBuffers: true,\n resolve: () => {\n command.resolve();\n resolve();\n },\n reject: err => {\n command.reject?.();\n reject(err);\n }\n });\n });\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"../cluster/commands\");\nconst ACL_CAT = require(\"../commands/ACL_CAT\");\nconst ACL_DELUSER = require(\"../commands/ACL_DELUSER\");\nconst ACL_DRYRUN = require(\"../commands/ACL_DRYRUN\");\nconst ACL_GENPASS = require(\"../commands/ACL_GENPASS\");\nconst ACL_GETUSER = require(\"../commands/ACL_GETUSER\");\nconst ACL_LIST = require(\"../commands/ACL_LIST\");\nconst ACL_LOAD = require(\"../commands/ACL_LOAD\");\nconst ACL_LOG_RESET = require(\"../commands/ACL_LOG_RESET\");\nconst ACL_LOG = require(\"../commands/ACL_LOG\");\nconst ACL_SAVE = require(\"../commands/ACL_SAVE\");\nconst ACL_SETUSER = require(\"../commands/ACL_SETUSER\");\nconst ACL_USERS = require(\"../commands/ACL_USERS\");\nconst ACL_WHOAMI = require(\"../commands/ACL_WHOAMI\");\nconst ASKING = require(\"../commands/ASKING\");\nconst AUTH = require(\"../commands/AUTH\");\nconst BGREWRITEAOF = require(\"../commands/BGREWRITEAOF\");\nconst BGSAVE = require(\"../commands/BGSAVE\");\nconst CLIENT_CACHING = require(\"../commands/CLIENT_CACHING\");\nconst CLIENT_GETNAME = require(\"../commands/CLIENT_GETNAME\");\nconst CLIENT_GETREDIR = require(\"../commands/CLIENT_GETREDIR\");\nconst CLIENT_ID = require(\"../commands/CLIENT_ID\");\nconst CLIENT_KILL = require(\"../commands/CLIENT_KILL\");\nconst CLIENT_LIST = require(\"../commands/CLIENT_LIST\");\nconst CLIENT_NO_EVICT = require(\"../commands/CLIENT_NO-EVICT\");\nconst CLIENT_PAUSE = require(\"../commands/CLIENT_PAUSE\");\nconst CLIENT_SETNAME = require(\"../commands/CLIENT_SETNAME\");\nconst CLIENT_TRACKING = require(\"../commands/CLIENT_TRACKING\");\nconst CLIENT_TRACKINGINFO = require(\"../commands/CLIENT_TRACKINGINFO\");\nconst CLIENT_UNPAUSE = require(\"../commands/CLIENT_UNPAUSE\");\nconst CLIENT_INFO = require(\"../commands/CLIENT_INFO\");\nconst CLUSTER_ADDSLOTS = require(\"../commands/CLUSTER_ADDSLOTS\");\nconst CLUSTER_ADDSLOTSRANGE = require(\"../commands/CLUSTER_ADDSLOTSRANGE\");\nconst CLUSTER_BUMPEPOCH = require(\"../commands/CLUSTER_BUMPEPOCH\");\nconst CLUSTER_COUNT_FAILURE_REPORTS = require(\"../commands/CLUSTER_COUNT-FAILURE-REPORTS\");\nconst CLUSTER_COUNTKEYSINSLOT = require(\"../commands/CLUSTER_COUNTKEYSINSLOT\");\nconst CLUSTER_DELSLOTS = require(\"../commands/CLUSTER_DELSLOTS\");\nconst CLUSTER_DELSLOTSRANGE = require(\"../commands/CLUSTER_DELSLOTSRANGE\");\nconst CLUSTER_FAILOVER = require(\"../commands/CLUSTER_FAILOVER\");\nconst CLUSTER_FLUSHSLOTS = require(\"../commands/CLUSTER_FLUSHSLOTS\");\nconst CLUSTER_FORGET = require(\"../commands/CLUSTER_FORGET\");\nconst CLUSTER_GETKEYSINSLOT = require(\"../commands/CLUSTER_GETKEYSINSLOT\");\nconst CLUSTER_INFO = require(\"../commands/CLUSTER_INFO\");\nconst CLUSTER_KEYSLOT = require(\"../commands/CLUSTER_KEYSLOT\");\nconst CLUSTER_LINKS = require(\"../commands/CLUSTER_LINKS\");\nconst CLUSTER_MEET = require(\"../commands/CLUSTER_MEET\");\nconst CLUSTER_MYID = require(\"../commands/CLUSTER_MYID\");\nconst CLUSTER_NODES = require(\"../commands/CLUSTER_NODES\");\nconst CLUSTER_REPLICAS = require(\"../commands/CLUSTER_REPLICAS\");\nconst CLUSTER_REPLICATE = require(\"../commands/CLUSTER_REPLICATE\");\nconst CLUSTER_RESET = require(\"../commands/CLUSTER_RESET\");\nconst CLUSTER_SAVECONFIG = require(\"../commands/CLUSTER_SAVECONFIG\");\nconst CLUSTER_SET_CONFIG_EPOCH = require(\"../commands/CLUSTER_SET-CONFIG-EPOCH\");\nconst CLUSTER_SETSLOT = require(\"../commands/CLUSTER_SETSLOT\");\nconst CLUSTER_SLOTS = require(\"../commands/CLUSTER_SLOTS\");\nconst COMMAND_COUNT = require(\"../commands/COMMAND_COUNT\");\nconst COMMAND_GETKEYS = require(\"../commands/COMMAND_GETKEYS\");\nconst COMMAND_GETKEYSANDFLAGS = require(\"../commands/COMMAND_GETKEYSANDFLAGS\");\nconst COMMAND_INFO = require(\"../commands/COMMAND_INFO\");\nconst COMMAND_LIST = require(\"../commands/COMMAND_LIST\");\nconst COMMAND = require(\"../commands/COMMAND\");\nconst CONFIG_GET = require(\"../commands/CONFIG_GET\");\nconst CONFIG_RESETASTAT = require(\"../commands/CONFIG_RESETSTAT\");\nconst CONFIG_REWRITE = require(\"../commands/CONFIG_REWRITE\");\nconst CONFIG_SET = require(\"../commands/CONFIG_SET\");\nconst DBSIZE = require(\"../commands/DBSIZE\");\nconst DISCARD = require(\"../commands/DISCARD\");\nconst ECHO = require(\"../commands/ECHO\");\nconst FAILOVER = require(\"../commands/FAILOVER\");\nconst FLUSHALL = require(\"../commands/FLUSHALL\");\nconst FLUSHDB = require(\"../commands/FLUSHDB\");\nconst FUNCTION_DELETE = require(\"../commands/FUNCTION_DELETE\");\nconst FUNCTION_DUMP = require(\"../commands/FUNCTION_DUMP\");\nconst FUNCTION_FLUSH = require(\"../commands/FUNCTION_FLUSH\");\nconst FUNCTION_KILL = require(\"../commands/FUNCTION_KILL\");\nconst FUNCTION_LIST_WITHCODE = require(\"../commands/FUNCTION_LIST_WITHCODE\");\nconst FUNCTION_LIST = require(\"../commands/FUNCTION_LIST\");\nconst FUNCTION_LOAD = require(\"../commands/FUNCTION_LOAD\");\nconst FUNCTION_RESTORE = require(\"../commands/FUNCTION_RESTORE\");\nconst FUNCTION_STATS = require(\"../commands/FUNCTION_STATS\");\nconst HELLO = require(\"../commands/HELLO\");\nconst INFO = require(\"../commands/INFO\");\nconst KEYS = require(\"../commands/KEYS\");\nconst LASTSAVE = require(\"../commands/LASTSAVE\");\nconst LATENCY_DOCTOR = require(\"../commands/LATENCY_DOCTOR\");\nconst LATENCY_GRAPH = require(\"../commands/LATENCY_GRAPH\");\nconst LOLWUT = require(\"../commands/LOLWUT\");\nconst MEMORY_DOCTOR = require(\"../commands/MEMORY_DOCTOR\");\nconst MEMORY_MALLOC_STATS = require(\"../commands/MEMORY_MALLOC-STATS\");\nconst MEMORY_PURGE = require(\"../commands/MEMORY_PURGE\");\nconst MEMORY_STATS = require(\"../commands/MEMORY_STATS\");\nconst MEMORY_USAGE = require(\"../commands/MEMORY_USAGE\");\nconst MODULE_LIST = require(\"../commands/MODULE_LIST\");\nconst MODULE_LOAD = require(\"../commands/MODULE_LOAD\");\nconst MODULE_UNLOAD = require(\"../commands/MODULE_UNLOAD\");\nconst MOVE = require(\"../commands/MOVE\");\nconst PING = require(\"../commands/PING\");\nconst PUBSUB_CHANNELS = require(\"../commands/PUBSUB_CHANNELS\");\nconst PUBSUB_NUMPAT = require(\"../commands/PUBSUB_NUMPAT\");\nconst PUBSUB_NUMSUB = require(\"../commands/PUBSUB_NUMSUB\");\nconst PUBSUB_SHARDCHANNELS = require(\"../commands/PUBSUB_SHARDCHANNELS\");\nconst RANDOMKEY = require(\"../commands/RANDOMKEY\");\nconst READONLY = require(\"../commands/READONLY\");\nconst READWRITE = require(\"../commands/READWRITE\");\nconst REPLICAOF = require(\"../commands/REPLICAOF\");\nconst RESTORE_ASKING = require(\"../commands/RESTORE-ASKING\");\nconst ROLE = require(\"../commands/ROLE\");\nconst SAVE = require(\"../commands/SAVE\");\nconst SCAN = require(\"../commands/SCAN\");\nconst SCRIPT_DEBUG = require(\"../commands/SCRIPT_DEBUG\");\nconst SCRIPT_EXISTS = require(\"../commands/SCRIPT_EXISTS\");\nconst SCRIPT_FLUSH = require(\"../commands/SCRIPT_FLUSH\");\nconst SCRIPT_KILL = require(\"../commands/SCRIPT_KILL\");\nconst SCRIPT_LOAD = require(\"../commands/SCRIPT_LOAD\");\nconst SHUTDOWN = require(\"../commands/SHUTDOWN\");\nconst SWAPDB = require(\"../commands/SWAPDB\");\nconst TIME = require(\"../commands/TIME\");\nconst UNWATCH = require(\"../commands/UNWATCH\");\nconst WAIT = require(\"../commands/WAIT\");\nexports.default = {\n ...commands_1.default,\n ACL_CAT,\n aclCat: ACL_CAT,\n ACL_DELUSER,\n aclDelUser: ACL_DELUSER,\n ACL_DRYRUN,\n aclDryRun: ACL_DRYRUN,\n ACL_GENPASS,\n aclGenPass: ACL_GENPASS,\n ACL_GETUSER,\n aclGetUser: ACL_GETUSER,\n ACL_LIST,\n aclList: ACL_LIST,\n ACL_LOAD,\n aclLoad: ACL_LOAD,\n ACL_LOG_RESET,\n aclLogReset: ACL_LOG_RESET,\n ACL_LOG,\n aclLog: ACL_LOG,\n ACL_SAVE,\n aclSave: ACL_SAVE,\n ACL_SETUSER,\n aclSetUser: ACL_SETUSER,\n ACL_USERS,\n aclUsers: ACL_USERS,\n ACL_WHOAMI,\n aclWhoAmI: ACL_WHOAMI,\n ASKING,\n asking: ASKING,\n AUTH,\n auth: AUTH,\n BGREWRITEAOF,\n bgRewriteAof: BGREWRITEAOF,\n BGSAVE,\n bgSave: BGSAVE,\n CLIENT_CACHING,\n clientCaching: CLIENT_CACHING,\n CLIENT_GETNAME,\n clientGetName: CLIENT_GETNAME,\n CLIENT_GETREDIR,\n clientGetRedir: CLIENT_GETREDIR,\n CLIENT_ID,\n clientId: CLIENT_ID,\n CLIENT_KILL,\n clientKill: CLIENT_KILL,\n 'CLIENT_NO-EVICT': CLIENT_NO_EVICT,\n clientNoEvict: CLIENT_NO_EVICT,\n CLIENT_LIST,\n clientList: CLIENT_LIST,\n CLIENT_PAUSE,\n clientPause: CLIENT_PAUSE,\n CLIENT_SETNAME,\n clientSetName: CLIENT_SETNAME,\n CLIENT_TRACKING,\n clientTracking: CLIENT_TRACKING,\n CLIENT_TRACKINGINFO,\n clientTrackingInfo: CLIENT_TRACKINGINFO,\n CLIENT_UNPAUSE,\n clientUnpause: CLIENT_UNPAUSE,\n CLIENT_INFO,\n clientInfo: CLIENT_INFO,\n CLUSTER_ADDSLOTS,\n clusterAddSlots: CLUSTER_ADDSLOTS,\n CLUSTER_ADDSLOTSRANGE,\n clusterAddSlotsRange: CLUSTER_ADDSLOTSRANGE,\n CLUSTER_BUMPEPOCH,\n clusterBumpEpoch: CLUSTER_BUMPEPOCH,\n CLUSTER_COUNT_FAILURE_REPORTS,\n clusterCountFailureReports: CLUSTER_COUNT_FAILURE_REPORTS,\n CLUSTER_COUNTKEYSINSLOT,\n clusterCountKeysInSlot: CLUSTER_COUNTKEYSINSLOT,\n CLUSTER_DELSLOTS,\n clusterDelSlots: CLUSTER_DELSLOTS,\n CLUSTER_DELSLOTSRANGE,\n clusterDelSlotsRange: CLUSTER_DELSLOTSRANGE,\n CLUSTER_FAILOVER,\n clusterFailover: CLUSTER_FAILOVER,\n CLUSTER_FLUSHSLOTS,\n clusterFlushSlots: CLUSTER_FLUSHSLOTS,\n CLUSTER_FORGET,\n clusterForget: CLUSTER_FORGET,\n CLUSTER_GETKEYSINSLOT,\n clusterGetKeysInSlot: CLUSTER_GETKEYSINSLOT,\n CLUSTER_INFO,\n clusterInfo: CLUSTER_INFO,\n CLUSTER_KEYSLOT,\n clusterKeySlot: CLUSTER_KEYSLOT,\n CLUSTER_LINKS,\n clusterLinks: CLUSTER_LINKS,\n CLUSTER_MEET,\n clusterMeet: CLUSTER_MEET,\n CLUSTER_MYID,\n clusterMyId: CLUSTER_MYID,\n CLUSTER_NODES,\n clusterNodes: CLUSTER_NODES,\n CLUSTER_REPLICAS,\n clusterReplicas: CLUSTER_REPLICAS,\n CLUSTER_REPLICATE,\n clusterReplicate: CLUSTER_REPLICATE,\n CLUSTER_RESET,\n clusterReset: CLUSTER_RESET,\n CLUSTER_SAVECONFIG,\n clusterSaveConfig: CLUSTER_SAVECONFIG,\n CLUSTER_SET_CONFIG_EPOCH,\n clusterSetConfigEpoch: CLUSTER_SET_CONFIG_EPOCH,\n CLUSTER_SETSLOT,\n clusterSetSlot: CLUSTER_SETSLOT,\n CLUSTER_SLOTS,\n clusterSlots: CLUSTER_SLOTS,\n COMMAND_COUNT,\n commandCount: COMMAND_COUNT,\n COMMAND_GETKEYS,\n commandGetKeys: COMMAND_GETKEYS,\n COMMAND_GETKEYSANDFLAGS,\n commandGetKeysAndFlags: COMMAND_GETKEYSANDFLAGS,\n COMMAND_INFO,\n commandInfo: COMMAND_INFO,\n COMMAND_LIST,\n commandList: COMMAND_LIST,\n COMMAND,\n command: COMMAND,\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_RESETASTAT,\n configResetStat: CONFIG_RESETASTAT,\n CONFIG_REWRITE,\n configRewrite: CONFIG_REWRITE,\n CONFIG_SET,\n configSet: CONFIG_SET,\n DBSIZE,\n dbSize: DBSIZE,\n DISCARD,\n discard: DISCARD,\n ECHO,\n echo: ECHO,\n FAILOVER,\n failover: FAILOVER,\n FLUSHALL,\n flushAll: FLUSHALL,\n FLUSHDB,\n flushDb: FLUSHDB,\n FUNCTION_DELETE,\n functionDelete: FUNCTION_DELETE,\n FUNCTION_DUMP,\n functionDump: FUNCTION_DUMP,\n FUNCTION_FLUSH,\n functionFlush: FUNCTION_FLUSH,\n FUNCTION_KILL,\n functionKill: FUNCTION_KILL,\n FUNCTION_LIST_WITHCODE,\n functionListWithCode: FUNCTION_LIST_WITHCODE,\n FUNCTION_LIST,\n functionList: FUNCTION_LIST,\n FUNCTION_LOAD,\n functionLoad: FUNCTION_LOAD,\n FUNCTION_RESTORE,\n functionRestore: FUNCTION_RESTORE,\n FUNCTION_STATS,\n functionStats: FUNCTION_STATS,\n HELLO,\n hello: HELLO,\n INFO,\n info: INFO,\n KEYS,\n keys: KEYS,\n LASTSAVE,\n lastSave: LASTSAVE,\n LATENCY_DOCTOR,\n latencyDoctor: LATENCY_DOCTOR,\n LATENCY_GRAPH,\n latencyGraph: LATENCY_GRAPH,\n LOLWUT,\n lolwut: LOLWUT,\n MEMORY_DOCTOR,\n memoryDoctor: MEMORY_DOCTOR,\n 'MEMORY_MALLOC-STATS': MEMORY_MALLOC_STATS,\n memoryMallocStats: MEMORY_MALLOC_STATS,\n MEMORY_PURGE,\n memoryPurge: MEMORY_PURGE,\n MEMORY_STATS,\n memoryStats: MEMORY_STATS,\n MEMORY_USAGE,\n memoryUsage: MEMORY_USAGE,\n MODULE_LIST,\n moduleList: MODULE_LIST,\n MODULE_LOAD,\n moduleLoad: MODULE_LOAD,\n MODULE_UNLOAD,\n moduleUnload: MODULE_UNLOAD,\n MOVE,\n move: MOVE,\n PING,\n ping: PING,\n PUBSUB_CHANNELS,\n pubSubChannels: PUBSUB_CHANNELS,\n PUBSUB_NUMPAT,\n pubSubNumPat: PUBSUB_NUMPAT,\n PUBSUB_NUMSUB,\n pubSubNumSub: PUBSUB_NUMSUB,\n PUBSUB_SHARDCHANNELS,\n pubSubShardChannels: PUBSUB_SHARDCHANNELS,\n RANDOMKEY,\n randomKey: RANDOMKEY,\n READONLY,\n readonly: READONLY,\n READWRITE,\n readwrite: READWRITE,\n REPLICAOF,\n replicaOf: REPLICAOF,\n 'RESTORE-ASKING': RESTORE_ASKING,\n restoreAsking: RESTORE_ASKING,\n ROLE,\n role: ROLE,\n SAVE,\n save: SAVE,\n SCAN,\n scan: SCAN,\n SCRIPT_DEBUG,\n scriptDebug: SCRIPT_DEBUG,\n SCRIPT_EXISTS,\n scriptExists: SCRIPT_EXISTS,\n SCRIPT_FLUSH,\n scriptFlush: SCRIPT_FLUSH,\n SCRIPT_KILL,\n scriptKill: SCRIPT_KILL,\n SCRIPT_LOAD,\n scriptLoad: SCRIPT_LOAD,\n SHUTDOWN,\n shutdown: SHUTDOWN,\n SWAPDB,\n swapDb: SWAPDB,\n TIME,\n time: TIME,\n UNWATCH,\n unwatch: UNWATCH,\n WAIT,\n wait: WAIT\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisClient_instances, _RedisClient_options, _RedisClient_socket, _RedisClient_queue, _RedisClient_isolationPool, _RedisClient_v4, _RedisClient_selectedDB, _RedisClient_initiateOptions, _RedisClient_initiateQueue, _RedisClient_initiateSocket, _RedisClient_legacyMode, _RedisClient_legacySendCommand, _RedisClient_defineLegacyCommand, _RedisClient_pingTimer, _RedisClient_setPingTimer, _RedisClient_sendCommand, _RedisClient_pubSubCommand, _RedisClient_tick, _RedisClient_addMultiCommands, _RedisClient_destroyIsolationPool;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst socket_1 = require(\"./socket\");\nconst commands_queue_1 = require(\"./commands-queue\");\nconst multi_command_1 = require(\"./multi-command\");\nconst events_1 = require(\"events\");\nconst command_options_1 = require(\"../command-options\");\nconst commander_1 = require(\"../commander\");\nconst generic_pool_1 = require(\"generic-pool\");\nconst errors_1 = require(\"../errors\");\nconst url_1 = require(\"url\");\nconst pub_sub_1 = require(\"./pub-sub\");\nclass RedisClient extends events_1.EventEmitter {\n static commandOptions(options) {\n return (0, command_options_1.commandOptions)(options);\n }\n static extend(extensions) {\n const Client = (0, commander_1.attachExtensions)({\n BaseClass: RedisClient,\n modulesExecutor: RedisClient.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClient.prototype.functionsExecuter,\n functions: extensions?.functions,\n scriptsExecutor: RedisClient.prototype.scriptsExecuter,\n scripts: extensions?.scripts\n });\n if (Client !== RedisClient) {\n Client.prototype.Multi = multi_command_1.default.extend(extensions);\n }\n return Client;\n }\n static create(options) {\n return new (RedisClient.extend(options))(options);\n }\n static parseURL(url) {\n // https://www.iana.org/assignments/uri-schemes/prov/redis\n const { hostname, port, protocol, username, password, pathname } = new url_1.URL(url), parsed = {\n socket: {\n host: hostname\n }\n };\n if (protocol === 'rediss:') {\n parsed.socket.tls = true;\n }\n else if (protocol !== 'redis:') {\n throw new TypeError('Invalid protocol');\n }\n if (port) {\n parsed.socket.port = Number(port);\n }\n if (username) {\n parsed.username = decodeURIComponent(username);\n }\n if (password) {\n parsed.password = decodeURIComponent(password);\n }\n if (pathname.length > 1) {\n const database = Number(pathname.substring(1));\n if (isNaN(database)) {\n throw new TypeError('Invalid pathname');\n }\n parsed.database = database;\n }\n return parsed;\n }\n get options() {\n return __classPrivateFieldGet(this, _RedisClient_options, \"f\");\n }\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen;\n }\n get isReady() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady;\n }\n get isPubSubActive() {\n return __classPrivateFieldGet(this, _RedisClient_queue, \"f\").isPubSubActive;\n }\n get v4() {\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode) {\n throw new Error('the client is not in \"legacy mode\"');\n }\n return __classPrivateFieldGet(this, _RedisClient_v4, \"f\");\n }\n constructor(options) {\n super();\n _RedisClient_instances.add(this);\n Object.defineProperty(this, \"commandOptions\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: RedisClient.commandOptions\n });\n _RedisClient_options.set(this, void 0);\n _RedisClient_socket.set(this, void 0);\n _RedisClient_queue.set(this, void 0);\n _RedisClient_isolationPool.set(this, void 0);\n _RedisClient_v4.set(this, {});\n _RedisClient_selectedDB.set(this, 0);\n _RedisClient_pingTimer.set(this, void 0);\n Object.defineProperty(this, \"select\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SELECT\n });\n Object.defineProperty(this, \"subscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUBSCRIBE\n });\n Object.defineProperty(this, \"unsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.UNSUBSCRIBE\n });\n Object.defineProperty(this, \"pSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PSUBSCRIBE\n });\n Object.defineProperty(this, \"pUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PUNSUBSCRIBE\n });\n Object.defineProperty(this, \"sSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SSUBSCRIBE\n });\n Object.defineProperty(this, \"sUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUNSUBSCRIBE\n });\n Object.defineProperty(this, \"quit\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.QUIT\n });\n Object.defineProperty(this, \"multi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.MULTI\n });\n __classPrivateFieldSet(this, _RedisClient_options, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateOptions).call(this, options), \"f\");\n __classPrivateFieldSet(this, _RedisClient_queue, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateQueue).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisClient_socket, __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_initiateSocket).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisClient_isolationPool, (0, generic_pool_1.createPool)({\n create: async () => {\n const duplicate = this.duplicate({\n isolationPoolOptions: undefined\n }).on('error', err => this.emit('error', err));\n await duplicate.connect();\n return duplicate;\n },\n destroy: client => client.disconnect()\n }, options?.isolationPoolOptions), \"f\");\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacyMode).call(this);\n }\n duplicate(overrides) {\n return new (Object.getPrototypeOf(this).constructor)({\n ...__classPrivateFieldGet(this, _RedisClient_options, \"f\"),\n ...overrides\n });\n }\n connect() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").connect();\n }\n async commandsExecutor(command, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args);\n return (0, commander_1.transformCommandReply)(command, await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options), redisArgs.preserve);\n }\n sendCommand(args, options) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, args, options);\n }\n async functionsExecuter(fn, args, name) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(fn, args);\n return (0, commander_1.transformCommandReply)(fn, await this.executeFunction(name, fn, redisArgs, options), redisArgs.preserve);\n }\n executeFunction(name, fn, args, options) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, (0, commander_1.fCallArguments)(name, fn, args), options);\n }\n async scriptsExecuter(script, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args);\n return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, redisArgs, options), redisArgs.preserve);\n }\n async executeScript(script, args, options) {\n const redisArgs = ['EVALSHA', script.SHA1];\n if (script.NUMBER_OF_KEYS !== undefined) {\n redisArgs.push(script.NUMBER_OF_KEYS.toString());\n }\n redisArgs.push(...args);\n try {\n return await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options);\n }\n catch (err) {\n if (!err?.message?.startsWith?.('NOSCRIPT')) {\n throw err;\n }\n redisArgs[0] = 'EVAL';\n redisArgs[1] = script.SCRIPT;\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, redisArgs, options);\n }\n }\n async SELECT(options, db) {\n if (!(0, command_options_1.isCommandOptions)(options)) {\n db = options;\n options = null;\n }\n await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, ['SELECT', db.toString()], options);\n __classPrivateFieldSet(this, _RedisClient_selectedDB, db, \"f\");\n }\n SUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.CHANNELS, channels, listener, bufferMode));\n }\n UNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.CHANNELS, channels, listener, bufferMode));\n }\n PSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.PATTERNS, patterns, listener, bufferMode));\n }\n PUNSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.PATTERNS, patterns, listener, bufferMode));\n }\n SSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").subscribe(pub_sub_1.PubSubType.SHARDED, channels, listener, bufferMode));\n }\n SUNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").unsubscribe(pub_sub_1.PubSubType.SHARDED, channels, listener, bufferMode));\n }\n getPubSubListeners(type) {\n return __classPrivateFieldGet(this, _RedisClient_queue, \"f\").getPubSubListeners(type);\n }\n extendPubSubChannelListeners(type, channel, listeners) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").extendPubSubChannelListeners(type, channel, listeners));\n }\n extendPubSubListeners(type, listeners) {\n return __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_pubSubCommand).call(this, __classPrivateFieldGet(this, _RedisClient_queue, \"f\").extendPubSubListeners(type, listeners));\n }\n QUIT() {\n return __classPrivateFieldGet(this, _RedisClient_socket, \"f\").quit(async () => {\n const quitPromise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['QUIT']);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n const [reply] = await Promise.all([\n quitPromise,\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_destroyIsolationPool).call(this)\n ]);\n return reply;\n });\n }\n executeIsolated(fn) {\n return __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").use(fn);\n }\n MULTI() {\n return new this.Multi(this.multiExecutor.bind(this), __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode);\n }\n async multiExecutor(commands, selectedDB, chainId) {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen) {\n return Promise.reject(new errors_1.ClientClosedError());\n }\n const promise = chainId ?\n // if `chainId` has a value, it's a `MULTI` (and not \"pipeline\") - need to add the `MULTI` and `EXEC` commands\n Promise.all([\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['MULTI'], { chainId }),\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_addMultiCommands).call(this, commands, chainId),\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['EXEC'], { chainId })\n ]) :\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_addMultiCommands).call(this, commands);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n const results = await promise;\n if (selectedDB !== undefined) {\n __classPrivateFieldSet(this, _RedisClient_selectedDB, selectedDB, \"f\");\n }\n return results;\n }\n async *scanIterator(options) {\n let cursor = 0;\n do {\n const reply = await this.scan(cursor, options);\n cursor = reply.cursor;\n for (const key of reply.keys) {\n yield key;\n }\n } while (cursor !== 0);\n }\n async *hScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.hScan(key, cursor, options);\n cursor = reply.cursor;\n for (const tuple of reply.tuples) {\n yield tuple;\n }\n } while (cursor !== 0);\n }\n async *sScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.sScan(key, cursor, options);\n cursor = reply.cursor;\n for (const member of reply.members) {\n yield member;\n }\n } while (cursor !== 0);\n }\n async *zScanIterator(key, options) {\n let cursor = 0;\n do {\n const reply = await this.zScan(key, cursor, options);\n cursor = reply.cursor;\n for (const member of reply.members) {\n yield member;\n }\n } while (cursor !== 0);\n }\n async disconnect() {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushAll(new errors_1.DisconnectsClientError());\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").disconnect();\n await __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_destroyIsolationPool).call(this);\n }\n ref() {\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").ref();\n }\n unref() {\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").unref();\n }\n}\nexports.default = RedisClient;\n_RedisClient_options = new WeakMap(), _RedisClient_socket = new WeakMap(), _RedisClient_queue = new WeakMap(), _RedisClient_isolationPool = new WeakMap(), _RedisClient_v4 = new WeakMap(), _RedisClient_selectedDB = new WeakMap(), _RedisClient_pingTimer = new WeakMap(), _RedisClient_instances = new WeakSet(), _RedisClient_initiateOptions = function _RedisClient_initiateOptions(options) {\n if (options?.url) {\n const parsed = RedisClient.parseURL(options.url);\n if (options.socket) {\n parsed.socket = Object.assign(options.socket, parsed.socket);\n }\n Object.assign(options, parsed);\n }\n if (options?.database) {\n __classPrivateFieldSet(this, _RedisClient_selectedDB, options.database, \"f\");\n }\n return options;\n}, _RedisClient_initiateQueue = function _RedisClient_initiateQueue() {\n return new commands_queue_1.default(__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.commandsQueueMaxLength, (channel, listeners) => this.emit('sharded-channel-moved', channel, listeners));\n}, _RedisClient_initiateSocket = function _RedisClient_initiateSocket() {\n const socketInitiator = async () => {\n const promises = [];\n if (__classPrivateFieldGet(this, _RedisClient_selectedDB, \"f\") !== 0) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(['SELECT', __classPrivateFieldGet(this, _RedisClient_selectedDB, \"f\").toString()], { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.readonly) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.READONLY.transformArguments(), { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.name) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.CLIENT_SETNAME.transformArguments(__classPrivateFieldGet(this, _RedisClient_options, \"f\").name), { asap: true }));\n }\n if (__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.username || __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.password) {\n promises.push(__classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(commands_1.default.AUTH.transformArguments({\n username: __classPrivateFieldGet(this, _RedisClient_options, \"f\").username,\n password: __classPrivateFieldGet(this, _RedisClient_options, \"f\").password ?? ''\n }), { asap: true }));\n }\n const resubscribePromise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").resubscribe();\n if (resubscribePromise) {\n promises.push(resubscribePromise);\n }\n if (promises.length) {\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this, true);\n await Promise.all(promises);\n }\n };\n return new socket_1.default(socketInitiator, __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.socket)\n .on('data', chunk => __classPrivateFieldGet(this, _RedisClient_queue, \"f\").onReplyChunk(chunk))\n .on('error', err => {\n this.emit('error', err);\n if (__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen && !__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.disableOfflineQueue) {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushWaitingForReply(err);\n }\n else {\n __classPrivateFieldGet(this, _RedisClient_queue, \"f\").flushAll(err);\n }\n })\n .on('connect', () => {\n this.emit('connect');\n })\n .on('ready', () => {\n this.emit('ready');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_setPingTimer).call(this);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n })\n .on('reconnecting', () => this.emit('reconnecting'))\n .on('drain', () => __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this))\n .on('end', () => this.emit('end'));\n}, _RedisClient_legacyMode = function _RedisClient_legacyMode() {\n var _a, _b;\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.legacyMode)\n return;\n __classPrivateFieldGet(this, _RedisClient_v4, \"f\").sendCommand = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).bind(this);\n this.sendCommand = (...args) => {\n const result = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacySendCommand).call(this, ...args);\n if (result) {\n result.promise\n .then(reply => result.callback(null, reply))\n .catch(err => result.callback(err));\n }\n };\n for (const [name, command] of Object.entries(commands_1.default)) {\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, name, command);\n (_a = this)[_b = name.toLowerCase()] ?? (_a[_b] = this[name]);\n }\n // hard coded commands\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'SELECT');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'select');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'SUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'subscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'PSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'pSubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'UNSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'unsubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'PUNSUBSCRIBE');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'pUnsubscribe');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'QUIT');\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_defineLegacyCommand).call(this, 'quit');\n}, _RedisClient_legacySendCommand = function _RedisClient_legacySendCommand(...args) {\n const callback = typeof args[args.length - 1] === 'function' ?\n args.pop() :\n undefined;\n const promise = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, (0, commander_1.transformLegacyCommandArguments)(args));\n if (callback)\n return {\n promise,\n callback\n };\n promise.catch(err => this.emit('error', err));\n}, _RedisClient_defineLegacyCommand = function _RedisClient_defineLegacyCommand(name, command) {\n __classPrivateFieldGet(this, _RedisClient_v4, \"f\")[name] = this[name].bind(this);\n this[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?\n (...args) => {\n const result = __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_legacySendCommand).call(this, name, ...args);\n if (result) {\n result.promise\n .then(reply => result.callback(null, command.transformReply(reply)))\n .catch(err => result.callback(err));\n }\n } :\n (...args) => this.sendCommand(name, ...args);\n}, _RedisClient_setPingTimer = function _RedisClient_setPingTimer() {\n if (!__classPrivateFieldGet(this, _RedisClient_options, \"f\")?.pingInterval || !__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)\n return;\n clearTimeout(__classPrivateFieldGet(this, _RedisClient_pingTimer, \"f\"));\n __classPrivateFieldSet(this, _RedisClient_pingTimer, setTimeout(() => {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)\n return;\n // using #sendCommand to support legacy mode\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_sendCommand).call(this, ['PING'])\n .then(reply => this.emit('ping-interval', reply))\n .catch(err => this.emit('error', err))\n .finally(() => __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_setPingTimer).call(this));\n }, __classPrivateFieldGet(this, _RedisClient_options, \"f\").pingInterval), \"f\");\n}, _RedisClient_sendCommand = function _RedisClient_sendCommand(args, options) {\n if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isOpen) {\n return Promise.reject(new errors_1.ClientClosedError());\n }\n else if (options?.isolated) {\n return this.executeIsolated(isolatedClient => isolatedClient.sendCommand(args, {\n ...options,\n isolated: false\n }));\n }\n else if (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady && __classPrivateFieldGet(this, _RedisClient_options, \"f\")?.disableOfflineQueue) {\n return Promise.reject(new errors_1.ClientOfflineError());\n }\n const promise = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(args, options);\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n return promise;\n}, _RedisClient_pubSubCommand = function _RedisClient_pubSubCommand(promise) {\n if (promise === undefined)\n return Promise.resolve();\n __classPrivateFieldGet(this, _RedisClient_instances, \"m\", _RedisClient_tick).call(this);\n return promise;\n}, _RedisClient_tick = function _RedisClient_tick(force = false) {\n if (__classPrivateFieldGet(this, _RedisClient_socket, \"f\").writableNeedDrain || (!force && !__classPrivateFieldGet(this, _RedisClient_socket, \"f\").isReady)) {\n return;\n }\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").cork();\n while (!__classPrivateFieldGet(this, _RedisClient_socket, \"f\").writableNeedDrain) {\n const args = __classPrivateFieldGet(this, _RedisClient_queue, \"f\").getCommandToSend();\n if (args === undefined)\n break;\n __classPrivateFieldGet(this, _RedisClient_socket, \"f\").writeCommand(args);\n }\n}, _RedisClient_addMultiCommands = function _RedisClient_addMultiCommands(commands, chainId) {\n return Promise.all(commands.map(({ args }) => __classPrivateFieldGet(this, _RedisClient_queue, \"f\").addCommand(args, { chainId })));\n}, _RedisClient_destroyIsolationPool = async function _RedisClient_destroyIsolationPool() {\n await __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").drain();\n await __classPrivateFieldGet(this, _RedisClient_isolationPool, \"f\").clear();\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisClient,\n commands: commands_1.default,\n executor: RedisClient.prototype.commandsExecutor\n});\nRedisClient.prototype.Multi = multi_command_1.default;\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _RedisClientMultiCommand_instances, _RedisClientMultiCommand_multi, _RedisClientMultiCommand_executor, _RedisClientMultiCommand_selectedDB, _RedisClientMultiCommand_legacyMode, _RedisClientMultiCommand_defineLegacyCommand;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst multi_command_1 = require(\"../multi-command\");\nconst commander_1 = require(\"../commander\");\nclass RedisClientMultiCommand {\n static extend(extensions) {\n return (0, commander_1.attachExtensions)({\n BaseClass: RedisClientMultiCommand,\n modulesExecutor: RedisClientMultiCommand.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClientMultiCommand.prototype.functionsExecutor,\n functions: extensions?.functions,\n scriptsExecutor: RedisClientMultiCommand.prototype.scriptsExecutor,\n scripts: extensions?.scripts\n });\n }\n constructor(executor, legacyMode = false) {\n _RedisClientMultiCommand_instances.add(this);\n _RedisClientMultiCommand_multi.set(this, new multi_command_1.default());\n _RedisClientMultiCommand_executor.set(this, void 0);\n Object.defineProperty(this, \"v4\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: {}\n });\n _RedisClientMultiCommand_selectedDB.set(this, void 0);\n Object.defineProperty(this, \"select\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SELECT\n });\n Object.defineProperty(this, \"EXEC\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.exec\n });\n __classPrivateFieldSet(this, _RedisClientMultiCommand_executor, executor, \"f\");\n if (legacyMode) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, \"m\", _RedisClientMultiCommand_legacyMode).call(this);\n }\n }\n commandsExecutor(command, args) {\n return this.addCommand(command.transformArguments(...args), command.transformReply);\n }\n SELECT(db, transformReply) {\n __classPrivateFieldSet(this, _RedisClientMultiCommand_selectedDB, db, \"f\");\n return this.addCommand(['SELECT', db.toString()], transformReply);\n }\n addCommand(args, transformReply) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand(args, transformReply);\n return this;\n }\n functionsExecutor(fn, args, name) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addFunction(name, fn, args);\n return this;\n }\n scriptsExecutor(script, args) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addScript(script, args);\n return this;\n }\n async exec(execAsPipeline = false) {\n if (execAsPipeline) {\n return this.execAsPipeline();\n }\n return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").handleExecReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, \"f\"), multi_command_1.default.generateChainId()));\n }\n async execAsPipeline() {\n if (__classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue.length === 0)\n return [];\n return __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").transformReplies(await __classPrivateFieldGet(this, _RedisClientMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClientMultiCommand_selectedDB, \"f\")));\n }\n}\nexports.default = RedisClientMultiCommand;\n_RedisClientMultiCommand_multi = new WeakMap(), _RedisClientMultiCommand_executor = new WeakMap(), _RedisClientMultiCommand_selectedDB = new WeakMap(), _RedisClientMultiCommand_instances = new WeakSet(), _RedisClientMultiCommand_legacyMode = function _RedisClientMultiCommand_legacyMode() {\n var _a, _b;\n this.v4.addCommand = this.addCommand.bind(this);\n this.addCommand = (...args) => {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand((0, commander_1.transformLegacyCommandArguments)(args));\n return this;\n };\n this.v4.exec = this.exec.bind(this);\n this.exec = (callback) => {\n this.v4.exec()\n .then((reply) => {\n if (!callback)\n return;\n callback(null, reply);\n })\n .catch((err) => {\n if (!callback) {\n // this.emit('error', err);\n return;\n }\n callback(err);\n });\n };\n for (const [name, command] of Object.entries(commands_1.default)) {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_instances, \"m\", _RedisClientMultiCommand_defineLegacyCommand).call(this, name, command);\n (_a = this)[_b = name.toLowerCase()] ?? (_a[_b] = this[name]);\n }\n}, _RedisClientMultiCommand_defineLegacyCommand = function _RedisClientMultiCommand_defineLegacyCommand(name, command) {\n this.v4[name] = this[name].bind(this.v4);\n this[name] = command && command.TRANSFORM_LEGACY_REPLY && command.transformReply ?\n (...args) => {\n __classPrivateFieldGet(this, _RedisClientMultiCommand_multi, \"f\").addCommand([name, ...(0, commander_1.transformLegacyCommandArguments)(args)], command.transformReply);\n return this;\n } :\n (...args) => this.addCommand(name, ...args);\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisClientMultiCommand,\n commands: commands_1.default,\n executor: RedisClientMultiCommand.prototype.commandsExecutor\n});\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _PubSub_instances, _a, _PubSub_channelsArray, _PubSub_listenersSet, _PubSub_subscribing, _PubSub_isActive, _PubSub_listeners, _PubSub_extendChannelListeners, _PubSub_unsubscribeCommand, _PubSub_updateIsActive, _PubSub_emitPubSubMessage;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PubSub = exports.PubSubType = void 0;\nvar PubSubType;\n(function (PubSubType) {\n PubSubType[\"CHANNELS\"] = \"CHANNELS\";\n PubSubType[\"PATTERNS\"] = \"PATTERNS\";\n PubSubType[\"SHARDED\"] = \"SHARDED\";\n})(PubSubType = exports.PubSubType || (exports.PubSubType = {}));\nconst COMMANDS = {\n [PubSubType.CHANNELS]: {\n subscribe: Buffer.from('subscribe'),\n unsubscribe: Buffer.from('unsubscribe'),\n message: Buffer.from('message')\n },\n [PubSubType.PATTERNS]: {\n subscribe: Buffer.from('psubscribe'),\n unsubscribe: Buffer.from('punsubscribe'),\n message: Buffer.from('pmessage')\n },\n [PubSubType.SHARDED]: {\n subscribe: Buffer.from('ssubscribe'),\n unsubscribe: Buffer.from('sunsubscribe'),\n message: Buffer.from('smessage')\n }\n};\nclass PubSub {\n constructor() {\n _PubSub_instances.add(this);\n _PubSub_subscribing.set(this, 0);\n _PubSub_isActive.set(this, false);\n _PubSub_listeners.set(this, {\n [PubSubType.CHANNELS]: new Map(),\n [PubSubType.PATTERNS]: new Map(),\n [PubSubType.SHARDED]: new Map()\n });\n }\n static isStatusReply(reply) {\n return (COMMANDS[PubSubType.CHANNELS].subscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.CHANNELS].unsubscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.PATTERNS].subscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.PATTERNS].unsubscribe.equals(reply[0]) ||\n COMMANDS[PubSubType.SHARDED].subscribe.equals(reply[0]));\n }\n static isShardedUnsubscribe(reply) {\n return COMMANDS[PubSubType.SHARDED].unsubscribe.equals(reply[0]);\n }\n get isActive() {\n return __classPrivateFieldGet(this, _PubSub_isActive, \"f\");\n }\n subscribe(type, channels, listener, returnBuffers) {\n var _b;\n const args = [COMMANDS[type].subscribe], channelsArray = __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_channelsArray).call(PubSub, channels);\n for (const channel of channelsArray) {\n let channelListeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!channelListeners || channelListeners.unsubscribing) {\n args.push(channel);\n }\n }\n if (args.length === 1) {\n // all channels are already subscribed, add listeners without issuing a command\n for (const channel of channelsArray) {\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel), returnBuffers).add(listener);\n }\n return;\n }\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args,\n channelsCounter: args.length - 1,\n resolve: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n for (const channel of channelsArray) {\n let listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!listeners) {\n listeners = {\n unsubscribing: false,\n buffers: new Set(),\n strings: new Set()\n };\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].set(channel, listeners);\n }\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, listeners, returnBuffers).add(listener);\n }\n },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n extendChannelListeners(type, channel, listeners) {\n var _b;\n if (!__classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_extendChannelListeners).call(this, type, channel, listeners))\n return;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args: [\n COMMANDS[type].subscribe,\n channel\n ],\n channelsCounter: 1,\n resolve: () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n extendTypeListeners(type, listeners) {\n var _b;\n const args = [COMMANDS[type].subscribe];\n for (const [channel, channelListeners] of listeners) {\n if (__classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_extendChannelListeners).call(this, type, channel, channelListeners)) {\n args.push(channel);\n }\n }\n if (args.length === 1)\n return;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n return {\n args,\n channelsCounter: args.length - 1,\n resolve: () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; },\n reject: () => {\n var _b;\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b--, _b), \"f\");\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n }\n };\n }\n unsubscribe(type, channels, listener, returnBuffers) {\n const listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type];\n if (!channels) {\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, [COMMANDS[type].unsubscribe], \n // cannot use `this.#subscribed` because there might be some `SUBSCRIBE` commands in the queue\n // cannot use `this.#subscribed + this.#subscribing` because some `SUBSCRIBE` commands might fail\n NaN, () => listeners.clear());\n }\n const channelsArray = __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_channelsArray).call(PubSub, channels);\n if (!listener) {\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, [COMMANDS[type].unsubscribe, ...channelsArray], channelsArray.length, () => {\n for (const channel of channelsArray) {\n listeners.delete(channel);\n }\n });\n }\n const args = [COMMANDS[type].unsubscribe];\n for (const channel of channelsArray) {\n const sets = listeners.get(channel);\n if (sets) {\n let current, other;\n if (returnBuffers) {\n current = sets.buffers;\n other = sets.strings;\n }\n else {\n current = sets.strings;\n other = sets.buffers;\n }\n const currentSize = current.has(listener) ? current.size - 1 : current.size;\n if (currentSize !== 0 || other.size !== 0)\n continue;\n sets.unsubscribing = true;\n }\n args.push(channel);\n }\n if (args.length === 1) {\n // all channels has other listeners,\n // delete the listeners without issuing a command\n for (const channel of channelsArray) {\n __classPrivateFieldGet(PubSub, _a, \"m\", _PubSub_listenersSet).call(PubSub, listeners.get(channel), returnBuffers).delete(listener);\n }\n return;\n }\n return __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_unsubscribeCommand).call(this, args, args.length - 1, () => {\n for (const channel of channelsArray) {\n const sets = listeners.get(channel);\n if (!sets)\n continue;\n (returnBuffers ? sets.buffers : sets.strings).delete(listener);\n if (sets.buffers.size === 0 && sets.strings.size === 0) {\n listeners.delete(channel);\n }\n }\n });\n }\n reset() {\n __classPrivateFieldSet(this, _PubSub_isActive, false, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, 0, \"f\");\n }\n resubscribe() {\n var _b;\n const commands = [];\n for (const [type, listeners] of Object.entries(__classPrivateFieldGet(this, _PubSub_listeners, \"f\"))) {\n if (!listeners.size)\n continue;\n __classPrivateFieldSet(this, _PubSub_isActive, true, \"f\");\n __classPrivateFieldSet(this, _PubSub_subscribing, (_b = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b++, _b), \"f\");\n const callback = () => { var _b, _c; return __classPrivateFieldSet(this, _PubSub_subscribing, (_c = __classPrivateFieldGet(this, _PubSub_subscribing, \"f\"), _b = _c--, _c), \"f\"), _b; };\n commands.push({\n args: [\n COMMANDS[type].subscribe,\n ...listeners.keys()\n ],\n channelsCounter: listeners.size,\n resolve: callback,\n reject: callback\n });\n }\n return commands;\n }\n handleMessageReply(reply) {\n if (COMMANDS[PubSubType.CHANNELS].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.CHANNELS, reply[2], reply[1]);\n return true;\n }\n else if (COMMANDS[PubSubType.PATTERNS].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.PATTERNS, reply[3], reply[2], reply[1]);\n return true;\n }\n else if (COMMANDS[PubSubType.SHARDED].message.equals(reply[0])) {\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_emitPubSubMessage).call(this, PubSubType.SHARDED, reply[2], reply[1]);\n return true;\n }\n return false;\n }\n removeShardedListeners(channel) {\n const listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.SHARDED].get(channel);\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.SHARDED].delete(channel);\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n return listeners;\n }\n getTypeListeners(type) {\n return __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type];\n }\n}\nexports.PubSub = PubSub;\n_a = PubSub, _PubSub_subscribing = new WeakMap(), _PubSub_isActive = new WeakMap(), _PubSub_listeners = new WeakMap(), _PubSub_instances = new WeakSet(), _PubSub_channelsArray = function _PubSub_channelsArray(channels) {\n return (Array.isArray(channels) ? channels : [channels]);\n}, _PubSub_listenersSet = function _PubSub_listenersSet(listeners, returnBuffers) {\n return (returnBuffers ? listeners.buffers : listeners.strings);\n}, _PubSub_extendChannelListeners = function _PubSub_extendChannelListeners(type, channel, listeners) {\n const existingListeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(channel);\n if (!existingListeners) {\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].set(channel, listeners);\n return true;\n }\n for (const listener of listeners.buffers) {\n existingListeners.buffers.add(listener);\n }\n for (const listener of listeners.strings) {\n existingListeners.strings.add(listener);\n }\n return false;\n}, _PubSub_unsubscribeCommand = function _PubSub_unsubscribeCommand(args, channelsCounter, removeListeners) {\n return {\n args,\n channelsCounter,\n resolve: () => {\n removeListeners();\n __classPrivateFieldGet(this, _PubSub_instances, \"m\", _PubSub_updateIsActive).call(this);\n },\n reject: undefined // use the same structure as `subscribe`\n };\n}, _PubSub_updateIsActive = function _PubSub_updateIsActive() {\n __classPrivateFieldSet(this, _PubSub_isActive, (__classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.CHANNELS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.PATTERNS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[PubSubType.CHANNELS].size !== 0 ||\n __classPrivateFieldGet(this, _PubSub_subscribing, \"f\") !== 0), \"f\");\n}, _PubSub_emitPubSubMessage = function _PubSub_emitPubSubMessage(type, message, channel, pattern) {\n const keyString = (pattern ?? channel).toString(), listeners = __classPrivateFieldGet(this, _PubSub_listeners, \"f\")[type].get(keyString);\n if (!listeners)\n return;\n for (const listener of listeners.buffers) {\n listener(message, channel);\n }\n if (!listeners.strings.size)\n return;\n const channelString = pattern ? channel.toString() : keyString, messageString = channelString === '__redis__:invalidate' ?\n // https://github.com/redis/redis/pull/7469\n // https://github.com/redis/redis/issues/7463\n (message === null ? null : message.map(x => x.toString())) :\n message.toString();\n for (const listener of listeners.strings) {\n listener(messageString, channelString);\n }\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisSocket_instances, _a, _RedisSocket_initiateOptions, _RedisSocket_isTlsSocket, _RedisSocket_initiator, _RedisSocket_options, _RedisSocket_socket, _RedisSocket_isOpen, _RedisSocket_isReady, _RedisSocket_writableNeedDrain, _RedisSocket_isSocketUnrefed, _RedisSocket_reconnectStrategy, _RedisSocket_shouldReconnect, _RedisSocket_connect, _RedisSocket_createSocket, _RedisSocket_createNetSocket, _RedisSocket_createTlsSocket, _RedisSocket_onSocketError, _RedisSocket_disconnect, _RedisSocket_isCorked;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst events_1 = require(\"events\");\nconst net = require(\"net\");\nconst tls = require(\"tls\");\nconst errors_1 = require(\"../errors\");\nconst utils_1 = require(\"../utils\");\nclass RedisSocket extends events_1.EventEmitter {\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\");\n }\n get isReady() {\n return __classPrivateFieldGet(this, _RedisSocket_isReady, \"f\");\n }\n get writableNeedDrain() {\n return __classPrivateFieldGet(this, _RedisSocket_writableNeedDrain, \"f\");\n }\n constructor(initiator, options) {\n super();\n _RedisSocket_instances.add(this);\n _RedisSocket_initiator.set(this, void 0);\n _RedisSocket_options.set(this, void 0);\n _RedisSocket_socket.set(this, void 0);\n _RedisSocket_isOpen.set(this, false);\n _RedisSocket_isReady.set(this, false);\n // `writable.writableNeedDrain` was added in v15.2.0 and therefore can't be used\n // https://nodejs.org/api/stream.html#stream_writable_writableneeddrain\n _RedisSocket_writableNeedDrain.set(this, false);\n _RedisSocket_isSocketUnrefed.set(this, false);\n _RedisSocket_isCorked.set(this, false);\n __classPrivateFieldSet(this, _RedisSocket_initiator, initiator, \"f\");\n __classPrivateFieldSet(this, _RedisSocket_options, __classPrivateFieldGet(RedisSocket, _a, \"m\", _RedisSocket_initiateOptions).call(RedisSocket, options), \"f\");\n }\n async connect() {\n if (__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new Error('Socket already opened');\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, true, \"f\");\n return __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_connect).call(this);\n }\n writeCommand(args) {\n if (!__classPrivateFieldGet(this, _RedisSocket_socket, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n for (const toWrite of args) {\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, !__classPrivateFieldGet(this, _RedisSocket_socket, \"f\").write(toWrite), \"f\");\n }\n }\n disconnect() {\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_disconnect).call(this);\n }\n async quit(fn) {\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\")) {\n throw new errors_1.ClientClosedError();\n }\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n const reply = await fn();\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_disconnect).call(this);\n return reply;\n }\n cork() {\n if (!__classPrivateFieldGet(this, _RedisSocket_socket, \"f\") || __classPrivateFieldGet(this, _RedisSocket_isCorked, \"f\")) {\n return;\n }\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").cork();\n __classPrivateFieldSet(this, _RedisSocket_isCorked, true, \"f\");\n queueMicrotask(() => {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.uncork();\n __classPrivateFieldSet(this, _RedisSocket_isCorked, false, \"f\");\n });\n }\n ref() {\n __classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, false, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.ref();\n }\n unref() {\n __classPrivateFieldSet(this, _RedisSocket_isSocketUnrefed, true, \"f\");\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\")?.unref();\n }\n}\nexports.default = RedisSocket;\n_a = RedisSocket, _RedisSocket_initiator = new WeakMap(), _RedisSocket_options = new WeakMap(), _RedisSocket_socket = new WeakMap(), _RedisSocket_isOpen = new WeakMap(), _RedisSocket_isReady = new WeakMap(), _RedisSocket_writableNeedDrain = new WeakMap(), _RedisSocket_isSocketUnrefed = new WeakMap(), _RedisSocket_isCorked = new WeakMap(), _RedisSocket_instances = new WeakSet(), _RedisSocket_initiateOptions = function _RedisSocket_initiateOptions(options) {\n var _b, _c;\n options ?? (options = {});\n if (!options.path) {\n (_b = options).port ?? (_b.port = 6379);\n (_c = options).host ?? (_c.host = 'localhost');\n }\n options.connectTimeout ?? (options.connectTimeout = 5000);\n options.keepAlive ?? (options.keepAlive = 5000);\n options.noDelay ?? (options.noDelay = true);\n return options;\n}, _RedisSocket_isTlsSocket = function _RedisSocket_isTlsSocket(options) {\n return options.tls === true;\n}, _RedisSocket_reconnectStrategy = function _RedisSocket_reconnectStrategy(retries, cause) {\n if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy === false) {\n return false;\n }\n else if (typeof __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy === 'number') {\n return __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy;\n }\n else if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy) {\n try {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_options, \"f\").reconnectStrategy(retries, cause);\n if (retryIn !== false && !(retryIn instanceof Error) && typeof retryIn !== 'number') {\n throw new TypeError(`Reconnect strategy should return \\`false | Error | number\\`, got ${retryIn} instead`);\n }\n return retryIn;\n }\n catch (err) {\n this.emit('error', err);\n }\n }\n return Math.min(retries * 50, 500);\n}, _RedisSocket_shouldReconnect = function _RedisSocket_shouldReconnect(retries, cause) {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_reconnectStrategy).call(this, retries, cause);\n if (retryIn === false) {\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n this.emit('error', cause);\n return cause;\n }\n else if (retryIn instanceof Error) {\n __classPrivateFieldSet(this, _RedisSocket_isOpen, false, \"f\");\n this.emit('error', cause);\n return new errors_1.ReconnectStrategyError(retryIn, cause);\n }\n return retryIn;\n}, _RedisSocket_connect = async function _RedisSocket_connect() {\n let retries = 0;\n do {\n try {\n __classPrivateFieldSet(this, _RedisSocket_socket, await __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createSocket).call(this), \"f\");\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, \"f\");\n this.emit('connect');\n try {\n await __classPrivateFieldGet(this, _RedisSocket_initiator, \"f\").call(this);\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").destroy();\n __classPrivateFieldSet(this, _RedisSocket_socket, undefined, \"f\");\n throw err;\n }\n __classPrivateFieldSet(this, _RedisSocket_isReady, true, \"f\");\n this.emit('ready');\n }\n catch (err) {\n const retryIn = __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_shouldReconnect).call(this, retries++, err);\n if (typeof retryIn !== 'number') {\n throw retryIn;\n }\n this.emit('error', err);\n await (0, utils_1.promiseTimeout)(retryIn);\n this.emit('reconnecting');\n }\n } while (__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") && !__classPrivateFieldGet(this, _RedisSocket_isReady, \"f\"));\n}, _RedisSocket_createSocket = function _RedisSocket_createSocket() {\n return new Promise((resolve, reject) => {\n const { connectEvent, socket } = __classPrivateFieldGet(RedisSocket, _a, \"m\", _RedisSocket_isTlsSocket).call(RedisSocket, __classPrivateFieldGet(this, _RedisSocket_options, \"f\")) ?\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createTlsSocket).call(this) :\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_createNetSocket).call(this);\n if (__classPrivateFieldGet(this, _RedisSocket_options, \"f\").connectTimeout) {\n socket.setTimeout(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").connectTimeout, () => socket.destroy(new errors_1.ConnectionTimeoutError()));\n }\n if (__classPrivateFieldGet(this, _RedisSocket_isSocketUnrefed, \"f\")) {\n socket.unref();\n }\n socket\n .setNoDelay(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").noDelay)\n .once('error', reject)\n .once(connectEvent, () => {\n socket\n .setTimeout(0)\n // https://github.com/nodejs/node/issues/31663\n .setKeepAlive(__classPrivateFieldGet(this, _RedisSocket_options, \"f\").keepAlive !== false, __classPrivateFieldGet(this, _RedisSocket_options, \"f\").keepAlive || 0)\n .off('error', reject)\n .once('error', (err) => __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_onSocketError).call(this, err))\n .once('close', hadError => {\n if (!hadError && __classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") && __classPrivateFieldGet(this, _RedisSocket_socket, \"f\") === socket) {\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_onSocketError).call(this, new errors_1.SocketClosedUnexpectedlyError());\n }\n })\n .on('drain', () => {\n __classPrivateFieldSet(this, _RedisSocket_writableNeedDrain, false, \"f\");\n this.emit('drain');\n })\n .on('data', data => this.emit('data', data));\n resolve(socket);\n });\n });\n}, _RedisSocket_createNetSocket = function _RedisSocket_createNetSocket() {\n return {\n connectEvent: 'connect',\n socket: net.connect(__classPrivateFieldGet(this, _RedisSocket_options, \"f\")) // TODO\n };\n}, _RedisSocket_createTlsSocket = function _RedisSocket_createTlsSocket() {\n return {\n connectEvent: 'secureConnect',\n socket: tls.connect(__classPrivateFieldGet(this, _RedisSocket_options, \"f\")) // TODO\n };\n}, _RedisSocket_onSocketError = function _RedisSocket_onSocketError(err) {\n __classPrivateFieldSet(this, _RedisSocket_isReady, false, \"f\");\n this.emit('error', err);\n if (!__classPrivateFieldGet(this, _RedisSocket_isOpen, \"f\") || typeof __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_shouldReconnect).call(this, 0, err) !== 'number')\n return;\n this.emit('reconnecting');\n __classPrivateFieldGet(this, _RedisSocket_instances, \"m\", _RedisSocket_connect).call(this).catch(() => {\n // the error was already emitted, silently ignore it\n });\n}, _RedisSocket_disconnect = function _RedisSocket_disconnect() {\n __classPrivateFieldSet(this, _RedisSocket_isReady, false, \"f\");\n if (__classPrivateFieldGet(this, _RedisSocket_socket, \"f\")) {\n __classPrivateFieldGet(this, _RedisSocket_socket, \"f\").destroy();\n __classPrivateFieldSet(this, _RedisSocket_socket, undefined, \"f\");\n }\n this.emit('end');\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisClusterSlots_instances, _a, _RedisClusterSlots_SLOTS, _RedisClusterSlots_options, _RedisClusterSlots_Client, _RedisClusterSlots_emit, _RedisClusterSlots_isOpen, _RedisClusterSlots_discoverWithRootNodes, _RedisClusterSlots_resetSlots, _RedisClusterSlots_discover, _RedisClusterSlots_getShards, _RedisClusterSlots_getNodeAddress, _RedisClusterSlots_clientOptionsDefaults, _RedisClusterSlots_initiateSlotNode, _RedisClusterSlots_createClient, _RedisClusterSlots_createNodeClient, _RedisClusterSlots_runningRediscoverPromise, _RedisClusterSlots_rediscover, _RedisClusterSlots_destroy, _RedisClusterSlots_execOnNodeClient, _RedisClusterSlots_iterateAllNodes, _RedisClusterSlots_randomNodeIterator, _RedisClusterSlots_slotNodesIterator, _RedisClusterSlots_initiatePubSubClient, _RedisClusterSlots_initiateShardedPubSubClient;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst client_1 = require(\"../client\");\nconst errors_1 = require(\"../errors\");\nconst util_1 = require(\"util\");\nconst pub_sub_1 = require(\"../client/pub-sub\");\n// We need to use 'require', because it's not possible with Typescript to import\n// function that are exported as 'module.exports = function`, without esModuleInterop\n// set to true.\nconst calculateSlot = require('cluster-key-slot');\nclass RedisClusterSlots {\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_isOpen, \"f\");\n }\n constructor(options, emit) {\n _RedisClusterSlots_instances.add(this);\n _RedisClusterSlots_options.set(this, void 0);\n _RedisClusterSlots_Client.set(this, void 0);\n _RedisClusterSlots_emit.set(this, void 0);\n Object.defineProperty(this, \"slots\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array(__classPrivateFieldGet(RedisClusterSlots, _a, \"f\", _RedisClusterSlots_SLOTS))\n });\n Object.defineProperty(this, \"shards\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"masters\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"replicas\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Array()\n });\n Object.defineProperty(this, \"nodeByAddress\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Map()\n });\n Object.defineProperty(this, \"pubSubNode\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n _RedisClusterSlots_isOpen.set(this, false);\n _RedisClusterSlots_runningRediscoverPromise.set(this, void 0);\n _RedisClusterSlots_randomNodeIterator.set(this, void 0);\n __classPrivateFieldSet(this, _RedisClusterSlots_options, options, \"f\");\n __classPrivateFieldSet(this, _RedisClusterSlots_Client, client_1.default.extend(options), \"f\");\n __classPrivateFieldSet(this, _RedisClusterSlots_emit, emit, \"f\");\n }\n async connect() {\n if (__classPrivateFieldGet(this, _RedisClusterSlots_isOpen, \"f\")) {\n throw new Error('Cluster already open');\n }\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, true, \"f\");\n try {\n await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discoverWithRootNodes).call(this);\n }\n catch (err) {\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, false, \"f\");\n throw err;\n }\n }\n nodeClient(node) {\n return node.client ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createNodeClient).call(this, node);\n }\n async rediscover(startWith) {\n __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, __classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, \"f\") ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_rediscover).call(this, startWith)\n .finally(() => __classPrivateFieldSet(this, _RedisClusterSlots_runningRediscoverPromise, undefined, \"f\")), \"f\");\n return __classPrivateFieldGet(this, _RedisClusterSlots_runningRediscoverPromise, \"f\");\n }\n quit() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_destroy).call(this, client => client.quit());\n }\n disconnect() {\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_destroy).call(this, client => client.disconnect());\n }\n getClient(firstKey, isReadonly) {\n if (!firstKey) {\n return this.nodeClient(this.getRandomNode());\n }\n const slotNumber = calculateSlot(firstKey);\n if (!isReadonly) {\n return this.nodeClient(this.slots[slotNumber].master);\n }\n return this.nodeClient(this.getSlotRandomNode(slotNumber));\n }\n getRandomNode() {\n __classPrivateFieldSet(this, _RedisClusterSlots_randomNodeIterator, __classPrivateFieldGet(this, _RedisClusterSlots_randomNodeIterator, \"f\") ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_iterateAllNodes).call(this), \"f\");\n return __classPrivateFieldGet(this, _RedisClusterSlots_randomNodeIterator, \"f\").next().value;\n }\n getSlotRandomNode(slotNumber) {\n const slot = this.slots[slotNumber];\n if (!slot.replicas?.length) {\n return slot.master;\n }\n slot.nodesIterator ?? (slot.nodesIterator = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_slotNodesIterator).call(this, slot));\n return slot.nodesIterator.next().value;\n }\n getMasterByAddress(address) {\n const master = this.nodeByAddress.get(address);\n if (!master)\n return;\n return this.nodeClient(master);\n }\n getPubSubClient() {\n return this.pubSubNode ?\n this.pubSubNode.client :\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiatePubSubClient).call(this);\n }\n async executeUnsubscribeCommand(unsubscribe) {\n const client = await this.getPubSubClient();\n await unsubscribe(client);\n if (!client.isPubSubActive) {\n await client.disconnect();\n this.pubSubNode = undefined;\n }\n }\n getShardedPubSubClient(channel) {\n const { master } = this.slots[calculateSlot(channel)];\n return master.pubSubClient ?? __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateShardedPubSubClient).call(this, master);\n }\n async executeShardedUnsubscribeCommand(channel, unsubscribe) {\n const { master } = this.slots[calculateSlot(channel)];\n if (!master.pubSubClient)\n return Promise.resolve();\n const client = await master.pubSubClient;\n await unsubscribe(client);\n if (!client.isPubSubActive) {\n await client.disconnect();\n master.pubSubClient = undefined;\n }\n }\n}\nexports.default = RedisClusterSlots;\n_a = RedisClusterSlots, _RedisClusterSlots_options = new WeakMap(), _RedisClusterSlots_Client = new WeakMap(), _RedisClusterSlots_emit = new WeakMap(), _RedisClusterSlots_isOpen = new WeakMap(), _RedisClusterSlots_runningRediscoverPromise = new WeakMap(), _RedisClusterSlots_randomNodeIterator = new WeakMap(), _RedisClusterSlots_instances = new WeakSet(), _RedisClusterSlots_discoverWithRootNodes = async function _RedisClusterSlots_discoverWithRootNodes() {\n let start = Math.floor(Math.random() * __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes.length);\n for (let i = start; i < __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes.length; i++) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes[i]))\n return;\n }\n for (let i = 0; i < start; i++) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").rootNodes[i]))\n return;\n }\n throw new errors_1.RootNodesUnavailableError();\n}, _RedisClusterSlots_resetSlots = function _RedisClusterSlots_resetSlots() {\n this.slots = new Array(__classPrivateFieldGet(RedisClusterSlots, _a, \"f\", _RedisClusterSlots_SLOTS));\n this.shards = [];\n this.masters = [];\n this.replicas = [];\n __classPrivateFieldSet(this, _RedisClusterSlots_randomNodeIterator, undefined, \"f\");\n}, _RedisClusterSlots_discover = async function _RedisClusterSlots_discover(rootNode) {\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_resetSlots).call(this);\n const addressesInUse = new Set();\n try {\n const shards = await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_getShards).call(this, rootNode), promises = [], eagerConnect = __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").minimizeConnections !== true;\n for (const { from, to, master, replicas } of shards) {\n const shard = {\n master: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateSlotNode).call(this, master, false, eagerConnect, addressesInUse, promises)\n };\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").useReplicas) {\n shard.replicas = replicas.map(replica => __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiateSlotNode).call(this, replica, true, eagerConnect, addressesInUse, promises));\n }\n this.shards.push(shard);\n for (let i = from; i <= to; i++) {\n this.slots[i] = shard;\n }\n }\n if (this.pubSubNode && !addressesInUse.has(this.pubSubNode.address)) {\n if (util_1.types.isPromise(this.pubSubNode.client)) {\n promises.push(this.pubSubNode.client.then(client => client.disconnect()));\n this.pubSubNode = undefined;\n }\n else {\n promises.push(this.pubSubNode.client.disconnect());\n const channelsListeners = this.pubSubNode.client.getPubSubListeners(pub_sub_1.PubSubType.CHANNELS), patternsListeners = this.pubSubNode.client.getPubSubListeners(pub_sub_1.PubSubType.PATTERNS);\n if (channelsListeners.size || patternsListeners.size) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_initiatePubSubClient).call(this, {\n [pub_sub_1.PubSubType.CHANNELS]: channelsListeners,\n [pub_sub_1.PubSubType.PATTERNS]: patternsListeners\n }));\n }\n }\n }\n for (const [address, node] of this.nodeByAddress.entries()) {\n if (addressesInUse.has(address))\n continue;\n if (node.client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, node.client, client => client.disconnect()));\n }\n const { pubSubClient } = node;\n if (pubSubClient) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, pubSubClient, client => client.disconnect()));\n }\n this.nodeByAddress.delete(address);\n }\n await Promise.all(promises);\n return true;\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err);\n return false;\n }\n}, _RedisClusterSlots_getShards = async function _RedisClusterSlots_getShards(rootNode) {\n const client = new (__classPrivateFieldGet(this, _RedisClusterSlots_Client, \"f\"))(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_clientOptionsDefaults).call(this, rootNode, true));\n client.on('error', err => __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err));\n await client.connect();\n try {\n // using `CLUSTER SLOTS` and not `CLUSTER SHARDS` to support older versions\n return await client.clusterSlots();\n }\n finally {\n await client.disconnect();\n }\n}, _RedisClusterSlots_getNodeAddress = function _RedisClusterSlots_getNodeAddress(address) {\n switch (typeof __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap) {\n case 'object':\n return __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap[address];\n case 'function':\n return __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").nodeAddressMap(address);\n }\n}, _RedisClusterSlots_clientOptionsDefaults = function _RedisClusterSlots_clientOptionsDefaults(options, disableReconnect) {\n let result;\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults) {\n let socket;\n if (__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket) {\n socket = options?.socket ? {\n ...__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket,\n ...options.socket\n } : __classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults.socket;\n }\n else {\n socket = options?.socket;\n }\n result = {\n ...__classPrivateFieldGet(this, _RedisClusterSlots_options, \"f\").defaults,\n ...options,\n socket\n };\n }\n else {\n result = options;\n }\n if (disableReconnect) {\n result ?? (result = {});\n result.socket ?? (result.socket = {});\n result.socket.reconnectStrategy = false;\n }\n return result;\n}, _RedisClusterSlots_initiateSlotNode = function _RedisClusterSlots_initiateSlotNode({ id, ip, port }, readonly, eagerConnent, addressesInUse, promises) {\n const address = `${ip}:${port}`;\n addressesInUse.add(address);\n let node = this.nodeByAddress.get(address);\n if (!node) {\n node = {\n id,\n host: ip,\n port,\n address,\n readonly,\n client: undefined\n };\n if (eagerConnent) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createNodeClient).call(this, node));\n }\n this.nodeByAddress.set(address, node);\n }\n (readonly ? this.replicas : this.masters).push(node);\n return node;\n}, _RedisClusterSlots_createClient = async function _RedisClusterSlots_createClient(node, readonly = node.readonly) {\n const client = new (__classPrivateFieldGet(this, _RedisClusterSlots_Client, \"f\"))(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_clientOptionsDefaults).call(this, {\n socket: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_getNodeAddress).call(this, node.address) ?? {\n host: node.host,\n port: node.port\n },\n readonly\n }));\n client.on('error', err => __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'error', err));\n await client.connect();\n return client;\n}, _RedisClusterSlots_createNodeClient = function _RedisClusterSlots_createNodeClient(node) {\n const promise = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, node)\n .then(client => {\n node.client = client;\n return client;\n })\n .catch(err => {\n node.client = undefined;\n throw err;\n });\n node.client = promise;\n return promise;\n}, _RedisClusterSlots_rediscover = async function _RedisClusterSlots_rediscover(startWith) {\n if (await __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discover).call(this, startWith.options))\n return;\n return __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_discoverWithRootNodes).call(this);\n}, _RedisClusterSlots_destroy = async function _RedisClusterSlots_destroy(fn) {\n __classPrivateFieldSet(this, _RedisClusterSlots_isOpen, false, \"f\");\n const promises = [];\n for (const { master, replicas } of this.shards) {\n if (master.client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, master.client, fn));\n }\n if (master.pubSubClient) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, master.pubSubClient, fn));\n }\n if (replicas) {\n for (const { client } of replicas) {\n if (client) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, client, fn));\n }\n }\n }\n }\n if (this.pubSubNode) {\n promises.push(__classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_execOnNodeClient).call(this, this.pubSubNode.client, fn));\n this.pubSubNode = undefined;\n }\n __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_resetSlots).call(this);\n this.nodeByAddress.clear();\n await Promise.allSettled(promises);\n}, _RedisClusterSlots_execOnNodeClient = function _RedisClusterSlots_execOnNodeClient(client, fn) {\n return util_1.types.isPromise(client) ?\n client.then(fn) :\n fn(client);\n}, _RedisClusterSlots_iterateAllNodes = function* _RedisClusterSlots_iterateAllNodes() {\n let i = Math.floor(Math.random() * (this.masters.length + this.replicas.length));\n if (i < this.masters.length) {\n do {\n yield this.masters[i];\n } while (++i < this.masters.length);\n for (const replica of this.replicas) {\n yield replica;\n }\n }\n else {\n i -= this.masters.length;\n do {\n yield this.replicas[i];\n } while (++i < this.replicas.length);\n }\n while (true) {\n for (const master of this.masters) {\n yield master;\n }\n for (const replica of this.replicas) {\n yield replica;\n }\n }\n}, _RedisClusterSlots_slotNodesIterator = function* _RedisClusterSlots_slotNodesIterator(slot) {\n let i = Math.floor(Math.random() * (1 + slot.replicas.length));\n if (i < slot.replicas.length) {\n do {\n yield slot.replicas[i];\n } while (++i < slot.replicas.length);\n }\n while (true) {\n yield slot.master;\n for (const replica of slot.replicas) {\n yield replica;\n }\n }\n}, _RedisClusterSlots_initiatePubSubClient = async function _RedisClusterSlots_initiatePubSubClient(toResubscribe) {\n const index = Math.floor(Math.random() * (this.masters.length + this.replicas.length)), node = index < this.masters.length ?\n this.masters[index] :\n this.replicas[index - this.masters.length];\n this.pubSubNode = {\n address: node.address,\n client: __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, node, true)\n .then(async (client) => {\n if (toResubscribe) {\n await Promise.all([\n client.extendPubSubListeners(pub_sub_1.PubSubType.CHANNELS, toResubscribe[pub_sub_1.PubSubType.CHANNELS]),\n client.extendPubSubListeners(pub_sub_1.PubSubType.PATTERNS, toResubscribe[pub_sub_1.PubSubType.PATTERNS])\n ]);\n }\n this.pubSubNode.client = client;\n return client;\n })\n .catch(err => {\n this.pubSubNode = undefined;\n throw err;\n })\n };\n return this.pubSubNode.client;\n}, _RedisClusterSlots_initiateShardedPubSubClient = function _RedisClusterSlots_initiateShardedPubSubClient(master) {\n const promise = __classPrivateFieldGet(this, _RedisClusterSlots_instances, \"m\", _RedisClusterSlots_createClient).call(this, master, true)\n .then(client => {\n client.on('server-sunsubscribe', async (channel, listeners) => {\n try {\n await this.rediscover(client);\n const redirectTo = await this.getShardedPubSubClient(channel);\n redirectTo.extendPubSubChannelListeners(pub_sub_1.PubSubType.SHARDED, channel, listeners);\n }\n catch (err) {\n __classPrivateFieldGet(this, _RedisClusterSlots_emit, \"f\").call(this, 'sharded-shannel-moved-error', err, channel, listeners);\n }\n });\n master.pubSubClient = client;\n return client;\n })\n .catch(err => {\n master.pubSubClient = undefined;\n throw err;\n });\n master.pubSubClient = promise;\n return promise;\n};\n_RedisClusterSlots_SLOTS = { value: 16384 };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst APPEND = require(\"../commands/APPEND\");\nconst BITCOUNT = require(\"../commands/BITCOUNT\");\nconst BITFIELD_RO = require(\"../commands/BITFIELD_RO\");\nconst BITFIELD = require(\"../commands/BITFIELD\");\nconst BITOP = require(\"../commands/BITOP\");\nconst BITPOS = require(\"../commands/BITPOS\");\nconst BLMOVE = require(\"../commands/BLMOVE\");\nconst BLMPOP = require(\"../commands/BLMPOP\");\nconst BLPOP = require(\"../commands/BLPOP\");\nconst BRPOP = require(\"../commands/BRPOP\");\nconst BRPOPLPUSH = require(\"../commands/BRPOPLPUSH\");\nconst BZMPOP = require(\"../commands/BZMPOP\");\nconst BZPOPMAX = require(\"../commands/BZPOPMAX\");\nconst BZPOPMIN = require(\"../commands/BZPOPMIN\");\nconst COPY = require(\"../commands/COPY\");\nconst DECR = require(\"../commands/DECR\");\nconst DECRBY = require(\"../commands/DECRBY\");\nconst DEL = require(\"../commands/DEL\");\nconst DUMP = require(\"../commands/DUMP\");\nconst EVAL_RO = require(\"../commands/EVAL_RO\");\nconst EVAL = require(\"../commands/EVAL\");\nconst EVALSHA_RO = require(\"../commands/EVALSHA_RO\");\nconst EVALSHA = require(\"../commands/EVALSHA\");\nconst EXISTS = require(\"../commands/EXISTS\");\nconst EXPIRE = require(\"../commands/EXPIRE\");\nconst EXPIREAT = require(\"../commands/EXPIREAT\");\nconst EXPIRETIME = require(\"../commands/EXPIRETIME\");\nconst FCALL_RO = require(\"../commands/FCALL_RO\");\nconst FCALL = require(\"../commands/FCALL\");\nconst GEOADD = require(\"../commands/GEOADD\");\nconst GEODIST = require(\"../commands/GEODIST\");\nconst GEOHASH = require(\"../commands/GEOHASH\");\nconst GEOPOS = require(\"../commands/GEOPOS\");\nconst GEORADIUS_RO_WITH = require(\"../commands/GEORADIUS_RO_WITH\");\nconst GEORADIUS_RO = require(\"../commands/GEORADIUS_RO\");\nconst GEORADIUS_WITH = require(\"../commands/GEORADIUS_WITH\");\nconst GEORADIUS = require(\"../commands/GEORADIUS\");\nconst GEORADIUSBYMEMBER_RO_WITH = require(\"../commands/GEORADIUSBYMEMBER_RO_WITH\");\nconst GEORADIUSBYMEMBER_RO = require(\"../commands/GEORADIUSBYMEMBER_RO\");\nconst GEORADIUSBYMEMBER_WITH = require(\"../commands/GEORADIUSBYMEMBER_WITH\");\nconst GEORADIUSBYMEMBER = require(\"../commands/GEORADIUSBYMEMBER\");\nconst GEORADIUSBYMEMBERSTORE = require(\"../commands/GEORADIUSBYMEMBERSTORE\");\nconst GEORADIUSSTORE = require(\"../commands/GEORADIUSSTORE\");\nconst GEOSEARCH_WITH = require(\"../commands/GEOSEARCH_WITH\");\nconst GEOSEARCH = require(\"../commands/GEOSEARCH\");\nconst GEOSEARCHSTORE = require(\"../commands/GEOSEARCHSTORE\");\nconst GET = require(\"../commands/GET\");\nconst GETBIT = require(\"../commands/GETBIT\");\nconst GETDEL = require(\"../commands/GETDEL\");\nconst GETEX = require(\"../commands/GETEX\");\nconst GETRANGE = require(\"../commands/GETRANGE\");\nconst GETSET = require(\"../commands/GETSET\");\nconst HDEL = require(\"../commands/HDEL\");\nconst HEXISTS = require(\"../commands/HEXISTS\");\nconst HGET = require(\"../commands/HGET\");\nconst HGETALL = require(\"../commands/HGETALL\");\nconst HINCRBY = require(\"../commands/HINCRBY\");\nconst HINCRBYFLOAT = require(\"../commands/HINCRBYFLOAT\");\nconst HKEYS = require(\"../commands/HKEYS\");\nconst HLEN = require(\"../commands/HLEN\");\nconst HMGET = require(\"../commands/HMGET\");\nconst HRANDFIELD_COUNT_WITHVALUES = require(\"../commands/HRANDFIELD_COUNT_WITHVALUES\");\nconst HRANDFIELD_COUNT = require(\"../commands/HRANDFIELD_COUNT\");\nconst HRANDFIELD = require(\"../commands/HRANDFIELD\");\nconst HSCAN = require(\"../commands/HSCAN\");\nconst HSET = require(\"../commands/HSET\");\nconst HSETNX = require(\"../commands/HSETNX\");\nconst HSTRLEN = require(\"../commands/HSTRLEN\");\nconst HVALS = require(\"../commands/HVALS\");\nconst INCR = require(\"../commands/INCR\");\nconst INCRBY = require(\"../commands/INCRBY\");\nconst INCRBYFLOAT = require(\"../commands/INCRBYFLOAT\");\nconst LCS_IDX_WITHMATCHLEN = require(\"../commands/LCS_IDX_WITHMATCHLEN\");\nconst LCS_IDX = require(\"../commands/LCS_IDX\");\nconst LCS_LEN = require(\"../commands/LCS_LEN\");\nconst LCS = require(\"../commands/LCS\");\nconst LINDEX = require(\"../commands/LINDEX\");\nconst LINSERT = require(\"../commands/LINSERT\");\nconst LLEN = require(\"../commands/LLEN\");\nconst LMOVE = require(\"../commands/LMOVE\");\nconst LMPOP = require(\"../commands/LMPOP\");\nconst LPOP_COUNT = require(\"../commands/LPOP_COUNT\");\nconst LPOP = require(\"../commands/LPOP\");\nconst LPOS_COUNT = require(\"../commands/LPOS_COUNT\");\nconst LPOS = require(\"../commands/LPOS\");\nconst LPUSH = require(\"../commands/LPUSH\");\nconst LPUSHX = require(\"../commands/LPUSHX\");\nconst LRANGE = require(\"../commands/LRANGE\");\nconst LREM = require(\"../commands/LREM\");\nconst LSET = require(\"../commands/LSET\");\nconst LTRIM = require(\"../commands/LTRIM\");\nconst MGET = require(\"../commands/MGET\");\nconst MIGRATE = require(\"../commands/MIGRATE\");\nconst MSET = require(\"../commands/MSET\");\nconst MSETNX = require(\"../commands/MSETNX\");\nconst OBJECT_ENCODING = require(\"../commands/OBJECT_ENCODING\");\nconst OBJECT_FREQ = require(\"../commands/OBJECT_FREQ\");\nconst OBJECT_IDLETIME = require(\"../commands/OBJECT_IDLETIME\");\nconst OBJECT_REFCOUNT = require(\"../commands/OBJECT_REFCOUNT\");\nconst PERSIST = require(\"../commands/PERSIST\");\nconst PEXPIRE = require(\"../commands/PEXPIRE\");\nconst PEXPIREAT = require(\"../commands/PEXPIREAT\");\nconst PEXPIRETIME = require(\"../commands/PEXPIRETIME\");\nconst PFADD = require(\"../commands/PFADD\");\nconst PFCOUNT = require(\"../commands/PFCOUNT\");\nconst PFMERGE = require(\"../commands/PFMERGE\");\nconst PSETEX = require(\"../commands/PSETEX\");\nconst PTTL = require(\"../commands/PTTL\");\nconst PUBLISH = require(\"../commands/PUBLISH\");\nconst RENAME = require(\"../commands/RENAME\");\nconst RENAMENX = require(\"../commands/RENAMENX\");\nconst RPOP_COUNT = require(\"../commands/RPOP_COUNT\");\nconst RPOP = require(\"../commands/RPOP\");\nconst RPOPLPUSH = require(\"../commands/RPOPLPUSH\");\nconst RPUSH = require(\"../commands/RPUSH\");\nconst RPUSHX = require(\"../commands/RPUSHX\");\nconst SADD = require(\"../commands/SADD\");\nconst SCARD = require(\"../commands/SCARD\");\nconst SDIFF = require(\"../commands/SDIFF\");\nconst SDIFFSTORE = require(\"../commands/SDIFFSTORE\");\nconst SET = require(\"../commands/SET\");\nconst SETBIT = require(\"../commands/SETBIT\");\nconst SETEX = require(\"../commands/SETEX\");\nconst SETNX = require(\"../commands/SETNX\");\nconst SETRANGE = require(\"../commands/SETRANGE\");\nconst SINTER = require(\"../commands/SINTER\");\nconst SINTERCARD = require(\"../commands/SINTERCARD\");\nconst SINTERSTORE = require(\"../commands/SINTERSTORE\");\nconst SISMEMBER = require(\"../commands/SISMEMBER\");\nconst SMEMBERS = require(\"../commands/SMEMBERS\");\nconst SMISMEMBER = require(\"../commands/SMISMEMBER\");\nconst SMOVE = require(\"../commands/SMOVE\");\nconst SORT_RO = require(\"../commands/SORT_RO\");\nconst SORT_STORE = require(\"../commands/SORT_STORE\");\nconst SORT = require(\"../commands/SORT\");\nconst SPOP = require(\"../commands/SPOP\");\nconst SPUBLISH = require(\"../commands/SPUBLISH\");\nconst SRANDMEMBER_COUNT = require(\"../commands/SRANDMEMBER_COUNT\");\nconst SRANDMEMBER = require(\"../commands/SRANDMEMBER\");\nconst SREM = require(\"../commands/SREM\");\nconst SSCAN = require(\"../commands/SSCAN\");\nconst STRLEN = require(\"../commands/STRLEN\");\nconst SUNION = require(\"../commands/SUNION\");\nconst SUNIONSTORE = require(\"../commands/SUNIONSTORE\");\nconst TOUCH = require(\"../commands/TOUCH\");\nconst TTL = require(\"../commands/TTL\");\nconst TYPE = require(\"../commands/TYPE\");\nconst UNLINK = require(\"../commands/UNLINK\");\nconst WATCH = require(\"../commands/WATCH\");\nconst XACK = require(\"../commands/XACK\");\nconst XADD = require(\"../commands/XADD\");\nconst XAUTOCLAIM_JUSTID = require(\"../commands/XAUTOCLAIM_JUSTID\");\nconst XAUTOCLAIM = require(\"../commands/XAUTOCLAIM\");\nconst XCLAIM_JUSTID = require(\"../commands/XCLAIM_JUSTID\");\nconst XCLAIM = require(\"../commands/XCLAIM\");\nconst XDEL = require(\"../commands/XDEL\");\nconst XGROUP_CREATE = require(\"../commands/XGROUP_CREATE\");\nconst XGROUP_CREATECONSUMER = require(\"../commands/XGROUP_CREATECONSUMER\");\nconst XGROUP_DELCONSUMER = require(\"../commands/XGROUP_DELCONSUMER\");\nconst XGROUP_DESTROY = require(\"../commands/XGROUP_DESTROY\");\nconst XGROUP_SETID = require(\"../commands/XGROUP_SETID\");\nconst XINFO_CONSUMERS = require(\"../commands/XINFO_CONSUMERS\");\nconst XINFO_GROUPS = require(\"../commands/XINFO_GROUPS\");\nconst XINFO_STREAM = require(\"../commands/XINFO_STREAM\");\nconst XLEN = require(\"../commands/XLEN\");\nconst XPENDING_RANGE = require(\"../commands/XPENDING_RANGE\");\nconst XPENDING = require(\"../commands/XPENDING\");\nconst XRANGE = require(\"../commands/XRANGE\");\nconst XREAD = require(\"../commands/XREAD\");\nconst XREADGROUP = require(\"../commands/XREADGROUP\");\nconst XREVRANGE = require(\"../commands/XREVRANGE\");\nconst XSETID = require(\"../commands/XSETID\");\nconst XTRIM = require(\"../commands/XTRIM\");\nconst ZADD = require(\"../commands/ZADD\");\nconst ZCARD = require(\"../commands/ZCARD\");\nconst ZCOUNT = require(\"../commands/ZCOUNT\");\nconst ZDIFF_WITHSCORES = require(\"../commands/ZDIFF_WITHSCORES\");\nconst ZDIFF = require(\"../commands/ZDIFF\");\nconst ZDIFFSTORE = require(\"../commands/ZDIFFSTORE\");\nconst ZINCRBY = require(\"../commands/ZINCRBY\");\nconst ZINTER_WITHSCORES = require(\"../commands/ZINTER_WITHSCORES\");\nconst ZINTER = require(\"../commands/ZINTER\");\nconst ZINTERCARD = require(\"../commands/ZINTERCARD\");\nconst ZINTERSTORE = require(\"../commands/ZINTERSTORE\");\nconst ZLEXCOUNT = require(\"../commands/ZLEXCOUNT\");\nconst ZMPOP = require(\"../commands/ZMPOP\");\nconst ZMSCORE = require(\"../commands/ZMSCORE\");\nconst ZPOPMAX_COUNT = require(\"../commands/ZPOPMAX_COUNT\");\nconst ZPOPMAX = require(\"../commands/ZPOPMAX\");\nconst ZPOPMIN_COUNT = require(\"../commands/ZPOPMIN_COUNT\");\nconst ZPOPMIN = require(\"../commands/ZPOPMIN\");\nconst ZRANDMEMBER_COUNT_WITHSCORES = require(\"../commands/ZRANDMEMBER_COUNT_WITHSCORES\");\nconst ZRANDMEMBER_COUNT = require(\"../commands/ZRANDMEMBER_COUNT\");\nconst ZRANDMEMBER = require(\"../commands/ZRANDMEMBER\");\nconst ZRANGE_WITHSCORES = require(\"../commands/ZRANGE_WITHSCORES\");\nconst ZRANGE = require(\"../commands/ZRANGE\");\nconst ZRANGEBYLEX = require(\"../commands/ZRANGEBYLEX\");\nconst ZRANGEBYSCORE_WITHSCORES = require(\"../commands/ZRANGEBYSCORE_WITHSCORES\");\nconst ZRANGEBYSCORE = require(\"../commands/ZRANGEBYSCORE\");\nconst ZRANGESTORE = require(\"../commands/ZRANGESTORE\");\nconst ZRANK = require(\"../commands/ZRANK\");\nconst ZREM = require(\"../commands/ZREM\");\nconst ZREMRANGEBYLEX = require(\"../commands/ZREMRANGEBYLEX\");\nconst ZREMRANGEBYRANK = require(\"../commands/ZREMRANGEBYRANK\");\nconst ZREMRANGEBYSCORE = require(\"../commands/ZREMRANGEBYSCORE\");\nconst ZREVRANK = require(\"../commands/ZREVRANK\");\nconst ZSCAN = require(\"../commands/ZSCAN\");\nconst ZSCORE = require(\"../commands/ZSCORE\");\nconst ZUNION_WITHSCORES = require(\"../commands/ZUNION_WITHSCORES\");\nconst ZUNION = require(\"../commands/ZUNION\");\nconst ZUNIONSTORE = require(\"../commands/ZUNIONSTORE\");\nexports.default = {\n APPEND,\n append: APPEND,\n BITCOUNT,\n bitCount: BITCOUNT,\n BITFIELD_RO,\n bitFieldRo: BITFIELD_RO,\n BITFIELD,\n bitField: BITFIELD,\n BITOP,\n bitOp: BITOP,\n BITPOS,\n bitPos: BITPOS,\n BLMOVE,\n blMove: BLMOVE,\n BLMPOP,\n blmPop: BLMPOP,\n BLPOP,\n blPop: BLPOP,\n BRPOP,\n brPop: BRPOP,\n BRPOPLPUSH,\n brPopLPush: BRPOPLPUSH,\n BZMPOP,\n bzmPop: BZMPOP,\n BZPOPMAX,\n bzPopMax: BZPOPMAX,\n BZPOPMIN,\n bzPopMin: BZPOPMIN,\n COPY,\n copy: COPY,\n DECR,\n decr: DECR,\n DECRBY,\n decrBy: DECRBY,\n DEL,\n del: DEL,\n DUMP,\n dump: DUMP,\n EVAL_RO,\n evalRo: EVAL_RO,\n EVAL,\n eval: EVAL,\n EVALSHA,\n evalSha: EVALSHA,\n EVALSHA_RO,\n evalShaRo: EVALSHA_RO,\n EXISTS,\n exists: EXISTS,\n EXPIRE,\n expire: EXPIRE,\n EXPIREAT,\n expireAt: EXPIREAT,\n EXPIRETIME,\n expireTime: EXPIRETIME,\n FCALL_RO,\n fCallRo: FCALL_RO,\n FCALL,\n fCall: FCALL,\n GEOADD,\n geoAdd: GEOADD,\n GEODIST,\n geoDist: GEODIST,\n GEOHASH,\n geoHash: GEOHASH,\n GEOPOS,\n geoPos: GEOPOS,\n GEORADIUS_RO_WITH,\n geoRadiusRoWith: GEORADIUS_RO_WITH,\n GEORADIUS_RO,\n geoRadiusRo: GEORADIUS_RO,\n GEORADIUS_WITH,\n geoRadiusWith: GEORADIUS_WITH,\n GEORADIUS,\n geoRadius: GEORADIUS,\n GEORADIUSBYMEMBER_RO_WITH,\n geoRadiusByMemberRoWith: GEORADIUSBYMEMBER_RO_WITH,\n GEORADIUSBYMEMBER_RO,\n geoRadiusByMemberRo: GEORADIUSBYMEMBER_RO,\n GEORADIUSBYMEMBER_WITH,\n geoRadiusByMemberWith: GEORADIUSBYMEMBER_WITH,\n GEORADIUSBYMEMBER,\n geoRadiusByMember: GEORADIUSBYMEMBER,\n GEORADIUSBYMEMBERSTORE,\n geoRadiusByMemberStore: GEORADIUSBYMEMBERSTORE,\n GEORADIUSSTORE,\n geoRadiusStore: GEORADIUSSTORE,\n GEOSEARCH_WITH,\n geoSearchWith: GEOSEARCH_WITH,\n GEOSEARCH,\n geoSearch: GEOSEARCH,\n GEOSEARCHSTORE,\n geoSearchStore: GEOSEARCHSTORE,\n GET,\n get: GET,\n GETBIT,\n getBit: GETBIT,\n GETDEL,\n getDel: GETDEL,\n GETEX,\n getEx: GETEX,\n GETRANGE,\n getRange: GETRANGE,\n GETSET,\n getSet: GETSET,\n HDEL,\n hDel: HDEL,\n HEXISTS,\n hExists: HEXISTS,\n HGET,\n hGet: HGET,\n HGETALL,\n hGetAll: HGETALL,\n HINCRBY,\n hIncrBy: HINCRBY,\n HINCRBYFLOAT,\n hIncrByFloat: HINCRBYFLOAT,\n HKEYS,\n hKeys: HKEYS,\n HLEN,\n hLen: HLEN,\n HMGET,\n hmGet: HMGET,\n HRANDFIELD_COUNT_WITHVALUES,\n hRandFieldCountWithValues: HRANDFIELD_COUNT_WITHVALUES,\n HRANDFIELD_COUNT,\n hRandFieldCount: HRANDFIELD_COUNT,\n HRANDFIELD,\n hRandField: HRANDFIELD,\n HSCAN,\n hScan: HSCAN,\n HSET,\n hSet: HSET,\n HSETNX,\n hSetNX: HSETNX,\n HSTRLEN,\n hStrLen: HSTRLEN,\n HVALS,\n hVals: HVALS,\n INCR,\n incr: INCR,\n INCRBY,\n incrBy: INCRBY,\n INCRBYFLOAT,\n incrByFloat: INCRBYFLOAT,\n LCS_IDX_WITHMATCHLEN,\n lcsIdxWithMatchLen: LCS_IDX_WITHMATCHLEN,\n LCS_IDX,\n lcsIdx: LCS_IDX,\n LCS_LEN,\n lcsLen: LCS_LEN,\n LCS,\n lcs: LCS,\n LINDEX,\n lIndex: LINDEX,\n LINSERT,\n lInsert: LINSERT,\n LLEN,\n lLen: LLEN,\n LMOVE,\n lMove: LMOVE,\n LMPOP,\n lmPop: LMPOP,\n LPOP_COUNT,\n lPopCount: LPOP_COUNT,\n LPOP,\n lPop: LPOP,\n LPOS_COUNT,\n lPosCount: LPOS_COUNT,\n LPOS,\n lPos: LPOS,\n LPUSH,\n lPush: LPUSH,\n LPUSHX,\n lPushX: LPUSHX,\n LRANGE,\n lRange: LRANGE,\n LREM,\n lRem: LREM,\n LSET,\n lSet: LSET,\n LTRIM,\n lTrim: LTRIM,\n MGET,\n mGet: MGET,\n MIGRATE,\n migrate: MIGRATE,\n MSET,\n mSet: MSET,\n MSETNX,\n mSetNX: MSETNX,\n OBJECT_ENCODING,\n objectEncoding: OBJECT_ENCODING,\n OBJECT_FREQ,\n objectFreq: OBJECT_FREQ,\n OBJECT_IDLETIME,\n objectIdleTime: OBJECT_IDLETIME,\n OBJECT_REFCOUNT,\n objectRefCount: OBJECT_REFCOUNT,\n PERSIST,\n persist: PERSIST,\n PEXPIRE,\n pExpire: PEXPIRE,\n PEXPIREAT,\n pExpireAt: PEXPIREAT,\n PEXPIRETIME,\n pExpireTime: PEXPIRETIME,\n PFADD,\n pfAdd: PFADD,\n PFCOUNT,\n pfCount: PFCOUNT,\n PFMERGE,\n pfMerge: PFMERGE,\n PSETEX,\n pSetEx: PSETEX,\n PTTL,\n pTTL: PTTL,\n PUBLISH,\n publish: PUBLISH,\n RENAME,\n rename: RENAME,\n RENAMENX,\n renameNX: RENAMENX,\n RPOP_COUNT,\n rPopCount: RPOP_COUNT,\n RPOP,\n rPop: RPOP,\n RPOPLPUSH,\n rPopLPush: RPOPLPUSH,\n RPUSH,\n rPush: RPUSH,\n RPUSHX,\n rPushX: RPUSHX,\n SADD,\n sAdd: SADD,\n SCARD,\n sCard: SCARD,\n SDIFF,\n sDiff: SDIFF,\n SDIFFSTORE,\n sDiffStore: SDIFFSTORE,\n SINTER,\n sInter: SINTER,\n SINTERCARD,\n sInterCard: SINTERCARD,\n SINTERSTORE,\n sInterStore: SINTERSTORE,\n SET,\n set: SET,\n SETBIT,\n setBit: SETBIT,\n SETEX,\n setEx: SETEX,\n SETNX,\n setNX: SETNX,\n SETRANGE,\n setRange: SETRANGE,\n SISMEMBER,\n sIsMember: SISMEMBER,\n SMEMBERS,\n sMembers: SMEMBERS,\n SMISMEMBER,\n smIsMember: SMISMEMBER,\n SMOVE,\n sMove: SMOVE,\n SORT_RO,\n sortRo: SORT_RO,\n SORT_STORE,\n sortStore: SORT_STORE,\n SORT,\n sort: SORT,\n SPOP,\n sPop: SPOP,\n SPUBLISH,\n sPublish: SPUBLISH,\n SRANDMEMBER_COUNT,\n sRandMemberCount: SRANDMEMBER_COUNT,\n SRANDMEMBER,\n sRandMember: SRANDMEMBER,\n SREM,\n sRem: SREM,\n SSCAN,\n sScan: SSCAN,\n STRLEN,\n strLen: STRLEN,\n SUNION,\n sUnion: SUNION,\n SUNIONSTORE,\n sUnionStore: SUNIONSTORE,\n TOUCH,\n touch: TOUCH,\n TTL,\n ttl: TTL,\n TYPE,\n type: TYPE,\n UNLINK,\n unlink: UNLINK,\n WATCH,\n watch: WATCH,\n XACK,\n xAck: XACK,\n XADD,\n xAdd: XADD,\n XAUTOCLAIM_JUSTID,\n xAutoClaimJustId: XAUTOCLAIM_JUSTID,\n XAUTOCLAIM,\n xAutoClaim: XAUTOCLAIM,\n XCLAIM,\n xClaim: XCLAIM,\n XCLAIM_JUSTID,\n xClaimJustId: XCLAIM_JUSTID,\n XDEL,\n xDel: XDEL,\n XGROUP_CREATE,\n xGroupCreate: XGROUP_CREATE,\n XGROUP_CREATECONSUMER,\n xGroupCreateConsumer: XGROUP_CREATECONSUMER,\n XGROUP_DELCONSUMER,\n xGroupDelConsumer: XGROUP_DELCONSUMER,\n XGROUP_DESTROY,\n xGroupDestroy: XGROUP_DESTROY,\n XGROUP_SETID,\n xGroupSetId: XGROUP_SETID,\n XINFO_CONSUMERS,\n xInfoConsumers: XINFO_CONSUMERS,\n XINFO_GROUPS,\n xInfoGroups: XINFO_GROUPS,\n XINFO_STREAM,\n xInfoStream: XINFO_STREAM,\n XLEN,\n xLen: XLEN,\n XPENDING_RANGE,\n xPendingRange: XPENDING_RANGE,\n XPENDING,\n xPending: XPENDING,\n XRANGE,\n xRange: XRANGE,\n XREAD,\n xRead: XREAD,\n XREADGROUP,\n xReadGroup: XREADGROUP,\n XREVRANGE,\n xRevRange: XREVRANGE,\n XSETID,\n xSetId: XSETID,\n XTRIM,\n xTrim: XTRIM,\n ZADD,\n zAdd: ZADD,\n ZCARD,\n zCard: ZCARD,\n ZCOUNT,\n zCount: ZCOUNT,\n ZDIFF_WITHSCORES,\n zDiffWithScores: ZDIFF_WITHSCORES,\n ZDIFF,\n zDiff: ZDIFF,\n ZDIFFSTORE,\n zDiffStore: ZDIFFSTORE,\n ZINCRBY,\n zIncrBy: ZINCRBY,\n ZINTER_WITHSCORES,\n zInterWithScores: ZINTER_WITHSCORES,\n ZINTER,\n zInter: ZINTER,\n ZINTERCARD,\n zInterCard: ZINTERCARD,\n ZINTERSTORE,\n zInterStore: ZINTERSTORE,\n ZLEXCOUNT,\n zLexCount: ZLEXCOUNT,\n ZMPOP,\n zmPop: ZMPOP,\n ZMSCORE,\n zmScore: ZMSCORE,\n ZPOPMAX_COUNT,\n zPopMaxCount: ZPOPMAX_COUNT,\n ZPOPMAX,\n zPopMax: ZPOPMAX,\n ZPOPMIN_COUNT,\n zPopMinCount: ZPOPMIN_COUNT,\n ZPOPMIN,\n zPopMin: ZPOPMIN,\n ZRANDMEMBER_COUNT_WITHSCORES,\n zRandMemberCountWithScores: ZRANDMEMBER_COUNT_WITHSCORES,\n ZRANDMEMBER_COUNT,\n zRandMemberCount: ZRANDMEMBER_COUNT,\n ZRANDMEMBER,\n zRandMember: ZRANDMEMBER,\n ZRANGE_WITHSCORES,\n zRangeWithScores: ZRANGE_WITHSCORES,\n ZRANGE,\n zRange: ZRANGE,\n ZRANGEBYLEX,\n zRangeByLex: ZRANGEBYLEX,\n ZRANGEBYSCORE_WITHSCORES,\n zRangeByScoreWithScores: ZRANGEBYSCORE_WITHSCORES,\n ZRANGEBYSCORE,\n zRangeByScore: ZRANGEBYSCORE,\n ZRANGESTORE,\n zRangeStore: ZRANGESTORE,\n ZRANK,\n zRank: ZRANK,\n ZREM,\n zRem: ZREM,\n ZREMRANGEBYLEX,\n zRemRangeByLex: ZREMRANGEBYLEX,\n ZREMRANGEBYRANK,\n zRemRangeByRank: ZREMRANGEBYRANK,\n ZREMRANGEBYSCORE,\n zRemRangeByScore: ZREMRANGEBYSCORE,\n ZREVRANK,\n zRevRank: ZREVRANK,\n ZSCAN,\n zScan: ZSCAN,\n ZSCORE,\n zScore: ZSCORE,\n ZUNION_WITHSCORES,\n zUnionWithScores: ZUNION_WITHSCORES,\n ZUNION,\n zUnion: ZUNION,\n ZUNIONSTORE,\n zUnionStore: ZUNIONSTORE\n};\n","\"use strict\";\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar _RedisCluster_instances, _RedisCluster_options, _RedisCluster_slots, _RedisCluster_Multi, _RedisCluster_execute;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst cluster_slots_1 = require(\"./cluster-slots\");\nconst commander_1 = require(\"../commander\");\nconst events_1 = require(\"events\");\nconst multi_command_1 = require(\"./multi-command\");\nconst errors_1 = require(\"../errors\");\nclass RedisCluster extends events_1.EventEmitter {\n static extractFirstKey(command, originalArgs, redisArgs) {\n if (command.FIRST_KEY_INDEX === undefined) {\n return undefined;\n }\n else if (typeof command.FIRST_KEY_INDEX === 'number') {\n return redisArgs[command.FIRST_KEY_INDEX];\n }\n return command.FIRST_KEY_INDEX(...originalArgs);\n }\n static create(options) {\n return new ((0, commander_1.attachExtensions)({\n BaseClass: RedisCluster,\n modulesExecutor: RedisCluster.prototype.commandsExecutor,\n modules: options?.modules,\n functionsExecutor: RedisCluster.prototype.functionsExecutor,\n functions: options?.functions,\n scriptsExecutor: RedisCluster.prototype.scriptsExecutor,\n scripts: options?.scripts\n }))(options);\n }\n get slots() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").slots;\n }\n get shards() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").shards;\n }\n get masters() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").masters;\n }\n get replicas() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").replicas;\n }\n get nodeByAddress() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").nodeByAddress;\n }\n get pubSubNode() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").pubSubNode;\n }\n get isOpen() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").isOpen;\n }\n constructor(options) {\n super();\n _RedisCluster_instances.add(this);\n _RedisCluster_options.set(this, void 0);\n _RedisCluster_slots.set(this, void 0);\n _RedisCluster_Multi.set(this, void 0);\n Object.defineProperty(this, \"multi\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.MULTI\n });\n Object.defineProperty(this, \"subscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUBSCRIBE\n });\n Object.defineProperty(this, \"unsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.UNSUBSCRIBE\n });\n Object.defineProperty(this, \"pSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PSUBSCRIBE\n });\n Object.defineProperty(this, \"pUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.PUNSUBSCRIBE\n });\n Object.defineProperty(this, \"sSubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SSUBSCRIBE\n });\n Object.defineProperty(this, \"sUnsubscribe\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.SUNSUBSCRIBE\n });\n __classPrivateFieldSet(this, _RedisCluster_options, options, \"f\");\n __classPrivateFieldSet(this, _RedisCluster_slots, new cluster_slots_1.default(options, this.emit.bind(this)), \"f\");\n __classPrivateFieldSet(this, _RedisCluster_Multi, multi_command_1.default.extend(options), \"f\");\n }\n duplicate(overrides) {\n return new (Object.getPrototypeOf(this).constructor)({\n ...__classPrivateFieldGet(this, _RedisCluster_options, \"f\"),\n ...overrides\n });\n }\n connect() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").connect();\n }\n async commandsExecutor(command, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(command, args);\n return (0, commander_1.transformCommandReply)(command, await this.sendCommand(RedisCluster.extractFirstKey(command, args, redisArgs), command.IS_READ_ONLY, redisArgs, options), redisArgs.preserve);\n }\n async sendCommand(firstKey, isReadonly, args, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, firstKey, isReadonly, client => client.sendCommand(args, options));\n }\n async functionsExecutor(fn, args, name) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(fn, args);\n return (0, commander_1.transformCommandReply)(fn, await this.executeFunction(name, fn, args, redisArgs, options), redisArgs.preserve);\n }\n async executeFunction(name, fn, originalArgs, redisArgs, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, RedisCluster.extractFirstKey(fn, originalArgs, redisArgs), fn.IS_READ_ONLY, client => client.executeFunction(name, fn, redisArgs, options));\n }\n async scriptsExecutor(script, args) {\n const { args: redisArgs, options } = (0, commander_1.transformCommandArguments)(script, args);\n return (0, commander_1.transformCommandReply)(script, await this.executeScript(script, args, redisArgs, options), redisArgs.preserve);\n }\n async executeScript(script, originalArgs, redisArgs, options) {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, RedisCluster.extractFirstKey(script, originalArgs, redisArgs), script.IS_READ_ONLY, client => client.executeScript(script, redisArgs, options));\n }\n MULTI(routing) {\n return new (__classPrivateFieldGet(this, _RedisCluster_Multi, \"f\"))((commands, firstKey, chainId) => {\n return __classPrivateFieldGet(this, _RedisCluster_instances, \"m\", _RedisCluster_execute).call(this, firstKey, false, client => client.multiExecutor(commands, undefined, chainId));\n }, routing);\n }\n async SUBSCRIBE(channels, listener, bufferMode) {\n return (await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getPubSubClient())\n .SUBSCRIBE(channels, listener, bufferMode);\n }\n async UNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeUnsubscribeCommand(client => client.UNSUBSCRIBE(channels, listener, bufferMode));\n }\n async PSUBSCRIBE(patterns, listener, bufferMode) {\n return (await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getPubSubClient())\n .PSUBSCRIBE(patterns, listener, bufferMode);\n }\n async PUNSUBSCRIBE(patterns, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeUnsubscribeCommand(client => client.PUNSUBSCRIBE(patterns, listener, bufferMode));\n }\n async SSUBSCRIBE(channels, listener, bufferMode) {\n const maxCommandRedirections = __classPrivateFieldGet(this, _RedisCluster_options, \"f\").maxCommandRedirections ?? 16, firstChannel = Array.isArray(channels) ? channels[0] : channels;\n let client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getShardedPubSubClient(firstChannel);\n for (let i = 0;; i++) {\n try {\n return await client.SSUBSCRIBE(channels, listener, bufferMode);\n }\n catch (err) {\n if (++i > maxCommandRedirections || !(err instanceof errors_1.ErrorReply)) {\n throw err;\n }\n if (err.message.startsWith('MOVED')) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getShardedPubSubClient(firstChannel);\n continue;\n }\n throw err;\n }\n }\n }\n SUNSUBSCRIBE(channels, listener, bufferMode) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").executeShardedUnsubscribeCommand(Array.isArray(channels) ? channels[0] : channels, client => client.SUNSUBSCRIBE(channels, listener, bufferMode));\n }\n quit() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").quit();\n }\n disconnect() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").disconnect();\n }\n nodeClient(node) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").nodeClient(node);\n }\n getRandomNode() {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getRandomNode();\n }\n getSlotRandomNode(slot) {\n return __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getSlotRandomNode(slot);\n }\n /**\n * @deprecated use `.masters` instead\n */\n getMasters() {\n return this.masters;\n }\n /**\n * @deprecated use `.slots[]` instead\n */\n getSlotMaster(slot) {\n return this.slots[slot].master;\n }\n}\nexports.default = RedisCluster;\n_RedisCluster_options = new WeakMap(), _RedisCluster_slots = new WeakMap(), _RedisCluster_Multi = new WeakMap(), _RedisCluster_instances = new WeakSet(), _RedisCluster_execute = async function _RedisCluster_execute(firstKey, isReadonly, executor) {\n const maxCommandRedirections = __classPrivateFieldGet(this, _RedisCluster_options, \"f\").maxCommandRedirections ?? 16;\n let client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getClient(firstKey, isReadonly);\n for (let i = 0;; i++) {\n try {\n return await executor(client);\n }\n catch (err) {\n if (++i > maxCommandRedirections || !(err instanceof errors_1.ErrorReply)) {\n throw err;\n }\n if (err.message.startsWith('ASK')) {\n const address = err.message.substring(err.message.lastIndexOf(' ') + 1);\n let redirectTo = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getMasterByAddress(address);\n if (!redirectTo) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n redirectTo = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getMasterByAddress(address);\n }\n if (!redirectTo) {\n throw new Error(`Cannot find node ${address}`);\n }\n await redirectTo.asking();\n client = redirectTo;\n continue;\n }\n else if (err.message.startsWith('MOVED')) {\n await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").rediscover(client);\n client = await __classPrivateFieldGet(this, _RedisCluster_slots, \"f\").getClient(firstKey, isReadonly);\n continue;\n }\n throw err;\n }\n }\n};\n(0, commander_1.attachCommands)({\n BaseClass: RedisCluster,\n commands: commands_1.default,\n executor: RedisCluster.prototype.commandsExecutor\n});\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _RedisClusterMultiCommand_multi, _RedisClusterMultiCommand_executor, _RedisClusterMultiCommand_firstKey;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commands_1 = require(\"./commands\");\nconst multi_command_1 = require(\"../multi-command\");\nconst commander_1 = require(\"../commander\");\nconst _1 = require(\".\");\nclass RedisClusterMultiCommand {\n static extend(extensions) {\n return (0, commander_1.attachExtensions)({\n BaseClass: RedisClusterMultiCommand,\n modulesExecutor: RedisClusterMultiCommand.prototype.commandsExecutor,\n modules: extensions?.modules,\n functionsExecutor: RedisClusterMultiCommand.prototype.functionsExecutor,\n functions: extensions?.functions,\n scriptsExecutor: RedisClusterMultiCommand.prototype.scriptsExecutor,\n scripts: extensions?.scripts\n });\n }\n constructor(executor, firstKey) {\n _RedisClusterMultiCommand_multi.set(this, new multi_command_1.default());\n _RedisClusterMultiCommand_executor.set(this, void 0);\n _RedisClusterMultiCommand_firstKey.set(this, void 0);\n Object.defineProperty(this, \"EXEC\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: this.exec\n });\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_executor, executor, \"f\");\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, firstKey, \"f\");\n }\n commandsExecutor(command, args) {\n const transformedArguments = command.transformArguments(...args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(command, args, transformedArguments), \"f\");\n return this.addCommand(undefined, transformedArguments, command.transformReply);\n }\n addCommand(firstKey, args, transformReply) {\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? firstKey, \"f\");\n __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addCommand(args, transformReply);\n return this;\n }\n functionsExecutor(fn, args, name) {\n const transformedArguments = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addFunction(name, fn, args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(fn, args, transformedArguments), \"f\");\n return this;\n }\n scriptsExecutor(script, args) {\n const transformedArguments = __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").addScript(script, args);\n __classPrivateFieldSet(this, _RedisClusterMultiCommand_firstKey, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\") ?? _1.default.extractFirstKey(script, args, transformedArguments), \"f\");\n return this;\n }\n async exec(execAsPipeline = false) {\n if (execAsPipeline) {\n return this.execAsPipeline();\n }\n return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").handleExecReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\"), multi_command_1.default.generateChainId()));\n }\n async execAsPipeline() {\n return __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").transformReplies(await __classPrivateFieldGet(this, _RedisClusterMultiCommand_executor, \"f\").call(this, __classPrivateFieldGet(this, _RedisClusterMultiCommand_multi, \"f\").queue, __classPrivateFieldGet(this, _RedisClusterMultiCommand_firstKey, \"f\")));\n }\n}\nexports.default = RedisClusterMultiCommand;\n_RedisClusterMultiCommand_multi = new WeakMap(), _RedisClusterMultiCommand_executor = new WeakMap(), _RedisClusterMultiCommand_firstKey = new WeakMap();\n(0, commander_1.attachCommands)({\n BaseClass: RedisClusterMultiCommand,\n commands: commands_1.default,\n executor: RedisClusterMultiCommand.prototype.commandsExecutor\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCommandOptions = exports.commandOptions = void 0;\nconst symbol = Symbol('Command Options');\nfunction commandOptions(options) {\n options[symbol] = true;\n return options;\n}\nexports.commandOptions = commandOptions;\nfunction isCommandOptions(options) {\n return options?.[symbol] === true;\n}\nexports.isCommandOptions = isCommandOptions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fCallArguments = exports.transformCommandReply = exports.transformLegacyCommandArguments = exports.transformCommandArguments = exports.attachExtensions = exports.attachCommands = void 0;\nconst command_options_1 = require(\"./command-options\");\nfunction attachCommands({ BaseClass, commands, executor }) {\n for (const [name, command] of Object.entries(commands)) {\n BaseClass.prototype[name] = function (...args) {\n return executor.call(this, command, args, name);\n };\n }\n}\nexports.attachCommands = attachCommands;\nfunction attachExtensions(config) {\n let Commander;\n if (config.modules) {\n Commander = attachWithNamespaces({\n BaseClass: config.BaseClass,\n namespaces: config.modules,\n executor: config.modulesExecutor\n });\n }\n if (config.functions) {\n Commander = attachWithNamespaces({\n BaseClass: Commander ?? config.BaseClass,\n namespaces: config.functions,\n executor: config.functionsExecutor\n });\n }\n if (config.scripts) {\n Commander ?? (Commander = class extends config.BaseClass {\n });\n attachCommands({\n BaseClass: Commander,\n commands: config.scripts,\n executor: config.scriptsExecutor\n });\n }\n return Commander ?? config.BaseClass;\n}\nexports.attachExtensions = attachExtensions;\nfunction attachWithNamespaces({ BaseClass, namespaces, executor }) {\n const Commander = class extends BaseClass {\n constructor(...args) {\n super(...args);\n for (const namespace of Object.keys(namespaces)) {\n this[namespace] = Object.create(this[namespace], {\n self: {\n value: this\n }\n });\n }\n }\n };\n for (const [namespace, commands] of Object.entries(namespaces)) {\n Commander.prototype[namespace] = {};\n for (const [name, command] of Object.entries(commands)) {\n Commander.prototype[namespace][name] = function (...args) {\n return executor.call(this.self, command, args, name);\n };\n }\n }\n return Commander;\n}\nfunction transformCommandArguments(command, args) {\n let options;\n if ((0, command_options_1.isCommandOptions)(args[0])) {\n options = args[0];\n args = args.slice(1);\n }\n return {\n args: command.transformArguments(...args),\n options\n };\n}\nexports.transformCommandArguments = transformCommandArguments;\nfunction transformLegacyCommandArguments(args) {\n return args.flat().map(arg => {\n return typeof arg === 'number' || arg instanceof Date ?\n arg.toString() :\n arg;\n });\n}\nexports.transformLegacyCommandArguments = transformLegacyCommandArguments;\nfunction transformCommandReply(command, rawReply, preserved) {\n if (!command.transformReply) {\n return rawReply;\n }\n return command.transformReply(rawReply, preserved);\n}\nexports.transformCommandReply = transformCommandReply;\nfunction fCallArguments(name, fn, args) {\n const actualArgs = [\n fn.IS_READ_ONLY ? 'FCALL_RO' : 'FCALL',\n name\n ];\n if (fn.NUMBER_OF_KEYS !== undefined) {\n actualArgs.push(fn.NUMBER_OF_KEYS.toString());\n }\n actualArgs.push(...args);\n return actualArgs;\n}\nexports.fCallArguments = fCallArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(categoryName) {\n const args = ['ACL', 'CAT'];\n if (categoryName) {\n args.push(categoryName);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(username) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'DELUSER'], username);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(username, command) {\n return [\n 'ACL',\n 'DRYRUN',\n username,\n ...command\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(bits) {\n const args = ['ACL', 'GENPASS'];\n if (bits) {\n args.push(bits.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(username) {\n return ['ACL', 'GETUSER', username];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n flags: reply[1],\n passwords: reply[3],\n commands: reply[5],\n keys: reply[7],\n channels: reply[9],\n selectors: reply[11]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LOAD'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(count) {\n const args = ['ACL', 'LOG'];\n if (count) {\n args.push(count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(log => ({\n count: log[1],\n reason: log[3],\n context: log[5],\n object: log[7],\n username: log[9],\n ageSeconds: Number(log[11]),\n clientInfo: log[13]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'LOG', 'RESET'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'SAVE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(username, rule) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ACL', 'SETUSER', username], rule);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'USERS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ACL', 'WHOAMI'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['APPEND', key, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['ASKING'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments({ username, password }) {\n if (!username) {\n return ['AUTH', password];\n }\n return ['AUTH', username, password];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['BGREWRITEAOF'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['BGSAVE'];\n if (options?.SCHEDULE) {\n args.push('SCHEDULE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, range) {\n const args = ['BITCOUNT', key];\n if (range) {\n args.push(range.start.toString(), range.end.toString());\n if (range.mode) {\n args.push(range.mode);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, operations) {\n const args = ['BITFIELD', key];\n for (const options of operations) {\n switch (options.operation) {\n case 'GET':\n args.push('GET', options.encoding, options.offset.toString());\n break;\n case 'SET':\n args.push('SET', options.encoding, options.offset.toString(), options.value.toString());\n break;\n case 'INCRBY':\n args.push('INCRBY', options.encoding, options.offset.toString(), options.increment.toString());\n break;\n case 'OVERFLOW':\n args.push('OVERFLOW', options.behavior);\n break;\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, operations) {\n const args = ['BITFIELD_RO', key];\n for (const operation of operations) {\n args.push('GET', operation.encoding, operation.offset.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(operation, destKey, key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['BITOP', operation, destKey], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, bit, start, end, mode) {\n const args = ['BITPOS', key, bit.toString()];\n if (typeof start === 'number') {\n args.push(start.toString());\n }\n if (typeof end === 'number') {\n args.push(end.toString());\n }\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, sourceDirection, destinationDirection, timeout) {\n return [\n 'BLMOVE',\n source,\n destination,\n sourceDirection,\n destinationDirection,\n timeout.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 3;\nfunction transformArguments(timeout, keys, side, options) {\n return (0, generic_transformers_1.transformLMPopArguments)(['BLMPOP', timeout.toString()], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nvar LMPOP_1 = require(\"./LMPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return LMPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BLPOP'], keys);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply === null)\n return null;\n return {\n key: reply[0],\n element: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BRPOP'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nvar BLPOP_1 = require(\"./BLPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return BLPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, timeout) {\n return ['BRPOPLPUSH', source, destination, timeout.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 3;\nfunction transformArguments(timeout, keys, side, options) {\n return (0, generic_transformers_1.transformZMPopArguments)(['BZMPOP', timeout.toString()], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nvar ZMPOP_1 = require(\"./ZMPOP\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return ZMPOP_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMAX'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (!reply)\n return null;\n return {\n key: reply[0],\n value: reply[1],\n score: (0, generic_transformers_1.transformNumberInfinityReply)(reply[2])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timeout) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['BZPOPMIN'], key);\n args.push(timeout.toString());\n return args;\n}\nexports.transformArguments = transformArguments;\nvar BZPOPMAX_1 = require(\"./BZPOPMAX\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return BZPOPMAX_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(value) {\n return [\n 'CLIENT',\n 'CACHING',\n value ? 'YES' : 'NO'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'GETNAME'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'GETREDIR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['CLIENT', 'ID'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['CLIENT', 'INFO'];\n}\nexports.transformArguments = transformArguments;\nconst CLIENT_INFO_REGEX = /([^\\s=]+)=([^\\s]*)/g;\nfunction transformReply(rawReply) {\n const map = {};\n for (const item of rawReply.matchAll(CLIENT_INFO_REGEX)) {\n map[item[1]] = item[2];\n }\n const reply = {\n id: Number(map.id),\n addr: map.addr,\n fd: Number(map.fd),\n name: map.name,\n age: Number(map.age),\n idle: Number(map.idle),\n flags: map.flags,\n db: Number(map.db),\n sub: Number(map.sub),\n psub: Number(map.psub),\n multi: Number(map.multi),\n qbuf: Number(map.qbuf),\n qbufFree: Number(map['qbuf-free']),\n argvMem: Number(map['argv-mem']),\n obl: Number(map.obl),\n oll: Number(map.oll),\n omem: Number(map.omem),\n totMem: Number(map['tot-mem']),\n events: map.events,\n cmd: map.cmd,\n user: map.user\n };\n if (map.laddr !== undefined) {\n reply.laddr = map.laddr;\n }\n if (map.redir !== undefined) {\n reply.redir = Number(map.redir);\n }\n if (map.ssub !== undefined) {\n reply.ssub = Number(map.ssub);\n }\n if (map['multi-mem'] !== undefined) {\n reply.multiMem = Number(map['multi-mem']);\n }\n if (map.resp !== undefined) {\n reply.resp = Number(map.resp);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.ClientKillFilters = void 0;\nvar ClientKillFilters;\n(function (ClientKillFilters) {\n ClientKillFilters[\"ADDRESS\"] = \"ADDR\";\n ClientKillFilters[\"LOCAL_ADDRESS\"] = \"LADDR\";\n ClientKillFilters[\"ID\"] = \"ID\";\n ClientKillFilters[\"TYPE\"] = \"TYPE\";\n ClientKillFilters[\"USER\"] = \"USER\";\n ClientKillFilters[\"SKIP_ME\"] = \"SKIPME\";\n})(ClientKillFilters = exports.ClientKillFilters || (exports.ClientKillFilters = {}));\nfunction transformArguments(filters) {\n const args = ['CLIENT', 'KILL'];\n if (Array.isArray(filters)) {\n for (const filter of filters) {\n pushFilter(args, filter);\n }\n }\n else {\n pushFilter(args, filters);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushFilter(args, filter) {\n if (filter === ClientKillFilters.SKIP_ME) {\n args.push('SKIPME');\n return;\n }\n args.push(filter.filter);\n switch (filter.filter) {\n case ClientKillFilters.ADDRESS:\n args.push(filter.address);\n break;\n case ClientKillFilters.LOCAL_ADDRESS:\n args.push(filter.localAddress);\n break;\n case ClientKillFilters.ID:\n args.push(typeof filter.id === 'number' ?\n filter.id.toString() :\n filter.id);\n break;\n case ClientKillFilters.TYPE:\n args.push(filter.type);\n break;\n case ClientKillFilters.USER:\n args.push(filter.username);\n break;\n case ClientKillFilters.SKIP_ME:\n args.push(filter.skipMe ? 'yes' : 'no');\n break;\n }\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst CLIENT_INFO_1 = require(\"./CLIENT_INFO\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter) {\n let args = ['CLIENT', 'LIST'];\n if (filter) {\n if (filter.TYPE !== undefined) {\n args.push('TYPE', filter.TYPE);\n }\n else {\n args.push('ID');\n args = (0, generic_transformers_1.pushVerdictArguments)(args, filter.ID);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const split = rawReply.split('\\n'), length = split.length - 1, reply = [];\n for (let i = 0; i < length; i++) {\n reply.push((0, CLIENT_INFO_1.transformReply)(split[i]));\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(value) {\n return [\n 'CLIENT',\n 'NO-EVICT',\n value ? 'ON' : 'OFF'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(timeout, mode) {\n const args = [\n 'CLIENT',\n 'PAUSE',\n timeout.toString()\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name) {\n return ['CLIENT', 'SETNAME', name];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode, options) {\n const args = [\n 'CLIENT',\n 'TRACKING',\n mode ? 'ON' : 'OFF'\n ];\n if (mode) {\n if (options?.REDIRECT) {\n args.push('REDIRECT', options.REDIRECT.toString());\n }\n if (isBroadcast(options)) {\n args.push('BCAST');\n if (options?.PREFIX) {\n if (Array.isArray(options.PREFIX)) {\n for (const prefix of options.PREFIX) {\n args.push('PREFIX', prefix);\n }\n }\n else {\n args.push('PREFIX', options.PREFIX);\n }\n }\n }\n else if (isOptIn(options)) {\n args.push('OPTIN');\n }\n else if (isOptOut(options)) {\n args.push('OPTOUT');\n }\n if (options?.NOLOOP) {\n args.push('NOLOOP');\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction isBroadcast(options) {\n return options?.BCAST === true;\n}\nfunction isOptIn(options) {\n return options?.OPTIN === true;\n}\nfunction isOptOut(options) {\n return options?.OPTOUT === true;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'TRACKINGINFO'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n flags: new Set(reply[1]),\n redirect: reply[3],\n prefixes: reply[5]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLIENT', 'UNPAUSE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(slots) {\n return (0, generic_transformers_1.pushVerdictNumberArguments)(['CLUSTER', 'ADDSLOTS'], slots);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(ranges) {\n return (0, generic_transformers_1.pushSlotRangesArguments)(['CLUSTER', 'ADDSLOTSRANGE'], ranges);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'BUMPEPOCH'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'COUNT-FAILURE-REPORTS', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(slot) {\n return ['CLUSTER', 'COUNTKEYSINSLOT', slot.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(slots) {\n return (0, generic_transformers_1.pushVerdictNumberArguments)(['CLUSTER', 'DELSLOTS'], slots);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(ranges) {\n return (0, generic_transformers_1.pushSlotRangesArguments)(['CLUSTER', 'DELSLOTSRANGE'], ranges);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FailoverModes = void 0;\nvar FailoverModes;\n(function (FailoverModes) {\n FailoverModes[\"FORCE\"] = \"FORCE\";\n FailoverModes[\"TAKEOVER\"] = \"TAKEOVER\";\n})(FailoverModes = exports.FailoverModes || (exports.FailoverModes = {}));\nfunction transformArguments(mode) {\n const args = ['CLUSTER', 'FAILOVER'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'FLUSHSLOTS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'FORGET', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(slot, count) {\n return ['CLUSTER', 'GETKEYSINSLOT', slot.toString(), count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractLineValue = exports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'INFO'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const lines = reply.split('\\r\\n');\n return {\n state: extractLineValue(lines[0]),\n slots: {\n assigned: Number(extractLineValue(lines[1])),\n ok: Number(extractLineValue(lines[2])),\n pfail: Number(extractLineValue(lines[3])),\n fail: Number(extractLineValue(lines[4]))\n },\n knownNodes: Number(extractLineValue(lines[5])),\n size: Number(extractLineValue(lines[6])),\n currentEpoch: Number(extractLineValue(lines[7])),\n myEpoch: Number(extractLineValue(lines[8])),\n stats: {\n messagesSent: Number(extractLineValue(lines[9])),\n messagesReceived: Number(extractLineValue(lines[10]))\n }\n };\n}\nexports.transformReply = transformReply;\nfunction extractLineValue(line) {\n return line.substring(line.indexOf(':') + 1);\n}\nexports.extractLineValue = extractLineValue;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(key) {\n return ['CLUSTER', 'KEYSLOT', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'LINKS'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(peerLink => ({\n direction: peerLink[1],\n node: peerLink[3],\n createTime: Number(peerLink[5]),\n events: peerLink[7],\n sendBufferAllocated: Number(peerLink[9]),\n sendBufferUsed: Number(peerLink[11])\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(ip, port) {\n return ['CLUSTER', 'MEET', ip, port.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'MYID'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.RedisClusterNodeLinkStates = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'NODES'];\n}\nexports.transformArguments = transformArguments;\nvar RedisClusterNodeLinkStates;\n(function (RedisClusterNodeLinkStates) {\n RedisClusterNodeLinkStates[\"CONNECTED\"] = \"connected\";\n RedisClusterNodeLinkStates[\"DISCONNECTED\"] = \"disconnected\";\n})(RedisClusterNodeLinkStates = exports.RedisClusterNodeLinkStates || (exports.RedisClusterNodeLinkStates = {}));\nfunction transformReply(reply) {\n const lines = reply.split('\\n');\n lines.pop(); // last line is empty\n const mastersMap = new Map(), replicasMap = new Map();\n for (const line of lines) {\n const [id, address, flags, masterId, pingSent, pongRecv, configEpoch, linkState, ...slots] = line.split(' '), node = {\n id,\n address,\n ...transformNodeAddress(address),\n flags: flags.split(','),\n pingSent: Number(pingSent),\n pongRecv: Number(pongRecv),\n configEpoch: Number(configEpoch),\n linkState: linkState\n };\n if (masterId === '-') {\n let replicas = replicasMap.get(id);\n if (!replicas) {\n replicas = [];\n replicasMap.set(id, replicas);\n }\n mastersMap.set(id, {\n ...node,\n slots: slots.map(slot => {\n // TODO: importing & exporting (https://redis.io/commands/cluster-nodes#special-slot-entries)\n const [fromString, toString] = slot.split('-', 2), from = Number(fromString);\n return {\n from,\n to: toString ? Number(toString) : from\n };\n }),\n replicas\n });\n }\n else {\n const replicas = replicasMap.get(masterId);\n if (!replicas) {\n replicasMap.set(masterId, [node]);\n }\n else {\n replicas.push(node);\n }\n }\n }\n return [...mastersMap.values()];\n}\nexports.transformReply = transformReply;\nfunction transformNodeAddress(address) {\n const indexOfColon = address.lastIndexOf(':'), indexOfAt = address.indexOf('@', indexOfColon), host = address.substring(0, indexOfColon);\n if (indexOfAt === -1) {\n return {\n host,\n port: Number(address.substring(indexOfColon + 1)),\n cport: null\n };\n }\n return {\n host: address.substring(0, indexOfColon),\n port: Number(address.substring(indexOfColon + 1, indexOfAt)),\n cport: Number(address.substring(indexOfAt + 1))\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'REPLICAS', nodeId];\n}\nexports.transformArguments = transformArguments;\nvar CLUSTER_NODES_1 = require(\"./CLUSTER_NODES\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return CLUSTER_NODES_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(nodeId) {\n return ['CLUSTER', 'REPLICATE', nodeId];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['CLUSTER', 'RESET'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'SAVECONFIG'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(configEpoch) {\n return ['CLUSTER', 'SET-CONFIG-EPOCH', configEpoch.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.ClusterSlotStates = void 0;\nvar ClusterSlotStates;\n(function (ClusterSlotStates) {\n ClusterSlotStates[\"IMPORTING\"] = \"IMPORTING\";\n ClusterSlotStates[\"MIGRATING\"] = \"MIGRATING\";\n ClusterSlotStates[\"STABLE\"] = \"STABLE\";\n ClusterSlotStates[\"NODE\"] = \"NODE\";\n})(ClusterSlotStates = exports.ClusterSlotStates || (exports.ClusterSlotStates = {}));\nfunction transformArguments(slot, state, nodeId) {\n const args = ['CLUSTER', 'SETSLOT', slot.toString(), state];\n if (nodeId) {\n args.push(nodeId);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CLUSTER', 'SLOTS'];\n}\nexports.transformArguments = transformArguments;\n;\nfunction transformReply(reply) {\n return reply.map(([from, to, master, ...replicas]) => {\n return {\n from,\n to,\n master: transformNode(master),\n replicas: replicas.map(transformNode)\n };\n });\n}\nexports.transformReply = transformReply;\nfunction transformNode([ip, port, id]) {\n return {\n ip,\n port,\n id\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['COMMAND'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(generic_transformers_1.transformCommandReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['COMMAND', 'COUNT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(args) {\n return ['COMMAND', 'GETKEYS', ...args];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(args) {\n return ['COMMAND', 'GETKEYSANDFLAGS', ...args];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([key, flags]) => ({\n key,\n flags\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(commands) {\n return ['COMMAND', 'INFO', ...commands];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(command => command ? (0, generic_transformers_1.transformCommandReply)(command) : null);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FilterBy = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nvar FilterBy;\n(function (FilterBy) {\n FilterBy[\"MODULE\"] = \"MODULE\";\n FilterBy[\"ACLCAT\"] = \"ACLCAT\";\n FilterBy[\"PATTERN\"] = \"PATTERN\";\n})(FilterBy = exports.FilterBy || (exports.FilterBy = {}));\nfunction transformArguments(filter) {\n const args = ['COMMAND', 'LIST'];\n if (filter) {\n args.push('FILTERBY', filter.filterBy, filter.value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(parameter) {\n return ['CONFIG', 'GET', parameter];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CONFIG', 'RESETSTAT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['CONFIG', 'REWRITE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(...[parameterOrConfig, value]) {\n const args = ['CONFIG', 'SET'];\n if (typeof parameterOrConfig === 'string') {\n args.push(parameterOrConfig, value);\n }\n else {\n for (const [key, value] of Object.entries(parameterOrConfig)) {\n args.push(key, value);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, options) {\n const args = ['COPY', source, destination];\n if (options?.destinationDb) {\n args.push('DB', options.destinationDb.toString());\n }\n if (options?.replace) {\n args.push('REPLACE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['DBSIZE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['DECR', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, decrement) {\n return ['DECRBY', key, decrement.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['DEL'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['DISCARD'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['DUMP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(message) {\n return ['ECHO', message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(script, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVAL', script], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(sha1, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA', sha1], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(sha1, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVALSHA_RO', sha1], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(script, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['EVAL_RO', script], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['EXISTS'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, seconds, mode) {\n const args = ['EXPIRE', key, seconds.toString()];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timestamp, mode) {\n const args = [\n 'EXPIREAT',\n key,\n (0, generic_transformers_1.transformEXAT)(timestamp)\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['EXPIRETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['FAILOVER'];\n if (options?.TO) {\n args.push('TO', options.TO.host, options.TO.port.toString());\n if (options.TO.FORCE) {\n args.push('FORCE');\n }\n }\n if (options?.ABORT) {\n args.push('ABORT');\n }\n if (options?.TIMEOUT) {\n args.push('TIMEOUT', options.TIMEOUT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nfunction transformArguments(fn, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['FCALL', fn], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = generic_transformers_1.evalFirstKeyIndex;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fn, options) {\n return (0, generic_transformers_1.pushEvalArguments)(['FCALL_RO', fn], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.RedisFlushModes = void 0;\nvar RedisFlushModes;\n(function (RedisFlushModes) {\n RedisFlushModes[\"ASYNC\"] = \"ASYNC\";\n RedisFlushModes[\"SYNC\"] = \"SYNC\";\n})(RedisFlushModes = exports.RedisFlushModes || (exports.RedisFlushModes = {}));\nfunction transformArguments(mode) {\n const args = ['FLUSHALL'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['FLUSHDB'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(library) {\n return ['FUNCTION', 'DELETE', library];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'DUMP'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['FUNCTION', 'FLUSH'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'KILL'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(pattern) {\n const args = ['FUNCTION', 'LIST'];\n if (pattern) {\n args.push(pattern);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(generic_transformers_1.transformFunctionListItemReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst FUNCTION_LIST_1 = require(\"./FUNCTION_LIST\");\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(pattern) {\n const args = (0, FUNCTION_LIST_1.transformArguments)(pattern);\n args.push('WITHCODE');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(library => ({\n ...(0, generic_transformers_1.transformFunctionListItemReply)(library),\n libraryCode: library[7]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(code, options) {\n const args = ['FUNCTION', 'LOAD'];\n if (options?.REPLACE) {\n args.push('REPLACE');\n }\n args.push(code);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(dump, mode) {\n const args = ['FUNCTION', 'RESTORE', dump];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FUNCTION', 'STATS'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const engines = Object.create(null);\n for (let i = 0; i < reply[3].length; i++) {\n engines[reply[3][i]] = {\n librariesCount: reply[3][++i][1],\n functionsCount: reply[3][i][3]\n };\n }\n return {\n runningScript: reply[1] === null ? null : {\n name: reply[1][1],\n command: reply[1][3],\n durationMs: reply[1][5]\n },\n engines\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, toAdd, options) {\n const args = ['GEOADD', key];\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n if (options?.CH) {\n args.push('CH');\n }\n for (const { longitude, latitude, member } of (Array.isArray(toAdd) ? toAdd : [toAdd])) {\n args.push(longitude.toString(), latitude.toString(), member);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member1, member2, unit) {\n const args = ['GEODIST', key, member1, member2];\n if (unit) {\n args.push(unit);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply === null ? null : Number(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['GEOHASH', key], member);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['GEOPOS', key], member);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(coordinates => coordinates === null ? null : {\n longitude: coordinates[0],\n latitude: coordinates[1]\n });\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, coordinates, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUS'], key, coordinates, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUSBYMEMBER'], key, member, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEORADIUSBYMEMBER_1 = require(\"./GEORADIUSBYMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_1.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, destination, options) {\n return (0, generic_transformers_1.pushGeoRadiusStoreArguments)(['GEORADIUSBYMEMBER'], key, member, radius, unit, destination, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUSBYMEMBER_RO'], key, member, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUSBYMEMBER_RO_1 = require(\"./GEORADIUSBYMEMBER_RO\");\nvar GEORADIUSBYMEMBER_RO_2 = require(\"./GEORADIUSBYMEMBER_RO\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_RO_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_RO_2.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, replyWith, options) {\n const args = (0, GEORADIUSBYMEMBER_RO_1.transformArguments)(key, member, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUSBYMEMBER_1 = require(\"./GEORADIUSBYMEMBER\");\nvar GEORADIUSBYMEMBER_2 = require(\"./GEORADIUSBYMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUSBYMEMBER_2.IS_READ_ONLY; } });\nfunction transformArguments(key, member, radius, unit, replyWith, options) {\n const args = (0, GEORADIUSBYMEMBER_1.transformArguments)(key, member, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEORADIUS_1 = require(\"./GEORADIUS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_1.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, destination, options) {\n return (0, generic_transformers_1.pushGeoRadiusStoreArguments)(['GEORADIUS'], key, coordinates, radius, unit, destination, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, coordinates, radius, unit, options) {\n return (0, generic_transformers_1.pushGeoRadiusArguments)(['GEORADIUS_RO'], key, coordinates, radius, unit, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUS_RO_1 = require(\"./GEORADIUS_RO\");\nvar GEORADIUS_RO_2 = require(\"./GEORADIUS_RO\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_RO_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_RO_2.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, replyWith, options) {\n const args = (0, GEORADIUS_RO_1.transformArguments)(key, coordinates, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEORADIUS_1 = require(\"./GEORADIUS\");\nvar GEORADIUS_2 = require(\"./GEORADIUS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEORADIUS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEORADIUS_2.IS_READ_ONLY; } });\nfunction transformArguments(key, coordinates, radius, unit, replyWith, options) {\n const args = (0, GEORADIUS_1.transformArguments)(key, coordinates, radius, unit, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, from, by, options) {\n return (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCH'], key, from, by, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nvar GEOSEARCH_1 = require(\"./GEOSEARCH\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEOSEARCH_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEOSEARCH_1.IS_READ_ONLY; } });\nfunction transformArguments(destination, source, from, by, options) {\n const args = (0, generic_transformers_1.pushGeoSearchArguments)(['GEOSEARCHSTORE', destination], source, from, by, options);\n if (options?.STOREDIST) {\n args.push('STOREDIST');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (typeof reply !== 'number') {\n throw new TypeError(`https://github.com/redis/redis/issues/9261`);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst GEOSEARCH_1 = require(\"./GEOSEARCH\");\nvar GEOSEARCH_2 = require(\"./GEOSEARCH\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return GEOSEARCH_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return GEOSEARCH_2.IS_READ_ONLY; } });\nfunction transformArguments(key, from, by, replyWith, options) {\n const args = (0, GEOSEARCH_1.transformArguments)(key, from, by, options);\n args.push(...replyWith);\n args.preserve = replyWith;\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformGeoMembersWithReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['GET', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, offset) {\n return ['GETBIT', key, offset.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GETDEL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, mode) {\n const args = ['GETEX', key];\n if ('EX' in mode) {\n args.push('EX', mode.EX.toString());\n }\n else if ('PX' in mode) {\n args.push('PX', mode.PX.toString());\n }\n else if ('EXAT' in mode) {\n args.push('EXAT', (0, generic_transformers_1.transformEXAT)(mode.EXAT));\n }\n else if ('PXAT' in mode) {\n args.push('PXAT', (0, generic_transformers_1.transformPXAT)(mode.PXAT));\n }\n else { // PERSIST\n args.push('PERSIST');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end) {\n return ['GETRANGE', key, start.toString(), end.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['GETSET', key, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return (0, generic_transformers_1.pushVerdictArguments)(['HDEL', key], field);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(options) {\n const args = ['HELLO'];\n if (options) {\n args.push(options.protover.toString());\n if (options.auth) {\n args.push('AUTH', options.auth.username, options.auth.password);\n }\n if (options.clientName) {\n args.push('SETNAME', options.clientName);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n server: reply[1],\n version: reply[3],\n proto: reply[5],\n id: reply[7],\n mode: reply[9],\n role: reply[11],\n modules: reply[13]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return ['HEXISTS', key, field];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, field) {\n return ['HGET', key, field];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.TRANSFORM_LEGACY_REPLY = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nexports.TRANSFORM_LEGACY_REPLY = true;\nfunction transformArguments(key) {\n return ['HGETALL', key];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, increment) {\n return ['HINCRBY', key, field, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, increment) {\n return ['HINCRBYFLOAT', key, field, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HKEYS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fields) {\n return (0, generic_transformers_1.pushVerdictArguments)(['HMGET', key], fields);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['HRANDFIELD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst HRANDFIELD_1 = require(\"./HRANDFIELD\");\nvar HRANDFIELD_2 = require(\"./HRANDFIELD\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return HRANDFIELD_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return HRANDFIELD_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, HRANDFIELD_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst HRANDFIELD_COUNT_1 = require(\"./HRANDFIELD_COUNT\");\nvar HRANDFIELD_COUNT_2 = require(\"./HRANDFIELD_COUNT\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return HRANDFIELD_COUNT_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return HRANDFIELD_COUNT_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, HRANDFIELD_COUNT_1.transformArguments)(key, count),\n 'WITHVALUES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformTuplesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'HSCAN',\n key\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, rawTuples]) {\n const parsedTuples = [];\n for (let i = 0; i < rawTuples.length; i += 2) {\n parsedTuples.push({\n field: rawTuples[i],\n value: rawTuples[i + 1]\n });\n }\n return {\n cursor: Number(cursor),\n tuples: parsedTuples\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(...[key, value, fieldValue]) {\n const args = ['HSET', key];\n if (typeof value === 'string' || typeof value === 'number' || Buffer.isBuffer(value)) {\n args.push(convertValue(value), convertValue(fieldValue));\n }\n else if (value instanceof Map) {\n pushMap(args, value);\n }\n else if (Array.isArray(value)) {\n pushTuples(args, value);\n }\n else {\n pushObject(args, value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushMap(args, map) {\n for (const [key, value] of map.entries()) {\n args.push(convertValue(key), convertValue(value));\n }\n}\nfunction pushTuples(args, tuples) {\n for (const tuple of tuples) {\n if (Array.isArray(tuple)) {\n pushTuples(args, tuple);\n continue;\n }\n args.push(convertValue(tuple));\n }\n}\nfunction pushObject(args, object) {\n for (const key of Object.keys(object)) {\n args.push(convertValue(key), convertValue(object[key]));\n }\n}\nfunction convertValue(value) {\n return typeof value === 'number' ?\n value.toString() :\n value;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field, value) {\n return ['HSETNX', key, field, value];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, field) {\n return ['HSTRLEN', key, field];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['HVALS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['INCR', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment) {\n return ['INCRBY', key, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment) {\n return ['INCRBYFLOAT', key, increment.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(section) {\n const args = ['INFO'];\n if (section) {\n args.push(section);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(pattern) {\n return ['KEYS', pattern];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['LASTSAVE'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return new Date(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['LATENCY', 'DOCTOR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(event) {\n return ['LATENCY', 'GRAPH', event];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key1, key2) {\n return [\n 'LCS',\n key1,\n key2\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('IDX');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n matches: reply[1].map(([key1, key2]) => ({\n key1: (0, generic_transformers_1.transformRangeReply)(key1),\n key2: (0, generic_transformers_1.transformRangeReply)(key2)\n })),\n length: reply[3]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('IDX', 'WITHMATCHLEN');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n matches: reply[1].map(([key1, key2, length]) => ({\n key1: (0, generic_transformers_1.transformRangeReply)(key1),\n key2: (0, generic_transformers_1.transformRangeReply)(key2),\n length\n })),\n length: reply[3]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst LCS_1 = require(\"./LCS\");\nvar LCS_2 = require(\"./LCS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LCS_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LCS_2.IS_READ_ONLY; } });\nfunction transformArguments(key1, key2) {\n const args = (0, LCS_1.transformArguments)(key1, key2);\n args.push('LEN');\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, index) {\n return ['LINDEX', key, index.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, position, pivot, element) {\n return [\n 'LINSERT',\n key,\n position,\n pivot,\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['LLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, sourceSide, destinationSide) {\n return [\n 'LMOVE',\n source,\n destination,\n sourceSide,\n destinationSide,\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(keys, side, options) {\n return (0, generic_transformers_1.transformLMPopArguments)(['LMPOP'], keys, side, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(version, ...optionalArguments) {\n const args = ['LOLWUT'];\n if (version) {\n args.push('VERSION', version.toString(), ...optionalArguments.map(String));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['LPOP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n return ['LPOP', key, count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, element, options) {\n const args = ['LPOS', key, element];\n if (typeof options?.RANK === 'number') {\n args.push('RANK', options.RANK.toString());\n }\n if (typeof options?.MAXLEN === 'number') {\n args.push('MAXLEN', options.MAXLEN.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nvar LPOS_1 = require(\"./LPOS\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return LPOS_1.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return LPOS_1.IS_READ_ONLY; } });\nfunction transformArguments(key, element, count, options) {\n const args = ['LPOS', key, element];\n if (typeof options?.RANK === 'number') {\n args.push('RANK', options.RANK.toString());\n }\n args.push('COUNT', count.toString());\n if (typeof options?.MAXLEN === 'number') {\n args.push('MAXLEN', options.MAXLEN.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, elements) {\n return (0, generic_transformers_1.pushVerdictArguments)(['LPUSH', key], elements);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['LPUSHX', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, stop) {\n return [\n 'LRANGE',\n key,\n start.toString(),\n stop.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count, element) {\n return [\n 'LREM',\n key,\n count.toString(),\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, index, element) {\n return [\n 'LSET',\n key,\n index.toString(),\n element\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, start, stop) {\n return [\n 'LTRIM',\n key,\n start.toString(),\n stop.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'DOCTOR'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'MALLOC-STATS'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'PURGE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MEMORY', 'STATS'];\n}\nexports.transformArguments = transformArguments;\nconst FIELDS_MAPPING = {\n 'peak.allocated': 'peakAllocated',\n 'total.allocated': 'totalAllocated',\n 'startup.allocated': 'startupAllocated',\n 'replication.backlog': 'replicationBacklog',\n 'clients.slaves': 'clientsReplicas',\n 'clients.normal': 'clientsNormal',\n 'aof.buffer': 'aofBuffer',\n 'lua.caches': 'luaCaches',\n 'overhead.total': 'overheadTotal',\n 'keys.count': 'keysCount',\n 'keys.bytes-per-key': 'keysBytesPerKey',\n 'dataset.bytes': 'datasetBytes',\n 'dataset.percentage': 'datasetPercentage',\n 'peak.percentage': 'peakPercentage',\n 'allocator.allocated': 'allocatorAllocated',\n 'allocator.active': 'allocatorActive',\n 'allocator.resident': 'allocatorResident',\n 'allocator-fragmentation.ratio': 'allocatorFragmentationRatio',\n 'allocator-fragmentation.bytes': 'allocatorFragmentationBytes',\n 'allocator-rss.ratio': 'allocatorRssRatio',\n 'allocator-rss.bytes': 'allocatorRssBytes',\n 'rss-overhead.ratio': 'rssOverheadRatio',\n 'rss-overhead.bytes': 'rssOverheadBytes',\n 'fragmentation': 'fragmentation',\n 'fragmentation.bytes': 'fragmentationBytes'\n}, DB_FIELDS_MAPPING = {\n 'overhead.hashtable.main': 'overheadHashtableMain',\n 'overhead.hashtable.expires': 'overheadHashtableExpires'\n};\nfunction transformReply(rawReply) {\n const reply = {\n db: {}\n };\n for (let i = 0; i < rawReply.length; i += 2) {\n const key = rawReply[i];\n if (key.startsWith('db.')) {\n const dbTuples = rawReply[i + 1], db = {};\n for (let j = 0; j < dbTuples.length; j += 2) {\n db[DB_FIELDS_MAPPING[dbTuples[j]]] = dbTuples[j + 1];\n }\n reply.db[key.substring(3)] = db;\n continue;\n }\n reply[FIELDS_MAPPING[key]] = Number(rawReply[i + 1]);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n const args = ['MEMORY', 'USAGE', key];\n if (options?.SAMPLES) {\n args.push('SAMPLES', options.SAMPLES.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return ['MGET', ...keys];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(host, port, key, destinationDb, timeout, options) {\n const args = ['MIGRATE', host, port.toString()], isKeyArray = Array.isArray(key);\n if (isKeyArray) {\n args.push('');\n }\n else {\n args.push(key);\n }\n args.push(destinationDb.toString(), timeout.toString());\n if (options?.COPY) {\n args.push('COPY');\n }\n if (options?.REPLACE) {\n args.push('REPLACE');\n }\n if (options?.AUTH) {\n if (options.AUTH.username) {\n args.push('AUTH2', options.AUTH.username, options.AUTH.password);\n }\n else {\n args.push('AUTH', options.AUTH.password);\n }\n }\n if (isKeyArray) {\n args.push('KEYS', ...key);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['MODULE', 'LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(path, moduleArgs) {\n const args = ['MODULE', 'LOAD', path];\n if (moduleArgs) {\n args.push(...moduleArgs);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name) {\n return ['MODULE', 'UNLOAD', name];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, db) {\n return ['MOVE', key, db.toString()];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toSet) {\n const args = ['MSET'];\n if (Array.isArray(toSet)) {\n args.push(...toSet.flat());\n }\n else {\n for (const key of Object.keys(toSet)) {\n args.push(key, toSet[key]);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toSet) {\n const args = ['MSETNX'];\n if (Array.isArray(toSet)) {\n args.push(...toSet.flat());\n }\n else {\n for (const key of Object.keys(toSet)) {\n args.push(key, toSet[key]);\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'ENCODING', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'FREQ', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'IDLETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['OBJECT', 'REFCOUNT', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['PERSIST', key];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, milliseconds, mode) {\n const args = ['PEXPIRE', key, milliseconds.toString()];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, millisecondsTimestamp, mode) {\n const args = [\n 'PEXPIREAT',\n key,\n (0, generic_transformers_1.transformPXAT)(millisecondsTimestamp)\n ];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['PEXPIRETIME', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFADD', key], element);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFCOUNT'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, source) {\n return (0, generic_transformers_1.pushVerdictArguments)(['PFMERGE', destination], source);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(message) {\n const args = ['PING'];\n if (message) {\n args.push(message);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, milliseconds, value) {\n return [\n 'PSETEX',\n key,\n milliseconds.toString(),\n value\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['PTTL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(channel, message) {\n return ['PUBLISH', channel, message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(pattern) {\n const args = ['PUBSUB', 'CHANNELS'];\n if (pattern) {\n args.push(pattern);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['PUBSUB', 'NUMPAT'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(channels) {\n const args = ['PUBSUB', 'NUMSUB'];\n if (channels)\n return (0, generic_transformers_1.pushVerdictArguments)(args, channels);\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const transformedReply = Object.create(null);\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply[rawReply[i]] = rawReply[i + 1];\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(pattern) {\n const args = ['PUBSUB', 'SHARDCHANNELS'];\n if (pattern)\n args.push(pattern);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['RANDOMKEY'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['READONLY'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['READWRITE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, newKey) {\n return ['RENAME', key, newKey];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, newKey) {\n return ['RENAMENX', key, newKey];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(host, port) {\n return ['REPLICAOF', host, port.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['RESTORE-ASKING'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['ROLE'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n switch (reply[0]) {\n case 'master':\n return {\n role: 'master',\n replicationOffest: reply[1],\n replicas: reply[2].map(([ip, port, replicationOffest]) => ({\n ip,\n port: Number(port),\n replicationOffest: Number(replicationOffest)\n }))\n };\n case 'slave':\n return {\n role: 'slave',\n master: {\n ip: reply[1],\n port: reply[2]\n },\n state: reply[3],\n dataReceived: reply[4]\n };\n case 'sentinel':\n return {\n role: 'sentinel',\n masterNames: reply[1]\n };\n }\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['RPOP', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination) {\n return ['RPOPLPUSH', source, destination];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n return ['RPOP', key, count.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['RPUSH', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, element) {\n return (0, generic_transformers_1.pushVerdictArguments)(['RPUSHX', key], element);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SADD', key], members);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['SAVE'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(cursor, options) {\n const args = (0, generic_transformers_1.pushScanArguments)(['SCAN'], cursor, options);\n if (options?.TYPE) {\n args.push('TYPE', options.TYPE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, keys]) {\n return {\n cursor: Number(cursor),\n keys\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SCARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n return ['SCRIPT', 'DEBUG', mode];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nfunction transformArguments(sha1) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SCRIPT', 'EXISTS'], sha1);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['SCRIPT', 'FLUSH'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['SCRIPT', 'KILL'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(script) {\n return ['SCRIPT', 'LOAD', script];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SDIFF'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SDIFFSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n const args = [\n 'SET',\n key,\n typeof value === 'number' ? value.toString() : value\n ];\n if (options?.EX !== undefined) {\n args.push('EX', options.EX.toString());\n }\n else if (options?.PX !== undefined) {\n args.push('PX', options.PX.toString());\n }\n else if (options?.EXAT !== undefined) {\n args.push('EXAT', options.EXAT.toString());\n }\n else if (options?.PXAT !== undefined) {\n args.push('PXAT', options.PXAT.toString());\n }\n else if (options?.KEEPTTL) {\n args.push('KEEPTTL');\n }\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n if (options?.GET) {\n args.push('GET');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, offset, value) {\n return ['SETBIT', key, offset.toString(), value.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, seconds, value) {\n return [\n 'SETEX',\n key,\n seconds.toString(),\n value\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value) {\n return ['SETNX', key, value];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, offset, value) {\n return ['SETRANGE', key, offset.toString(), value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(mode) {\n const args = ['SHUTDOWN'];\n if (mode) {\n args.push(mode);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SINTER'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, limit) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['SINTERCARD'], keys);\n if (limit) {\n args.push('LIMIT', limit.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SINTERSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, member) {\n return ['SISMEMBER', key, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SMEMBERS', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return ['SMISMEMBER', key, ...members];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, member) {\n return ['SMOVE', source, destination, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n return (0, generic_transformers_1.pushSortArguments)(['SORT', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n return (0, generic_transformers_1.pushSortArguments)(['SORT_RO', key], options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst SORT_1 = require(\"./SORT\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(source, destination, options) {\n const args = (0, SORT_1.transformArguments)(source, options);\n args.push('STORE', destination);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, count) {\n const args = ['SPOP', key];\n if (typeof count === 'number') {\n args.push(count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(channel, message) {\n return ['SPUBLISH', channel, message];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['SRANDMEMBER', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst SRANDMEMBER_1 = require(\"./SRANDMEMBER\");\nvar SRANDMEMBER_2 = require(\"./SRANDMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return SRANDMEMBER_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, SRANDMEMBER_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SREM', key], members);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'SSCAN',\n key,\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, members]) {\n return {\n cursor: Number(cursor),\n members\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['STRLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SUNION'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArguments)(['SUNIONSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index1, index2) {\n return ['SWAPDB', index1.toString(), index2.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments() {\n return ['TIME'];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n const seconds = Number(reply[0]), microseconds = Number(reply[1]), d = new Date(seconds * 1000 + microseconds / 1000);\n d.microseconds = microseconds;\n return d;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TOUCH'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TTL', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TYPE', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['UNLINK'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['UNWATCH'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(numberOfReplicas, timeout) {\n return ['WAIT', numberOfReplicas.toString(), timeout.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return (0, generic_transformers_1.pushVerdictArguments)(['WATCH'], key);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, id) {\n return (0, generic_transformers_1.pushVerdictArguments)(['XACK', key, group], id);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, id, message, options) {\n const args = ['XADD', key];\n if (options?.NOMKSTREAM) {\n args.push('NOMKSTREAM');\n }\n if (options?.TRIM) {\n if (options.TRIM.strategy) {\n args.push(options.TRIM.strategy);\n }\n if (options.TRIM.strategyModifier) {\n args.push(options.TRIM.strategyModifier);\n }\n args.push(options.TRIM.threshold.toString());\n if (options.TRIM.limit) {\n args.push('LIMIT', options.TRIM.limit.toString());\n }\n }\n args.push(id);\n for (const [key, value] of Object.entries(message)) {\n args.push(key, value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, consumer, minIdleTime, start, options) {\n const args = ['XAUTOCLAIM', key, group, consumer, minIdleTime.toString(), start];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n nextId: reply[0],\n messages: (0, generic_transformers_1.transformStreamMessagesReply)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst XAUTOCLAIM_1 = require(\"./XAUTOCLAIM\");\nvar XAUTOCLAIM_2 = require(\"./XAUTOCLAIM\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return XAUTOCLAIM_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(...args) {\n return [\n ...(0, XAUTOCLAIM_1.transformArguments)(...args),\n 'JUSTID'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n nextId: reply[0],\n messages: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, group, consumer, minIdleTime, id, options) {\n const args = (0, generic_transformers_1.pushVerdictArguments)(['XCLAIM', key, group, consumer, minIdleTime.toString()], id);\n if (options?.IDLE) {\n args.push('IDLE', options.IDLE.toString());\n }\n if (options?.TIME) {\n args.push('TIME', (typeof options.TIME === 'number' ? options.TIME : options.TIME.getTime()).toString());\n }\n if (options?.RETRYCOUNT) {\n args.push('RETRYCOUNT', options.RETRYCOUNT.toString());\n }\n if (options?.FORCE) {\n args.push('FORCE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst XCLAIM_1 = require(\"./XCLAIM\");\nvar XCLAIM_2 = require(\"./XCLAIM\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return XCLAIM_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(...args) {\n return [\n ...(0, XCLAIM_1.transformArguments)(...args),\n 'JUSTID'\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, id) {\n return (0, generic_transformers_1.pushVerdictArguments)(['XDEL', key], id);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, id, options) {\n const args = ['XGROUP', 'CREATE', key, group, id];\n if (options?.MKSTREAM) {\n args.push('MKSTREAM');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, consumer) {\n return ['XGROUP', 'CREATECONSUMER', key, group, consumer];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, consumer) {\n return ['XGROUP', 'DELCONSUMER', key, group, consumer];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group) {\n return ['XGROUP', 'DESTROY', key, group];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, group, id) {\n return ['XGROUP', 'SETID', key, group, id];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group) {\n return ['XINFO', 'CONSUMERS', key, group];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return rawReply.map(consumer => ({\n name: consumer[1],\n pending: consumer[3],\n idle: consumer[5]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XINFO', 'GROUPS', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return rawReply.map(group => ({\n name: group[1],\n consumers: group[3],\n pending: group[5],\n lastDeliveredId: group[7]\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XINFO', 'STREAM', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const parsedReply = {};\n for (let i = 0; i < rawReply.length; i += 2) {\n switch (rawReply[i]) {\n case 'length':\n parsedReply.length = rawReply[i + 1];\n break;\n case 'radix-tree-keys':\n parsedReply.radixTreeKeys = rawReply[i + 1];\n break;\n case 'radix-tree-nodes':\n parsedReply.radixTreeNodes = rawReply[i + 1];\n break;\n case 'groups':\n parsedReply.groups = rawReply[i + 1];\n break;\n case 'last-generated-id':\n parsedReply.lastGeneratedId = rawReply[i + 1];\n break;\n case 'first-entry':\n parsedReply.firstEntry = rawReply[i + 1] ? {\n id: rawReply[i + 1][0],\n message: (0, generic_transformers_1.transformTuplesReply)(rawReply[i + 1][1])\n } : null;\n break;\n case 'last-entry':\n parsedReply.lastEntry = rawReply[i + 1] ? {\n id: rawReply[i + 1][0],\n message: (0, generic_transformers_1.transformTuplesReply)(rawReply[i + 1][1])\n } : null;\n break;\n }\n }\n return parsedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['XLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group) {\n return ['XPENDING', key, group];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n pending: reply[0],\n firstId: reply[1],\n lastId: reply[2],\n consumers: reply[3] === null ? null : reply[3].map(([name, deliveriesCounter]) => ({\n name,\n deliveriesCounter: Number(deliveriesCounter)\n }))\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, group, start, end, count, options) {\n const args = ['XPENDING', key, group];\n if (options?.IDLE) {\n args.push('IDLE', options.IDLE.toString());\n }\n args.push(start, end, count.toString());\n if (options?.consumer) {\n args.push(options.consumer);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([id, owner, millisecondsSinceLastDelivery, deliveriesCounter]) => ({\n id,\n owner,\n millisecondsSinceLastDelivery,\n deliveriesCounter\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end, options) {\n const args = ['XRANGE', key, start, end];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst FIRST_KEY_INDEX = (streams) => {\n return Array.isArray(streams) ? streams[0].key : streams.key;\n};\nexports.FIRST_KEY_INDEX = FIRST_KEY_INDEX;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(streams, options) {\n const args = ['XREAD'];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (typeof options?.BLOCK === 'number') {\n args.push('BLOCK', options.BLOCK.toString());\n }\n args.push('STREAMS');\n const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length;\n for (let i = 0; i < streamsArray.length; i++) {\n const stream = streamsArray[i];\n args[argsLength + i] = stream.key;\n args[argsLength + streamsArray.length + i] = stream.id;\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamsMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst FIRST_KEY_INDEX = (_group, _consumer, streams) => {\n return Array.isArray(streams) ? streams[0].key : streams.key;\n};\nexports.FIRST_KEY_INDEX = FIRST_KEY_INDEX;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(group, consumer, streams, options) {\n const args = ['XREADGROUP', 'GROUP', group, consumer];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (typeof options?.BLOCK === 'number') {\n args.push('BLOCK', options.BLOCK.toString());\n }\n if (options?.NOACK) {\n args.push('NOACK');\n }\n args.push('STREAMS');\n const streamsArray = Array.isArray(streams) ? streams : [streams], argsLength = args.length;\n for (let i = 0; i < streamsArray.length; i++) {\n const stream = streamsArray[i];\n args[argsLength + i] = stream.key;\n args[argsLength + streamsArray.length + i] = stream.id;\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamsMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, start, end, options) {\n const args = ['XREVRANGE', key, start, end];\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformStreamMessagesReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, lastId, options) {\n const args = ['XSETID', key, lastId];\n if (options?.ENTRIESADDED) {\n args.push('ENTRIESADDED', options.ENTRIESADDED.toString());\n }\n if (options?.MAXDELETEDID) {\n args.push('MAXDELETEDID', options.MAXDELETEDID);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, strategy, threshold, options) {\n const args = ['XTRIM', key, strategy];\n if (options?.strategyModifier) {\n args.push(options.strategyModifier);\n }\n args.push(threshold.toString());\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, members, options) {\n const args = ['ZADD', key];\n if (options?.NX) {\n args.push('NX');\n }\n else {\n if (options?.XX) {\n args.push('XX');\n }\n if (options?.GT) {\n args.push('GT');\n }\n else if (options?.LT) {\n args.push('LT');\n }\n }\n if (options?.CH) {\n args.push('CH');\n }\n if (options?.INCR) {\n args.push('INCR');\n }\n for (const { score, value } of (Array.isArray(members) ? members : [members])) {\n args.push((0, generic_transformers_1.transformNumberInfinityArgument)(score), value);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['ZCARD', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max) {\n return [\n 'ZCOUNT',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys) {\n return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFF'], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys) {\n return (0, generic_transformers_1.pushVerdictArgument)(['ZDIFFSTORE', destination], keys);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZDIFF_1 = require(\"./ZDIFF\");\nvar ZDIFF_2 = require(\"./ZDIFF\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZDIFF_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZDIFF_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZDIFF_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, increment, member) {\n return [\n 'ZINCRBY',\n key,\n (0, generic_transformers_1.transformNumberInfinityArgument)(increment),\n member\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTER'], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, limit) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTERCARD'], keys);\n if (limit) {\n args.push('LIMIT', limit.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZINTERSTORE', destination], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZINTER_1 = require(\"./ZINTER\");\nvar ZINTER_2 = require(\"./ZINTER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZINTER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZINTER_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZINTER_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max) {\n return [\n 'ZLEXCOUNT',\n key,\n min,\n max\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(keys, side, options) {\n return (0, generic_transformers_1.transformZMPopArguments)(['ZMPOP'], keys, side, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply === null ? null : {\n key: reply[0],\n elements: reply[1].map(generic_transformers_1.transformSortedSetMemberReply)\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ZMSCORE', key], member);\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_2 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_2.transformNumberInfinityNullArrayReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return [\n 'ZPOPMAX',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetMemberNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst ZPOPMAX_1 = require(\"./ZPOPMAX\");\nvar ZPOPMAX_2 = require(\"./ZPOPMAX\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZPOPMAX_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZPOPMAX_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return [\n 'ZPOPMIN',\n key\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetMemberNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst ZPOPMIN_1 = require(\"./ZPOPMIN\");\nvar ZPOPMIN_2 = require(\"./ZPOPMIN\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZPOPMIN_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZPOPMIN_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['ZRANDMEMBER', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANDMEMBER_1 = require(\"./ZRANDMEMBER\");\nvar ZRANDMEMBER_2 = require(\"./ZRANDMEMBER\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANDMEMBER_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANDMEMBER_2.IS_READ_ONLY; } });\nfunction transformArguments(key, count) {\n return [\n ...(0, ZRANDMEMBER_1.transformArguments)(key),\n count.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANDMEMBER_COUNT_1 = require(\"./ZRANDMEMBER_COUNT\");\nvar ZRANDMEMBER_COUNT_2 = require(\"./ZRANDMEMBER_COUNT\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANDMEMBER_COUNT_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZRANDMEMBER_COUNT_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n switch (options?.BY) {\n case 'SCORE':\n args.push('BYSCORE');\n break;\n case 'LEX':\n args.push('BYLEX');\n break;\n }\n if (options?.REV) {\n args.push('REV');\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGEBYLEX',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, min, max, options) {\n const args = [\n 'ZRANGEBYSCORE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANGEBYSCORE_1 = require(\"./ZRANGEBYSCORE\");\nvar ZRANGEBYSCORE_2 = require(\"./ZRANGEBYSCORE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANGEBYSCORE_2.IS_READ_ONLY; } });\nfunction transformArguments(key, min, max, options) {\n return [\n ...(0, ZRANGEBYSCORE_1.transformArguments)(key, min, max, options),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(dst, src, min, max, options) {\n const args = [\n 'ZRANGESTORE',\n dst,\n src,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n switch (options?.BY) {\n case 'SCORE':\n args.push('BYSCORE');\n break;\n case 'LEX':\n args.push('BYLEX');\n break;\n }\n if (options?.REV) {\n args.push('REV');\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n if (options?.WITHSCORES) {\n args.push('WITHSCORES');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (typeof reply !== 'number') {\n throw new TypeError(`Upgrade to Redis 6.2.5 and up (https://github.com/redis/redis/pull/9089)`);\n }\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZRANGE_1 = require(\"./ZRANGE\");\nvar ZRANGE_2 = require(\"./ZRANGE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZRANGE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZRANGE_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZRANGE_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZRANK', key, member];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, member) {\n return (0, generic_transformers_1.pushVerdictArguments)(['ZREM', key], member);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, min, max) {\n return [\n 'ZREMRANGEBYLEX',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, start, stop) {\n return ['ZREMRANGEBYRANK', key, start.toString(), stop.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, min, max) {\n return [\n 'ZREMRANGEBYSCORE',\n key,\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(min),\n (0, generic_transformers_1.transformStringNumberInfinityArgument)(max)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZREVRANK', key, member];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, cursor, options) {\n return (0, generic_transformers_1.pushScanArguments)([\n 'ZSCAN',\n key\n ], cursor, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply([cursor, rawMembers]) {\n const parsedMembers = [];\n for (let i = 0; i < rawMembers.length; i += 2) {\n parsedMembers.push({\n value: rawMembers[i],\n score: (0, generic_transformers_1.transformNumberInfinityReply)(rawMembers[i + 1])\n });\n }\n return {\n cursor: Number(cursor),\n members: parsedMembers\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, member) {\n return ['ZSCORE', key, member];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformNumberInfinityNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 2;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNION'], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"./generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(destination, keys, options) {\n const args = (0, generic_transformers_1.pushVerdictArgument)(['ZUNIONSTORE', destination], keys);\n if (options?.WEIGHTS) {\n args.push('WEIGHTS', ...options.WEIGHTS.map(weight => weight.toString()));\n }\n if (options?.AGGREGATE) {\n args.push('AGGREGATE', options.AGGREGATE);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst ZUNION_1 = require(\"./ZUNION\");\nvar ZUNION_2 = require(\"./ZUNION\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return ZUNION_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return ZUNION_2.IS_READ_ONLY; } });\nfunction transformArguments(...args) {\n return [\n ...(0, ZUNION_1.transformArguments)(...args),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"./generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformSortedSetWithScoresReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformRangeReply = exports.pushSlotRangesArguments = exports.pushSortArguments = exports.transformFunctionListItemReply = exports.RedisFunctionFlags = exports.transformCommandReply = exports.CommandCategories = exports.CommandFlags = exports.pushOptionalVerdictArgument = exports.pushVerdictArgument = exports.pushVerdictNumberArguments = exports.pushVerdictArguments = exports.pushEvalArguments = exports.evalFirstKeyIndex = exports.transformPXAT = exports.transformEXAT = exports.transformGeoMembersWithReply = exports.GeoReplyWith = exports.pushGeoRadiusStoreArguments = exports.pushGeoRadiusArguments = exports.pushGeoSearchArguments = exports.pushGeoCountArgument = exports.transformLMPopArguments = exports.transformZMPopArguments = exports.transformSortedSetWithScoresReply = exports.transformSortedSetMemberReply = exports.transformSortedSetMemberNullReply = exports.transformStreamsMessagesReply = exports.transformStreamMessagesReply = exports.transformTuplesReply = exports.transformStringNumberInfinityArgument = exports.transformNumberInfinityArgument = exports.transformNumberInfinityNullArrayReply = exports.transformNumberInfinityNullReply = exports.transformNumberInfinityReply = exports.pushScanArguments = exports.transformBooleanArrayReply = exports.transformBooleanReply = void 0;\nfunction transformBooleanReply(reply) {\n return reply === 1;\n}\nexports.transformBooleanReply = transformBooleanReply;\nfunction transformBooleanArrayReply(reply) {\n return reply.map(transformBooleanReply);\n}\nexports.transformBooleanArrayReply = transformBooleanArrayReply;\nfunction pushScanArguments(args, cursor, options) {\n args.push(cursor.toString());\n if (options?.MATCH) {\n args.push('MATCH', options.MATCH);\n }\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.pushScanArguments = pushScanArguments;\nfunction transformNumberInfinityReply(reply) {\n switch (reply.toString()) {\n case '+inf':\n return Infinity;\n case '-inf':\n return -Infinity;\n default:\n return Number(reply);\n }\n}\nexports.transformNumberInfinityReply = transformNumberInfinityReply;\nfunction transformNumberInfinityNullReply(reply) {\n if (reply === null)\n return null;\n return transformNumberInfinityReply(reply);\n}\nexports.transformNumberInfinityNullReply = transformNumberInfinityNullReply;\nfunction transformNumberInfinityNullArrayReply(reply) {\n return reply.map(transformNumberInfinityNullReply);\n}\nexports.transformNumberInfinityNullArrayReply = transformNumberInfinityNullArrayReply;\nfunction transformNumberInfinityArgument(num) {\n switch (num) {\n case Infinity:\n return '+inf';\n case -Infinity:\n return '-inf';\n default:\n return num.toString();\n }\n}\nexports.transformNumberInfinityArgument = transformNumberInfinityArgument;\nfunction transformStringNumberInfinityArgument(num) {\n if (typeof num !== 'number')\n return num;\n return transformNumberInfinityArgument(num);\n}\nexports.transformStringNumberInfinityArgument = transformStringNumberInfinityArgument;\nfunction transformTuplesReply(reply) {\n const message = Object.create(null);\n for (let i = 0; i < reply.length; i += 2) {\n message[reply[i].toString()] = reply[i + 1];\n }\n return message;\n}\nexports.transformTuplesReply = transformTuplesReply;\nfunction transformStreamMessagesReply(reply) {\n const messages = [];\n for (const [id, message] of reply) {\n messages.push({\n id,\n message: transformTuplesReply(message)\n });\n }\n return messages;\n}\nexports.transformStreamMessagesReply = transformStreamMessagesReply;\nfunction transformStreamsMessagesReply(reply) {\n if (reply === null)\n return null;\n return reply.map(([name, rawMessages]) => ({\n name,\n messages: transformStreamMessagesReply(rawMessages)\n }));\n}\nexports.transformStreamsMessagesReply = transformStreamsMessagesReply;\nfunction transformSortedSetMemberNullReply(reply) {\n if (!reply.length)\n return null;\n return transformSortedSetMemberReply(reply);\n}\nexports.transformSortedSetMemberNullReply = transformSortedSetMemberNullReply;\nfunction transformSortedSetMemberReply(reply) {\n return {\n value: reply[0],\n score: transformNumberInfinityReply(reply[1])\n };\n}\nexports.transformSortedSetMemberReply = transformSortedSetMemberReply;\nfunction transformSortedSetWithScoresReply(reply) {\n const members = [];\n for (let i = 0; i < reply.length; i += 2) {\n members.push({\n value: reply[i],\n score: transformNumberInfinityReply(reply[i + 1])\n });\n }\n return members;\n}\nexports.transformSortedSetWithScoresReply = transformSortedSetWithScoresReply;\nfunction transformZMPopArguments(args, keys, side, options) {\n pushVerdictArgument(args, keys);\n args.push(side);\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformZMPopArguments = transformZMPopArguments;\nfunction transformLMPopArguments(args, keys, side, options) {\n pushVerdictArgument(args, keys);\n args.push(side);\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformLMPopArguments = transformLMPopArguments;\nfunction pushGeoCountArgument(args, count) {\n if (typeof count === 'number') {\n args.push('COUNT', count.toString());\n }\n else if (count) {\n args.push('COUNT', count.value.toString());\n if (count.ANY) {\n args.push('ANY');\n }\n }\n return args;\n}\nexports.pushGeoCountArgument = pushGeoCountArgument;\nfunction pushGeoSearchArguments(args, key, from, by, options) {\n args.push(key);\n if (typeof from === 'string') {\n args.push('FROMMEMBER', from);\n }\n else {\n args.push('FROMLONLAT', from.longitude.toString(), from.latitude.toString());\n }\n if ('radius' in by) {\n args.push('BYRADIUS', by.radius.toString());\n }\n else {\n args.push('BYBOX', by.width.toString(), by.height.toString());\n }\n args.push(by.unit);\n if (options?.SORT) {\n args.push(options.SORT);\n }\n pushGeoCountArgument(args, options?.COUNT);\n return args;\n}\nexports.pushGeoSearchArguments = pushGeoSearchArguments;\nfunction pushGeoRadiusArguments(args, key, from, radius, unit, options) {\n args.push(key);\n if (typeof from === 'string') {\n args.push(from);\n }\n else {\n args.push(from.longitude.toString(), from.latitude.toString());\n }\n args.push(radius.toString(), unit);\n if (options?.SORT) {\n args.push(options.SORT);\n }\n pushGeoCountArgument(args, options?.COUNT);\n return args;\n}\nexports.pushGeoRadiusArguments = pushGeoRadiusArguments;\nfunction pushGeoRadiusStoreArguments(args, key, from, radius, unit, destination, options) {\n pushGeoRadiusArguments(args, key, from, radius, unit, options);\n if (options?.STOREDIST) {\n args.push('STOREDIST', destination);\n }\n else {\n args.push('STORE', destination);\n }\n return args;\n}\nexports.pushGeoRadiusStoreArguments = pushGeoRadiusStoreArguments;\nvar GeoReplyWith;\n(function (GeoReplyWith) {\n GeoReplyWith[\"DISTANCE\"] = \"WITHDIST\";\n GeoReplyWith[\"HASH\"] = \"WITHHASH\";\n GeoReplyWith[\"COORDINATES\"] = \"WITHCOORD\";\n})(GeoReplyWith = exports.GeoReplyWith || (exports.GeoReplyWith = {}));\nfunction transformGeoMembersWithReply(reply, replyWith) {\n const replyWithSet = new Set(replyWith);\n let index = 0;\n const distanceIndex = replyWithSet.has(GeoReplyWith.DISTANCE) && ++index, hashIndex = replyWithSet.has(GeoReplyWith.HASH) && ++index, coordinatesIndex = replyWithSet.has(GeoReplyWith.COORDINATES) && ++index;\n return reply.map(member => {\n const transformedMember = {\n member: member[0]\n };\n if (distanceIndex) {\n transformedMember.distance = member[distanceIndex];\n }\n if (hashIndex) {\n transformedMember.hash = member[hashIndex];\n }\n if (coordinatesIndex) {\n const [longitude, latitude] = member[coordinatesIndex];\n transformedMember.coordinates = {\n longitude,\n latitude\n };\n }\n return transformedMember;\n });\n}\nexports.transformGeoMembersWithReply = transformGeoMembersWithReply;\nfunction transformEXAT(EXAT) {\n return (typeof EXAT === 'number' ? EXAT : Math.floor(EXAT.getTime() / 1000)).toString();\n}\nexports.transformEXAT = transformEXAT;\nfunction transformPXAT(PXAT) {\n return (typeof PXAT === 'number' ? PXAT : PXAT.getTime()).toString();\n}\nexports.transformPXAT = transformPXAT;\nfunction evalFirstKeyIndex(options) {\n return options?.keys?.[0];\n}\nexports.evalFirstKeyIndex = evalFirstKeyIndex;\nfunction pushEvalArguments(args, options) {\n if (options?.keys) {\n args.push(options.keys.length.toString(), ...options.keys);\n }\n else {\n args.push('0');\n }\n if (options?.arguments) {\n args.push(...options.arguments);\n }\n return args;\n}\nexports.pushEvalArguments = pushEvalArguments;\nfunction pushVerdictArguments(args, value) {\n if (Array.isArray(value)) {\n // https://github.com/redis/node-redis/pull/2160\n args = args.concat(value);\n }\n else {\n args.push(value);\n }\n return args;\n}\nexports.pushVerdictArguments = pushVerdictArguments;\nfunction pushVerdictNumberArguments(args, value) {\n if (Array.isArray(value)) {\n for (const item of value) {\n args.push(item.toString());\n }\n }\n else {\n args.push(value.toString());\n }\n return args;\n}\nexports.pushVerdictNumberArguments = pushVerdictNumberArguments;\nfunction pushVerdictArgument(args, value) {\n if (Array.isArray(value)) {\n args.push(value.length.toString(), ...value);\n }\n else {\n args.push('1', value);\n }\n return args;\n}\nexports.pushVerdictArgument = pushVerdictArgument;\nfunction pushOptionalVerdictArgument(args, name, value) {\n if (value === undefined)\n return args;\n args.push(name);\n return pushVerdictArgument(args, value);\n}\nexports.pushOptionalVerdictArgument = pushOptionalVerdictArgument;\nvar CommandFlags;\n(function (CommandFlags) {\n CommandFlags[\"WRITE\"] = \"write\";\n CommandFlags[\"READONLY\"] = \"readonly\";\n CommandFlags[\"DENYOOM\"] = \"denyoom\";\n CommandFlags[\"ADMIN\"] = \"admin\";\n CommandFlags[\"PUBSUB\"] = \"pubsub\";\n CommandFlags[\"NOSCRIPT\"] = \"noscript\";\n CommandFlags[\"RANDOM\"] = \"random\";\n CommandFlags[\"SORT_FOR_SCRIPT\"] = \"sort_for_script\";\n CommandFlags[\"LOADING\"] = \"loading\";\n CommandFlags[\"STALE\"] = \"stale\";\n CommandFlags[\"SKIP_MONITOR\"] = \"skip_monitor\";\n CommandFlags[\"ASKING\"] = \"asking\";\n CommandFlags[\"FAST\"] = \"fast\";\n CommandFlags[\"MOVABLEKEYS\"] = \"movablekeys\"; // keys have no pre-determined position. You must discover keys yourself.\n})(CommandFlags = exports.CommandFlags || (exports.CommandFlags = {}));\nvar CommandCategories;\n(function (CommandCategories) {\n CommandCategories[\"KEYSPACE\"] = \"@keyspace\";\n CommandCategories[\"READ\"] = \"@read\";\n CommandCategories[\"WRITE\"] = \"@write\";\n CommandCategories[\"SET\"] = \"@set\";\n CommandCategories[\"SORTEDSET\"] = \"@sortedset\";\n CommandCategories[\"LIST\"] = \"@list\";\n CommandCategories[\"HASH\"] = \"@hash\";\n CommandCategories[\"STRING\"] = \"@string\";\n CommandCategories[\"BITMAP\"] = \"@bitmap\";\n CommandCategories[\"HYPERLOGLOG\"] = \"@hyperloglog\";\n CommandCategories[\"GEO\"] = \"@geo\";\n CommandCategories[\"STREAM\"] = \"@stream\";\n CommandCategories[\"PUBSUB\"] = \"@pubsub\";\n CommandCategories[\"ADMIN\"] = \"@admin\";\n CommandCategories[\"FAST\"] = \"@fast\";\n CommandCategories[\"SLOW\"] = \"@slow\";\n CommandCategories[\"BLOCKING\"] = \"@blocking\";\n CommandCategories[\"DANGEROUS\"] = \"@dangerous\";\n CommandCategories[\"CONNECTION\"] = \"@connection\";\n CommandCategories[\"TRANSACTION\"] = \"@transaction\";\n CommandCategories[\"SCRIPTING\"] = \"@scripting\";\n})(CommandCategories = exports.CommandCategories || (exports.CommandCategories = {}));\nfunction transformCommandReply([name, arity, flags, firstKeyIndex, lastKeyIndex, step, categories]) {\n return {\n name,\n arity,\n flags: new Set(flags),\n firstKeyIndex,\n lastKeyIndex,\n step,\n categories: new Set(categories)\n };\n}\nexports.transformCommandReply = transformCommandReply;\nvar RedisFunctionFlags;\n(function (RedisFunctionFlags) {\n RedisFunctionFlags[\"NO_WRITES\"] = \"no-writes\";\n RedisFunctionFlags[\"ALLOW_OOM\"] = \"allow-oom\";\n RedisFunctionFlags[\"ALLOW_STALE\"] = \"allow-stale\";\n RedisFunctionFlags[\"NO_CLUSTER\"] = \"no-cluster\";\n})(RedisFunctionFlags = exports.RedisFunctionFlags || (exports.RedisFunctionFlags = {}));\nfunction transformFunctionListItemReply(reply) {\n return {\n libraryName: reply[1],\n engine: reply[3],\n functions: reply[5].map(fn => ({\n name: fn[1],\n description: fn[3],\n flags: fn[5]\n }))\n };\n}\nexports.transformFunctionListItemReply = transformFunctionListItemReply;\nfunction pushSortArguments(args, options) {\n if (options?.BY) {\n args.push('BY', options.BY);\n }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.offset.toString(), options.LIMIT.count.toString());\n }\n if (options?.GET) {\n for (const pattern of (typeof options.GET === 'string' ? [options.GET] : options.GET)) {\n args.push('GET', pattern);\n }\n }\n if (options?.DIRECTION) {\n args.push(options.DIRECTION);\n }\n if (options?.ALPHA) {\n args.push('ALPHA');\n }\n return args;\n}\nexports.pushSortArguments = pushSortArguments;\nfunction pushSlotRangeArguments(args, range) {\n args.push(range.start.toString(), range.end.toString());\n}\nfunction pushSlotRangesArguments(args, ranges) {\n if (Array.isArray(ranges)) {\n for (const range of ranges) {\n pushSlotRangeArguments(args, range);\n }\n }\n else {\n pushSlotRangeArguments(args, ranges);\n }\n return args;\n}\nexports.pushSlotRangesArguments = pushSlotRangesArguments;\nfunction transformRangeReply([start, end]) {\n return {\n start,\n end\n };\n}\nexports.transformRangeReply = transformRangeReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ErrorReply = exports.ReconnectStrategyError = exports.RootNodesUnavailableError = exports.SocketClosedUnexpectedlyError = exports.DisconnectsClientError = exports.ClientOfflineError = exports.ClientClosedError = exports.ConnectionTimeoutError = exports.WatchError = exports.AbortError = void 0;\nclass AbortError extends Error {\n constructor() {\n super('The command was aborted');\n }\n}\nexports.AbortError = AbortError;\nclass WatchError extends Error {\n constructor() {\n super('One (or more) of the watched keys has been changed');\n }\n}\nexports.WatchError = WatchError;\nclass ConnectionTimeoutError extends Error {\n constructor() {\n super('Connection timeout');\n }\n}\nexports.ConnectionTimeoutError = ConnectionTimeoutError;\nclass ClientClosedError extends Error {\n constructor() {\n super('The client is closed');\n }\n}\nexports.ClientClosedError = ClientClosedError;\nclass ClientOfflineError extends Error {\n constructor() {\n super('The client is offline');\n }\n}\nexports.ClientOfflineError = ClientOfflineError;\nclass DisconnectsClientError extends Error {\n constructor() {\n super('Disconnects client');\n }\n}\nexports.DisconnectsClientError = DisconnectsClientError;\nclass SocketClosedUnexpectedlyError extends Error {\n constructor() {\n super('Socket closed unexpectedly');\n }\n}\nexports.SocketClosedUnexpectedlyError = SocketClosedUnexpectedlyError;\nclass RootNodesUnavailableError extends Error {\n constructor() {\n super('All the root nodes are unavailable');\n }\n}\nexports.RootNodesUnavailableError = RootNodesUnavailableError;\nclass ReconnectStrategyError extends Error {\n constructor(originalError, socketError) {\n super(originalError.message);\n Object.defineProperty(this, \"originalError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n Object.defineProperty(this, \"socketError\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: void 0\n });\n this.originalError = originalError;\n this.socketError = socketError;\n }\n}\nexports.ReconnectStrategyError = ReconnectStrategyError;\nclass ErrorReply extends Error {\n constructor(message) {\n super(message);\n this.stack = undefined;\n }\n}\nexports.ErrorReply = ErrorReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scriptSha1 = exports.defineScript = void 0;\nconst crypto_1 = require(\"crypto\");\nfunction defineScript(script) {\n return {\n ...script,\n SHA1: scriptSha1(script.SCRIPT)\n };\n}\nexports.defineScript = defineScript;\nfunction scriptSha1(script) {\n return (0, crypto_1.createHash)('sha1').update(script).digest('hex');\n}\nexports.scriptSha1 = scriptSha1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst commander_1 = require(\"./commander\");\nconst errors_1 = require(\"./errors\");\nclass RedisMultiCommand {\n constructor() {\n Object.defineProperty(this, \"queue\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: []\n });\n Object.defineProperty(this, \"scriptsInUse\", {\n enumerable: true,\n configurable: true,\n writable: true,\n value: new Set()\n });\n }\n static generateChainId() {\n return Symbol('RedisMultiCommand Chain Id');\n }\n addCommand(args, transformReply) {\n this.queue.push({\n args,\n transformReply\n });\n }\n addFunction(name, fn, args) {\n const transformedArguments = (0, commander_1.fCallArguments)(name, fn, fn.transformArguments(...args));\n this.queue.push({\n args: transformedArguments,\n transformReply: fn.transformReply\n });\n return transformedArguments;\n }\n addScript(script, args) {\n const transformedArguments = [];\n if (this.scriptsInUse.has(script.SHA1)) {\n transformedArguments.push('EVALSHA', script.SHA1);\n }\n else {\n this.scriptsInUse.add(script.SHA1);\n transformedArguments.push('EVAL', script.SCRIPT);\n }\n if (script.NUMBER_OF_KEYS !== undefined) {\n transformedArguments.push(script.NUMBER_OF_KEYS.toString());\n }\n const scriptArguments = script.transformArguments(...args);\n transformedArguments.push(...scriptArguments);\n if (scriptArguments.preserve) {\n transformedArguments.preserve = scriptArguments.preserve;\n }\n this.addCommand(transformedArguments, script.transformReply);\n return transformedArguments;\n }\n handleExecReplies(rawReplies) {\n const execReply = rawReplies[rawReplies.length - 1];\n if (execReply === null) {\n throw new errors_1.WatchError();\n }\n return this.transformReplies(execReply);\n }\n transformReplies(rawReplies) {\n return rawReplies.map((reply, i) => {\n const { transformReply, args } = this.queue[i];\n return transformReply ? transformReply(reply, args.preserve) : reply;\n });\n }\n}\nexports.default = RedisMultiCommand;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.promiseTimeout = void 0;\nfunction promiseTimeout(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\nexports.promiseTimeout = promiseTimeout;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(configKey) {\n return ['GRAPH.CONFIG', 'GET', configKey];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(configKey, value) {\n return [\n 'GRAPH.CONFIG',\n 'SET',\n configKey,\n value.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GRAPH.DELETE', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, query) {\n return ['GRAPH.EXPLAIN', key, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments() {\n return ['GRAPH.LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, query) {\n return ['GRAPH.PROFILE', key, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(graph, query, options, compact) {\n return (0, _1.pushQueryArguments)(['GRAPH.QUERY'], graph, query, options, compact);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.length === 1 ? {\n headers: undefined,\n data: undefined,\n metadata: reply[0]\n } : {\n headers: reply[0],\n data: reply[1],\n metadata: reply[2]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nvar QUERY_1 = require(\"./QUERY\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return QUERY_1.FIRST_KEY_INDEX; } });\nexports.IS_READ_ONLY = true;\nfunction transformArguments(graph, query, options, compact) {\n return (0, _1.pushQueryArguments)(['GRAPH.RO_QUERY'], graph, query, options, compact);\n}\nexports.transformArguments = transformArguments;\nvar QUERY_2 = require(\"./QUERY\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return QUERY_2.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key) {\n return ['GRAPH.SLOWLOG', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(logs) {\n return logs.map(([timestamp, command, query, took]) => ({\n timestamp: new Date(Number(timestamp) * 1000),\n command,\n query,\n took: Number(took)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushQueryArguments = void 0;\nconst CONFIG_GET = require(\"./CONFIG_GET\");\nconst CONFIG_SET = require(\"./CONFIG_SET\");\n;\nconst DELETE = require(\"./DELETE\");\nconst EXPLAIN = require(\"./EXPLAIN\");\nconst LIST = require(\"./LIST\");\nconst PROFILE = require(\"./PROFILE\");\nconst QUERY = require(\"./QUERY\");\nconst RO_QUERY = require(\"./RO_QUERY\");\nconst SLOWLOG = require(\"./SLOWLOG\");\nexports.default = {\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_SET,\n configSet: CONFIG_SET,\n DELETE,\n delete: DELETE,\n EXPLAIN,\n explain: EXPLAIN,\n LIST,\n list: LIST,\n PROFILE,\n profile: PROFILE,\n QUERY,\n query: QUERY,\n RO_QUERY,\n roQuery: RO_QUERY,\n SLOWLOG,\n slowLog: SLOWLOG\n};\nfunction pushQueryArguments(args, graph, query, options, compact) {\n args.push(graph);\n if (typeof options === 'number') {\n args.push(query);\n pushTimeout(args, options);\n }\n else {\n args.push(options?.params ?\n `CYPHER ${queryParamsToString(options.params)} ${query}` :\n query);\n if (options?.TIMEOUT !== undefined) {\n pushTimeout(args, options.TIMEOUT);\n }\n }\n if (compact) {\n args.push('--compact');\n }\n return args;\n}\nexports.pushQueryArguments = pushQueryArguments;\nfunction pushTimeout(args, timeout) {\n args.push('TIMEOUT', timeout.toString());\n}\nfunction queryParamsToString(params) {\n const parts = [];\n for (const [key, value] of Object.entries(params)) {\n parts.push(`${key}=${queryParamToString(value)}`);\n }\n return parts.join(' ');\n}\nfunction queryParamToString(param) {\n if (param === null) {\n return 'null';\n }\n switch (typeof param) {\n case 'string':\n return `\"${param.replace(/[\"\\\\]/g, '\\\\$&')}\"`;\n case 'number':\n case 'boolean':\n return param.toString();\n }\n if (Array.isArray(param)) {\n return `[${param.map(queryParamToString).join(',')}]`;\n }\n else if (typeof param === 'object') {\n const body = [];\n for (const [key, value] of Object.entries(param)) {\n body.push(`${key}:${queryParamToString(value)}`);\n }\n return `{${body.join(',')}}`;\n }\n else {\n throw new TypeError(`Unexpected param type ${typeof param} ${param}`);\n }\n}\n","\"use strict\";\nvar __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n};\nvar __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n};\nvar _Graph_instances, _Graph_client, _Graph_name, _Graph_metadata, _Graph_setMetadataPromise, _Graph_updateMetadata, _Graph_setMetadata, _Graph_cleanMetadataArray, _Graph_getMetadata, _Graph_getMetadataAsync, _Graph_parseReply, _Graph_parseValue, _Graph_parseEdge, _Graph_parseNode, _Graph_parseProperties;\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/RedisGraph/RedisGraph/blob/master/src/resultset/formatters/resultset_formatter.h#L20\nvar GraphValueTypes;\n(function (GraphValueTypes) {\n GraphValueTypes[GraphValueTypes[\"UNKNOWN\"] = 0] = \"UNKNOWN\";\n GraphValueTypes[GraphValueTypes[\"NULL\"] = 1] = \"NULL\";\n GraphValueTypes[GraphValueTypes[\"STRING\"] = 2] = \"STRING\";\n GraphValueTypes[GraphValueTypes[\"INTEGER\"] = 3] = \"INTEGER\";\n GraphValueTypes[GraphValueTypes[\"BOOLEAN\"] = 4] = \"BOOLEAN\";\n GraphValueTypes[GraphValueTypes[\"DOUBLE\"] = 5] = \"DOUBLE\";\n GraphValueTypes[GraphValueTypes[\"ARRAY\"] = 6] = \"ARRAY\";\n GraphValueTypes[GraphValueTypes[\"EDGE\"] = 7] = \"EDGE\";\n GraphValueTypes[GraphValueTypes[\"NODE\"] = 8] = \"NODE\";\n GraphValueTypes[GraphValueTypes[\"PATH\"] = 9] = \"PATH\";\n GraphValueTypes[GraphValueTypes[\"MAP\"] = 10] = \"MAP\";\n GraphValueTypes[GraphValueTypes[\"POINT\"] = 11] = \"POINT\";\n})(GraphValueTypes || (GraphValueTypes = {}));\nclass Graph {\n constructor(client, name) {\n _Graph_instances.add(this);\n _Graph_client.set(this, void 0);\n _Graph_name.set(this, void 0);\n _Graph_metadata.set(this, void 0);\n _Graph_setMetadataPromise.set(this, void 0);\n __classPrivateFieldSet(this, _Graph_client, client, \"f\");\n __classPrivateFieldSet(this, _Graph_name, name, \"f\");\n }\n async query(query, options) {\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseReply).call(this, await __classPrivateFieldGet(this, _Graph_client, \"f\").graph.query(__classPrivateFieldGet(this, _Graph_name, \"f\"), query, options, true));\n }\n async roQuery(query, options) {\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseReply).call(this, await __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), query, options, true));\n }\n}\nexports.default = Graph;\n_Graph_client = new WeakMap(), _Graph_name = new WeakMap(), _Graph_metadata = new WeakMap(), _Graph_setMetadataPromise = new WeakMap(), _Graph_instances = new WeakSet(), _Graph_updateMetadata = function _Graph_updateMetadata() {\n __classPrivateFieldSet(this, _Graph_setMetadataPromise, __classPrivateFieldGet(this, _Graph_setMetadataPromise, \"f\") ?? __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_setMetadata).call(this)\n .finally(() => __classPrivateFieldSet(this, _Graph_setMetadataPromise, undefined, \"f\")), \"f\");\n return __classPrivateFieldGet(this, _Graph_setMetadataPromise, \"f\");\n}, _Graph_setMetadata = \n// DO NOT use directly, use #updateMetadata instead\nasync function _Graph_setMetadata() {\n const [labels, relationshipTypes, propertyKeys] = await Promise.all([\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.labels()'),\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.relationshipTypes()'),\n __classPrivateFieldGet(this, _Graph_client, \"f\").graph.roQuery(__classPrivateFieldGet(this, _Graph_name, \"f\"), 'CALL db.propertyKeys()')\n ]);\n __classPrivateFieldSet(this, _Graph_metadata, {\n labels: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, labels.data),\n relationshipTypes: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, relationshipTypes.data),\n propertyKeys: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_cleanMetadataArray).call(this, propertyKeys.data)\n }, \"f\");\n return __classPrivateFieldGet(this, _Graph_metadata, \"f\");\n}, _Graph_cleanMetadataArray = function _Graph_cleanMetadataArray(arr) {\n return arr.map(([value]) => value);\n}, _Graph_getMetadata = function _Graph_getMetadata(key, id) {\n return __classPrivateFieldGet(this, _Graph_metadata, \"f\")?.[key][id] ?? __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadataAsync).call(this, key, id);\n}, _Graph_getMetadataAsync = \n// DO NOT use directly, use #getMetadata instead\nasync function _Graph_getMetadataAsync(key, id) {\n const value = (await __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_updateMetadata).call(this))[key][id];\n if (value === undefined)\n throw new Error(`Cannot find value from ${key}[${id}]`);\n return value;\n}, _Graph_parseReply = async function _Graph_parseReply(reply) {\n if (!reply.data)\n return reply;\n const promises = [], parsed = {\n metadata: reply.metadata,\n data: reply.data.map((row) => {\n const data = {};\n for (let i = 0; i < row.length; i++) {\n data[reply.headers[i][1]] = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, row[i], promises);\n }\n return data;\n })\n };\n if (promises.length)\n await Promise.all(promises);\n return parsed;\n}, _Graph_parseValue = function _Graph_parseValue([valueType, value], promises) {\n switch (valueType) {\n case GraphValueTypes.NULL:\n return null;\n case GraphValueTypes.STRING:\n case GraphValueTypes.INTEGER:\n return value;\n case GraphValueTypes.BOOLEAN:\n return value === 'true';\n case GraphValueTypes.DOUBLE:\n return parseFloat(value);\n case GraphValueTypes.ARRAY:\n return value.map(x => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, x, promises));\n case GraphValueTypes.EDGE:\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseEdge).call(this, value, promises);\n case GraphValueTypes.NODE:\n return __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseNode).call(this, value, promises);\n case GraphValueTypes.PATH:\n return {\n nodes: value[0][1].map(([, node]) => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseNode).call(this, node, promises)),\n edges: value[1][1].map(([, edge]) => __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseEdge).call(this, edge, promises))\n };\n case GraphValueTypes.MAP:\n const map = {};\n for (let i = 0; i < value.length; i++) {\n map[value[i++]] = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, value[i], promises);\n }\n return map;\n case GraphValueTypes.POINT:\n return {\n latitude: parseFloat(value[0]),\n longitude: parseFloat(value[1])\n };\n default:\n throw new Error(`unknown scalar type: ${valueType}`);\n }\n}, _Graph_parseEdge = function _Graph_parseEdge([id, relationshipTypeId, sourceId, destinationId, properties], promises) {\n const edge = {\n id,\n sourceId,\n destinationId,\n properties: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseProperties).call(this, properties, promises)\n };\n const relationshipType = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'relationshipTypes', relationshipTypeId);\n if (relationshipType instanceof Promise) {\n promises.push(relationshipType.then(value => edge.relationshipType = value));\n }\n else {\n edge.relationshipType = relationshipType;\n }\n return edge;\n}, _Graph_parseNode = function _Graph_parseNode([id, labelIds, properties], promises) {\n const labels = new Array(labelIds.length);\n for (let i = 0; i < labelIds.length; i++) {\n const value = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'labels', labelIds[i]);\n if (value instanceof Promise) {\n promises.push(value.then(value => labels[i] = value));\n }\n else {\n labels[i] = value;\n }\n }\n return {\n id,\n labels,\n properties: __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseProperties).call(this, properties, promises)\n };\n}, _Graph_parseProperties = function _Graph_parseProperties(raw, promises) {\n const parsed = {};\n for (const [id, type, value] of raw) {\n const parsedValue = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_parseValue).call(this, [type, value], promises), key = __classPrivateFieldGet(this, _Graph_instances, \"m\", _Graph_getMetadata).call(this, 'propertyKeys', id);\n if (key instanceof Promise) {\n promises.push(key.then(key => parsed[key] = parsedValue));\n }\n else {\n parsed[key] = parsedValue;\n }\n }\n return parsed;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Graph = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar graph_1 = require(\"./graph\");\nObject.defineProperty(exports, \"Graph\", { enumerable: true, get: function () { return graph_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, ...jsons) {\n const args = ['JSON.ARRAPPEND', key, path];\n for (const json of jsons) {\n args.push((0, _1.transformRedisJsonArgument)(json));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path, json, start, stop) {\n const args = ['JSON.ARRINDEX', key, path, (0, _1.transformRedisJsonArgument)(json)];\n if (start !== undefined && start !== null) {\n args.push(start.toString());\n if (stop !== undefined && stop !== null) {\n args.push(stop.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, index, ...jsons) {\n const args = ['JSON.ARRINSERT', key, path, index.toString()];\n for (const json of jsons) {\n args.push((0, _1.transformRedisJsonArgument)(json));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path) {\n const args = ['JSON.ARRLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, index) {\n const args = ['JSON.ARRPOP', key];\n if (path) {\n args.push(path);\n if (index !== undefined && index !== null) {\n args.push(index.toString());\n }\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply === null)\n return null;\n if (Array.isArray(reply)) {\n return reply.map(_1.transformRedisJsonNullReply);\n }\n return (0, _1.transformRedisJsonNullReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, start, stop) {\n return ['JSON.ARRTRIM', key, path, start.toString(), stop.toString()];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 2;\nfunction transformArguments(key, path) {\n const args = ['JSON.DEBUG', 'MEMORY', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.DEL', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.FORGET', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n let args = ['JSON.GET', key];\n if (options?.path) {\n args = (0, generic_transformers_1.pushVerdictArguments)(args, options.path);\n }\n if (options?.INDENT) {\n args.push('INDENT', options.INDENT);\n }\n if (options?.NEWLINE) {\n args.push('NEWLINE', options.NEWLINE);\n }\n if (options?.SPACE) {\n args.push('SPACE', options.SPACE);\n }\n if (options?.NOESCAPE) {\n args.push('NOESCAPE');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformRedisJsonNullReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(keys, path) {\n return [\n 'JSON.MGET',\n ...keys,\n path\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(_1.transformRedisJsonNullReply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, by) {\n return ['JSON.NUMINCRBY', key, path, by.toString()];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformNumbersReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, by) {\n return ['JSON.NUMMULTBY', key, path, by.toString()];\n}\nexports.transformArguments = transformArguments;\nvar _1 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _1.transformNumbersReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.OBJKEYS', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.OBJLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.RESP', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path, json, options) {\n const args = ['JSON.SET', key, path, (0, _1.transformRedisJsonArgument)(json)];\n if (options?.NX) {\n args.push('NX');\n }\n else if (options?.XX) {\n args.push('XX');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(...[key, pathOrAppend, append]) {\n const args = ['JSON.STRAPPEND', key];\n if (append !== undefined && append !== null) {\n args.push(pathOrAppend, (0, _1.transformRedisJsonArgument)(append));\n }\n else {\n args.push((0, _1.transformRedisJsonArgument)(pathOrAppend));\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, path) {\n const args = ['JSON.STRLEN', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, path) {\n const args = ['JSON.TYPE', key];\n if (path) {\n args.push(path);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformNumbersReply = exports.transformRedisJsonNullReply = exports.transformRedisJsonReply = exports.transformRedisJsonArgument = void 0;\nconst ARRAPPEND = require(\"./ARRAPPEND\");\nconst ARRINDEX = require(\"./ARRINDEX\");\nconst ARRINSERT = require(\"./ARRINSERT\");\nconst ARRLEN = require(\"./ARRLEN\");\nconst ARRPOP = require(\"./ARRPOP\");\nconst ARRTRIM = require(\"./ARRTRIM\");\nconst DEBUG_MEMORY = require(\"./DEBUG_MEMORY\");\nconst DEL = require(\"./DEL\");\nconst FORGET = require(\"./FORGET\");\nconst GET = require(\"./GET\");\nconst MGET = require(\"./MGET\");\nconst NUMINCRBY = require(\"./NUMINCRBY\");\nconst NUMMULTBY = require(\"./NUMMULTBY\");\nconst OBJKEYS = require(\"./OBJKEYS\");\nconst OBJLEN = require(\"./OBJLEN\");\nconst RESP = require(\"./RESP\");\nconst SET = require(\"./SET\");\nconst STRAPPEND = require(\"./STRAPPEND\");\nconst STRLEN = require(\"./STRLEN\");\nconst TYPE = require(\"./TYPE\");\nexports.default = {\n ARRAPPEND,\n arrAppend: ARRAPPEND,\n ARRINDEX,\n arrIndex: ARRINDEX,\n ARRINSERT,\n arrInsert: ARRINSERT,\n ARRLEN,\n arrLen: ARRLEN,\n ARRPOP,\n arrPop: ARRPOP,\n ARRTRIM,\n arrTrim: ARRTRIM,\n DEBUG_MEMORY,\n debugMemory: DEBUG_MEMORY,\n DEL,\n del: DEL,\n FORGET,\n forget: FORGET,\n GET,\n get: GET,\n MGET,\n mGet: MGET,\n NUMINCRBY,\n numIncrBy: NUMINCRBY,\n NUMMULTBY,\n numMultBy: NUMMULTBY,\n OBJKEYS,\n objKeys: OBJKEYS,\n OBJLEN,\n objLen: OBJLEN,\n RESP,\n resp: RESP,\n SET,\n set: SET,\n STRAPPEND,\n strAppend: STRAPPEND,\n STRLEN,\n strLen: STRLEN,\n TYPE,\n type: TYPE\n};\nfunction transformRedisJsonArgument(json) {\n return JSON.stringify(json);\n}\nexports.transformRedisJsonArgument = transformRedisJsonArgument;\nfunction transformRedisJsonReply(json) {\n return JSON.parse(json);\n}\nexports.transformRedisJsonReply = transformRedisJsonReply;\nfunction transformRedisJsonNullReply(json) {\n if (json === null)\n return null;\n return transformRedisJsonReply(json);\n}\nexports.transformRedisJsonNullReply = transformRedisJsonNullReply;\nfunction transformNumbersReply(reply) {\n return JSON.parse(reply);\n}\nexports.transformNumbersReply = transformNumbersReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.pushAggregatehOptions = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = exports.AggregateGroupByReducers = exports.AggregateSteps = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nvar AggregateSteps;\n(function (AggregateSteps) {\n AggregateSteps[\"GROUPBY\"] = \"GROUPBY\";\n AggregateSteps[\"SORTBY\"] = \"SORTBY\";\n AggregateSteps[\"APPLY\"] = \"APPLY\";\n AggregateSteps[\"LIMIT\"] = \"LIMIT\";\n AggregateSteps[\"FILTER\"] = \"FILTER\";\n})(AggregateSteps = exports.AggregateSteps || (exports.AggregateSteps = {}));\nvar AggregateGroupByReducers;\n(function (AggregateGroupByReducers) {\n AggregateGroupByReducers[\"COUNT\"] = \"COUNT\";\n AggregateGroupByReducers[\"COUNT_DISTINCT\"] = \"COUNT_DISTINCT\";\n AggregateGroupByReducers[\"COUNT_DISTINCTISH\"] = \"COUNT_DISTINCTISH\";\n AggregateGroupByReducers[\"SUM\"] = \"SUM\";\n AggregateGroupByReducers[\"MIN\"] = \"MIN\";\n AggregateGroupByReducers[\"MAX\"] = \"MAX\";\n AggregateGroupByReducers[\"AVG\"] = \"AVG\";\n AggregateGroupByReducers[\"STDDEV\"] = \"STDDEV\";\n AggregateGroupByReducers[\"QUANTILE\"] = \"QUANTILE\";\n AggregateGroupByReducers[\"TOLIST\"] = \"TOLIST\";\n AggregateGroupByReducers[\"TO_LIST\"] = \"TOLIST\";\n AggregateGroupByReducers[\"FIRST_VALUE\"] = \"FIRST_VALUE\";\n AggregateGroupByReducers[\"RANDOM_SAMPLE\"] = \"RANDOM_SAMPLE\";\n})(AggregateGroupByReducers = exports.AggregateGroupByReducers || (exports.AggregateGroupByReducers = {}));\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n return pushAggregatehOptions(['FT.AGGREGATE', index, query], options);\n}\nexports.transformArguments = transformArguments;\nfunction pushAggregatehOptions(args, options) {\n if (options?.VERBATIM) {\n args.push('VERBATIM');\n }\n if (options?.LOAD) {\n args.push('LOAD');\n (0, _1.pushArgumentsWithLength)(args, () => {\n if (Array.isArray(options.LOAD)) {\n for (const load of options.LOAD) {\n pushLoadField(args, load);\n }\n }\n else {\n pushLoadField(args, options.LOAD);\n }\n });\n }\n if (options?.STEPS) {\n for (const step of options.STEPS) {\n switch (step.type) {\n case AggregateSteps.GROUPBY:\n args.push('GROUPBY');\n if (!step.properties) {\n args.push('0');\n }\n else {\n (0, generic_transformers_1.pushVerdictArgument)(args, step.properties);\n }\n if (Array.isArray(step.REDUCE)) {\n for (const reducer of step.REDUCE) {\n pushGroupByReducer(args, reducer);\n }\n }\n else {\n pushGroupByReducer(args, step.REDUCE);\n }\n break;\n case AggregateSteps.SORTBY:\n (0, _1.pushSortByArguments)(args, 'SORTBY', step.BY);\n if (step.MAX) {\n args.push('MAX', step.MAX.toString());\n }\n break;\n case AggregateSteps.APPLY:\n args.push('APPLY', step.expression, 'AS', step.AS);\n break;\n case AggregateSteps.LIMIT:\n args.push('LIMIT', step.from.toString(), step.size.toString());\n break;\n case AggregateSteps.FILTER:\n args.push('FILTER', step.expression);\n break;\n }\n }\n }\n (0, _1.pushParamsArgs)(args, options?.PARAMS);\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.pushAggregatehOptions = pushAggregatehOptions;\nfunction pushLoadField(args, toLoad) {\n if (typeof toLoad === 'string') {\n args.push(toLoad);\n }\n else {\n args.push(toLoad.identifier);\n if (toLoad.AS) {\n args.push('AS', toLoad.AS);\n }\n }\n}\nfunction pushGroupByReducer(args, reducer) {\n args.push('REDUCE', reducer.type);\n switch (reducer.type) {\n case AggregateGroupByReducers.COUNT:\n args.push('0');\n break;\n case AggregateGroupByReducers.COUNT_DISTINCT:\n case AggregateGroupByReducers.COUNT_DISTINCTISH:\n case AggregateGroupByReducers.SUM:\n case AggregateGroupByReducers.MIN:\n case AggregateGroupByReducers.MAX:\n case AggregateGroupByReducers.AVG:\n case AggregateGroupByReducers.STDDEV:\n case AggregateGroupByReducers.TOLIST:\n args.push('1', reducer.property);\n break;\n case AggregateGroupByReducers.QUANTILE:\n args.push('2', reducer.property, reducer.quantile.toString());\n break;\n case AggregateGroupByReducers.FIRST_VALUE: {\n (0, _1.pushArgumentsWithLength)(args, () => {\n args.push(reducer.property);\n if (reducer.BY) {\n args.push('BY');\n if (typeof reducer.BY === 'string') {\n args.push(reducer.BY);\n }\n else {\n args.push(reducer.BY.property);\n if (reducer.BY.direction) {\n args.push(reducer.BY.direction);\n }\n }\n }\n });\n break;\n }\n case AggregateGroupByReducers.RANDOM_SAMPLE:\n args.push('2', reducer.property, reducer.sampleSize.toString());\n break;\n }\n if (reducer.AS) {\n args.push('AS', reducer.AS);\n }\n}\nfunction transformReply(rawReply) {\n const results = [];\n for (let i = 1; i < rawReply.length; i++) {\n results.push((0, generic_transformers_1.transformTuplesReply)(rawReply[i]));\n }\n return {\n total: rawReply[0],\n results\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst AGGREGATE_1 = require(\"./AGGREGATE\");\nvar AGGREGATE_2 = require(\"./AGGREGATE\");\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return AGGREGATE_2.FIRST_KEY_INDEX; } });\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return AGGREGATE_2.IS_READ_ONLY; } });\nfunction transformArguments(index, query, options) {\n const args = (0, AGGREGATE_1.transformArguments)(index, query, options);\n args.push('WITHCURSOR');\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n ...(0, AGGREGATE_1.transformReply)(reply[0]),\n cursor: reply[1]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASADD', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASDEL', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(name, index) {\n return ['FT.ALIASUPDATE', name, index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst _1 = require(\".\");\nfunction transformArguments(index, schema) {\n const args = ['FT.ALTER', index, 'SCHEMA', 'ADD'];\n (0, _1.pushSchema)(args, schema);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(option) {\n return ['FT.CONFIG', 'GET', option];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const transformedReply = Object.create(null);\n for (const [key, value] of rawReply) {\n transformedReply[key] = value;\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(option, value) {\n return ['FT.CONFIG', 'SET', option, value];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nconst _1 = require(\".\");\nfunction transformArguments(index, schema, options) {\n const args = ['FT.CREATE', index];\n if (options?.ON) {\n args.push('ON', options.ON);\n }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'PREFIX', options?.PREFIX);\n if (options?.FILTER) {\n args.push('FILTER', options.FILTER);\n }\n if (options?.LANGUAGE) {\n args.push('LANGUAGE', options.LANGUAGE);\n }\n if (options?.LANGUAGE_FIELD) {\n args.push('LANGUAGE_FIELD', options.LANGUAGE_FIELD);\n }\n if (options?.SCORE) {\n args.push('SCORE', options.SCORE.toString());\n }\n if (options?.SCORE_FIELD) {\n args.push('SCORE_FIELD', options.SCORE_FIELD);\n }\n // if (options?.PAYLOAD_FIELD) {\n // args.push('PAYLOAD_FIELD', options.PAYLOAD_FIELD);\n // }\n if (options?.MAXTEXTFIELDS) {\n args.push('MAXTEXTFIELDS');\n }\n if (options?.TEMPORARY) {\n args.push('TEMPORARY', options.TEMPORARY.toString());\n }\n if (options?.NOOFFSETS) {\n args.push('NOOFFSETS');\n }\n if (options?.NOHL) {\n args.push('NOHL');\n }\n if (options?.NOFIELDS) {\n args.push('NOFIELDS');\n }\n if (options?.NOFREQS) {\n args.push('NOFREQS');\n }\n if (options?.SKIPINITIALSCAN) {\n args.push('SKIPINITIALSCAN');\n }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'STOPWORDS', options?.STOPWORDS);\n args.push('SCHEMA');\n (0, _1.pushSchema)(args, schema);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(index, cursorId) {\n return [\n 'FT.CURSOR',\n 'DEL',\n index,\n cursorId.toString()\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, cursor) {\n return [\n 'FT.CURSOR',\n 'READ',\n index,\n cursor.toString()\n ];\n}\nexports.transformArguments = transformArguments;\nvar AGGREGATE_WITHCURSOR_1 = require(\"./AGGREGATE_WITHCURSOR\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return AGGREGATE_WITHCURSOR_1.transformReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(dictionary, term) {\n return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTADD', dictionary], term);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(dictionary, term) {\n return (0, generic_transformers_1.pushVerdictArguments)(['FT.DICTDEL', dictionary], term);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(dictionary) {\n return ['FT.DICTDUMP', dictionary];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index, options) {\n const args = ['FT.DROPINDEX', index];\n if (options?.DD) {\n args.push('DD');\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n const args = ['FT.EXPLAIN', index, query];\n (0, _1.pushParamsArgs)(args, options?.PARAMS);\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query) {\n return ['FT.EXPLAINCLI', index, query];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(index) {\n return ['FT.INFO', index];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n return {\n indexName: rawReply[1],\n indexOptions: rawReply[3],\n indexDefinition: (0, generic_transformers_1.transformTuplesReply)(rawReply[5]),\n attributes: rawReply[7].map(attribute => (0, generic_transformers_1.transformTuplesReply)(attribute)),\n numDocs: rawReply[9],\n maxDocId: rawReply[11],\n numTerms: rawReply[13],\n numRecords: rawReply[15],\n invertedSzMb: rawReply[17],\n vectorIndexSzMb: rawReply[19],\n totalInvertedIndexBlocks: rawReply[21],\n offsetVectorsSzMb: rawReply[23],\n docTableSizeMb: rawReply[25],\n sortableValuesSizeMb: rawReply[27],\n keyTableSizeMb: rawReply[29],\n recordsPerDocAvg: rawReply[31],\n bytesPerRecordAvg: rawReply[33],\n offsetsPerTermAvg: rawReply[35],\n offsetBitsPerRecordAvg: rawReply[37],\n hashIndexingFailures: rawReply[39],\n indexing: rawReply[41],\n percentIndexed: rawReply[43],\n gcStats: {\n bytesCollected: rawReply[45][1],\n totalMsRun: rawReply[45][3],\n totalCycles: rawReply[45][5],\n averageCycleTimeMs: rawReply[45][7],\n lastRunTimeMs: rawReply[45][9],\n gcNumericTreesMissed: rawReply[45][11],\n gcBlocksDenied: rawReply[45][13]\n },\n cursorStats: {\n globalIdle: rawReply[47][1],\n globalTotal: rawReply[47][3],\n indexCapacity: rawReply[47][5],\n idnexTotal: rawReply[47][7]\n },\n stopWords: rawReply[49]\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst AGGREGATE_1 = require(\"./AGGREGATE\");\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n const args = ['FT.PROFILE', index, 'AGGREGATE'];\n if (options?.LIMITED) {\n args.push('LIMITED');\n }\n args.push('QUERY', query);\n (0, AGGREGATE_1.pushAggregatehOptions)(args, options);\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n results: (0, AGGREGATE_1.transformReply)(reply[0]),\n profile: (0, _1.transformProfile)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SEARCH_1 = require(\"./SEARCH\");\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n let args = ['FT.PROFILE', index, 'SEARCH'];\n if (options?.LIMITED) {\n args.push('LIMITED');\n }\n args.push('QUERY', query);\n return (0, _1.pushSearchOptions)(args, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply, withoutDocuments) {\n return {\n results: (0, SEARCH_1.transformReply)(reply[0], withoutDocuments),\n profile: (0, _1.transformProfile)(reply[1])\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(index, query, options) {\n return (0, _1.pushSearchOptions)(['FT.SEARCH', index, query], options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply, withoutDocuments) {\n const documents = [];\n let i = 1;\n while (i < reply.length) {\n documents.push({\n id: reply[i++],\n value: withoutDocuments ? Object.create(null) : documentValue(reply[i++])\n });\n }\n return {\n total: reply[0],\n documents\n };\n}\nexports.transformReply = transformReply;\nfunction documentValue(tuples) {\n const message = Object.create(null);\n let i = 0;\n while (i < tuples.length) {\n const key = tuples[i++], value = tuples[i++];\n if (key === '$') { // might be a JSON reply\n try {\n Object.assign(message, JSON.parse(value));\n continue;\n }\n catch {\n // set as a regular property if not a valid JSON\n }\n }\n message[key] = value;\n }\n return message;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(index, query, options) {\n const args = ['FT.SPELLCHECK', index, query];\n if (options?.DISTANCE) {\n args.push('DISTANCE', options.DISTANCE.toString());\n }\n if (options?.TERMS) {\n if (Array.isArray(options.TERMS)) {\n for (const term of options.TERMS) {\n pushTerms(args, term);\n }\n }\n else {\n pushTerms(args, options.TERMS);\n }\n }\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction pushTerms(args, { mode, dictionary }) {\n args.push('TERMS', mode, dictionary);\n}\nfunction transformReply(rawReply) {\n return rawReply.map(([, term, suggestions]) => ({\n term,\n suggestions: suggestions.map(([score, suggestion]) => ({\n score: Number(score),\n suggestion\n }))\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(key, string, score, options) {\n const args = ['FT.SUGADD', key, string, score.toString()];\n if (options?.INCR) {\n args.push('INCR');\n }\n if (options?.PAYLOAD) {\n args.push('PAYLOAD', options.PAYLOAD);\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = void 0;\nfunction transformArguments(key, string) {\n return ['FT.SUGDEL', key, string];\n}\nexports.transformArguments = transformArguments;\nvar generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return generic_transformers_1.transformBooleanReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, prefix, options) {\n const args = ['FT.SUGGET', key, prefix];\n if (options?.FUZZY) {\n args.push('FUZZY');\n }\n if (options?.MAX) {\n args.push('MAX', options.MAX.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHPAYLOADS'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply.push({\n suggestion: rawReply[i],\n payload: rawReply[i + 1]\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHSCORES'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 2) {\n transformedReply.push({\n suggestion: rawReply[i],\n score: Number(rawReply[i + 1])\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst SUGGET_1 = require(\"./SUGGET\");\nvar SUGGET_2 = require(\"./SUGGET\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return SUGGET_2.IS_READ_ONLY; } });\nfunction transformArguments(key, prefix, options) {\n return [\n ...(0, SUGGET_1.transformArguments)(key, prefix, options),\n 'WITHSCORES',\n 'WITHPAYLOADS'\n ];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n if (rawReply === null)\n return null;\n const transformedReply = [];\n for (let i = 0; i < rawReply.length; i += 3) {\n transformedReply.push({\n suggestion: rawReply[i],\n score: Number(rawReply[i + 1]),\n payload: rawReply[i + 2]\n });\n }\n return transformedReply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['FT.SUGLEN', key];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index) {\n return ['FT.SYNDUMP', index];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nfunction transformArguments(index, groupId, terms, options) {\n const args = ['FT.SYNUPDATE', index, groupId];\n if (options?.SKIPINITIALSCAN) {\n args.push('SKIPINITIALSCAN');\n }\n return (0, generic_transformers_1.pushVerdictArguments)(args, terms);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments(index, fieldName) {\n return ['FT.TAGVALS', index, fieldName];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = void 0;\nfunction transformArguments() {\n return ['FT._LIST'];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformProfile = exports.pushSearchOptions = exports.pushParamsArgs = exports.pushSchema = exports.VectorAlgorithms = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = exports.pushArgumentsWithLength = exports.pushSortByArguments = exports.pushSortByProperty = exports.RedisSearchLanguages = void 0;\nconst _LIST = require(\"./_LIST\");\nconst ALTER = require(\"./ALTER\");\nconst AGGREGATE_WITHCURSOR = require(\"./AGGREGATE_WITHCURSOR\");\nconst AGGREGATE = require(\"./AGGREGATE\");\nconst ALIASADD = require(\"./ALIASADD\");\nconst ALIASDEL = require(\"./ALIASDEL\");\nconst ALIASUPDATE = require(\"./ALIASUPDATE\");\nconst CONFIG_GET = require(\"./CONFIG_GET\");\nconst CONFIG_SET = require(\"./CONFIG_SET\");\nconst CREATE = require(\"./CREATE\");\nconst CURSOR_DEL = require(\"./CURSOR_DEL\");\nconst CURSOR_READ = require(\"./CURSOR_READ\");\nconst DICTADD = require(\"./DICTADD\");\nconst DICTDEL = require(\"./DICTDEL\");\nconst DICTDUMP = require(\"./DICTDUMP\");\nconst DROPINDEX = require(\"./DROPINDEX\");\nconst EXPLAIN = require(\"./EXPLAIN\");\nconst EXPLAINCLI = require(\"./EXPLAINCLI\");\nconst INFO = require(\"./INFO\");\nconst PROFILESEARCH = require(\"./PROFILE_SEARCH\");\nconst PROFILEAGGREGATE = require(\"./PROFILE_AGGREGATE\");\nconst SEARCH = require(\"./SEARCH\");\nconst SPELLCHECK = require(\"./SPELLCHECK\");\nconst SUGADD = require(\"./SUGADD\");\nconst SUGDEL = require(\"./SUGDEL\");\nconst SUGGET_WITHPAYLOADS = require(\"./SUGGET_WITHPAYLOADS\");\nconst SUGGET_WITHSCORES_WITHPAYLOADS = require(\"./SUGGET_WITHSCORES_WITHPAYLOADS\");\nconst SUGGET_WITHSCORES = require(\"./SUGGET_WITHSCORES\");\nconst SUGGET = require(\"./SUGGET\");\nconst SUGLEN = require(\"./SUGLEN\");\nconst SYNDUMP = require(\"./SYNDUMP\");\nconst SYNUPDATE = require(\"./SYNUPDATE\");\nconst TAGVALS = require(\"./TAGVALS\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n _LIST,\n _list: _LIST,\n ALTER,\n alter: ALTER,\n AGGREGATE_WITHCURSOR,\n aggregateWithCursor: AGGREGATE_WITHCURSOR,\n AGGREGATE,\n aggregate: AGGREGATE,\n ALIASADD,\n aliasAdd: ALIASADD,\n ALIASDEL,\n aliasDel: ALIASDEL,\n ALIASUPDATE,\n aliasUpdate: ALIASUPDATE,\n CONFIG_GET,\n configGet: CONFIG_GET,\n CONFIG_SET,\n configSet: CONFIG_SET,\n CREATE,\n create: CREATE,\n CURSOR_DEL,\n cursorDel: CURSOR_DEL,\n CURSOR_READ,\n cursorRead: CURSOR_READ,\n DICTADD,\n dictAdd: DICTADD,\n DICTDEL,\n dictDel: DICTDEL,\n DICTDUMP,\n dictDump: DICTDUMP,\n DROPINDEX,\n dropIndex: DROPINDEX,\n EXPLAIN,\n explain: EXPLAIN,\n EXPLAINCLI,\n explainCli: EXPLAINCLI,\n INFO,\n info: INFO,\n PROFILESEARCH,\n profileSearch: PROFILESEARCH,\n PROFILEAGGREGATE,\n profileAggregate: PROFILEAGGREGATE,\n SEARCH,\n search: SEARCH,\n SPELLCHECK,\n spellCheck: SPELLCHECK,\n SUGADD,\n sugAdd: SUGADD,\n SUGDEL,\n sugDel: SUGDEL,\n SUGGET_WITHPAYLOADS,\n sugGetWithPayloads: SUGGET_WITHPAYLOADS,\n SUGGET_WITHSCORES_WITHPAYLOADS,\n sugGetWithScoresWithPayloads: SUGGET_WITHSCORES_WITHPAYLOADS,\n SUGGET_WITHSCORES,\n sugGetWithScores: SUGGET_WITHSCORES,\n SUGGET,\n sugGet: SUGGET,\n SUGLEN,\n sugLen: SUGLEN,\n SYNDUMP,\n synDump: SYNDUMP,\n SYNUPDATE,\n synUpdate: SYNUPDATE,\n TAGVALS,\n tagVals: TAGVALS\n};\nvar RedisSearchLanguages;\n(function (RedisSearchLanguages) {\n RedisSearchLanguages[\"ARABIC\"] = \"Arabic\";\n RedisSearchLanguages[\"BASQUE\"] = \"Basque\";\n RedisSearchLanguages[\"CATALANA\"] = \"Catalan\";\n RedisSearchLanguages[\"DANISH\"] = \"Danish\";\n RedisSearchLanguages[\"DUTCH\"] = \"Dutch\";\n RedisSearchLanguages[\"ENGLISH\"] = \"English\";\n RedisSearchLanguages[\"FINNISH\"] = \"Finnish\";\n RedisSearchLanguages[\"FRENCH\"] = \"French\";\n RedisSearchLanguages[\"GERMAN\"] = \"German\";\n RedisSearchLanguages[\"GREEK\"] = \"Greek\";\n RedisSearchLanguages[\"HUNGARIAN\"] = \"Hungarian\";\n RedisSearchLanguages[\"INDONESAIN\"] = \"Indonesian\";\n RedisSearchLanguages[\"IRISH\"] = \"Irish\";\n RedisSearchLanguages[\"ITALIAN\"] = \"Italian\";\n RedisSearchLanguages[\"LITHUANIAN\"] = \"Lithuanian\";\n RedisSearchLanguages[\"NEPALI\"] = \"Nepali\";\n RedisSearchLanguages[\"NORWEIGAN\"] = \"Norwegian\";\n RedisSearchLanguages[\"PORTUGUESE\"] = \"Portuguese\";\n RedisSearchLanguages[\"ROMANIAN\"] = \"Romanian\";\n RedisSearchLanguages[\"RUSSIAN\"] = \"Russian\";\n RedisSearchLanguages[\"SPANISH\"] = \"Spanish\";\n RedisSearchLanguages[\"SWEDISH\"] = \"Swedish\";\n RedisSearchLanguages[\"TAMIL\"] = \"Tamil\";\n RedisSearchLanguages[\"TURKISH\"] = \"Turkish\";\n RedisSearchLanguages[\"CHINESE\"] = \"Chinese\";\n})(RedisSearchLanguages = exports.RedisSearchLanguages || (exports.RedisSearchLanguages = {}));\nfunction pushSortByProperty(args, sortBy) {\n if (typeof sortBy === 'string') {\n args.push(sortBy);\n }\n else {\n args.push(sortBy.BY);\n if (sortBy.DIRECTION) {\n args.push(sortBy.DIRECTION);\n }\n }\n}\nexports.pushSortByProperty = pushSortByProperty;\nfunction pushSortByArguments(args, name, sortBy) {\n const lengthBefore = args.push(name, '' // will be overwritten\n );\n if (Array.isArray(sortBy)) {\n for (const field of sortBy) {\n pushSortByProperty(args, field);\n }\n }\n else {\n pushSortByProperty(args, sortBy);\n }\n args[lengthBefore - 1] = (args.length - lengthBefore).toString();\n return args;\n}\nexports.pushSortByArguments = pushSortByArguments;\nfunction pushArgumentsWithLength(args, fn) {\n const lengthIndex = args.push('') - 1;\n fn(args);\n args[lengthIndex] = (args.length - lengthIndex - 1).toString();\n return args;\n}\nexports.pushArgumentsWithLength = pushArgumentsWithLength;\nvar SchemaFieldTypes;\n(function (SchemaFieldTypes) {\n SchemaFieldTypes[\"TEXT\"] = \"TEXT\";\n SchemaFieldTypes[\"NUMERIC\"] = \"NUMERIC\";\n SchemaFieldTypes[\"GEO\"] = \"GEO\";\n SchemaFieldTypes[\"TAG\"] = \"TAG\";\n SchemaFieldTypes[\"VECTOR\"] = \"VECTOR\";\n})(SchemaFieldTypes = exports.SchemaFieldTypes || (exports.SchemaFieldTypes = {}));\nvar SchemaTextFieldPhonetics;\n(function (SchemaTextFieldPhonetics) {\n SchemaTextFieldPhonetics[\"DM_EN\"] = \"dm:en\";\n SchemaTextFieldPhonetics[\"DM_FR\"] = \"dm:fr\";\n SchemaTextFieldPhonetics[\"FM_PT\"] = \"dm:pt\";\n SchemaTextFieldPhonetics[\"DM_ES\"] = \"dm:es\";\n})(SchemaTextFieldPhonetics = exports.SchemaTextFieldPhonetics || (exports.SchemaTextFieldPhonetics = {}));\nvar VectorAlgorithms;\n(function (VectorAlgorithms) {\n VectorAlgorithms[\"FLAT\"] = \"FLAT\";\n VectorAlgorithms[\"HNSW\"] = \"HNSW\";\n})(VectorAlgorithms = exports.VectorAlgorithms || (exports.VectorAlgorithms = {}));\nfunction pushSchema(args, schema) {\n for (const [field, fieldOptions] of Object.entries(schema)) {\n args.push(field);\n if (typeof fieldOptions === 'string') {\n args.push(fieldOptions);\n continue;\n }\n if (fieldOptions.AS) {\n args.push('AS', fieldOptions.AS);\n }\n args.push(fieldOptions.type);\n switch (fieldOptions.type) {\n case SchemaFieldTypes.TEXT:\n if (fieldOptions.NOSTEM) {\n args.push('NOSTEM');\n }\n if (fieldOptions.WEIGHT) {\n args.push('WEIGHT', fieldOptions.WEIGHT.toString());\n }\n if (fieldOptions.PHONETIC) {\n args.push('PHONETIC', fieldOptions.PHONETIC);\n }\n if (fieldOptions.WITHSUFFIXTRIE) {\n args.push('WITHSUFFIXTRIE');\n }\n break;\n // case SchemaFieldTypes.NUMERIC:\n // case SchemaFieldTypes.GEO:\n // break;\n case SchemaFieldTypes.TAG:\n if (fieldOptions.SEPARATOR) {\n args.push('SEPARATOR', fieldOptions.SEPARATOR);\n }\n if (fieldOptions.CASESENSITIVE) {\n args.push('CASESENSITIVE');\n }\n if (fieldOptions.WITHSUFFIXTRIE) {\n args.push('WITHSUFFIXTRIE');\n }\n break;\n case SchemaFieldTypes.VECTOR:\n args.push(fieldOptions.ALGORITHM);\n pushArgumentsWithLength(args, () => {\n args.push('TYPE', fieldOptions.TYPE, 'DIM', fieldOptions.DIM.toString(), 'DISTANCE_METRIC', fieldOptions.DISTANCE_METRIC);\n if (fieldOptions.INITIAL_CAP) {\n args.push('INITIAL_CAP', fieldOptions.INITIAL_CAP.toString());\n }\n switch (fieldOptions.ALGORITHM) {\n case VectorAlgorithms.FLAT:\n if (fieldOptions.BLOCK_SIZE) {\n args.push('BLOCK_SIZE', fieldOptions.BLOCK_SIZE.toString());\n }\n break;\n case VectorAlgorithms.HNSW:\n if (fieldOptions.M) {\n args.push('M', fieldOptions.M.toString());\n }\n if (fieldOptions.EF_CONSTRUCTION) {\n args.push('EF_CONSTRUCTION', fieldOptions.EF_CONSTRUCTION.toString());\n }\n if (fieldOptions.EF_RUNTIME) {\n args.push('EF_RUNTIME', fieldOptions.EF_RUNTIME.toString());\n }\n break;\n }\n });\n continue; // vector fields do not contain SORTABLE and NOINDEX options\n }\n if (fieldOptions.SORTABLE) {\n args.push('SORTABLE');\n if (fieldOptions.SORTABLE === 'UNF') {\n args.push('UNF');\n }\n }\n if (fieldOptions.NOINDEX) {\n args.push('NOINDEX');\n }\n }\n}\nexports.pushSchema = pushSchema;\nfunction pushParamsArgs(args, params) {\n if (params) {\n const enrties = Object.entries(params);\n args.push('PARAMS', (enrties.length * 2).toString());\n for (const [key, value] of enrties) {\n args.push(key, typeof value === 'number' ? value.toString() : value);\n }\n }\n return args;\n}\nexports.pushParamsArgs = pushParamsArgs;\nfunction pushSearchOptions(args, options) {\n if (options?.VERBATIM) {\n args.push('VERBATIM');\n }\n if (options?.NOSTOPWORDS) {\n args.push('NOSTOPWORDS');\n }\n // if (options?.WITHSCORES) {\n // args.push('WITHSCORES');\n // }\n // if (options?.WITHPAYLOADS) {\n // args.push('WITHPAYLOADS');\n // }\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INKEYS', options?.INKEYS);\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'INFIELDS', options?.INFIELDS);\n (0, generic_transformers_1.pushOptionalVerdictArgument)(args, 'RETURN', options?.RETURN);\n if (options?.SUMMARIZE) {\n args.push('SUMMARIZE');\n if (typeof options.SUMMARIZE === 'object') {\n if (options.SUMMARIZE.FIELDS) {\n args.push('FIELDS');\n (0, generic_transformers_1.pushVerdictArgument)(args, options.SUMMARIZE.FIELDS);\n }\n if (options.SUMMARIZE.FRAGS) {\n args.push('FRAGS', options.SUMMARIZE.FRAGS.toString());\n }\n if (options.SUMMARIZE.LEN) {\n args.push('LEN', options.SUMMARIZE.LEN.toString());\n }\n if (options.SUMMARIZE.SEPARATOR) {\n args.push('SEPARATOR', options.SUMMARIZE.SEPARATOR);\n }\n }\n }\n if (options?.HIGHLIGHT) {\n args.push('HIGHLIGHT');\n if (typeof options.HIGHLIGHT === 'object') {\n if (options.HIGHLIGHT.FIELDS) {\n args.push('FIELDS');\n (0, generic_transformers_1.pushVerdictArgument)(args, options.HIGHLIGHT.FIELDS);\n }\n if (options.HIGHLIGHT.TAGS) {\n args.push('TAGS', options.HIGHLIGHT.TAGS.open, options.HIGHLIGHT.TAGS.close);\n }\n }\n }\n if (options?.SLOP) {\n args.push('SLOP', options.SLOP.toString());\n }\n if (options?.INORDER) {\n args.push('INORDER');\n }\n if (options?.LANGUAGE) {\n args.push('LANGUAGE', options.LANGUAGE);\n }\n if (options?.EXPANDER) {\n args.push('EXPANDER', options.EXPANDER);\n }\n if (options?.SCORER) {\n args.push('SCORER', options.SCORER);\n }\n // if (options?.EXPLAINSCORE) {\n // args.push('EXPLAINSCORE');\n // }\n // if (options?.PAYLOAD) {\n // args.push('PAYLOAD', options.PAYLOAD);\n // }\n if (options?.SORTBY) {\n args.push('SORTBY');\n pushSortByProperty(args, options.SORTBY);\n }\n // if (options?.MSORTBY) {\n // pushSortByArguments(args, 'MSORTBY', options.MSORTBY);\n // }\n if (options?.LIMIT) {\n args.push('LIMIT', options.LIMIT.from.toString(), options.LIMIT.size.toString());\n }\n if (options?.PARAMS) {\n pushParamsArgs(args, options.PARAMS);\n }\n if (options?.DIALECT) {\n args.push('DIALECT', options.DIALECT.toString());\n }\n if (options?.RETURN?.length === 0) {\n args.preserve = true;\n }\n return args;\n}\nexports.pushSearchOptions = pushSearchOptions;\nfunction transformProfile(reply) {\n return {\n totalProfileTime: reply[0][1],\n parsingTime: reply[1][1],\n pipelineCreationTime: reply[2][1],\n iteratorsProfile: transformIterators(reply[3][1])\n };\n}\nexports.transformProfile = transformProfile;\nfunction transformIterators(IteratorsProfile) {\n var res = {};\n for (let i = 0; i < IteratorsProfile.length; i += 2) {\n const value = IteratorsProfile[i + 1];\n switch (IteratorsProfile[i]) {\n case 'Type':\n res.type = value;\n break;\n case 'Counter':\n res.counter = value;\n break;\n case 'Time':\n res.time = value;\n break;\n case 'Query type':\n res.queryType = value;\n break;\n case 'Child iterators':\n res.childIterators = value.map(transformChildIterators);\n break;\n }\n }\n return res;\n}\nfunction transformChildIterators(IteratorsProfile) {\n var res = {};\n for (let i = 1; i < IteratorsProfile.length; i += 2) {\n const value = IteratorsProfile[i + 1];\n switch (IteratorsProfile[i]) {\n case 'Type':\n res.type = value;\n break;\n case 'Counter':\n res.counter = value;\n break;\n case 'Time':\n res.time = value;\n break;\n case 'Size':\n res.size = value;\n break;\n case 'Term':\n res.term = value;\n break;\n case 'Child iterators':\n res.childIterators = value.map(transformChildIterators);\n break;\n }\n }\n return res;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AggregateGroupByReducers = exports.AggregateSteps = exports.VectorAlgorithms = exports.SchemaTextFieldPhonetics = exports.SchemaFieldTypes = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar commands_2 = require(\"./commands\");\nObject.defineProperty(exports, \"SchemaFieldTypes\", { enumerable: true, get: function () { return commands_2.SchemaFieldTypes; } });\nObject.defineProperty(exports, \"SchemaTextFieldPhonetics\", { enumerable: true, get: function () { return commands_2.SchemaTextFieldPhonetics; } });\nObject.defineProperty(exports, \"VectorAlgorithms\", { enumerable: true, get: function () { return commands_2.VectorAlgorithms; } });\nvar AGGREGATE_1 = require(\"./commands/AGGREGATE\");\nObject.defineProperty(exports, \"AggregateSteps\", { enumerable: true, get: function () { return AGGREGATE_1.AggregateSteps; } });\nObject.defineProperty(exports, \"AggregateGroupByReducers\", { enumerable: true, get: function () { return AGGREGATE_1.AggregateGroupByReducers; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, timestamp, value, options) {\n const args = [\n 'TS.ADD',\n key,\n (0, _1.transformTimestampArgument)(timestamp),\n value.toString()\n ];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushEncodingArgument)(args, options?.ENCODING);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n if (options?.ON_DUPLICATE) {\n args.push('ON_DUPLICATE', options.ON_DUPLICATE);\n }\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n const args = ['TS.ALTER', key];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n (0, _1.pushDuplicatePolicy)(args, options?.DUPLICATE_POLICY);\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, options) {\n const args = ['TS.CREATE', key];\n (0, _1.pushRetentionArgument)(args, options?.RETENTION);\n (0, _1.pushEncodingArgument)(args, options?.ENCODING);\n (0, _1.pushChunkSizeArgument)(args, options?.CHUNK_SIZE);\n (0, _1.pushDuplicatePolicy)(args, options?.DUPLICATE_POLICY);\n (0, _1.pushLabelsArgument)(args, options?.LABELS);\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(sourceKey, destinationKey, aggregationType, bucketDuration, alignTimestamp) {\n const args = [\n 'TS.CREATERULE',\n sourceKey,\n destinationKey,\n 'AGGREGATION',\n aggregationType,\n bucketDuration.toString()\n ];\n if (alignTimestamp) {\n args.push(alignTimestamp.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n return (0, _1.transformIncrDecrArguments)('TS.DECRBY', key, value, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRTS_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRTS_KEY_INDEX = 1;\nfunction transformArguments(key, fromTimestamp, toTimestamp) {\n return [\n 'TS.DEL',\n key,\n (0, _1.transformTimestampArgument)(fromTimestamp),\n (0, _1.transformTimestampArgument)(toTimestamp)\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(sourceKey, destinationKey) {\n return [\n 'TS.DELETERULE',\n sourceKey,\n destinationKey\n ];\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, options) {\n return (0, _1.pushLatestArgument)(['TS.GET', key], options?.LATEST);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n if (reply.length === 0)\n return null;\n return (0, _1.transformSampleReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(key, value, options) {\n return (0, _1.transformIncrDecrArguments)('TS.INCRBY', key, value, options);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key) {\n return ['TS.INFO', key];\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return {\n totalSamples: reply[1],\n memoryUsage: reply[3],\n firstTimestamp: reply[5],\n lastTimestamp: reply[7],\n retentionTime: reply[9],\n chunkCount: reply[11],\n chunkSize: reply[13],\n chunkType: reply[15],\n duplicatePolicy: reply[17],\n labels: reply[19].map(([name, value]) => ({\n name,\n value\n })),\n sourceKey: reply[21],\n rules: reply[23].map(([key, timeBucket, aggregationType]) => ({\n key,\n timeBucket,\n aggregationType\n }))\n };\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.FIRST_KEY_INDEX = exports.IS_READ_ONLY = void 0;\nconst INFO_1 = require(\"./INFO\");\nvar INFO_2 = require(\"./INFO\");\nObject.defineProperty(exports, \"IS_READ_ONLY\", { enumerable: true, get: function () { return INFO_2.IS_READ_ONLY; } });\nObject.defineProperty(exports, \"FIRST_KEY_INDEX\", { enumerable: true, get: function () { return INFO_2.FIRST_KEY_INDEX; } });\nfunction transformArguments(key) {\n const args = (0, INFO_1.transformArguments)(key);\n args.push('DEBUG');\n return args;\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(rawReply) {\n const reply = (0, INFO_1.transformReply)(rawReply);\n reply.keySelfName = rawReply[25];\n reply.chunks = rawReply[27].map(chunk => ({\n startTimestamp: chunk[1],\n endTimestamp: chunk[3],\n samples: chunk[5],\n size: chunk[7],\n bytesPerSample: chunk[9]\n }));\n return reply;\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nfunction transformArguments(toAdd) {\n const args = ['TS.MADD'];\n for (const { key, timestamp, value } of toAdd) {\n args.push(key, (0, _1.transformTimestampArgument)(timestamp), value.toString());\n }\n return args;\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter, options) {\n const args = (0, _1.pushLatestArgument)(['TS.MGET'], options?.LATEST);\n return (0, _1.pushFilterArgument)(args, filter);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return reply.map(([key, _, sample]) => ({\n key,\n sample: (0, _1.transformSampleReply)(sample)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter, options) {\n const args = (0, _1.pushWithLabelsArgument)(['TS.MGET'], options?.SELECTED_LABELS);\n return (0, _1.pushFilterArgument)(args, filter);\n}\nexports.transformArguments = transformArguments;\n;\nfunction transformReply(reply) {\n return reply.map(([key, labels, sample]) => ({\n key,\n labels: (0, _1.transformLablesReply)(labels),\n sample: (0, _1.transformSampleReply)(sample)\n }));\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeArguments)(['TS.MRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeWithLabelsArguments)(['TS.MRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeWithLabelsReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeArguments)(['TS.MREVRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst _1 = require(\".\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(fromTimestamp, toTimestamp, filters, options) {\n return (0, _1.pushMRangeWithLabelsArguments)(['TS.MREVRANGE'], fromTimestamp, toTimestamp, filters, options);\n}\nexports.transformArguments = transformArguments;\nvar _2 = require(\".\");\nObject.defineProperty(exports, \"transformReply\", { enumerable: true, get: function () { return _2.transformMRangeWithLabelsReply; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformArguments = exports.IS_READ_ONLY = void 0;\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.IS_READ_ONLY = true;\nfunction transformArguments(filter) {\n return (0, generic_transformers_1.pushVerdictArguments)(['TS.QUERYINDEX'], filter);\n}\nexports.transformArguments = transformArguments;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fromTimestamp, toTimestamp, options) {\n return (0, _1.pushRangeArguments)(['TS.RANGE', key], fromTimestamp, toTimestamp, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return (0, _1.transformRangeReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.transformReply = exports.transformArguments = exports.IS_READ_ONLY = exports.FIRST_KEY_INDEX = void 0;\nconst _1 = require(\".\");\nexports.FIRST_KEY_INDEX = 1;\nexports.IS_READ_ONLY = true;\nfunction transformArguments(key, fromTimestamp, toTimestamp, options) {\n return (0, _1.pushRangeArguments)(['TS.REVRANGE', key], fromTimestamp, toTimestamp, options);\n}\nexports.transformArguments = transformArguments;\nfunction transformReply(reply) {\n return (0, _1.transformRangeReply)(reply);\n}\nexports.transformReply = transformReply;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pushLatestArgument = exports.transformMRangeWithLabelsReply = exports.transformMRangeReply = exports.transformRangeReply = exports.pushMRangeWithLabelsArguments = exports.pushWithLabelsArgument = exports.pushMRangeArguments = exports.pushFilterArgument = exports.pushMRangeGroupByArguments = exports.pushRangeArguments = exports.TimeSeriesBucketTimestamp = exports.transformSampleReply = exports.transformIncrDecrArguments = exports.pushLabelsArgument = exports.transformLablesReply = exports.pushDuplicatePolicy = exports.pushChunkSizeArgument = exports.pushEncodingArgument = exports.TimeSeriesEncoding = exports.pushRetentionArgument = exports.transformTimestampArgument = exports.TimeSeriesReducers = exports.TimeSeriesDuplicatePolicies = exports.TimeSeriesAggregationType = void 0;\nconst ADD = require(\"./ADD\");\nconst ALTER = require(\"./ALTER\");\nconst CREATE = require(\"./CREATE\");\nconst CREATERULE = require(\"./CREATERULE\");\nconst DECRBY = require(\"./DECRBY\");\nconst DEL = require(\"./DEL\");\nconst DELETERULE = require(\"./DELETERULE\");\nconst GET = require(\"./GET\");\nconst INCRBY = require(\"./INCRBY\");\nconst INFO_DEBUG = require(\"./INFO_DEBUG\");\nconst INFO = require(\"./INFO\");\nconst MADD = require(\"./MADD\");\nconst MGET = require(\"./MGET\");\nconst MGET_WITHLABELS = require(\"./MGET_WITHLABELS\");\nconst QUERYINDEX = require(\"./QUERYINDEX\");\nconst RANGE = require(\"./RANGE\");\nconst REVRANGE = require(\"./REVRANGE\");\nconst MRANGE = require(\"./MRANGE\");\nconst MRANGE_WITHLABELS = require(\"./MRANGE_WITHLABELS\");\nconst MREVRANGE = require(\"./MREVRANGE\");\nconst MREVRANGE_WITHLABELS = require(\"./MREVRANGE_WITHLABELS\");\nconst generic_transformers_1 = require(\"@redis/client/dist/lib/commands/generic-transformers\");\nexports.default = {\n ADD,\n add: ADD,\n ALTER,\n alter: ALTER,\n CREATE,\n create: CREATE,\n CREATERULE,\n createRule: CREATERULE,\n DECRBY,\n decrBy: DECRBY,\n DEL,\n del: DEL,\n DELETERULE,\n deleteRule: DELETERULE,\n GET,\n get: GET,\n INCRBY,\n incrBy: INCRBY,\n INFO_DEBUG,\n infoDebug: INFO_DEBUG,\n INFO,\n info: INFO,\n MADD,\n mAdd: MADD,\n MGET,\n mGet: MGET,\n MGET_WITHLABELS,\n mGetWithLabels: MGET_WITHLABELS,\n QUERYINDEX,\n queryIndex: QUERYINDEX,\n RANGE,\n range: RANGE,\n REVRANGE,\n revRange: REVRANGE,\n MRANGE,\n mRange: MRANGE,\n MRANGE_WITHLABELS,\n mRangeWithLabels: MRANGE_WITHLABELS,\n MREVRANGE,\n mRevRange: MREVRANGE,\n MREVRANGE_WITHLABELS,\n mRevRangeWithLabels: MREVRANGE_WITHLABELS\n};\nvar TimeSeriesAggregationType;\n(function (TimeSeriesAggregationType) {\n TimeSeriesAggregationType[\"AVG\"] = \"AVG\";\n // @deprecated\n TimeSeriesAggregationType[\"AVERAGE\"] = \"AVG\";\n TimeSeriesAggregationType[\"FIRST\"] = \"FIRST\";\n TimeSeriesAggregationType[\"LAST\"] = \"LAST\";\n TimeSeriesAggregationType[\"MIN\"] = \"MIN\";\n // @deprecated\n TimeSeriesAggregationType[\"MINIMUM\"] = \"MIN\";\n TimeSeriesAggregationType[\"MAX\"] = \"MAX\";\n // @deprecated\n TimeSeriesAggregationType[\"MAXIMUM\"] = \"MAX\";\n TimeSeriesAggregationType[\"SUM\"] = \"SUM\";\n TimeSeriesAggregationType[\"RANGE\"] = \"RANGE\";\n TimeSeriesAggregationType[\"COUNT\"] = \"COUNT\";\n TimeSeriesAggregationType[\"STD_P\"] = \"STD.P\";\n TimeSeriesAggregationType[\"STD_S\"] = \"STD.S\";\n TimeSeriesAggregationType[\"VAR_P\"] = \"VAR.P\";\n TimeSeriesAggregationType[\"VAR_S\"] = \"VAR.S\";\n TimeSeriesAggregationType[\"TWA\"] = \"TWA\";\n})(TimeSeriesAggregationType = exports.TimeSeriesAggregationType || (exports.TimeSeriesAggregationType = {}));\nvar TimeSeriesDuplicatePolicies;\n(function (TimeSeriesDuplicatePolicies) {\n TimeSeriesDuplicatePolicies[\"BLOCK\"] = \"BLOCK\";\n TimeSeriesDuplicatePolicies[\"FIRST\"] = \"FIRST\";\n TimeSeriesDuplicatePolicies[\"LAST\"] = \"LAST\";\n TimeSeriesDuplicatePolicies[\"MIN\"] = \"MIN\";\n TimeSeriesDuplicatePolicies[\"MAX\"] = \"MAX\";\n TimeSeriesDuplicatePolicies[\"SUM\"] = \"SUM\";\n})(TimeSeriesDuplicatePolicies = exports.TimeSeriesDuplicatePolicies || (exports.TimeSeriesDuplicatePolicies = {}));\nvar TimeSeriesReducers;\n(function (TimeSeriesReducers) {\n TimeSeriesReducers[\"AVG\"] = \"AVG\";\n TimeSeriesReducers[\"SUM\"] = \"SUM\";\n TimeSeriesReducers[\"MIN\"] = \"MIN\";\n // @deprecated\n TimeSeriesReducers[\"MINIMUM\"] = \"MIN\";\n TimeSeriesReducers[\"MAX\"] = \"MAX\";\n // @deprecated\n TimeSeriesReducers[\"MAXIMUM\"] = \"MAX\";\n TimeSeriesReducers[\"RANGE\"] = \"range\";\n TimeSeriesReducers[\"COUNT\"] = \"COUNT\";\n TimeSeriesReducers[\"STD_P\"] = \"STD.P\";\n TimeSeriesReducers[\"STD_S\"] = \"STD.S\";\n TimeSeriesReducers[\"VAR_P\"] = \"VAR.P\";\n TimeSeriesReducers[\"VAR_S\"] = \"VAR.S\";\n})(TimeSeriesReducers = exports.TimeSeriesReducers || (exports.TimeSeriesReducers = {}));\nfunction transformTimestampArgument(timestamp) {\n if (typeof timestamp === 'string')\n return timestamp;\n return (typeof timestamp === 'number' ?\n timestamp :\n timestamp.getTime()).toString();\n}\nexports.transformTimestampArgument = transformTimestampArgument;\nfunction pushRetentionArgument(args, retention) {\n if (retention) {\n args.push('RETENTION', retention.toString());\n }\n return args;\n}\nexports.pushRetentionArgument = pushRetentionArgument;\nvar TimeSeriesEncoding;\n(function (TimeSeriesEncoding) {\n TimeSeriesEncoding[\"COMPRESSED\"] = \"COMPRESSED\";\n TimeSeriesEncoding[\"UNCOMPRESSED\"] = \"UNCOMPRESSED\";\n})(TimeSeriesEncoding = exports.TimeSeriesEncoding || (exports.TimeSeriesEncoding = {}));\nfunction pushEncodingArgument(args, encoding) {\n if (encoding) {\n args.push('ENCODING', encoding);\n }\n return args;\n}\nexports.pushEncodingArgument = pushEncodingArgument;\nfunction pushChunkSizeArgument(args, chunkSize) {\n if (chunkSize) {\n args.push('CHUNK_SIZE', chunkSize.toString());\n }\n return args;\n}\nexports.pushChunkSizeArgument = pushChunkSizeArgument;\nfunction pushDuplicatePolicy(args, duplicatePolicy) {\n if (duplicatePolicy) {\n args.push('DUPLICATE_POLICY', duplicatePolicy);\n }\n return args;\n}\nexports.pushDuplicatePolicy = pushDuplicatePolicy;\nfunction transformLablesReply(reply) {\n const labels = {};\n for (const [key, value] of reply) {\n labels[key] = value;\n }\n return labels;\n}\nexports.transformLablesReply = transformLablesReply;\nfunction pushLabelsArgument(args, labels) {\n if (labels) {\n args.push('LABELS');\n for (const [label, value] of Object.entries(labels)) {\n args.push(label, value);\n }\n }\n return args;\n}\nexports.pushLabelsArgument = pushLabelsArgument;\nfunction transformIncrDecrArguments(command, key, value, options) {\n const args = [\n command,\n key,\n value.toString()\n ];\n if (options?.TIMESTAMP !== undefined && options?.TIMESTAMP !== null) {\n args.push('TIMESTAMP', transformTimestampArgument(options.TIMESTAMP));\n }\n pushRetentionArgument(args, options?.RETENTION);\n if (options?.UNCOMPRESSED) {\n args.push('UNCOMPRESSED');\n }\n pushChunkSizeArgument(args, options?.CHUNK_SIZE);\n pushLabelsArgument(args, options?.LABELS);\n return args;\n}\nexports.transformIncrDecrArguments = transformIncrDecrArguments;\nfunction transformSampleReply(reply) {\n return {\n timestamp: reply[0],\n value: Number(reply[1])\n };\n}\nexports.transformSampleReply = transformSampleReply;\nvar TimeSeriesBucketTimestamp;\n(function (TimeSeriesBucketTimestamp) {\n TimeSeriesBucketTimestamp[\"LOW\"] = \"-\";\n TimeSeriesBucketTimestamp[\"HIGH\"] = \"+\";\n TimeSeriesBucketTimestamp[\"MID\"] = \"~\";\n})(TimeSeriesBucketTimestamp = exports.TimeSeriesBucketTimestamp || (exports.TimeSeriesBucketTimestamp = {}));\nfunction pushRangeArguments(args, fromTimestamp, toTimestamp, options) {\n args.push(transformTimestampArgument(fromTimestamp), transformTimestampArgument(toTimestamp));\n pushLatestArgument(args, options?.LATEST);\n if (options?.FILTER_BY_TS) {\n args.push('FILTER_BY_TS');\n for (const ts of options.FILTER_BY_TS) {\n args.push(transformTimestampArgument(ts));\n }\n }\n if (options?.FILTER_BY_VALUE) {\n args.push('FILTER_BY_VALUE', options.FILTER_BY_VALUE.min.toString(), options.FILTER_BY_VALUE.max.toString());\n }\n if (options?.COUNT) {\n args.push('COUNT', options.COUNT.toString());\n }\n if (options?.ALIGN) {\n args.push('ALIGN', transformTimestampArgument(options.ALIGN));\n }\n if (options?.AGGREGATION) {\n args.push('AGGREGATION', options.AGGREGATION.type, transformTimestampArgument(options.AGGREGATION.timeBucket));\n if (options.AGGREGATION.BUCKETTIMESTAMP) {\n args.push('BUCKETTIMESTAMP', options.AGGREGATION.BUCKETTIMESTAMP);\n }\n if (options.AGGREGATION.EMPTY) {\n args.push('EMPTY');\n }\n }\n return args;\n}\nexports.pushRangeArguments = pushRangeArguments;\nfunction pushMRangeGroupByArguments(args, groupBy) {\n if (groupBy) {\n args.push('GROUPBY', groupBy.label, 'REDUCE', groupBy.reducer);\n }\n return args;\n}\nexports.pushMRangeGroupByArguments = pushMRangeGroupByArguments;\nfunction pushFilterArgument(args, filter) {\n args.push('FILTER');\n return (0, generic_transformers_1.pushVerdictArguments)(args, filter);\n}\nexports.pushFilterArgument = pushFilterArgument;\nfunction pushMRangeArguments(args, fromTimestamp, toTimestamp, filter, options) {\n args = pushRangeArguments(args, fromTimestamp, toTimestamp, options);\n args = pushFilterArgument(args, filter);\n return pushMRangeGroupByArguments(args, options?.GROUPBY);\n}\nexports.pushMRangeArguments = pushMRangeArguments;\nfunction pushWithLabelsArgument(args, selectedLabels) {\n if (!selectedLabels) {\n args.push('WITHLABELS');\n }\n else {\n args.push('SELECTED_LABELS');\n args = (0, generic_transformers_1.pushVerdictArguments)(args, selectedLabels);\n }\n return args;\n}\nexports.pushWithLabelsArgument = pushWithLabelsArgument;\nfunction pushMRangeWithLabelsArguments(args, fromTimestamp, toTimestamp, filter, options) {\n args = pushRangeArguments(args, fromTimestamp, toTimestamp, options);\n args = pushWithLabelsArgument(args, options?.SELECTED_LABELS);\n args = pushFilterArgument(args, filter);\n return pushMRangeGroupByArguments(args, options?.GROUPBY);\n}\nexports.pushMRangeWithLabelsArguments = pushMRangeWithLabelsArguments;\nfunction transformRangeReply(reply) {\n return reply.map(transformSampleReply);\n}\nexports.transformRangeReply = transformRangeReply;\nfunction transformMRangeReply(reply) {\n const args = [];\n for (const [key, _, sample] of reply) {\n args.push({\n key,\n samples: sample.map(transformSampleReply)\n });\n }\n return args;\n}\nexports.transformMRangeReply = transformMRangeReply;\nfunction transformMRangeWithLabelsReply(reply) {\n const args = [];\n for (const [key, labels, samples] of reply) {\n args.push({\n key,\n labels: transformLablesReply(labels),\n samples: samples.map(transformSampleReply)\n });\n }\n return args;\n}\nexports.transformMRangeWithLabelsReply = transformMRangeWithLabelsReply;\nfunction pushLatestArgument(args, latest) {\n if (latest) {\n args.push('LATEST');\n }\n return args;\n}\nexports.pushLatestArgument = pushLatestArgument;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TimeSeriesBucketTimestamp = exports.TimeSeriesReducers = exports.TimeSeriesAggregationType = exports.TimeSeriesEncoding = exports.TimeSeriesDuplicatePolicies = exports.default = void 0;\nvar commands_1 = require(\"./commands\");\nObject.defineProperty(exports, \"default\", { enumerable: true, get: function () { return commands_1.default; } });\nvar commands_2 = require(\"./commands\");\nObject.defineProperty(exports, \"TimeSeriesDuplicatePolicies\", { enumerable: true, get: function () { return commands_2.TimeSeriesDuplicatePolicies; } });\nObject.defineProperty(exports, \"TimeSeriesEncoding\", { enumerable: true, get: function () { return commands_2.TimeSeriesEncoding; } });\nObject.defineProperty(exports, \"TimeSeriesAggregationType\", { enumerable: true, get: function () { return commands_2.TimeSeriesAggregationType; } });\nObject.defineProperty(exports, \"TimeSeriesReducers\", { enumerable: true, get: function () { return commands_2.TimeSeriesReducers; } });\nObject.defineProperty(exports, \"TimeSeriesBucketTimestamp\", { enumerable: true, get: function () { return commands_2.TimeSeriesBucketTimestamp; } });\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst events_1 = require(\"events\");\nconst debug_1 = __importDefault(require(\"debug\"));\nconst promisify_1 = __importDefault(require(\"./promisify\"));\nconst debug = debug_1.default('agent-base');\nfunction isAgent(v) {\n return Boolean(v) && typeof v.addRequest === 'function';\n}\nfunction isSecureEndpoint() {\n const { stack } = new Error();\n if (typeof stack !== 'string')\n return false;\n return stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1 || l.indexOf('node:https:') !== -1);\n}\nfunction createAgent(callback, opts) {\n return new createAgent.Agent(callback, opts);\n}\n(function (createAgent) {\n /**\n * Base `http.Agent` implementation.\n * No pooling/keep-alive is implemented by default.\n *\n * @param {Function} callback\n * @api public\n */\n class Agent extends events_1.EventEmitter {\n constructor(callback, _opts) {\n super();\n let opts = _opts;\n if (typeof callback === 'function') {\n this.callback = callback;\n }\n else if (callback) {\n opts = callback;\n }\n // Timeout for the socket to be returned from the callback\n this.timeout = null;\n if (opts && typeof opts.timeout === 'number') {\n this.timeout = opts.timeout;\n }\n // These aren't actually used by `agent-base`, but are required\n // for the TypeScript definition files in `@types/node` :/\n this.maxFreeSockets = 1;\n this.maxSockets = 1;\n this.maxTotalSockets = Infinity;\n this.sockets = {};\n this.freeSockets = {};\n this.requests = {};\n this.options = {};\n }\n get defaultPort() {\n if (typeof this.explicitDefaultPort === 'number') {\n return this.explicitDefaultPort;\n }\n return isSecureEndpoint() ? 443 : 80;\n }\n set defaultPort(v) {\n this.explicitDefaultPort = v;\n }\n get protocol() {\n if (typeof this.explicitProtocol === 'string') {\n return this.explicitProtocol;\n }\n return isSecureEndpoint() ? 'https:' : 'http:';\n }\n set protocol(v) {\n this.explicitProtocol = v;\n }\n callback(req, opts, fn) {\n throw new Error('\"agent-base\" has no default implementation, you must subclass and override `callback()`');\n }\n /**\n * Called by node-core's \"_http_client.js\" module when creating\n * a new HTTP request with this Agent instance.\n *\n * @api public\n */\n addRequest(req, _opts) {\n const opts = Object.assign({}, _opts);\n if (typeof opts.secureEndpoint !== 'boolean') {\n opts.secureEndpoint = isSecureEndpoint();\n }\n if (opts.host == null) {\n opts.host = 'localhost';\n }\n if (opts.port == null) {\n opts.port = opts.secureEndpoint ? 443 : 80;\n }\n if (opts.protocol == null) {\n opts.protocol = opts.secureEndpoint ? 'https:' : 'http:';\n }\n if (opts.host && opts.path) {\n // If both a `host` and `path` are specified then it's most\n // likely the result of a `url.parse()` call... we need to\n // remove the `path` portion so that `net.connect()` doesn't\n // attempt to open that as a unix socket file.\n delete opts.path;\n }\n delete opts.agent;\n delete opts.hostname;\n delete opts._defaultAgent;\n delete opts.defaultPort;\n delete opts.createConnection;\n // Hint to use \"Connection: close\"\n // XXX: non-documented `http` module API :(\n req._last = true;\n req.shouldKeepAlive = false;\n let timedOut = false;\n let timeoutId = null;\n const timeoutMs = opts.timeout || this.timeout;\n const onerror = (err) => {\n if (req._hadError)\n return;\n req.emit('error', err);\n // For Safety. Some additional errors might fire later on\n // and we need to make sure we don't double-fire the error event.\n req._hadError = true;\n };\n const ontimeout = () => {\n timeoutId = null;\n timedOut = true;\n const err = new Error(`A \"socket\" was not created for HTTP request before ${timeoutMs}ms`);\n err.code = 'ETIMEOUT';\n onerror(err);\n };\n const callbackError = (err) => {\n if (timedOut)\n return;\n if (timeoutId !== null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n onerror(err);\n };\n const onsocket = (socket) => {\n if (timedOut)\n return;\n if (timeoutId != null) {\n clearTimeout(timeoutId);\n timeoutId = null;\n }\n if (isAgent(socket)) {\n // `socket` is actually an `http.Agent` instance, so\n // relinquish responsibility for this `req` to the Agent\n // from here on\n debug('Callback returned another Agent instance %o', socket.constructor.name);\n socket.addRequest(req, opts);\n return;\n }\n if (socket) {\n socket.once('free', () => {\n this.freeSocket(socket, opts);\n });\n req.onSocket(socket);\n return;\n }\n const err = new Error(`no Duplex stream was returned to agent-base for \\`${req.method} ${req.path}\\``);\n onerror(err);\n };\n if (typeof this.callback !== 'function') {\n onerror(new Error('`callback` is not defined'));\n return;\n }\n if (!this.promisifiedCallback) {\n if (this.callback.length >= 3) {\n debug('Converting legacy callback function to promise');\n this.promisifiedCallback = promisify_1.default(this.callback);\n }\n else {\n this.promisifiedCallback = this.callback;\n }\n }\n if (typeof timeoutMs === 'number' && timeoutMs > 0) {\n timeoutId = setTimeout(ontimeout, timeoutMs);\n }\n if ('port' in opts && typeof opts.port !== 'number') {\n opts.port = Number(opts.port);\n }\n try {\n debug('Resolving socket for %o request: %o', opts.protocol, `${req.method} ${req.path}`);\n Promise.resolve(this.promisifiedCallback(req, opts)).then(onsocket, callbackError);\n }\n catch (err) {\n Promise.reject(err).catch(callbackError);\n }\n }\n freeSocket(socket, opts) {\n debug('Freeing socket %o %o', socket.constructor.name, opts);\n socket.destroy();\n }\n destroy() {\n debug('Destroying agent %o', this.constructor.name);\n }\n }\n createAgent.Agent = Agent;\n // So that `instanceof` works correctly\n createAgent.prototype = createAgent.Agent.prototype;\n})(createAgent || (createAgent = {}));\nmodule.exports = createAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction promisify(fn) {\n return function (req, opts) {\n return new Promise((resolve, reject) => {\n fn.call(this, req, opts, (err, rtn) => {\n if (err) {\n reject(err);\n }\n else {\n resolve(rtn);\n }\n });\n });\n };\n}\nexports.default = promisify;\n//# sourceMappingURL=promisify.js.map","module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n","// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n","var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n","module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n","var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n","// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n","var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n","var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","var _ = require(\"underscore\")._;\n\nvar LocalStorageBackend = function(options) {\n var options = options || {};\n var name = options.name || Math.floor(Math.random() * 100000);\n\n this.prefix = 'classifier.bayesian.' + name;\n\n if (options.testing) {\n this.storage = {};\n }\n else {\n this.storage = localStorage;\n }\n\n this.storage[this.prefix + '.cats'] = '{}';\n}\n\nLocalStorageBackend.prototype = {\n async : false,\n\n getCats : function() {\n return JSON.parse(this.storage[this.prefix + '.cats']);\n },\n\n setCats : function(cats) {\n this.storage[this.prefix + '.cats'] = JSON.stringify(cats);\n },\n\n getWordCount : function(word) {\n return JSON.parse(this.storage[this.prefix + '.words.' + word] || '{}');\n },\n\n setWordCount : function(word, counts) {\n this.storage[this.prefix + '.words.' + word] = JSON.stringify(counts);\n },\n\n getWordCounts : function(words) {\n var counts = {};\n words.forEach(function(word) {\n counts[word] = this.getWordCount(word);\n }, this);\n return counts;\n },\n\n incCounts : function(catIncs, wordIncs) {\n var cats = this.getCats();\n _(catIncs).each(function(inc, cat) {\n cats[cat] = cats[cat] + inc || inc;\n }, this);\n this.setCats(cats);\n\n _(wordIncs).each(function(incs, word) {\n var wordCounts = this.getWordCount(word);\n _(incs).each(function(inc, cat) {\n wordCounts[cat] = wordCounts[cat] + inc || inc;\n }, this);\n this.setWordCount(word, wordCounts);\n }, this);\n },\n\n toJSON : function() {\n var words = {};\n var regex = new RegExp(\"^\" + this.prefix + \"\\.words\\.(.+)$\")\n for (var item in this.storage) {\n var match = regex.exec(item);\n if (match) {\n words[match[1]] = JSON.parse(this.storage[item]);\n }\n }\n return {\n cats: JSON.parse(this.storage[this.prefix + '.cats']),\n words: words\n };\n },\n\n fromJSON : function(json) {\n this.incCounts(json.cats, json.words);\n }\n}\n\nexports.LocalStorageBackend = LocalStorageBackend;","var _ = require(\"underscore\")._;\n\nvar MemoryBackend = function() {\n this.catCounts = {};\n this.wordCounts = {};\n}\n\nMemoryBackend.prototype = {\n async : false,\n\n incCounts : function(catIncs, wordIncs) {\n _(catIncs).each(function(inc, cat) {\n this.catCounts[cat] = this.catCounts[cat] + inc || inc;\n }, this);\n\n _(wordIncs).each(function(incs, word) {\n this.wordCounts[word] = this.wordCounts[word] || {};\n _(incs).each(function(inc, cat) {\n this.wordCounts[word][cat] = this.wordCounts[word][cat] + inc || inc;\n }, this);\n }, this);\n },\n\n getCats : function() {\n return this.catCounts;\n },\n\n getWordCounts : function(words, cats) {\n return this.wordCounts;\n },\n \n toJSON : function() {\n return {cats: this.catCounts, words: this.wordCounts}\n },\n \n fromJSON : function(json) {\n this.catCounts = json.cats;\n this.wordCounts = json.words;\n }\n}\n\nexports.MemoryBackend = MemoryBackend;","var redis = require(\"redis\"),\n _ = require(\"underscore\")._;\n\nvar RedisBackend = function(options) {\n options = options || {};\n var port = options.port || 6379;\n var host = options.hostname || \"localhost\";\n var opts = options.options || {};\n\n this.client = function() {\n var client = redis.createClient(port, host, opts);\n if (options.error) {\n client.on('error', options.error);\n }\n if (options.password) {\n client.auth(options.password, options.error);\n }\n return client;\n }\n\n var name = options.name || Math.floor(Math.random() * 100000);\n this.catsKey = 'classifier_bayes_cats_' + name;\n this.wordsKey = 'classifier_bayes_words_' + name;\n\n if (options.db) {\n this.client().select(options.db);\n }\n}\n\nRedisBackend.prototype = {\n async : true,\n\n key : function(word, cat) {\n return word + \"____\" + cat; // flatten word count hash\n },\n\n pair : function(key) {\n return /(.*)____(.*)/.exec(key).slice(1);\n },\n\n incCounts : function(catIncs, wordIncs, callback) {\n // create new client for each call so we can close each time\n var client = this.client();\n var multi = client.multi(); // make multi so we can have one callback\n\n _(catIncs).each(function(inc, cat) {\n multi.hincrby(this.catsKey, cat, inc);\n }, this);\n\n _(wordIncs).each(function(wordCounts, word) {\n _(wordCounts).each(function(inc, cat) {\n multi.hincrby(this.wordsKey, this.key(word, cat), inc);\n }, this);\n }, this);\n\n multi.exec(function(err, ret) {\n if (callback) {\n callback(ret);\n }\n client.quit();\n });\n },\n\n getCats : function(callback) {\n var client = this.client();\n client.hgetall(this.catsKey, function(err, cats) {\n _(cats).each(function(val, cat) {\n cats[cat] = parseInt(val);\n });\n callback(cats);\n client.quit();\n });\n },\n\n getWordCounts : function(words, cats, callback) {\n var keys = _(words).reduce(function(keys, word) {\n return keys.concat(_(cats).map(function(count, cat) {\n return this.key(word, cat);\n },this));\n }, [], this);\n\n var that = this;\n var args = [this.wordsKey].concat(keys);\n var client = this.client();\n\n client.hmget(args, function(err, vals) {\n var counts = {};\n keys.map(function(key, i) {\n var pair = that.pair(key);\n var word = pair[0], cat = pair[1];\n counts[word] = counts[word] ? counts[word] : {};\n counts[word][cat] = parseInt(vals[i]) || 0;\n });\n\n callback(counts);\n client.quit();\n });\n },\n\n toJSON: function(callback) {\n var that = this;\n this.getCats(function(cats) {\n var client = that.client();\n\n client.hgetall(that.wordsKey, function(err, wordCounts) {\n var words = {};\n for (var key in wordCounts) {\n var pair = that.pair(key);\n var word = pair[0], cat = pair[1];\n words[word] = words[word] ? words[word] : {};\n words[word][cat] = parseInt(wordCounts[key]) || 0;\n }\n\n callback({cats: cats, words: words});\n client.quit();\n });\n });\n },\n\n fromJSON: function(json, callback) {\n this.incCounts(json.cats, json.words, callback);\n }\n}\n\nexports.RedisBackend = RedisBackend;\n","var _ = require(\"underscore\")._;\n\nvar Bayesian = function(options) {\n options = options || {}\n this.thresholds = options.thresholds || {};\n this.default = options.default || 'unclassified';\n this.weight = options.weight || 1;\n this.assumed = options.assumed || 0.5;\n\n var backend = options.backend || { type: 'memory' };\n switch(backend.type.toLowerCase()) {\n case 'redis':\n this.backend = new (require(\"./backends/redis\").RedisBackend)(backend.options);\n break;\n case 'localstorage':\n this.backend = new (require(\"./backends/localStorage\")\n .LocalStorageBackend)(backend.options);\n break;\n default:\n this.backend = new (require(\"./backends/memory\").MemoryBackend)();\n }\n}\n\nBayesian.prototype = {\n getCats : function(callback) {\n return this.backend.getCats(callback);\n },\n\n getWordCounts : function(words, cats, callback) {\n return this.backend.getWordCounts(words, cats, callback);\n },\n\n incDocCounts : function(docs, callback) {\n // accumulate all the pending increments\n var wordIncs = {};\n var catIncs = {};\n docs.forEach(function(doc) {\n var cat = doc.cat;\n catIncs[cat] = catIncs[cat] ? catIncs[cat] + 1 : 1;\n\n var words = this.getWords(doc.doc);\n words.forEach(function(word) {\n wordIncs[word] = wordIncs[word] || {};\n wordIncs[word][cat] = wordIncs[word][cat] ? wordIncs[word][cat] + 1 : 1;\n }, this);\n }, this);\n\n return this.backend.incCounts(catIncs, wordIncs, callback);\n },\n\n setThresholds : function(thresholds) {\n this.thresholds = thresholds;\n },\n\n getWords : function(doc) {\n if (_(doc).isArray()) {\n return doc;\n }\n var words = doc.split(/\\W+/);\n return _(words).uniq();\n },\n\n train : function(doc, cat, callback) {\n this.incDocCounts([{doc: doc, cat: cat}], function(err, ret) {\n if (callback) {\n callback(ret);\n }\n });\n },\n\n trainAll : function(data, callback) {\n data = data.map(function(item) {\n return {doc: item.input, cat: item.output};\n });\n this.incDocCounts(data, function(err, ret) {\n if (callback) {\n callback(ret);\n }\n });\n },\n\n wordProb : function(word, cat, cats, counts) {\n // times word appears in a doc in this cat / docs in this cat\n var prob = (counts[cat] || 0) / cats[cat];\n\n // get weighted average with assumed so prob won't be extreme on rare words\n var total = _(cats).reduce(function(sum, p, cat) {\n return sum + (counts[cat] || 0);\n }, 0, this);\n return (this.weight * this.assumed + total * prob) / (this.weight + total);\n },\n\n getCatProbs : function(cats, words, counts) {\n var numDocs = _(cats).reduce(function(sum, count) {\n return sum + count;\n }, 0);\n\n var probs = {};\n _(cats).each(function(catCount, cat) {\n var catProb = (catCount || 0) / numDocs;\n\n var docProb = _(words).reduce(function(prob, word) {\n var wordCounts = counts[word] || {};\n return prob * this.wordProb(word, cat, cats, wordCounts);\n }, 1, this);\n\n // the probability this doc is in this category\n probs[cat] = catProb * docProb;\n }, this);\n return probs;\n },\n\n getProbs : function(doc, callback) {\n var that = this;\n this.getCats(function(cats) {\n var words = that.getWords(doc);\n that.getWordCounts(words, cats, function(counts) {\n var probs = that.getCatProbs(cats, words, counts);\n callback(probs);\n });\n });\n },\n\n getProbsSync : function(doc) {\n var words = this.getWords(doc);\n var cats = this.getCats();\n var counts = this.getWordCounts(words, cats);\n return this.getCatProbs(cats, words, counts);\n },\n\n bestMatch : function(probs) {\n var max = _(probs).reduce(function(max, prob, cat) {\n return max.prob > prob ? max : {cat: cat, prob: prob};\n }, {prob: 0});\n\n var category = max.cat || this.default;\n var threshold = this.thresholds[max.cat] || 1;\n\n _(probs).map(function(prob, cat) {\n if (!(cat == max.cat) && prob * threshold > max.prob) {\n category = this.default; // not greater than other category by enough\n }\n }, this);\n\n return category;\n },\n\n classify : function(doc, callback) {\n if (!this.backend.async) {\n return this.classifySync(doc);\n }\n\n var that = this;\n this.getProbs(doc, function(probs) {\n callback(that.bestMatch(probs));\n });\n },\n\n classifySync : function(doc) {\n var probs = this.getProbsSync(doc);\n return this.bestMatch(probs);\n },\n\n test : function(data) {\n // misclassification error\n var error = 0;\n data.forEach(function(datum) {\n var output = this.classify(datum.input);\n error += output == datum.output ? 0 : 1;\n }, this);\n return error / data.length;\n },\n\n toJSON : function(callback) {\n return this.backend.toJSON(callback);\n },\n\n fromJSON : function(json, callback) {\n this.backend.fromJSON(json, callback);\n return this;\n }\n}\n\nexports.Bayesian = Bayesian;\n","/*\n * Copyright 2001-2010 Georges Menie (www.menie.org)\n * Copyright 2010 Salvatore Sanfilippo (adapted to Redis coding style)\n * Copyright 2015 Zihua Li (http://zihua.li) (ported to JavaScript)\n * Copyright 2016 Mike Diarmid (http://github.com/salakar) (re-write for performance, ~700% perf inc)\n * All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are met:\n *\n * * Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * * Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n * * Neither the name of the University of California, Berkeley nor the\n * names of its contributors may be used to endorse or promote products\n * derived from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY\n * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\n/* CRC16 implementation according to CCITT standards.\n *\n * Note by @antirez: this is actually the XMODEM CRC 16 algorithm, using the\n * following parameters:\n *\n * Name : \"XMODEM\", also known as \"ZMODEM\", \"CRC-16/ACORN\"\n * Width : 16 bit\n * Poly : 1021 (That is actually x^16 + x^12 + x^5 + 1)\n * Initialization : 0000\n * Reflect Input byte : False\n * Reflect Output CRC : False\n * Xor constant to output CRC : 0000\n * Output for \"123456789\" : 31C3\n */\n\nvar lookup = [\n 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,\n 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,\n 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,\n 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,\n 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,\n 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,\n 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,\n 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,\n 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,\n 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,\n 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,\n 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,\n 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,\n 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,\n 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,\n 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,\n 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,\n 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,\n 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,\n 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,\n 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,\n 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,\n 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,\n 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,\n 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,\n 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,\n 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,\n 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,\n 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,\n 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,\n 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,\n 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0\n];\n\n/**\n * Convert a string to a UTF8 array - faster than via buffer\n * @param str\n * @returns {Array}\n */\nvar toUTF8Array = function toUTF8Array(str) {\n var char;\n var i = 0;\n var p = 0;\n var utf8 = [];\n var len = str.length;\n\n for (; i < len; i++) {\n char = str.charCodeAt(i);\n if (char < 128) {\n utf8[p++] = char;\n } else if (char < 2048) {\n utf8[p++] = (char >> 6) | 192;\n utf8[p++] = (char & 63) | 128;\n } else if (\n ((char & 0xFC00) === 0xD800) && (i + 1) < str.length &&\n ((str.charCodeAt(i + 1) & 0xFC00) === 0xDC00)) {\n char = 0x10000 + ((char & 0x03FF) << 10) + (str.charCodeAt(++i) & 0x03FF);\n utf8[p++] = (char >> 18) | 240;\n utf8[p++] = ((char >> 12) & 63) | 128;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n } else {\n utf8[p++] = (char >> 12) | 224;\n utf8[p++] = ((char >> 6) & 63) | 128;\n utf8[p++] = (char & 63) | 128;\n }\n }\n\n return utf8;\n};\n\n/**\n * Convert a string into a redis slot hash.\n * @param str\n * @returns {number}\n */\nvar generate = module.exports = function generate(str) {\n var char;\n var i = 0;\n var start = -1;\n var result = 0;\n var resultHash = 0;\n var utf8 = typeof str === 'string' ? toUTF8Array(str) : str;\n var len = utf8.length;\n\n while (i < len) {\n char = utf8[i++];\n if (start === -1) {\n if (char === 0x7B) {\n start = i;\n }\n } else if (char !== 0x7D) {\n resultHash = lookup[(char ^ (resultHash >> 8)) & 0xFF] ^ (resultHash << 8);\n } else if (i - 1 !== start) {\n return resultHash & 0x3FFF;\n }\n\n result = lookup[(char ^ (result >> 8)) & 0xFF] ^ (result << 8);\n }\n\n return result & 0x3FFF;\n};\n\n/**\n * Convert an array of multiple strings into a redis slot hash.\n * Returns -1 if one of the keys is not for the same slot as the others\n * @param keys\n * @returns {number}\n */\nmodule.exports.generateMulti = function generateMulti(keys) {\n var i = 1;\n var len = keys.length;\n var base = generate(keys[0]);\n\n while (i < len) {\n if (generate(keys[i++]) !== base) return -1;\n }\n\n return base;\n};\n","var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.format()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.format(...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","var debug;\n\nmodule.exports = function () {\n if (!debug) {\n try {\n /* eslint global-require: off */\n debug = require(\"debug\")(\"follow-redirects\");\n }\n catch (error) { /* */ }\n if (typeof debug !== \"function\") {\n debug = function () { /* */ };\n }\n }\n debug.apply(null, arguments);\n};\n","var url = require(\"url\");\nvar URL = url.URL;\nvar http = require(\"http\");\nvar https = require(\"https\");\nvar Writable = require(\"stream\").Writable;\nvar assert = require(\"assert\");\nvar debug = require(\"./debug\");\n\n// Create handlers that pass events from native requests\nvar events = [\"abort\", \"aborted\", \"connect\", \"error\", \"socket\", \"timeout\"];\nvar eventHandlers = Object.create(null);\nevents.forEach(function (event) {\n eventHandlers[event] = function (arg1, arg2, arg3) {\n this._redirectable.emit(event, arg1, arg2, arg3);\n };\n});\n\nvar InvalidUrlError = createErrorType(\n \"ERR_INVALID_URL\",\n \"Invalid URL\",\n TypeError\n);\n// Error types with codes\nvar RedirectionError = createErrorType(\n \"ERR_FR_REDIRECTION_FAILURE\",\n \"Redirected request failed\"\n);\nvar TooManyRedirectsError = createErrorType(\n \"ERR_FR_TOO_MANY_REDIRECTS\",\n \"Maximum number of redirects exceeded\"\n);\nvar MaxBodyLengthExceededError = createErrorType(\n \"ERR_FR_MAX_BODY_LENGTH_EXCEEDED\",\n \"Request body larger than maxBodyLength limit\"\n);\nvar WriteAfterEndError = createErrorType(\n \"ERR_STREAM_WRITE_AFTER_END\",\n \"write after end\"\n);\n\n// An HTTP(S) request that can be redirected\nfunction RedirectableRequest(options, responseCallback) {\n // Initialize the request\n Writable.call(this);\n this._sanitizeOptions(options);\n this._options = options;\n this._ended = false;\n this._ending = false;\n this._redirectCount = 0;\n this._redirects = [];\n this._requestBodyLength = 0;\n this._requestBodyBuffers = [];\n\n // Attach a callback if passed\n if (responseCallback) {\n this.on(\"response\", responseCallback);\n }\n\n // React to responses of native requests\n var self = this;\n this._onNativeResponse = function (response) {\n self._processResponse(response);\n };\n\n // Perform the first request\n this._performRequest();\n}\nRedirectableRequest.prototype = Object.create(Writable.prototype);\n\nRedirectableRequest.prototype.abort = function () {\n abortRequest(this._currentRequest);\n this.emit(\"abort\");\n};\n\n// Writes buffered data to the current native request\nRedirectableRequest.prototype.write = function (data, encoding, callback) {\n // Writing is not allowed if end has been called\n if (this._ending) {\n throw new WriteAfterEndError();\n }\n\n // Validate input and shift parameters if necessary\n if (!isString(data) && !isBuffer(data)) {\n throw new TypeError(\"data should be a string, Buffer or Uint8Array\");\n }\n if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Ignore empty buffers, since writing them doesn't invoke the callback\n // https://github.com/nodejs/node/issues/22066\n if (data.length === 0) {\n if (callback) {\n callback();\n }\n return;\n }\n // Only write when we don't exceed the maximum body length\n if (this._requestBodyLength + data.length <= this._options.maxBodyLength) {\n this._requestBodyLength += data.length;\n this._requestBodyBuffers.push({ data: data, encoding: encoding });\n this._currentRequest.write(data, encoding, callback);\n }\n // Error when we exceed the maximum body length\n else {\n this.emit(\"error\", new MaxBodyLengthExceededError());\n this.abort();\n }\n};\n\n// Ends the current native request\nRedirectableRequest.prototype.end = function (data, encoding, callback) {\n // Shift parameters if necessary\n if (isFunction(data)) {\n callback = data;\n data = encoding = null;\n }\n else if (isFunction(encoding)) {\n callback = encoding;\n encoding = null;\n }\n\n // Write data if needed and end\n if (!data) {\n this._ended = this._ending = true;\n this._currentRequest.end(null, null, callback);\n }\n else {\n var self = this;\n var currentRequest = this._currentRequest;\n this.write(data, encoding, function () {\n self._ended = true;\n currentRequest.end(null, null, callback);\n });\n this._ending = true;\n }\n};\n\n// Sets a header value on the current native request\nRedirectableRequest.prototype.setHeader = function (name, value) {\n this._options.headers[name] = value;\n this._currentRequest.setHeader(name, value);\n};\n\n// Clears a header value on the current native request\nRedirectableRequest.prototype.removeHeader = function (name) {\n delete this._options.headers[name];\n this._currentRequest.removeHeader(name);\n};\n\n// Global timeout for all underlying requests\nRedirectableRequest.prototype.setTimeout = function (msecs, callback) {\n var self = this;\n\n // Destroys the socket on timeout\n function destroyOnTimeout(socket) {\n socket.setTimeout(msecs);\n socket.removeListener(\"timeout\", socket.destroy);\n socket.addListener(\"timeout\", socket.destroy);\n }\n\n // Sets up a timer to trigger a timeout event\n function startTimer(socket) {\n if (self._timeout) {\n clearTimeout(self._timeout);\n }\n self._timeout = setTimeout(function () {\n self.emit(\"timeout\");\n clearTimer();\n }, msecs);\n destroyOnTimeout(socket);\n }\n\n // Stops a timeout from triggering\n function clearTimer() {\n // Clear the timeout\n if (self._timeout) {\n clearTimeout(self._timeout);\n self._timeout = null;\n }\n\n // Clean up all attached listeners\n self.removeListener(\"abort\", clearTimer);\n self.removeListener(\"error\", clearTimer);\n self.removeListener(\"response\", clearTimer);\n if (callback) {\n self.removeListener(\"timeout\", callback);\n }\n if (!self.socket) {\n self._currentRequest.removeListener(\"socket\", startTimer);\n }\n }\n\n // Attach callback if passed\n if (callback) {\n this.on(\"timeout\", callback);\n }\n\n // Start the timer if or when the socket is opened\n if (this.socket) {\n startTimer(this.socket);\n }\n else {\n this._currentRequest.once(\"socket\", startTimer);\n }\n\n // Clean up on events\n this.on(\"socket\", destroyOnTimeout);\n this.on(\"abort\", clearTimer);\n this.on(\"error\", clearTimer);\n this.on(\"response\", clearTimer);\n\n return this;\n};\n\n// Proxy all other public ClientRequest methods\n[\n \"flushHeaders\", \"getHeader\",\n \"setNoDelay\", \"setSocketKeepAlive\",\n].forEach(function (method) {\n RedirectableRequest.prototype[method] = function (a, b) {\n return this._currentRequest[method](a, b);\n };\n});\n\n// Proxy all public ClientRequest properties\n[\"aborted\", \"connection\", \"socket\"].forEach(function (property) {\n Object.defineProperty(RedirectableRequest.prototype, property, {\n get: function () { return this._currentRequest[property]; },\n });\n});\n\nRedirectableRequest.prototype._sanitizeOptions = function (options) {\n // Ensure headers are always present\n if (!options.headers) {\n options.headers = {};\n }\n\n // Since http.request treats host as an alias of hostname,\n // but the url module interprets host as hostname plus port,\n // eliminate the host property to avoid confusion.\n if (options.host) {\n // Use hostname if set, because it has precedence\n if (!options.hostname) {\n options.hostname = options.host;\n }\n delete options.host;\n }\n\n // Complete the URL object when necessary\n if (!options.pathname && options.path) {\n var searchPos = options.path.indexOf(\"?\");\n if (searchPos < 0) {\n options.pathname = options.path;\n }\n else {\n options.pathname = options.path.substring(0, searchPos);\n options.search = options.path.substring(searchPos);\n }\n }\n};\n\n\n// Executes the next native request (initial or redirect)\nRedirectableRequest.prototype._performRequest = function () {\n // Load the native protocol\n var protocol = this._options.protocol;\n var nativeProtocol = this._options.nativeProtocols[protocol];\n if (!nativeProtocol) {\n this.emit(\"error\", new TypeError(\"Unsupported protocol \" + protocol));\n return;\n }\n\n // If specified, use the agent corresponding to the protocol\n // (HTTP and HTTPS use different types of agents)\n if (this._options.agents) {\n var scheme = protocol.slice(0, -1);\n this._options.agent = this._options.agents[scheme];\n }\n\n // Create the native request and set up its event handlers\n var request = this._currentRequest =\n nativeProtocol.request(this._options, this._onNativeResponse);\n request._redirectable = this;\n for (var event of events) {\n request.on(event, eventHandlers[event]);\n }\n\n // RFC7230§5.3.1: When making a request directly to an origin server, […]\n // a client MUST send only the absolute path […] as the request-target.\n this._currentUrl = /^\\//.test(this._options.path) ?\n url.format(this._options) :\n // When making a request to a proxy, […]\n // a client MUST send the target URI in absolute-form […].\n this._options.path;\n\n // End a redirected request\n // (The first request must be ended explicitly with RedirectableRequest#end)\n if (this._isRedirect) {\n // Write the request entity and end\n var i = 0;\n var self = this;\n var buffers = this._requestBodyBuffers;\n (function writeNext(error) {\n // Only write if this request has not been redirected yet\n /* istanbul ignore else */\n if (request === self._currentRequest) {\n // Report any write errors\n /* istanbul ignore if */\n if (error) {\n self.emit(\"error\", error);\n }\n // Write the next buffer if there are still left\n else if (i < buffers.length) {\n var buffer = buffers[i++];\n /* istanbul ignore else */\n if (!request.finished) {\n request.write(buffer.data, buffer.encoding, writeNext);\n }\n }\n // End the request if `end` has been called on us\n else if (self._ended) {\n request.end();\n }\n }\n }());\n }\n};\n\n// Processes a response from the current native request\nRedirectableRequest.prototype._processResponse = function (response) {\n // Store the redirected response\n var statusCode = response.statusCode;\n if (this._options.trackRedirects) {\n this._redirects.push({\n url: this._currentUrl,\n headers: response.headers,\n statusCode: statusCode,\n });\n }\n\n // RFC7231§6.4: The 3xx (Redirection) class of status code indicates\n // that further action needs to be taken by the user agent in order to\n // fulfill the request. If a Location header field is provided,\n // the user agent MAY automatically redirect its request to the URI\n // referenced by the Location field value,\n // even if the specific status code is not understood.\n\n // If the response is not a redirect; return it as-is\n var location = response.headers.location;\n if (!location || this._options.followRedirects === false ||\n statusCode < 300 || statusCode >= 400) {\n response.responseUrl = this._currentUrl;\n response.redirects = this._redirects;\n this.emit(\"response\", response);\n\n // Clean up\n this._requestBodyBuffers = [];\n return;\n }\n\n // The response is a redirect, so abort the current request\n abortRequest(this._currentRequest);\n // Discard the remainder of the response to avoid waiting for data\n response.destroy();\n\n // RFC7231§6.4: A client SHOULD detect and intervene\n // in cyclical redirections (i.e., \"infinite\" redirection loops).\n if (++this._redirectCount > this._options.maxRedirects) {\n this.emit(\"error\", new TooManyRedirectsError());\n return;\n }\n\n // Store the request headers if applicable\n var requestHeaders;\n var beforeRedirect = this._options.beforeRedirect;\n if (beforeRedirect) {\n requestHeaders = Object.assign({\n // The Host header was set by nativeProtocol.request\n Host: response.req.getHeader(\"host\"),\n }, this._options.headers);\n }\n\n // RFC7231§6.4: Automatic redirection needs to done with\n // care for methods not known to be safe, […]\n // RFC7231§6.4.2–3: For historical reasons, a user agent MAY change\n // the request method from POST to GET for the subsequent request.\n var method = this._options.method;\n if ((statusCode === 301 || statusCode === 302) && this._options.method === \"POST\" ||\n // RFC7231§6.4.4: The 303 (See Other) status code indicates that\n // the server is redirecting the user agent to a different resource […]\n // A user agent can perform a retrieval request targeting that URI\n // (a GET or HEAD request if using HTTP) […]\n (statusCode === 303) && !/^(?:GET|HEAD)$/.test(this._options.method)) {\n this._options.method = \"GET\";\n // Drop a possible entity and headers related to it\n this._requestBodyBuffers = [];\n removeMatchingHeaders(/^content-/i, this._options.headers);\n }\n\n // Drop the Host header, as the redirect might lead to a different host\n var currentHostHeader = removeMatchingHeaders(/^host$/i, this._options.headers);\n\n // If the redirect is relative, carry over the host of the last request\n var currentUrlParts = url.parse(this._currentUrl);\n var currentHost = currentHostHeader || currentUrlParts.host;\n var currentUrl = /^\\w+:/.test(location) ? this._currentUrl :\n url.format(Object.assign(currentUrlParts, { host: currentHost }));\n\n // Determine the URL of the redirection\n var redirectUrl;\n try {\n redirectUrl = url.resolve(currentUrl, location);\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError({ cause: cause }));\n return;\n }\n\n // Create the redirected request\n debug(\"redirecting to\", redirectUrl);\n this._isRedirect = true;\n var redirectUrlParts = url.parse(redirectUrl);\n Object.assign(this._options, redirectUrlParts);\n\n // Drop confidential headers when redirecting to a less secure protocol\n // or to a different domain that is not a superdomain\n if (redirectUrlParts.protocol !== currentUrlParts.protocol &&\n redirectUrlParts.protocol !== \"https:\" ||\n redirectUrlParts.host !== currentHost &&\n !isSubdomain(redirectUrlParts.host, currentHost)) {\n removeMatchingHeaders(/^(?:authorization|cookie)$/i, this._options.headers);\n }\n\n // Evaluate the beforeRedirect callback\n if (isFunction(beforeRedirect)) {\n var responseDetails = {\n headers: response.headers,\n statusCode: statusCode,\n };\n var requestDetails = {\n url: currentUrl,\n method: method,\n headers: requestHeaders,\n };\n try {\n beforeRedirect(this._options, responseDetails, requestDetails);\n }\n catch (err) {\n this.emit(\"error\", err);\n return;\n }\n this._sanitizeOptions(this._options);\n }\n\n // Perform the redirected request\n try {\n this._performRequest();\n }\n catch (cause) {\n this.emit(\"error\", new RedirectionError({ cause: cause }));\n }\n};\n\n// Wraps the key/value object of protocols with redirect functionality\nfunction wrap(protocols) {\n // Default settings\n var exports = {\n maxRedirects: 21,\n maxBodyLength: 10 * 1024 * 1024,\n };\n\n // Wrap each protocol\n var nativeProtocols = {};\n Object.keys(protocols).forEach(function (scheme) {\n var protocol = scheme + \":\";\n var nativeProtocol = nativeProtocols[protocol] = protocols[scheme];\n var wrappedProtocol = exports[scheme] = Object.create(nativeProtocol);\n\n // Executes a request, following redirects\n function request(input, options, callback) {\n // Parse parameters\n if (isString(input)) {\n var parsed;\n try {\n parsed = urlToOptions(new URL(input));\n }\n catch (err) {\n /* istanbul ignore next */\n parsed = url.parse(input);\n }\n if (!isString(parsed.protocol)) {\n throw new InvalidUrlError({ input });\n }\n input = parsed;\n }\n else if (URL && (input instanceof URL)) {\n input = urlToOptions(input);\n }\n else {\n callback = options;\n options = input;\n input = { protocol: protocol };\n }\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n // Set defaults\n options = Object.assign({\n maxRedirects: exports.maxRedirects,\n maxBodyLength: exports.maxBodyLength,\n }, input, options);\n options.nativeProtocols = nativeProtocols;\n if (!isString(options.host) && !isString(options.hostname)) {\n options.hostname = \"::1\";\n }\n\n assert.equal(options.protocol, protocol, \"protocol mismatch\");\n debug(\"options\", options);\n return new RedirectableRequest(options, callback);\n }\n\n // Executes a GET request, following redirects\n function get(input, options, callback) {\n var wrappedRequest = wrappedProtocol.request(input, options, callback);\n wrappedRequest.end();\n return wrappedRequest;\n }\n\n // Expose the properties on the wrapped protocol\n Object.defineProperties(wrappedProtocol, {\n request: { value: request, configurable: true, enumerable: true, writable: true },\n get: { value: get, configurable: true, enumerable: true, writable: true },\n });\n });\n return exports;\n}\n\n/* istanbul ignore next */\nfunction noop() { /* empty */ }\n\n// from https://github.com/nodejs/node/blob/master/lib/internal/url.js\nfunction urlToOptions(urlObject) {\n var options = {\n protocol: urlObject.protocol,\n hostname: urlObject.hostname.startsWith(\"[\") ?\n /* istanbul ignore next */\n urlObject.hostname.slice(1, -1) :\n urlObject.hostname,\n hash: urlObject.hash,\n search: urlObject.search,\n pathname: urlObject.pathname,\n path: urlObject.pathname + urlObject.search,\n href: urlObject.href,\n };\n if (urlObject.port !== \"\") {\n options.port = Number(urlObject.port);\n }\n return options;\n}\n\nfunction removeMatchingHeaders(regex, headers) {\n var lastValue;\n for (var header in headers) {\n if (regex.test(header)) {\n lastValue = headers[header];\n delete headers[header];\n }\n }\n return (lastValue === null || typeof lastValue === \"undefined\") ?\n undefined : String(lastValue).trim();\n}\n\nfunction createErrorType(code, message, baseClass) {\n // Create constructor\n function CustomError(properties) {\n Error.captureStackTrace(this, this.constructor);\n Object.assign(this, properties || {});\n this.code = code;\n this.message = this.cause ? message + \": \" + this.cause.message : message;\n }\n\n // Attach constructor and set default properties\n CustomError.prototype = new (baseClass || Error)();\n CustomError.prototype.constructor = CustomError;\n CustomError.prototype.name = \"Error [\" + code + \"]\";\n return CustomError;\n}\n\nfunction abortRequest(request) {\n for (var event of events) {\n request.removeListener(event, eventHandlers[event]);\n }\n request.on(\"error\", noop);\n request.abort();\n}\n\nfunction isSubdomain(subdomain, domain) {\n assert(isString(subdomain) && isString(domain));\n var dot = subdomain.length - domain.length - 1;\n return dot > 0 && subdomain[dot] === \".\" && subdomain.endsWith(domain);\n}\n\nfunction isString(value) {\n return typeof value === \"string\" || value instanceof String;\n}\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction isBuffer(value) {\n return typeof value === \"object\" && (\"length\" in value);\n}\n\n// Exports\nmodule.exports = wrap({ http: http, https: https });\nmodule.exports.wrap = wrap;\n","var CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar populate = require('./populate.js');\n\n// Public API\nmodule.exports = FormData;\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {Object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {};\n for (var option in options) {\n this[option] = options[option];\n }\n}\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function(field, value, options) {\n\n options = options || {};\n\n // allow filename as single option\n if (typeof options == 'string') {\n options = {filename: options};\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value == 'number') {\n value = '' + value;\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (util.isArray(value)) {\n // Please convert your array into string\n // the way web server expects it\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function(header, value, options) {\n var valueLength = 0;\n\n // used w/ getLengthSync(), when length is known.\n // e.g. for streaming directly from a remote server,\n // w/ a known file a size, and not wanting to wait for\n // incoming file to finish to get its size.\n if (options.knownLength != null) {\n valueLength += +options.knownLength;\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength +=\n Buffer.byteLength(header) +\n FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || ( !value.path && !(value.readable && value.hasOwnProperty('httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function(value, callback) {\n\n if (value.hasOwnProperty('fd')) {\n\n // take read range into a account\n // `end` = Infinity –> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0));\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function(err, stat) {\n\n var fileSize;\n\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (value.hasOwnProperty('httpVersion')) {\n callback(null, +value.headers['content-length']);\n\n // or request stream http://github.com/mikeal/request\n } else if (value.hasOwnProperty('httpModule')) {\n // wait till response come back\n value.on('response', function(response) {\n value.pause();\n callback(null, +response.headers['content-length']);\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream');\n }\n};\n\nFormData.prototype._multiPartHeader = function(field, value, options) {\n // custom header specified (as string)?\n // it becomes responsible for boundary\n // (e.g. to handle extra CRLFs on .NET servers)\n if (typeof options.header == 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header == 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) {\n if (!headers.hasOwnProperty(prop)) continue;\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue;\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function(value, options) {\n\n var filename\n , contentDisposition\n ;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || value.name || value.path) {\n // custom filename take precedence\n // formidable and the browser add a name property\n // fs- and request- streams have path property\n filename = path.basename(options.filename || value.name || value.path);\n } else if (value.readable && value.hasOwnProperty('httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n contentDisposition = 'filename=\"' + filename + '\"';\n }\n\n return contentDisposition;\n};\n\nFormData.prototype._getContentType = function(value, options) {\n\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value.readable && value.hasOwnProperty('httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && typeof value == 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function() {\n return function(next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = (this._streams.length === 0);\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function() {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function(userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) {\n if (userHeaders.hasOwnProperty(header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function(boundary) {\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function() {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function() {\n var dataBuffer = new Buffer.alloc( 0 );\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n\n // Add content to the buffer.\n if(Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat( [dataBuffer, this._streams[i]]);\n }else {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring( 2, boundary.length + 2 ) !== boundary) {\n dataBuffer = Buffer.concat( [dataBuffer, Buffer.from(FormData.LINE_BREAK)] );\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat( [dataBuffer, Buffer.from(this._lastBoundary())] );\n};\n\nFormData.prototype._generateBoundary = function() {\n // This generates a 50 character boundary similar to those used by Firefox.\n // They are optimized for boyer-moore parsing.\n var boundary = '--------------------------';\n for (var i = 0; i < 24; i++) {\n boundary += Math.floor(Math.random() * 10).toString(16);\n }\n\n this._boundary = boundary;\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually\n// and add it as knownLength option\nFormData.prototype.getLengthSync = function() {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair\n // so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n // Some async length retrievers are present\n // therefore synchronous length calculation is false.\n // Please use getLength(callback) to get proper length\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function() {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function(cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function(err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function(length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function(params, cb) {\n var request\n , options\n , defaults = {method: 'post'}\n ;\n\n // parse provided url if it's string\n // or treat it as options object\n if (typeof params == 'string') {\n\n params = parseUrl(params);\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n\n // use custom params\n } else {\n\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol == 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol == 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function(err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function(err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\n","// populates missing values\nmodule.exports = function(dst, src) {\n\n Object.keys(src).forEach(function(prop)\n {\n dst[prop] = dst[prop] || src[prop];\n });\n\n return dst;\n};\n","const Pool = require(\"./lib/Pool\");\nconst Deque = require(\"./lib/Deque\");\nconst PriorityQueue = require(\"./lib/PriorityQueue\");\nconst DefaultEvictor = require(\"./lib/DefaultEvictor\");\nmodule.exports = {\n Pool: Pool,\n Deque: Deque,\n PriorityQueue: PriorityQueue,\n DefaultEvictor: DefaultEvictor,\n createPool: function(factory, config) {\n return new Pool(DefaultEvictor, Deque, PriorityQueue, factory, config);\n }\n};\n","\"use strict\";\n\nclass DefaultEvictor {\n evict(config, pooledResource, availableObjectsCount) {\n const idleTime = Date.now() - pooledResource.lastIdleTime;\n\n if (\n config.softIdleTimeoutMillis > 0 &&\n config.softIdleTimeoutMillis < idleTime &&\n config.min < availableObjectsCount\n ) {\n return true;\n }\n\n if (config.idleTimeoutMillis < idleTime) {\n return true;\n }\n\n return false;\n }\n}\n\nmodule.exports = DefaultEvictor;\n","\"use strict\";\n\n/**\n * This is apparently a bit like a Jquery deferred, hence the name\n */\n\nclass Deferred {\n constructor(Promise) {\n this._state = Deferred.PENDING;\n this._resolve = undefined;\n this._reject = undefined;\n\n this._promise = new Promise((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n get state() {\n return this._state;\n }\n\n get promise() {\n return this._promise;\n }\n\n reject(reason) {\n if (this._state !== Deferred.PENDING) {\n return;\n }\n this._state = Deferred.REJECTED;\n this._reject(reason);\n }\n\n resolve(value) {\n if (this._state !== Deferred.PENDING) {\n return;\n }\n this._state = Deferred.FULFILLED;\n this._resolve(value);\n }\n}\n\n// TODO: should these really live here? or be a seperate 'state' enum\nDeferred.PENDING = \"PENDING\";\nDeferred.FULFILLED = \"FULFILLED\";\nDeferred.REJECTED = \"REJECTED\";\n\nmodule.exports = Deferred;\n","\"use strict\";\n\nconst DoublyLinkedList = require(\"./DoublyLinkedList\");\nconst DequeIterator = require(\"./DequeIterator\");\n/**\n * DoublyLinkedList backed double ended queue\n * implements just enough to keep the Pool\n */\nclass Deque {\n constructor() {\n this._list = new DoublyLinkedList();\n }\n\n /**\n * removes and returns the first element from the queue\n * @return {any} [description]\n */\n shift() {\n if (this.length === 0) {\n return undefined;\n }\n\n const node = this._list.head;\n this._list.remove(node);\n\n return node.data;\n }\n\n /**\n * adds one elemts to the beginning of the queue\n * @param {any} element [description]\n * @return {any} [description]\n */\n unshift(element) {\n const node = DoublyLinkedList.createNode(element);\n\n this._list.insertBeginning(node);\n }\n\n /**\n * adds one to the end of the queue\n * @param {any} element [description]\n * @return {any} [description]\n */\n push(element) {\n const node = DoublyLinkedList.createNode(element);\n\n this._list.insertEnd(node);\n }\n\n /**\n * removes and returns the last element from the queue\n */\n pop() {\n if (this.length === 0) {\n return undefined;\n }\n\n const node = this._list.tail;\n this._list.remove(node);\n\n return node.data;\n }\n\n [Symbol.iterator]() {\n return new DequeIterator(this._list);\n }\n\n iterator() {\n return new DequeIterator(this._list);\n }\n\n reverseIterator() {\n return new DequeIterator(this._list, true);\n }\n\n /**\n * get a reference to the item at the head of the queue\n * @return {any} [description]\n */\n get head() {\n if (this.length === 0) {\n return undefined;\n }\n const node = this._list.head;\n return node.data;\n }\n\n /**\n * get a reference to the item at the tail of the queue\n * @return {any} [description]\n */\n get tail() {\n if (this.length === 0) {\n return undefined;\n }\n const node = this._list.tail;\n return node.data;\n }\n\n get length() {\n return this._list.length;\n }\n}\n\nmodule.exports = Deque;\n","\"use strict\";\n\nconst DoublyLinkedListIterator = require(\"./DoublyLinkedListIterator\");\n/**\n * Thin wrapper around an underlying DDL iterator\n */\nclass DequeIterator extends DoublyLinkedListIterator {\n next() {\n const result = super.next();\n\n // unwrap the node...\n if (result.value) {\n result.value = result.value.data;\n }\n\n return result;\n }\n}\n\nmodule.exports = DequeIterator;\n","\"use strict\";\n\n/**\n * A Doubly Linked List, because there aren't enough in the world...\n * this is pretty much a direct JS port of the one wikipedia\n * https://en.wikipedia.org/wiki/Doubly_linked_list\n *\n * For most usage 'insertBeginning' and 'insertEnd' should be enough\n *\n * nodes are expected to something like a POJSO like\n * {\n * prev: null,\n * next: null,\n * something: 'whatever you like'\n * }\n */\nclass DoublyLinkedList {\n constructor() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n\n insertBeginning(node) {\n if (this.head === null) {\n this.head = node;\n this.tail = node;\n node.prev = null;\n node.next = null;\n this.length++;\n } else {\n this.insertBefore(this.head, node);\n }\n }\n\n insertEnd(node) {\n if (this.tail === null) {\n this.insertBeginning(node);\n } else {\n this.insertAfter(this.tail, node);\n }\n }\n\n insertAfter(node, newNode) {\n newNode.prev = node;\n newNode.next = node.next;\n if (node.next === null) {\n this.tail = newNode;\n } else {\n node.next.prev = newNode;\n }\n node.next = newNode;\n this.length++;\n }\n\n insertBefore(node, newNode) {\n newNode.prev = node.prev;\n newNode.next = node;\n if (node.prev === null) {\n this.head = newNode;\n } else {\n node.prev.next = newNode;\n }\n node.prev = newNode;\n this.length++;\n }\n\n remove(node) {\n if (node.prev === null) {\n this.head = node.next;\n } else {\n node.prev.next = node.next;\n }\n if (node.next === null) {\n this.tail = node.prev;\n } else {\n node.next.prev = node.prev;\n }\n node.prev = null;\n node.next = null;\n this.length--;\n }\n\n // FIXME: this should not live here and has become a dumping ground...\n static createNode(data) {\n return {\n prev: null,\n next: null,\n data: data\n };\n }\n}\n\nmodule.exports = DoublyLinkedList;\n","\"use strict\";\n\n/**\n * Creates an interator for a DoublyLinkedList starting at the given node\n * It's internal cursor will remains relative to the last \"iterated\" node as that\n * node moves through the list until it either iterates to the end of the list,\n * or the the node it's tracking is removed from the list. Until the first 'next'\n * call it tracks the head/tail of the linked list. This means that one can create\n * an iterator on an empty list, then add nodes, and then the iterator will follow\n * those nodes. Because the DoublyLinkedList nodes don't track their owning \"list\" and\n * it's highly inefficient to walk the list for every iteration, the iterator won't know\n * if the node has been detached from one List and added to another list, or if the iterator\n *\n * The created object is an es6 compatible iterator\n */\nclass DoublyLinkedListIterator {\n /**\n * @param {Object} doublyLinkedList a node that is part of a doublyLinkedList\n * @param {Boolean} [reverse=false] is this a reverse iterator? default: false\n */\n constructor(doublyLinkedList, reverse) {\n this._list = doublyLinkedList;\n // NOTE: these key names are tied to the DoublyLinkedListIterator\n this._direction = reverse === true ? \"prev\" : \"next\";\n this._startPosition = reverse === true ? \"tail\" : \"head\";\n this._started = false;\n this._cursor = null;\n this._done = false;\n }\n\n _start() {\n this._cursor = this._list[this._startPosition];\n this._started = true;\n }\n\n _advanceCursor() {\n if (this._started === false) {\n this._started = true;\n this._cursor = this._list[this._startPosition];\n return;\n }\n this._cursor = this._cursor[this._direction];\n }\n\n reset() {\n this._done = false;\n this._started = false;\n this._cursor = null;\n }\n\n remove() {\n if (\n this._started === false ||\n this._done === true ||\n this._isCursorDetached()\n ) {\n return false;\n }\n this._list.remove(this._cursor);\n }\n\n next() {\n if (this._done === true) {\n return { done: true };\n }\n\n this._advanceCursor();\n\n // if there is no node at the cursor or the node at the cursor is no longer part of\n // a doubly linked list then we are done/finished/kaput\n if (this._cursor === null || this._isCursorDetached()) {\n this._done = true;\n return { done: true };\n }\n\n return {\n value: this._cursor,\n done: false\n };\n }\n\n /**\n * Is the node detached from a list?\n * NOTE: you can trick/bypass/confuse this check by removing a node from one DoublyLinkedList\n * and adding it to another.\n * TODO: We can make this smarter by checking the direction of travel and only checking\n * the required next/prev/head/tail rather than all of them\n * @return {Boolean} [description]\n */\n _isCursorDetached() {\n return (\n this._cursor.prev === null &&\n this._cursor.next === null &&\n this._list.tail !== this._cursor &&\n this._list.head !== this._cursor\n );\n }\n}\n\nmodule.exports = DoublyLinkedListIterator;\n","\"use strict\";\n\nconst EventEmitter = require(\"events\").EventEmitter;\n\nconst factoryValidator = require(\"./factoryValidator\");\nconst PoolOptions = require(\"./PoolOptions\");\nconst ResourceRequest = require(\"./ResourceRequest\");\nconst ResourceLoan = require(\"./ResourceLoan\");\nconst PooledResource = require(\"./PooledResource\");\nconst DefaultEvictor = require(\"./DefaultEvictor\");\nconst Deque = require(\"./Deque\");\nconst Deferred = require(\"./Deferred\");\nconst PriorityQueue = require(\"./PriorityQueue\");\nconst DequeIterator = require(\"./DequeIterator\");\n\nconst reflector = require(\"./utils\").reflector;\n\n/**\n * TODO: move me\n */\nconst FACTORY_CREATE_ERROR = \"factoryCreateError\";\nconst FACTORY_DESTROY_ERROR = \"factoryDestroyError\";\n\nclass Pool extends EventEmitter {\n /**\n * Generate an Object pool with a specified `factory` and `config`.\n *\n * @param {typeof DefaultEvictor} Evictor\n * @param {typeof Deque} Deque\n * @param {typeof PriorityQueue} PriorityQueue\n * @param {Object} factory\n * Factory to be used for generating and destroying the items.\n * @param {Function} factory.create\n * Should create the item to be acquired,\n * and call it's first callback argument with the generated item as it's argument.\n * @param {Function} factory.destroy\n * Should gently close any resources that the item is using.\n * Called before the items is destroyed.\n * @param {Function} factory.validate\n * Test if a resource is still valid .Should return a promise that resolves to a boolean, true if resource is still valid and false\n * If it should be removed from pool.\n * @param {Object} options\n */\n constructor(Evictor, Deque, PriorityQueue, factory, options) {\n super();\n\n factoryValidator(factory);\n\n this._config = new PoolOptions(options);\n\n // TODO: fix up this ugly glue-ing\n this._Promise = this._config.Promise;\n\n this._factory = factory;\n this._draining = false;\n this._started = false;\n /**\n * Holds waiting clients\n * @type {PriorityQueue}\n */\n this._waitingClientsQueue = new PriorityQueue(this._config.priorityRange);\n\n /**\n * Collection of promises for resource creation calls made by the pool to factory.create\n * @type {Set}\n */\n this._factoryCreateOperations = new Set();\n\n /**\n * Collection of promises for resource destruction calls made by the pool to factory.destroy\n * @type {Set}\n */\n this._factoryDestroyOperations = new Set();\n\n /**\n * A queue/stack of pooledResources awaiting acquisition\n * TODO: replace with LinkedList backed array\n * @type {Deque}\n */\n this._availableObjects = new Deque();\n\n /**\n * Collection of references for any resource that are undergoing validation before being acquired\n * @type {Set}\n */\n this._testOnBorrowResources = new Set();\n\n /**\n * Collection of references for any resource that are undergoing validation before being returned\n * @type {Set}\n */\n this._testOnReturnResources = new Set();\n\n /**\n * Collection of promises for any validations currently in process\n * @type {Set}\n */\n this._validationOperations = new Set();\n\n /**\n * All objects associated with this pool in any state (except destroyed)\n * @type {Set}\n */\n this._allObjects = new Set();\n\n /**\n * Loans keyed by the borrowed resource\n * @type {Map}\n */\n this._resourceLoans = new Map();\n\n /**\n * Infinitely looping iterator over available object\n * @type {DequeIterator}\n */\n this._evictionIterator = this._availableObjects.iterator();\n\n this._evictor = new Evictor();\n\n /**\n * handle for setTimeout for next eviction run\n * @type {(number|null)}\n */\n this._scheduledEviction = null;\n\n // create initial resources (if factory.min > 0)\n if (this._config.autostart === true) {\n this.start();\n }\n }\n\n _destroy(pooledResource) {\n // FIXME: do we need another state for \"in destruction\"?\n pooledResource.invalidate();\n this._allObjects.delete(pooledResource);\n // NOTE: this maybe very bad promise usage?\n const destroyPromise = this._factory.destroy(pooledResource.obj);\n const wrappedDestroyPromise = this._config.destroyTimeoutMillis\n ? this._Promise.resolve(this._applyDestroyTimeout(destroyPromise))\n : this._Promise.resolve(destroyPromise);\n\n this._trackOperation(\n wrappedDestroyPromise,\n this._factoryDestroyOperations\n ).catch(reason => {\n this.emit(FACTORY_DESTROY_ERROR, reason);\n });\n\n // TODO: maybe ensuring minimum pool size should live outside here\n this._ensureMinimum();\n }\n\n _applyDestroyTimeout(promise) {\n const timeoutPromise = new this._Promise((resolve, reject) => {\n setTimeout(() => {\n reject(new Error(\"destroy timed out\"));\n }, this._config.destroyTimeoutMillis).unref();\n });\n return this._Promise.race([timeoutPromise, promise]);\n }\n\n /**\n * Attempt to move an available resource into test and then onto a waiting client\n * @return {Boolean} could we move an available resource into test\n */\n _testOnBorrow() {\n if (this._availableObjects.length < 1) {\n return false;\n }\n\n const pooledResource = this._availableObjects.shift();\n // Mark the resource as in test\n pooledResource.test();\n this._testOnBorrowResources.add(pooledResource);\n const validationPromise = this._factory.validate(pooledResource.obj);\n const wrappedValidationPromise = this._Promise.resolve(validationPromise);\n\n this._trackOperation(\n wrappedValidationPromise,\n this._validationOperations\n ).then(isValid => {\n this._testOnBorrowResources.delete(pooledResource);\n\n if (isValid === false) {\n pooledResource.invalidate();\n this._destroy(pooledResource);\n this._dispense();\n return;\n }\n this._dispatchPooledResourceToNextWaitingClient(pooledResource);\n });\n\n return true;\n }\n\n /**\n * Attempt to move an available resource to a waiting client\n * @return {Boolean} [description]\n */\n _dispatchResource() {\n if (this._availableObjects.length < 1) {\n return false;\n }\n\n const pooledResource = this._availableObjects.shift();\n this._dispatchPooledResourceToNextWaitingClient(pooledResource);\n return false;\n }\n\n /**\n * Attempt to resolve an outstanding resource request using an available resource from\n * the pool, or creating new ones\n *\n * @private\n */\n _dispense() {\n /**\n * Local variables for ease of reading/writing\n * these don't (shouldn't) change across the execution of this fn\n */\n const numWaitingClients = this._waitingClientsQueue.length;\n\n // If there aren't any waiting requests then there is nothing to do\n // so lets short-circuit\n if (numWaitingClients < 1) {\n return;\n }\n\n const resourceShortfall =\n numWaitingClients - this._potentiallyAllocableResourceCount;\n\n const actualNumberOfResourcesToCreate = Math.min(\n this.spareResourceCapacity,\n resourceShortfall\n );\n for (let i = 0; actualNumberOfResourcesToCreate > i; i++) {\n this._createResource();\n }\n\n // If we are doing test-on-borrow see how many more resources need to be moved into test\n // to help satisfy waitingClients\n if (this._config.testOnBorrow === true) {\n // how many available resources do we need to shift into test\n const desiredNumberOfResourcesToMoveIntoTest =\n numWaitingClients - this._testOnBorrowResources.size;\n const actualNumberOfResourcesToMoveIntoTest = Math.min(\n this._availableObjects.length,\n desiredNumberOfResourcesToMoveIntoTest\n );\n for (let i = 0; actualNumberOfResourcesToMoveIntoTest > i; i++) {\n this._testOnBorrow();\n }\n }\n\n // if we aren't testing-on-borrow then lets try to allocate what we can\n if (this._config.testOnBorrow === false) {\n const actualNumberOfResourcesToDispatch = Math.min(\n this._availableObjects.length,\n numWaitingClients\n );\n for (let i = 0; actualNumberOfResourcesToDispatch > i; i++) {\n this._dispatchResource();\n }\n }\n }\n\n /**\n * Dispatches a pooledResource to the next waiting client (if any) else\n * puts the PooledResource back on the available list\n * @param {PooledResource} pooledResource [description]\n * @return {Boolean} [description]\n */\n _dispatchPooledResourceToNextWaitingClient(pooledResource) {\n const clientResourceRequest = this._waitingClientsQueue.dequeue();\n if (\n clientResourceRequest === undefined ||\n clientResourceRequest.state !== Deferred.PENDING\n ) {\n // While we were away either all the waiting clients timed out\n // or were somehow fulfilled. put our pooledResource back.\n this._addPooledResourceToAvailableObjects(pooledResource);\n // TODO: do need to trigger anything before we leave?\n return false;\n }\n const loan = new ResourceLoan(pooledResource, this._Promise);\n this._resourceLoans.set(pooledResource.obj, loan);\n pooledResource.allocate();\n clientResourceRequest.resolve(pooledResource.obj);\n return true;\n }\n\n /**\n * tracks on operation using given set\n * handles adding/removing from the set and resolve/rejects the value/reason\n * @param {Promise} operation\n * @param {Set} set Set holding operations\n * @return {Promise} Promise that resolves once operation has been removed from set\n */\n _trackOperation(operation, set) {\n set.add(operation);\n\n return operation.then(\n v => {\n set.delete(operation);\n return this._Promise.resolve(v);\n },\n e => {\n set.delete(operation);\n return this._Promise.reject(e);\n }\n );\n }\n\n /**\n * @private\n */\n _createResource() {\n // An attempt to create a resource\n const factoryPromise = this._factory.create();\n const wrappedFactoryPromise = this._Promise\n .resolve(factoryPromise)\n .then(resource => {\n const pooledResource = new PooledResource(resource);\n this._allObjects.add(pooledResource);\n this._addPooledResourceToAvailableObjects(pooledResource);\n });\n\n this._trackOperation(wrappedFactoryPromise, this._factoryCreateOperations)\n .then(() => {\n this._dispense();\n // Stop bluebird complaining about this side-effect only handler\n // - a promise was created in a handler but was not returned from it\n // https://goo.gl/rRqMUw\n return null;\n })\n .catch(reason => {\n this.emit(FACTORY_CREATE_ERROR, reason);\n this._dispense();\n });\n }\n\n /**\n * @private\n */\n _ensureMinimum() {\n if (this._draining === true) {\n return;\n }\n const minShortfall = this._config.min - this._count;\n for (let i = 0; i < minShortfall; i++) {\n this._createResource();\n }\n }\n\n _evict() {\n const testsToRun = Math.min(\n this._config.numTestsPerEvictionRun,\n this._availableObjects.length\n );\n const evictionConfig = {\n softIdleTimeoutMillis: this._config.softIdleTimeoutMillis,\n idleTimeoutMillis: this._config.idleTimeoutMillis,\n min: this._config.min\n };\n for (let testsHaveRun = 0; testsHaveRun < testsToRun; ) {\n const iterationResult = this._evictionIterator.next();\n\n // Safety check incase we could get stuck in infinite loop because we\n // somehow emptied the array after checking its length.\n if (iterationResult.done === true && this._availableObjects.length < 1) {\n this._evictionIterator.reset();\n return;\n }\n // If this happens it should just mean we reached the end of the\n // list and can reset the cursor.\n if (iterationResult.done === true && this._availableObjects.length > 0) {\n this._evictionIterator.reset();\n continue;\n }\n\n const resource = iterationResult.value;\n\n const shouldEvict = this._evictor.evict(\n evictionConfig,\n resource,\n this._availableObjects.length\n );\n testsHaveRun++;\n\n if (shouldEvict === true) {\n // take it out of the _availableObjects list\n this._evictionIterator.remove();\n this._destroy(resource);\n }\n }\n }\n\n _scheduleEvictorRun() {\n // Start eviction if set\n if (this._config.evictionRunIntervalMillis > 0) {\n // @ts-ignore\n this._scheduledEviction = setTimeout(() => {\n this._evict();\n this._scheduleEvictorRun();\n }, this._config.evictionRunIntervalMillis).unref();\n }\n }\n\n _descheduleEvictorRun() {\n if (this._scheduledEviction) {\n clearTimeout(this._scheduledEviction);\n }\n this._scheduledEviction = null;\n }\n\n start() {\n if (this._draining === true) {\n return;\n }\n if (this._started === true) {\n return;\n }\n this._started = true;\n this._scheduleEvictorRun();\n this._ensureMinimum();\n }\n\n /**\n * Request a new resource. The callback will be called,\n * when a new resource is available, passing the resource to the callback.\n * TODO: should we add a seperate \"acquireWithPriority\" function\n *\n * @param {Number} [priority=0]\n * Optional. Integer between 0 and (priorityRange - 1). Specifies the priority\n * of the caller if there are no available resources. Lower numbers mean higher\n * priority.\n *\n * @returns {Promise}\n */\n acquire(priority) {\n if (this._started === false && this._config.autostart === false) {\n this.start();\n }\n\n if (this._draining) {\n return this._Promise.reject(\n new Error(\"pool is draining and cannot accept work\")\n );\n }\n\n // TODO: should we defer this check till after this event loop incase \"the situation\" changes in the meantime\n if (\n this.spareResourceCapacity < 1 &&\n this._availableObjects.length < 1 &&\n this._config.maxWaitingClients !== undefined &&\n this._waitingClientsQueue.length >= this._config.maxWaitingClients\n ) {\n return this._Promise.reject(\n new Error(\"max waitingClients count exceeded\")\n );\n }\n\n const resourceRequest = new ResourceRequest(\n this._config.acquireTimeoutMillis,\n this._Promise\n );\n this._waitingClientsQueue.enqueue(resourceRequest, priority);\n this._dispense();\n\n return resourceRequest.promise;\n }\n\n /**\n * [use method, aquires a resource, passes the resource to a user supplied function and releases it]\n * @param {Function} fn [a function that accepts a resource and returns a promise that resolves/rejects once it has finished using the resource]\n * @return {Promise} [resolves once the resource is released to the pool]\n */\n use(fn, priority) {\n return this.acquire(priority).then(resource => {\n return fn(resource).then(\n result => {\n this.release(resource);\n return result;\n },\n err => {\n this.destroy(resource);\n throw err;\n }\n );\n });\n }\n\n /**\n * Check if resource is currently on loan from the pool\n *\n * @param {Function} resource\n * Resource for checking.\n *\n * @returns {Boolean}\n * True if resource belongs to this pool and false otherwise\n */\n isBorrowedResource(resource) {\n return this._resourceLoans.has(resource);\n }\n\n /**\n * Return the resource to the pool when it is no longer required.\n *\n * @param {Object} resource\n * The acquired object to be put back to the pool.\n */\n release(resource) {\n // check for an outstanding loan\n const loan = this._resourceLoans.get(resource);\n\n if (loan === undefined) {\n return this._Promise.reject(\n new Error(\"Resource not currently part of this pool\")\n );\n }\n\n this._resourceLoans.delete(resource);\n loan.resolve();\n const pooledResource = loan.pooledResource;\n\n pooledResource.deallocate();\n this._addPooledResourceToAvailableObjects(pooledResource);\n\n this._dispense();\n return this._Promise.resolve();\n }\n\n /**\n * Request the resource to be destroyed. The factory's destroy handler\n * will also be called.\n *\n * This should be called within an acquire() block as an alternative to release().\n *\n * @param {Object} resource\n * The acquired resource to be destoyed.\n */\n destroy(resource) {\n // check for an outstanding loan\n const loan = this._resourceLoans.get(resource);\n\n if (loan === undefined) {\n return this._Promise.reject(\n new Error(\"Resource not currently part of this pool\")\n );\n }\n\n this._resourceLoans.delete(resource);\n loan.resolve();\n const pooledResource = loan.pooledResource;\n\n pooledResource.deallocate();\n this._destroy(pooledResource);\n\n this._dispense();\n return this._Promise.resolve();\n }\n\n _addPooledResourceToAvailableObjects(pooledResource) {\n pooledResource.idle();\n if (this._config.fifo === true) {\n this._availableObjects.push(pooledResource);\n } else {\n this._availableObjects.unshift(pooledResource);\n }\n }\n\n /**\n * Disallow any new acquire calls and let the request backlog dissapate.\n * The Pool will no longer attempt to maintain a \"min\" number of resources\n * and will only make new resources on demand.\n * Resolves once all resource requests are fulfilled and all resources are returned to pool and available...\n * Should probably be called \"drain work\"\n * @returns {Promise}\n */\n drain() {\n this._draining = true;\n return this.__allResourceRequestsSettled()\n .then(() => {\n return this.__allResourcesReturned();\n })\n .then(() => {\n this._descheduleEvictorRun();\n });\n }\n\n __allResourceRequestsSettled() {\n if (this._waitingClientsQueue.length > 0) {\n // wait for last waiting client to be settled\n // FIXME: what if they can \"resolve\" out of order....?\n return reflector(this._waitingClientsQueue.tail.promise);\n }\n return this._Promise.resolve();\n }\n\n // FIXME: this is a horrific mess\n __allResourcesReturned() {\n const ps = Array.from(this._resourceLoans.values())\n .map(loan => loan.promise)\n .map(reflector);\n return this._Promise.all(ps);\n }\n\n /**\n * Forcibly destroys all available resources regardless of timeout. Intended to be\n * invoked as part of a drain. Does not prevent the creation of new\n * resources as a result of subsequent calls to acquire.\n *\n * Note that if factory.min > 0 and the pool isn't \"draining\", the pool will destroy all idle resources\n * in the pool, but replace them with newly created resources up to the\n * specified factory.min value. If this is not desired, set factory.min\n * to zero before calling clear()\n *\n */\n clear() {\n const reflectedCreatePromises = Array.from(\n this._factoryCreateOperations\n ).map(reflector);\n\n // wait for outstanding factory.create to complete\n return this._Promise.all(reflectedCreatePromises).then(() => {\n // Destroy existing resources\n // @ts-ignore\n for (const resource of this._availableObjects) {\n this._destroy(resource);\n }\n const reflectedDestroyPromises = Array.from(\n this._factoryDestroyOperations\n ).map(reflector);\n return reflector(this._Promise.all(reflectedDestroyPromises));\n });\n }\n\n /**\n * Waits until the pool is ready.\n * We define ready by checking if the current resource number is at least\n * the minimum number defined.\n * @returns {Promise} that resolves when the minimum number is ready.\n */\n ready() {\n return new this._Promise(resolve => {\n const isReady = () => {\n if (this.available >= this.min) {\n resolve();\n } else {\n setTimeout(isReady, 100);\n }\n };\n\n isReady();\n });\n }\n\n /**\n * How many resources are available to allocated\n * (includes resources that have not been tested and may faul validation)\n * NOTE: internal for now as the name is awful and might not be useful to anyone\n * @return {Number} number of resources the pool has to allocate\n */\n get _potentiallyAllocableResourceCount() {\n return (\n this._availableObjects.length +\n this._testOnBorrowResources.size +\n this._testOnReturnResources.size +\n this._factoryCreateOperations.size\n );\n }\n\n /**\n * The combined count of the currently created objects and those in the\n * process of being created\n * Does NOT include resources in the process of being destroyed\n * sort of legacy...\n * @return {Number}\n */\n get _count() {\n return this._allObjects.size + this._factoryCreateOperations.size;\n }\n\n /**\n * How many more resources does the pool have room for\n * @return {Number} number of resources the pool could create before hitting any limits\n */\n get spareResourceCapacity() {\n return (\n this._config.max -\n (this._allObjects.size + this._factoryCreateOperations.size)\n );\n }\n\n /**\n * see _count above\n * @return {Number} [description]\n */\n get size() {\n return this._count;\n }\n\n /**\n * number of available resources\n * @return {Number} [description]\n */\n get available() {\n return this._availableObjects.length;\n }\n\n /**\n * number of resources that are currently acquired\n * @return {Number} [description]\n */\n get borrowed() {\n return this._resourceLoans.size;\n }\n\n /**\n * number of waiting acquire calls\n * @return {Number} [description]\n */\n get pending() {\n return this._waitingClientsQueue.length;\n }\n\n /**\n * maximum size of the pool\n * @return {Number} [description]\n */\n get max() {\n return this._config.max;\n }\n\n /**\n * minimum size of the pool\n * @return {Number} [description]\n */\n get min() {\n return this._config.min;\n }\n}\n\nmodule.exports = Pool;\n","\"use strict\";\n/**\n * Create the default settings used by the pool\n *\n * @class\n */\nclass PoolDefaults {\n constructor() {\n this.fifo = true;\n this.priorityRange = 1;\n\n this.testOnBorrow = false;\n this.testOnReturn = false;\n\n this.autostart = true;\n\n this.evictionRunIntervalMillis = 0;\n this.numTestsPerEvictionRun = 3;\n this.softIdleTimeoutMillis = -1;\n this.idleTimeoutMillis = 30000;\n\n // FIXME: no defaults!\n this.acquireTimeoutMillis = null;\n this.destroyTimeoutMillis = null;\n this.maxWaitingClients = null;\n\n this.min = null;\n this.max = null;\n // FIXME: this seems odd?\n this.Promise = Promise;\n }\n}\n\nmodule.exports = PoolDefaults;\n","\"use strict\";\n\nconst PoolDefaults = require(\"./PoolDefaults\");\n\nclass PoolOptions {\n /**\n * @param {Object} opts\n * configuration for the pool\n * @param {Number} [opts.max=null]\n * Maximum number of items that can exist at the same time. Default: 1.\n * Any further acquire requests will be pushed to the waiting list.\n * @param {Number} [opts.min=null]\n * Minimum number of items in pool (including in-use). Default: 0.\n * When the pool is created, or a resource destroyed, this minimum will\n * be checked. If the pool resource count is below the minimum, a new\n * resource will be created and added to the pool.\n * @param {Number} [opts.maxWaitingClients=null]\n * maximum number of queued requests allowed after which acquire calls will be rejected\n * @param {Boolean} [opts.testOnBorrow=false]\n * should the pool validate resources before giving them to clients. Requires that\n * `factory.validate` is specified.\n * @param {Boolean} [opts.testOnReturn=false]\n * should the pool validate resources before returning them to the pool.\n * @param {Number} [opts.acquireTimeoutMillis=null]\n * Delay in milliseconds after which the an `acquire` call will fail. optional.\n * Default: undefined. Should be positive and non-zero\n * @param {Number} [opts.destroyTimeoutMillis=null]\n * Delay in milliseconds after which the an `destroy` call will fail, causing it to emit a factoryDestroyError event. optional.\n * Default: undefined. Should be positive and non-zero\n * @param {Number} [opts.priorityRange=1]\n * The range from 1 to be treated as a valid priority\n * @param {Boolean} [opts.fifo=true]\n * Sets whether the pool has LIFO (last in, first out) behaviour with respect to idle objects.\n * if false then pool has FIFO behaviour\n * @param {Boolean} [opts.autostart=true]\n * Should the pool start creating resources etc once the constructor is called\n * @param {Number} [opts.evictionRunIntervalMillis=0]\n * How often to run eviction checks. Default: 0 (does not run).\n * @param {Number} [opts.numTestsPerEvictionRun=3]\n * Number of resources to check each eviction run. Default: 3.\n * @param {Number} [opts.softIdleTimeoutMillis=-1]\n * amount of time an object may sit idle in the pool before it is eligible\n * for eviction by the idle object evictor (if any), with the extra condition\n * that at least \"min idle\" object instances remain in the pool. Default -1 (nothing can get evicted)\n * @param {Number} [opts.idleTimeoutMillis=30000]\n * the minimum amount of time that an object may sit idle in the pool before it is eligible for eviction\n * due to idle time. Supercedes \"softIdleTimeoutMillis\" Default: 30000\n * @param {typeof Promise} [opts.Promise=Promise]\n * What promise implementation should the pool use, defaults to native promises.\n */\n constructor(opts) {\n const poolDefaults = new PoolDefaults();\n\n opts = opts || {};\n\n this.fifo = typeof opts.fifo === \"boolean\" ? opts.fifo : poolDefaults.fifo;\n this.priorityRange = opts.priorityRange || poolDefaults.priorityRange;\n\n this.testOnBorrow =\n typeof opts.testOnBorrow === \"boolean\"\n ? opts.testOnBorrow\n : poolDefaults.testOnBorrow;\n this.testOnReturn =\n typeof opts.testOnReturn === \"boolean\"\n ? opts.testOnReturn\n : poolDefaults.testOnReturn;\n\n this.autostart =\n typeof opts.autostart === \"boolean\"\n ? opts.autostart\n : poolDefaults.autostart;\n\n if (opts.acquireTimeoutMillis) {\n // @ts-ignore\n this.acquireTimeoutMillis = parseInt(opts.acquireTimeoutMillis, 10);\n }\n\n if (opts.destroyTimeoutMillis) {\n // @ts-ignore\n this.destroyTimeoutMillis = parseInt(opts.destroyTimeoutMillis, 10);\n }\n\n if (opts.maxWaitingClients !== undefined) {\n // @ts-ignore\n this.maxWaitingClients = parseInt(opts.maxWaitingClients, 10);\n }\n\n // @ts-ignore\n this.max = parseInt(opts.max, 10);\n // @ts-ignore\n this.min = parseInt(opts.min, 10);\n\n this.max = Math.max(isNaN(this.max) ? 1 : this.max, 1);\n this.min = Math.min(isNaN(this.min) ? 0 : this.min, this.max);\n\n this.evictionRunIntervalMillis =\n opts.evictionRunIntervalMillis || poolDefaults.evictionRunIntervalMillis;\n this.numTestsPerEvictionRun =\n opts.numTestsPerEvictionRun || poolDefaults.numTestsPerEvictionRun;\n this.softIdleTimeoutMillis =\n opts.softIdleTimeoutMillis || poolDefaults.softIdleTimeoutMillis;\n this.idleTimeoutMillis =\n opts.idleTimeoutMillis || poolDefaults.idleTimeoutMillis;\n\n this.Promise = opts.Promise != null ? opts.Promise : poolDefaults.Promise;\n }\n}\n\nmodule.exports = PoolOptions;\n","\"use strict\";\n\nconst PooledResourceStateEnum = require(\"./PooledResourceStateEnum\");\n\n/**\n * @class\n * @private\n */\nclass PooledResource {\n constructor(resource) {\n this.creationTime = Date.now();\n this.lastReturnTime = null;\n this.lastBorrowTime = null;\n this.lastIdleTime = null;\n this.obj = resource;\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n // mark the resource as \"allocated\"\n allocate() {\n this.lastBorrowTime = Date.now();\n this.state = PooledResourceStateEnum.ALLOCATED;\n }\n\n // mark the resource as \"deallocated\"\n deallocate() {\n this.lastReturnTime = Date.now();\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n invalidate() {\n this.state = PooledResourceStateEnum.INVALID;\n }\n\n test() {\n this.state = PooledResourceStateEnum.VALIDATION;\n }\n\n idle() {\n this.lastIdleTime = Date.now();\n this.state = PooledResourceStateEnum.IDLE;\n }\n\n returning() {\n this.state = PooledResourceStateEnum.RETURNING;\n }\n}\n\nmodule.exports = PooledResource;\n","\"use strict\";\n\nconst PooledResourceStateEnum = {\n ALLOCATED: \"ALLOCATED\", // In use\n IDLE: \"IDLE\", // In the queue, not in use.\n INVALID: \"INVALID\", // Failed validation\n RETURNING: \"RETURNING\", // Resource is in process of returning\n VALIDATION: \"VALIDATION\" // Currently being tested\n};\n\nmodule.exports = PooledResourceStateEnum;\n","\"use strict\";\n\nconst Queue = require(\"./Queue\");\n\n/**\n * @class\n * @private\n */\nclass PriorityQueue {\n constructor(size) {\n this._size = Math.max(+size | 0, 1);\n /** @type {Queue[]} */\n this._slots = [];\n // initialize arrays to hold queue elements\n for (let i = 0; i < this._size; i++) {\n this._slots.push(new Queue());\n }\n }\n\n get length() {\n let _length = 0;\n for (let i = 0, slots = this._slots.length; i < slots; i++) {\n _length += this._slots[i].length;\n }\n return _length;\n }\n\n enqueue(obj, priority) {\n // Convert to integer with a default value of 0.\n priority = (priority && +priority | 0) || 0;\n\n if (priority) {\n if (priority < 0 || priority >= this._size) {\n priority = this._size - 1;\n // put obj at the end of the line\n }\n }\n this._slots[priority].push(obj);\n }\n\n dequeue() {\n for (let i = 0, sl = this._slots.length; i < sl; i += 1) {\n if (this._slots[i].length) {\n return this._slots[i].shift();\n }\n }\n return;\n }\n\n get head() {\n for (let i = 0, sl = this._slots.length; i < sl; i += 1) {\n if (this._slots[i].length > 0) {\n return this._slots[i].head;\n }\n }\n return;\n }\n\n get tail() {\n for (let i = this._slots.length - 1; i >= 0; i--) {\n if (this._slots[i].length > 0) {\n return this._slots[i].tail;\n }\n }\n return;\n }\n}\n\nmodule.exports = PriorityQueue;\n","\"use strict\";\n\nconst DoublyLinkedList = require(\"./DoublyLinkedList\");\nconst Deque = require(\"./Deque\");\n\n/**\n * Sort of a internal queue for holding the waiting\n * resource requets for a given \"priority\".\n * Also handles managing timeouts rejections on items (is this the best place for this?)\n * This is the last point where we know which queue a resourceRequest is in\n *\n */\nclass Queue extends Deque {\n /**\n * Adds the obj to the end of the list for this slot\n * we completely override the parent method because we need access to the\n * node for our rejection handler\n * @param {any} resourceRequest [description]\n */\n push(resourceRequest) {\n const node = DoublyLinkedList.createNode(resourceRequest);\n resourceRequest.promise.catch(this._createTimeoutRejectionHandler(node));\n this._list.insertEnd(node);\n }\n\n _createTimeoutRejectionHandler(node) {\n return reason => {\n if (reason.name === \"TimeoutError\") {\n this._list.remove(node);\n }\n };\n }\n}\n\nmodule.exports = Queue;\n","\"use strict\";\n\nconst Deferred = require(\"./Deferred\");\n\n/**\n * Plan is to maybe add tracking via Error objects\n * and other fun stuff!\n */\n\nclass ResourceLoan extends Deferred {\n /**\n *\n * @param {any} pooledResource the PooledResource this loan belongs to\n * @return {any} [description]\n */\n constructor(pooledResource, Promise) {\n super(Promise);\n this._creationTimestamp = Date.now();\n this.pooledResource = pooledResource;\n }\n\n reject() {\n /**\n * Loans can only be resolved at the moment\n */\n }\n}\n\nmodule.exports = ResourceLoan;\n","\"use strict\";\n\nconst Deferred = require(\"./Deferred\");\nconst errors = require(\"./errors\");\n\nfunction fbind(fn, ctx) {\n return function bound() {\n return fn.apply(ctx, arguments);\n };\n}\n\n/**\n * Wraps a users request for a resource\n * Basically a promise mashed in with a timeout\n * @private\n */\nclass ResourceRequest extends Deferred {\n /**\n * [constructor description]\n * @param {Number} ttl timeout\n */\n constructor(ttl, Promise) {\n super(Promise);\n this._creationTimestamp = Date.now();\n this._timeout = null;\n\n if (ttl !== undefined) {\n this.setTimeout(ttl);\n }\n }\n\n setTimeout(delay) {\n if (this._state !== ResourceRequest.PENDING) {\n return;\n }\n const ttl = parseInt(delay, 10);\n\n if (isNaN(ttl) || ttl <= 0) {\n throw new Error(\"delay must be a positive int\");\n }\n\n const age = Date.now() - this._creationTimestamp;\n\n if (this._timeout) {\n this.removeTimeout();\n }\n\n this._timeout = setTimeout(\n fbind(this._fireTimeout, this),\n Math.max(ttl - age, 0)\n );\n }\n\n removeTimeout() {\n if (this._timeout) {\n clearTimeout(this._timeout);\n }\n this._timeout = null;\n }\n\n _fireTimeout() {\n this.reject(new errors.TimeoutError(\"ResourceRequest timed out\"));\n }\n\n reject(reason) {\n this.removeTimeout();\n super.reject(reason);\n }\n\n resolve(value) {\n this.removeTimeout();\n super.resolve(value);\n }\n}\n\nmodule.exports = ResourceRequest;\n","\"use strict\";\n\nclass ExtendableError extends Error {\n constructor(message) {\n super(message);\n // @ts-ignore\n this.name = this.constructor.name;\n this.message = message;\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = new Error(message).stack;\n }\n }\n}\n\n/* eslint-disable no-useless-constructor */\nclass TimeoutError extends ExtendableError {\n constructor(m) {\n super(m);\n }\n}\n/* eslint-enable no-useless-constructor */\n\nmodule.exports = {\n TimeoutError: TimeoutError\n};\n","module.exports = function(factory) {\n if (typeof factory.create !== \"function\") {\n throw new TypeError(\"factory.create must be a function\");\n }\n\n if (typeof factory.destroy !== \"function\") {\n throw new TypeError(\"factory.destroy must be a function\");\n }\n\n if (\n typeof factory.validate !== \"undefined\" &&\n typeof factory.validate !== \"function\"\n ) {\n throw new TypeError(\"factory.validate must be a function\");\n }\n};\n","\"use strict\";\n\nfunction noop() {}\n\n/**\n * Reflects a promise but does not expose any\n * underlying value or rejection from that promise.\n * @param {Promise} promise [description]\n * @return {Promise} [description]\n */\nexports.reflector = function(promise) {\n return promise.then(noop, noop);\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst net_1 = __importDefault(require(\"net\"));\nconst tls_1 = __importDefault(require(\"tls\"));\nconst url_1 = __importDefault(require(\"url\"));\nconst assert_1 = __importDefault(require(\"assert\"));\nconst debug_1 = __importDefault(require(\"debug\"));\nconst agent_base_1 = require(\"agent-base\");\nconst parse_proxy_response_1 = __importDefault(require(\"./parse-proxy-response\"));\nconst debug = debug_1.default('https-proxy-agent:agent');\n/**\n * The `HttpsProxyAgent` implements an HTTP Agent subclass that connects to\n * the specified \"HTTP(s) proxy server\" in order to proxy HTTPS requests.\n *\n * Outgoing HTTP requests are first tunneled through the proxy server using the\n * `CONNECT` HTTP request method to establish a connection to the proxy server,\n * and then the proxy server connects to the destination target and issues the\n * HTTP request from the proxy server.\n *\n * `https:` requests have their socket connection upgraded to TLS once\n * the connection to the proxy server has been established.\n *\n * @api public\n */\nclass HttpsProxyAgent extends agent_base_1.Agent {\n constructor(_opts) {\n let opts;\n if (typeof _opts === 'string') {\n opts = url_1.default.parse(_opts);\n }\n else {\n opts = _opts;\n }\n if (!opts) {\n throw new Error('an HTTP(S) proxy server `host` and `port` must be specified!');\n }\n debug('creating new HttpsProxyAgent instance: %o', opts);\n super(opts);\n const proxy = Object.assign({}, opts);\n // If `true`, then connect to the proxy server over TLS.\n // Defaults to `false`.\n this.secureProxy = opts.secureProxy || isHTTPS(proxy.protocol);\n // Prefer `hostname` over `host`, and set the `port` if needed.\n proxy.host = proxy.hostname || proxy.host;\n if (typeof proxy.port === 'string') {\n proxy.port = parseInt(proxy.port, 10);\n }\n if (!proxy.port && proxy.host) {\n proxy.port = this.secureProxy ? 443 : 80;\n }\n // ALPN is supported by Node.js >= v5.\n // attempt to negotiate http/1.1 for proxy servers that support http/2\n if (this.secureProxy && !('ALPNProtocols' in proxy)) {\n proxy.ALPNProtocols = ['http 1.1'];\n }\n if (proxy.host && proxy.path) {\n // If both a `host` and `path` are specified then it's most likely\n // the result of a `url.parse()` call... we need to remove the\n // `path` portion so that `net.connect()` doesn't attempt to open\n // that as a Unix socket file.\n delete proxy.path;\n delete proxy.pathname;\n }\n this.proxy = proxy;\n }\n /**\n * Called when the node-core HTTP client library is creating a\n * new HTTP request.\n *\n * @api protected\n */\n callback(req, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const { proxy, secureProxy } = this;\n // Create a socket connection to the proxy server.\n let socket;\n if (secureProxy) {\n debug('Creating `tls.Socket`: %o', proxy);\n socket = tls_1.default.connect(proxy);\n }\n else {\n debug('Creating `net.Socket`: %o', proxy);\n socket = net_1.default.connect(proxy);\n }\n const headers = Object.assign({}, proxy.headers);\n const hostname = `${opts.host}:${opts.port}`;\n let payload = `CONNECT ${hostname} HTTP/1.1\\r\\n`;\n // Inject the `Proxy-Authorization` header if necessary.\n if (proxy.auth) {\n headers['Proxy-Authorization'] = `Basic ${Buffer.from(proxy.auth).toString('base64')}`;\n }\n // The `Host` header should only include the port\n // number when it is not the default port.\n let { host, port, secureEndpoint } = opts;\n if (!isDefaultPort(port, secureEndpoint)) {\n host += `:${port}`;\n }\n headers.Host = host;\n headers.Connection = 'close';\n for (const name of Object.keys(headers)) {\n payload += `${name}: ${headers[name]}\\r\\n`;\n }\n const proxyResponsePromise = parse_proxy_response_1.default(socket);\n socket.write(`${payload}\\r\\n`);\n const { statusCode, buffered } = yield proxyResponsePromise;\n if (statusCode === 200) {\n req.once('socket', resume);\n if (opts.secureEndpoint) {\n // The proxy is connecting to a TLS server, so upgrade\n // this socket connection to a TLS connection.\n debug('Upgrading socket connection to TLS');\n const servername = opts.servername || opts.host;\n return tls_1.default.connect(Object.assign(Object.assign({}, omit(opts, 'host', 'hostname', 'path', 'port')), { socket,\n servername }));\n }\n return socket;\n }\n // Some other status code that's not 200... need to re-play the HTTP\n // header \"data\" events onto the socket once the HTTP machinery is\n // attached so that the node core `http` can parse and handle the\n // error status code.\n // Close the original socket, and a new \"fake\" socket is returned\n // instead, so that the proxy doesn't get the HTTP request\n // written to it (which may contain `Authorization` headers or other\n // sensitive data).\n //\n // See: https://hackerone.com/reports/541502\n socket.destroy();\n const fakeSocket = new net_1.default.Socket({ writable: false });\n fakeSocket.readable = true;\n // Need to wait for the \"socket\" event to re-play the \"data\" events.\n req.once('socket', (s) => {\n debug('replaying proxy buffer for failed request');\n assert_1.default(s.listenerCount('data') > 0);\n // Replay the \"buffered\" Buffer onto the fake `socket`, since at\n // this point the HTTP module machinery has been hooked up for\n // the user.\n s.push(buffered);\n s.push(null);\n });\n return fakeSocket;\n });\n }\n}\nexports.default = HttpsProxyAgent;\nfunction resume(socket) {\n socket.resume();\n}\nfunction isDefaultPort(port, secure) {\n return Boolean((!secure && port === 80) || (secure && port === 443));\n}\nfunction isHTTPS(protocol) {\n return typeof protocol === 'string' ? /^https:?$/i.test(protocol) : false;\n}\nfunction omit(obj, ...keys) {\n const ret = {};\n let key;\n for (key in obj) {\n if (!keys.includes(key)) {\n ret[key] = obj[key];\n }\n }\n return ret;\n}\n//# sourceMappingURL=agent.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nconst agent_1 = __importDefault(require(\"./agent\"));\nfunction createHttpsProxyAgent(opts) {\n return new agent_1.default(opts);\n}\n(function (createHttpsProxyAgent) {\n createHttpsProxyAgent.HttpsProxyAgent = agent_1.default;\n createHttpsProxyAgent.prototype = agent_1.default.prototype;\n})(createHttpsProxyAgent || (createHttpsProxyAgent = {}));\nmodule.exports = createHttpsProxyAgent;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst debug_1 = __importDefault(require(\"debug\"));\nconst debug = debug_1.default('https-proxy-agent:parse-proxy-response');\nfunction parseProxyResponse(socket) {\n return new Promise((resolve, reject) => {\n // we need to buffer any HTTP traffic that happens with the proxy before we get\n // the CONNECT response, so that if the response is anything other than an \"200\"\n // response code, then we can re-play the \"data\" events on the socket once the\n // HTTP parser is hooked up...\n let buffersLength = 0;\n const buffers = [];\n function read() {\n const b = socket.read();\n if (b)\n ondata(b);\n else\n socket.once('readable', read);\n }\n function cleanup() {\n socket.removeListener('end', onend);\n socket.removeListener('error', onerror);\n socket.removeListener('close', onclose);\n socket.removeListener('readable', read);\n }\n function onclose(err) {\n debug('onclose had error %o', err);\n }\n function onend() {\n debug('onend');\n }\n function onerror(err) {\n cleanup();\n debug('onerror %o', err);\n reject(err);\n }\n function ondata(b) {\n buffers.push(b);\n buffersLength += b.length;\n const buffered = Buffer.concat(buffers, buffersLength);\n const endOfHeaders = buffered.indexOf('\\r\\n\\r\\n');\n if (endOfHeaders === -1) {\n // keep buffering\n debug('have not received end of HTTP headers yet...');\n read();\n return;\n }\n const firstLine = buffered.toString('ascii', 0, buffered.indexOf('\\r\\n'));\n const statusCode = +firstLine.split(' ')[1];\n debug('got proxy server response: %o', firstLine);\n resolve({\n statusCode,\n buffered\n });\n }\n socket.on('error', onerror);\n socket.on('close', onclose);\n socket.on('end', onend);\n read();\n });\n}\nexports.default = parseProxyResponse;\n//# sourceMappingURL=parse-proxy-response.js.map","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*!\n * is-plain-object \n *\n * Copyright (c) 2014-2017, Jon Schlinkert.\n * Released under the MIT License.\n */\n\nfunction isObject(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isPlainObject(o) {\n var ctor,prot;\n\n if (isObject(o) === false) return false;\n\n // If has modified constructor\n ctor = o.constructor;\n if (ctor === undefined) return true;\n\n // If has modified prototype\n prot = ctor.prototype;\n if (isObject(prot) === false) return false;\n\n // If constructor does not have an Object-specific method\n if (prot.hasOwnProperty('isPrototypeOf') === false) {\n return false;\n }\n\n // Most likely a plain Object\n return true;\n}\n\nexports.isPlainObject = isPlainObject;\n","\n/**\n * Module dependencies.\n */\n\nvar Bayesian = require('classifier').Bayesian;\n\n/**\n * Memory from classifier training.\n */\n\nvar memory = require('./memory.json');\n\n/**\n * Classifier singleton.\n */\n\nvar classifier = new Bayesian;\n\n// input training data\n\nclassifier.fromJSON(memory);\n\n/**\n * Expose the classifier.\n */\n\nmodule.exports = classifier.classify.bind(classifier);\n","var fs = require('fs');\nvar path = require('path');\nvar classify = require('language-classifier');\n\n/**\n * Map classification language names to mapped language names.\n *\n * @type {Object}\n */\nvar classifyMap = {\n 'ruby': 'Ruby',\n 'python': 'Python',\n 'javascript': 'JavaScript',\n 'objective-c': 'Objective-C',\n 'html': 'HTML',\n 'css': 'CSS',\n 'shell': 'Shell',\n 'c++': 'C++',\n 'c': 'C',\n 'coffee-script': 'CoffeeScript'\n};\n\n/**\n * Return the programming language of a given filename.\n *\n * @param {String} filename\n * @param {Function} done\n */\nexports = module.exports = function (filename, done) {\n fs.stat(filename, function (err, stats) {\n if (err) {\n return done(err);\n }\n\n if (!stats.isFile()) {\n return done(new Error('Should only detect files: ' + filename));\n }\n\n // Do the simplest synchronous test based on filenames first.\n var fileDetected = exports.filename(filename);\n\n if (fileDetected) {\n return done(null, fileDetected);\n }\n\n var languages = {};\n var shebang = '';\n var firstChunk = true;\n var hasShebang = false;\n var shebangDetected;\n\n // Open a file read stream. This should be the simplest way to do\n // dynamic language detection while the stream is running.\n var stream = fs.createReadStream(filename);\n\n // Call `done` with the error when something breaks.\n stream.on('error', done);\n\n stream.on('data', function (data) {\n var chunk = data.toString();\n\n // If it's the first chunk we want to\n if (firstChunk) {\n chunk = chunk.replace(/^ +/, '');\n\n // If we have at least two characters left in the chunk, we can assume\n // enough of the first chunk has been received to test the shebang.\n if (chunk.length > 1) {\n firstChunk = false;\n\n // If we have a shebang, we need to special case the stream until\n // the first new line.\n if (chunk.substr(0, 2) === '#!') {\n hasShebang = true;\n }\n }\n }\n\n // While we have the shebang line, concat each chunk together for testing.\n if (hasShebang) {\n shebang += chunk;\n\n // On the first new line, test the shebang and attempt to close the\n // stream early.\n if (/\\r?\\n/.test(shebang)) {\n hasShebang = false;\n shebangDetected = exports.shebang(shebang);\n\n if (shebangDetected) {\n return stream.close();\n }\n }\n }\n\n // If the shebang doesn't exist, fall back to language classification.\n var classified = exports.classify(chunk);\n\n if (classified) {\n (languages[classified]++ || (languages[classified] = 1));\n }\n });\n\n stream.on('close', function () {\n // We can short-circuit if the shebang was detected.\n if (shebangDetected) {\n return done(null, shebangDetected);\n }\n\n // No languages were detected in the entire file.\n if (!Object.keys(languages).length) {\n return done();\n }\n\n // Get the most popular language from language detection.\n var popular = Object.keys(languages).reduce(function (highest, language) {\n return languages[highest] > languages[language] ? highest : language;\n });\n\n return done(null, popular);\n });\n });\n};\n\n/**\n * Export useful direct aliases.\n *\n * @type {Object}\n */\nexports.aliases = require('./vendor/aliases.json');\nexports.filenames = require('./vendor/filenames.json');\nexports.extensions = require('./vendor/extensions.json');\nexports.interpreters = require('./vendor/interpreters.json');\n\n/**\n * Detect file language synchronously.\n *\n * @param {String} filename\n * @return {String}\n */\nexports.sync = function (filename) {\n if (!fs.statSync(filename).isFile()) {\n throw new Error('Should only detect files: ' + filename);\n }\n\n return (\n exports.filename(filename) ||\n exports.contents(path, fs.readFileSync(filename))\n );\n}\n\n/**\n * Check against the contents of a file synchronously.\n\n * @param {String} filename\n * @param {String} contents\n * @return {String}\n */\nexports.contents = function (filename, contents) {\n return (\n exports.filename(filename) ||\n exports.shebang(contents) ||\n exports.classify(contents)\n );\n};\n\n/**\n * Attempt to get the language based on a filename.\n *\n * @param {String} filename\n * @return {String}\n */\nexports.filename = function (filename) {\n var basename = path.basename(filename);\n\n // The filename was detected.\n if (typeof exports.filenames[basename] === 'string') {\n return exports.filenames[basename];\n }\n\n var extension = (path.extname(basename) || '').toLowerCase();\n\n // The extension was recognised.\n if (typeof exports.extensions[extension] === 'string') {\n return exports.extensions[extension];\n }\n};\n\n/**\n * Return the language from a shebang definition.\n *\n * @param {String} contents\n * @return {String}\n */\nexports.shebang = function (contents) {\n // Coerece to a string (in case of Buffer) and replace preceding whitespace.\n var file = contents.toString().replace(/^\\s*/, '');\n\n // Return early if it doesn't start with a shebang.\n if (file.substr(0, 2) !== '#!') {\n return;\n }\n\n var bang = file.split(/\\r?\\n/g)[0];\n var tokens = bang.replace(/^#! +/, '#!').split(' ');\n var pieces = tokens[0].split('/');\n var script = pieces[pieces.length - 1];\n\n if (script === 'env') {\n script = tokens[1];\n }\n\n // \"python2.6\" -> \"python\"\n script = script.replace(/(?:\\d+\\.?)+$/, '');\n\n return exports.interpreters[script] || exports.aliases[script];\n};\n\n/**\n * Attempt to classify the file contents.\n *\n * @param {String} contents\n * @return {String}\n */\nexports.classify = function (contents) {\n return classifyMap[classify(contents.toString())];\n};\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function(val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = / 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\tif (!headers.has('Connection') && !agent) {\n\t\theaders.set('Connection', 'close');\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\n\nvar parseUrl = require('url').parse;\n\nvar DEFAULT_PORTS = {\n ftp: 21,\n gopher: 70,\n http: 80,\n https: 443,\n ws: 80,\n wss: 443,\n};\n\nvar stringEndsWith = String.prototype.endsWith || function(s) {\n return s.length <= this.length &&\n this.indexOf(s, this.length - s.length) !== -1;\n};\n\n/**\n * @param {string|object} url - The URL, or the result from url.parse.\n * @return {string} The URL of the proxy that should handle the request to the\n * given URL. If no proxy is set, this will be an empty string.\n */\nfunction getProxyForUrl(url) {\n var parsedUrl = typeof url === 'string' ? parseUrl(url) : url || {};\n var proto = parsedUrl.protocol;\n var hostname = parsedUrl.host;\n var port = parsedUrl.port;\n if (typeof hostname !== 'string' || !hostname || typeof proto !== 'string') {\n return ''; // Don't proxy URLs without a valid scheme or host.\n }\n\n proto = proto.split(':', 1)[0];\n // Stripping ports in this way instead of using parsedUrl.hostname to make\n // sure that the brackets around IPv6 addresses are kept.\n hostname = hostname.replace(/:\\d*$/, '');\n port = parseInt(port) || DEFAULT_PORTS[proto] || 0;\n if (!shouldProxy(hostname, port)) {\n return ''; // Don't proxy URLs that match NO_PROXY.\n }\n\n var proxy =\n getEnv('npm_config_' + proto + '_proxy') ||\n getEnv(proto + '_proxy') ||\n getEnv('npm_config_proxy') ||\n getEnv('all_proxy');\n if (proxy && proxy.indexOf('://') === -1) {\n // Missing scheme in proxy, default to the requested URL's scheme.\n proxy = proto + '://' + proxy;\n }\n return proxy;\n}\n\n/**\n * Determines whether a given URL should be proxied.\n *\n * @param {string} hostname - The host name of the URL.\n * @param {number} port - The effective port of the URL.\n * @returns {boolean} Whether the given URL should be proxied.\n * @private\n */\nfunction shouldProxy(hostname, port) {\n var NO_PROXY =\n (getEnv('npm_config_no_proxy') || getEnv('no_proxy')).toLowerCase();\n if (!NO_PROXY) {\n return true; // Always proxy if NO_PROXY is not set.\n }\n if (NO_PROXY === '*') {\n return false; // Never proxy if wildcard is set.\n }\n\n return NO_PROXY.split(/[,\\s]/).every(function(proxy) {\n if (!proxy) {\n return true; // Skip zero-length hosts.\n }\n var parsedProxy = proxy.match(/^(.+):(\\d+)$/);\n var parsedProxyHostname = parsedProxy ? parsedProxy[1] : proxy;\n var parsedProxyPort = parsedProxy ? parseInt(parsedProxy[2]) : 0;\n if (parsedProxyPort && parsedProxyPort !== port) {\n return true; // Skip if ports don't match.\n }\n\n if (!/^[.*]/.test(parsedProxyHostname)) {\n // No wildcards, so stop proxying if there is an exact match.\n return hostname !== parsedProxyHostname;\n }\n\n if (parsedProxyHostname.charAt(0) === '*') {\n // Remove leading wildcard.\n parsedProxyHostname = parsedProxyHostname.slice(1);\n }\n // Stop proxying if the hostname ends with the no_proxy host.\n return !stringEndsWith.call(hostname, parsedProxyHostname);\n });\n}\n\n/**\n * Get the value for an environment variable.\n *\n * @param {string} key - The name of the environment variable.\n * @return {string} The value of the environment variable.\n * @private\n */\nfunction getEnv(key) {\n return process.env[key.toLowerCase()] || process.env[key.toUpperCase()] || '';\n}\n\nexports.getProxyForUrl = getProxyForUrl;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createCluster = exports.createClient = void 0;\nconst client_1 = require(\"@redis/client\");\nconst bloom_1 = require(\"@redis/bloom\");\nconst graph_1 = require(\"@redis/graph\");\nconst json_1 = require(\"@redis/json\");\nconst search_1 = require(\"@redis/search\");\nconst time_series_1 = require(\"@redis/time-series\");\n__exportStar(require(\"@redis/client\"), exports);\n__exportStar(require(\"@redis/bloom\"), exports);\n__exportStar(require(\"@redis/graph\"), exports);\n__exportStar(require(\"@redis/json\"), exports);\n__exportStar(require(\"@redis/search\"), exports);\n__exportStar(require(\"@redis/time-series\"), exports);\nconst modules = {\n ...bloom_1.default,\n graph: graph_1.default,\n json: json_1.default,\n ft: search_1.default,\n ts: time_series_1.default\n};\nfunction createClient(options) {\n return (0, client_1.createClient)({\n ...options,\n modules: {\n ...modules,\n ...options?.modules\n }\n });\n}\nexports.createClient = createClient;\nfunction createCluster(options) {\n return (0, client_1.createCluster)({\n ...options,\n modules: {\n ...modules,\n ...options?.modules\n }\n });\n}\nexports.createCluster = createCluster;\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && \"version\" in process) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let 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 const seedBytes = options.random || (options.rng || _rng.default)();\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 let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const 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 const 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 const 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 (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\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 offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n",null,"module.exports = require(\"assert\");","module.exports = require(\"crypto\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"http\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"punycode\");","module.exports = require(\"stream\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"zlib\");","// Axios v1.3.4 Copyright (c) 2023 Matt Zabriskie and contributors\n'use strict';\n\nconst FormData$1 = require('form-data');\nconst url = require('url');\nconst proxyFromEnv = require('proxy-from-env');\nconst http = require('http');\nconst https = require('https');\nconst util = require('util');\nconst followRedirects = require('follow-redirects');\nconst zlib = require('zlib');\nconst stream = require('stream');\nconst EventEmitter = require('events');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nconst FormData__default = /*#__PURE__*/_interopDefaultLegacy(FormData$1);\nconst url__default = /*#__PURE__*/_interopDefaultLegacy(url);\nconst http__default = /*#__PURE__*/_interopDefaultLegacy(http);\nconst https__default = /*#__PURE__*/_interopDefaultLegacy(https);\nconst util__default = /*#__PURE__*/_interopDefaultLegacy(util);\nconst followRedirects__default = /*#__PURE__*/_interopDefaultLegacy(followRedirects);\nconst zlib__default = /*#__PURE__*/_interopDefaultLegacy(zlib);\nconst stream__default = /*#__PURE__*/_interopDefaultLegacy(stream);\nconst EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);\n\nfunction bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n};\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n};\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz';\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n};\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0];\n }\n\n return str;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst utils = {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject\n};\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype$1 = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype$1, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype$1);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (FormData__default[\"default\"] || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode$1(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode$1);\n } : encode$1;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nfunction buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nconst InterceptorManager$1 = InterceptorManager;\n\nconst transitionalDefaults = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n\nconst URLSearchParams = url__default[\"default\"].URLSearchParams;\n\nconst platform = {\n isNode: true,\n classes: {\n URLSearchParams,\n FormData: FormData__default[\"default\"],\n Blob: typeof Blob !== 'undefined' && Blob || null\n },\n protocols: [ 'http', 'https', 'file', 'data' ]\n};\n\nfunction toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nconst defaults$1 = defaults;\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nconst parseHeaders = rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nfunction isValidHeaderName(str) {\n return /^[-_a-zA-Z]+$/.test(str.trim());\n}\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite);\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nconst AxiosHeaders$1 = AxiosHeaders;\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nfunction transformData(fns, response) {\n const config = this || defaults$1;\n const context = response || config;\n const headers = AxiosHeaders$1.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n\nfunction isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nfunction settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nfunction isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nfunction combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nfunction buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n\nconst VERSION = \"1.3.4\";\n\nfunction parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n\nconst DATA_URL_PATTERN = /^(?:([^;]+);)?(?:[^;]+;)?(base64|),([\\s\\S]*)$/;\n\n/**\n * Parse data uri to a Buffer or Blob\n *\n * @param {String} uri\n * @param {?Boolean} asBlob\n * @param {?Object} options\n * @param {?Function} options.Blob\n *\n * @returns {Buffer|Blob}\n */\nfunction fromDataURI(uri, asBlob, options) {\n const _Blob = options && options.Blob || platform.classes.Blob;\n const protocol = parseProtocol(uri);\n\n if (asBlob === undefined && _Blob) {\n asBlob = true;\n }\n\n if (protocol === 'data') {\n uri = protocol.length ? uri.slice(protocol.length + 1) : uri;\n\n const match = DATA_URL_PATTERN.exec(uri);\n\n if (!match) {\n throw new AxiosError('Invalid URL', AxiosError.ERR_INVALID_URL);\n }\n\n const mime = match[1];\n const isBase64 = match[2];\n const body = match[3];\n const buffer = Buffer.from(decodeURIComponent(body), isBase64 ? 'base64' : 'utf8');\n\n if (asBlob) {\n if (!_Blob) {\n throw new AxiosError('Blob is not supported', AxiosError.ERR_NOT_SUPPORT);\n }\n\n return new _Blob([buffer], {type: mime});\n }\n\n return buffer;\n }\n\n throw new AxiosError('Unsupported protocol ' + protocol, AxiosError.ERR_NOT_SUPPORT);\n}\n\n/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n const threshold = 1000 / freq;\n let timer = null;\n return function throttled(force, args) {\n const now = Date.now();\n if (force || now - timestamp > threshold) {\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n timestamp = now;\n return fn.apply(null, args);\n }\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n timestamp = Date.now();\n return fn.apply(null, args);\n }, threshold - (now - timestamp));\n }\n };\n}\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nconst kInternals = Symbol('internals');\n\nclass AxiosTransformStream extends stream__default[\"default\"].Transform{\n constructor(options) {\n options = utils.toFlatObject(options, {\n maxRate: 0,\n chunkSize: 64 * 1024,\n minChunkSize: 100,\n timeWindow: 500,\n ticksRate: 2,\n samplesCount: 15\n }, null, (prop, source) => {\n return !utils.isUndefined(source[prop]);\n });\n\n super({\n readableHighWaterMark: options.chunkSize\n });\n\n const self = this;\n\n const internals = this[kInternals] = {\n length: options.length,\n timeWindow: options.timeWindow,\n ticksRate: options.ticksRate,\n chunkSize: options.chunkSize,\n maxRate: options.maxRate,\n minChunkSize: options.minChunkSize,\n bytesSeen: 0,\n isCaptured: false,\n notifiedBytesLoaded: 0,\n ts: Date.now(),\n bytes: 0,\n onReadCallback: null\n };\n\n const _speedometer = speedometer(internals.ticksRate * options.samplesCount, internals.timeWindow);\n\n this.on('newListener', event => {\n if (event === 'progress') {\n if (!internals.isCaptured) {\n internals.isCaptured = true;\n }\n }\n });\n\n let bytesNotified = 0;\n\n internals.updateProgress = throttle(function throttledHandler() {\n const totalBytes = internals.length;\n const bytesTransferred = internals.bytesSeen;\n const progressBytes = bytesTransferred - bytesNotified;\n if (!progressBytes || self.destroyed) return;\n\n const rate = _speedometer(progressBytes);\n\n bytesNotified = bytesTransferred;\n\n process.nextTick(() => {\n self.emit('progress', {\n 'loaded': bytesTransferred,\n 'total': totalBytes,\n 'progress': totalBytes ? (bytesTransferred / totalBytes) : undefined,\n 'bytes': progressBytes,\n 'rate': rate ? rate : undefined,\n 'estimated': rate && totalBytes && bytesTransferred <= totalBytes ?\n (totalBytes - bytesTransferred) / rate : undefined\n });\n });\n }, internals.ticksRate);\n\n const onFinish = () => {\n internals.updateProgress(true);\n };\n\n this.once('end', onFinish);\n this.once('error', onFinish);\n }\n\n _read(size) {\n const internals = this[kInternals];\n\n if (internals.onReadCallback) {\n internals.onReadCallback();\n }\n\n return super._read(size);\n }\n\n _transform(chunk, encoding, callback) {\n const self = this;\n const internals = this[kInternals];\n const maxRate = internals.maxRate;\n\n const readableHighWaterMark = this.readableHighWaterMark;\n\n const timeWindow = internals.timeWindow;\n\n const divider = 1000 / timeWindow;\n const bytesThreshold = (maxRate / divider);\n const minChunkSize = internals.minChunkSize !== false ? Math.max(internals.minChunkSize, bytesThreshold * 0.01) : 0;\n\n function pushChunk(_chunk, _callback) {\n const bytes = Buffer.byteLength(_chunk);\n internals.bytesSeen += bytes;\n internals.bytes += bytes;\n\n if (internals.isCaptured) {\n internals.updateProgress();\n }\n\n if (self.push(_chunk)) {\n process.nextTick(_callback);\n } else {\n internals.onReadCallback = () => {\n internals.onReadCallback = null;\n process.nextTick(_callback);\n };\n }\n }\n\n const transformChunk = (_chunk, _callback) => {\n const chunkSize = Buffer.byteLength(_chunk);\n let chunkRemainder = null;\n let maxChunkSize = readableHighWaterMark;\n let bytesLeft;\n let passed = 0;\n\n if (maxRate) {\n const now = Date.now();\n\n if (!internals.ts || (passed = (now - internals.ts)) >= timeWindow) {\n internals.ts = now;\n bytesLeft = bytesThreshold - internals.bytes;\n internals.bytes = bytesLeft < 0 ? -bytesLeft : 0;\n passed = 0;\n }\n\n bytesLeft = bytesThreshold - internals.bytes;\n }\n\n if (maxRate) {\n if (bytesLeft <= 0) {\n // next time window\n return setTimeout(() => {\n _callback(null, _chunk);\n }, timeWindow - passed);\n }\n\n if (bytesLeft < maxChunkSize) {\n maxChunkSize = bytesLeft;\n }\n }\n\n if (maxChunkSize && chunkSize > maxChunkSize && (chunkSize - maxChunkSize) > minChunkSize) {\n chunkRemainder = _chunk.subarray(maxChunkSize);\n _chunk = _chunk.subarray(0, maxChunkSize);\n }\n\n pushChunk(_chunk, chunkRemainder ? () => {\n process.nextTick(_callback, null, chunkRemainder);\n } : _callback);\n };\n\n transformChunk(chunk, function transformNextChunk(err, _chunk) {\n if (err) {\n return callback(err);\n }\n\n if (_chunk) {\n transformChunk(_chunk, transformNextChunk);\n } else {\n callback(null);\n }\n });\n }\n\n setLength(length) {\n this[kInternals].length = +length;\n return this;\n }\n}\n\nconst AxiosTransformStream$1 = AxiosTransformStream;\n\nconst {asyncIterator} = Symbol;\n\nconst readBlob = async function* (blob) {\n if (blob.stream) {\n yield* blob.stream();\n } else if (blob.arrayBuffer) {\n yield await blob.arrayBuffer();\n } else if (blob[asyncIterator]) {\n yield* blob[asyncIterator]();\n } else {\n yield blob;\n }\n};\n\nconst readBlob$1 = readBlob;\n\nconst BOUNDARY_ALPHABET = utils.ALPHABET.ALPHA_DIGIT + '-_';\n\nconst textEncoder = new util.TextEncoder();\n\nconst CRLF = '\\r\\n';\nconst CRLF_BYTES = textEncoder.encode(CRLF);\nconst CRLF_BYTES_COUNT = 2;\n\nclass FormDataPart {\n constructor(name, value) {\n const {escapeName} = this.constructor;\n const isStringValue = utils.isString(value);\n\n let headers = `Content-Disposition: form-data; name=\"${escapeName(name)}\"${\n !isStringValue && value.name ? `; filename=\"${escapeName(value.name)}\"` : ''\n }${CRLF}`;\n\n if (isStringValue) {\n value = textEncoder.encode(String(value).replace(/\\r?\\n|\\r\\n?/g, CRLF));\n } else {\n headers += `Content-Type: ${value.type || \"application/octet-stream\"}${CRLF}`;\n }\n\n this.headers = textEncoder.encode(headers + CRLF);\n\n this.contentLength = isStringValue ? value.byteLength : value.size;\n\n this.size = this.headers.byteLength + this.contentLength + CRLF_BYTES_COUNT;\n\n this.name = name;\n this.value = value;\n }\n\n async *encode(){\n yield this.headers;\n\n const {value} = this;\n\n if(utils.isTypedArray(value)) {\n yield value;\n } else {\n yield* readBlob$1(value);\n }\n\n yield CRLF_BYTES;\n }\n\n static escapeName(name) {\n return String(name).replace(/[\\r\\n\"]/g, (match) => ({\n '\\r' : '%0D',\n '\\n' : '%0A',\n '\"' : '%22',\n }[match]));\n }\n}\n\nconst formDataToStream = (form, headersHandler, options) => {\n const {\n tag = 'form-data-boundary',\n size = 25,\n boundary = tag + '-' + utils.generateString(size, BOUNDARY_ALPHABET)\n } = options || {};\n\n if(!utils.isFormData(form)) {\n throw TypeError('FormData instance required');\n }\n\n if (boundary.length < 1 || boundary.length > 70) {\n throw Error('boundary must be 10-70 characters long')\n }\n\n const boundaryBytes = textEncoder.encode('--' + boundary + CRLF);\n const footerBytes = textEncoder.encode('--' + boundary + '--' + CRLF + CRLF);\n let contentLength = footerBytes.byteLength;\n\n const parts = Array.from(form.entries()).map(([name, value]) => {\n const part = new FormDataPart(name, value);\n contentLength += part.size;\n return part;\n });\n\n contentLength += boundaryBytes.byteLength * parts.length;\n\n contentLength = utils.toFiniteNumber(contentLength);\n\n const computedHeaders = {\n 'Content-Type': `multipart/form-data; boundary=${boundary}`\n };\n\n if (Number.isFinite(contentLength)) {\n computedHeaders['Content-Length'] = contentLength;\n }\n\n headersHandler && headersHandler(computedHeaders);\n\n return stream.Readable.from((async function *() {\n for(const part of parts) {\n yield boundaryBytes;\n yield* part.encode();\n }\n\n yield footerBytes;\n })());\n};\n\nconst formDataToStream$1 = formDataToStream;\n\nclass ZlibHeaderTransformStream extends stream__default[\"default\"].Transform {\n __transform(chunk, encoding, callback) {\n this.push(chunk);\n callback();\n }\n\n _transform(chunk, encoding, callback) {\n if (chunk.length !== 0) {\n this._transform = this.__transform;\n\n // Add Default Compression headers if no zlib headers are present\n if (chunk[0] !== 120) { // Hex: 78\n const header = Buffer.alloc(2);\n header[0] = 120; // Hex: 78\n header[1] = 156; // Hex: 9C \n this.push(header, encoding);\n }\n }\n\n this.__transform(chunk, encoding, callback);\n }\n}\n\nconst ZlibHeaderTransformStream$1 = ZlibHeaderTransformStream;\n\nconst zlibOptions = {\n flush: zlib__default[\"default\"].constants.Z_SYNC_FLUSH,\n finishFlush: zlib__default[\"default\"].constants.Z_SYNC_FLUSH\n};\n\nconst brotliOptions = {\n flush: zlib__default[\"default\"].constants.BROTLI_OPERATION_FLUSH,\n finishFlush: zlib__default[\"default\"].constants.BROTLI_OPERATION_FLUSH\n};\n\nconst isBrotliSupported = utils.isFunction(zlib__default[\"default\"].createBrotliDecompress);\n\nconst {http: httpFollow, https: httpsFollow} = followRedirects__default[\"default\"];\n\nconst isHttps = /https:?/;\n\nconst supportedProtocols = platform.protocols.map(protocol => {\n return protocol + ':';\n});\n\n/**\n * If the proxy or config beforeRedirects functions are defined, call them with the options\n * object.\n *\n * @param {Object} options - The options object that was passed to the request.\n *\n * @returns {Object}\n */\nfunction dispatchBeforeRedirect(options) {\n if (options.beforeRedirects.proxy) {\n options.beforeRedirects.proxy(options);\n }\n if (options.beforeRedirects.config) {\n options.beforeRedirects.config(options);\n }\n}\n\n/**\n * If the proxy or config afterRedirects functions are defined, call them with the options\n *\n * @param {http.ClientRequestArgs} options\n * @param {AxiosProxyConfig} configProxy configuration from Axios options object\n * @param {string} location\n *\n * @returns {http.ClientRequestArgs}\n */\nfunction setProxy(options, configProxy, location) {\n let proxy = configProxy;\n if (!proxy && proxy !== false) {\n const proxyUrl = proxyFromEnv.getProxyForUrl(location);\n if (proxyUrl) {\n proxy = new URL(proxyUrl);\n }\n }\n if (proxy) {\n // Basic proxy authorization\n if (proxy.username) {\n proxy.auth = (proxy.username || '') + ':' + (proxy.password || '');\n }\n\n if (proxy.auth) {\n // Support proxy auth object form\n if (proxy.auth.username || proxy.auth.password) {\n proxy.auth = (proxy.auth.username || '') + ':' + (proxy.auth.password || '');\n }\n const base64 = Buffer\n .from(proxy.auth, 'utf8')\n .toString('base64');\n options.headers['Proxy-Authorization'] = 'Basic ' + base64;\n }\n\n options.headers.host = options.hostname + (options.port ? ':' + options.port : '');\n const proxyHost = proxy.hostname || proxy.host;\n options.hostname = proxyHost;\n // Replace 'host' since options is not a URL object\n options.host = proxyHost;\n options.port = proxy.port;\n options.path = location;\n if (proxy.protocol) {\n options.protocol = proxy.protocol.includes(':') ? proxy.protocol : `${proxy.protocol}:`;\n }\n }\n\n options.beforeRedirects.proxy = function beforeRedirect(redirectOptions) {\n // Configure proxy for redirected request, passing the original config proxy to apply\n // the exact same logic as if the redirected request was performed by axios directly.\n setProxy(redirectOptions, configProxy, redirectOptions.href);\n };\n}\n\nconst isHttpAdapterSupported = typeof process !== 'undefined' && utils.kindOf(process) === 'process';\n\n// temporary hotfix\n\nconst wrapAsync = (asyncExecutor) => {\n return new Promise((resolve, reject) => {\n let onDone;\n let isDone;\n\n const done = (value, isRejected) => {\n if (isDone) return;\n isDone = true;\n onDone && onDone(value, isRejected);\n };\n\n const _resolve = (value) => {\n done(value);\n resolve(value);\n };\n\n const _reject = (reason) => {\n done(reason, true);\n reject(reason);\n };\n\n asyncExecutor(_resolve, _reject, (onDoneHandler) => (onDone = onDoneHandler)).catch(_reject);\n })\n};\n\n/*eslint consistent-return:0*/\nconst httpAdapter = isHttpAdapterSupported && function httpAdapter(config) {\n return wrapAsync(async function dispatchHttpRequest(resolve, reject, onDone) {\n let {data} = config;\n const {responseType, responseEncoding} = config;\n const method = config.method.toUpperCase();\n let isDone;\n let rejected = false;\n let req;\n\n // temporary internal emitter until the AxiosRequest class will be implemented\n const emitter = new EventEmitter__default[\"default\"]();\n\n const onFinished = () => {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(abort);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', abort);\n }\n\n emitter.removeAllListeners();\n };\n\n onDone((value, isRejected) => {\n isDone = true;\n if (isRejected) {\n rejected = true;\n onFinished();\n }\n });\n\n function abort(reason) {\n emitter.emit('abort', !reason || reason.type ? new CanceledError(null, config, req) : reason);\n }\n\n emitter.once('abort', reject);\n\n if (config.cancelToken || config.signal) {\n config.cancelToken && config.cancelToken.subscribe(abort);\n if (config.signal) {\n config.signal.aborted ? abort() : config.signal.addEventListener('abort', abort);\n }\n }\n\n // Parse url\n const fullPath = buildFullPath(config.baseURL, config.url);\n const parsed = new URL(fullPath, 'http://localhost');\n const protocol = parsed.protocol || supportedProtocols[0];\n\n if (protocol === 'data:') {\n let convertedData;\n\n if (method !== 'GET') {\n return settle(resolve, reject, {\n status: 405,\n statusText: 'method not allowed',\n headers: {},\n config\n });\n }\n\n try {\n convertedData = fromDataURI(config.url, responseType === 'blob', {\n Blob: config.env && config.env.Blob\n });\n } catch (err) {\n throw AxiosError.from(err, AxiosError.ERR_BAD_REQUEST, config);\n }\n\n if (responseType === 'text') {\n convertedData = convertedData.toString(responseEncoding);\n\n if (!responseEncoding || responseEncoding === 'utf8') {\n convertedData = utils.stripBOM(convertedData);\n }\n } else if (responseType === 'stream') {\n convertedData = stream__default[\"default\"].Readable.from(convertedData);\n }\n\n return settle(resolve, reject, {\n data: convertedData,\n status: 200,\n statusText: 'OK',\n headers: new AxiosHeaders$1(),\n config\n });\n }\n\n if (supportedProtocols.indexOf(protocol) === -1) {\n return reject(new AxiosError(\n 'Unsupported protocol ' + protocol,\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n const headers = AxiosHeaders$1.from(config.headers).normalize();\n\n // Set User-Agent (required by some servers)\n // See https://github.com/axios/axios/issues/69\n // User-Agent is specified; handle case where no UA header is desired\n // Only set header if it hasn't been set in config\n headers.set('User-Agent', 'axios/' + VERSION, false);\n\n const onDownloadProgress = config.onDownloadProgress;\n const onUploadProgress = config.onUploadProgress;\n const maxRate = config.maxRate;\n let maxUploadRate = undefined;\n let maxDownloadRate = undefined;\n\n // support for spec compliant FormData objects\n if (utils.isSpecCompliantForm(data)) {\n const userBoundary = headers.getContentType(/boundary=([-_\\w\\d]{10,70})/i);\n\n data = formDataToStream$1(data, (formHeaders) => {\n headers.set(formHeaders);\n }, {\n tag: `axios-${VERSION}-boundary`,\n boundary: userBoundary && userBoundary[1] || undefined\n });\n // support for https://www.npmjs.com/package/form-data api\n } else if (utils.isFormData(data) && utils.isFunction(data.getHeaders)) {\n headers.set(data.getHeaders());\n\n if (!headers.hasContentLength()) {\n try {\n const knownLength = await util__default[\"default\"].promisify(data.getLength).call(data);\n Number.isFinite(knownLength) && knownLength >= 0 && headers.setContentLength(knownLength);\n /*eslint no-empty:0*/\n } catch (e) {\n }\n }\n } else if (utils.isBlob(data)) {\n data.size && headers.setContentType(data.type || 'application/octet-stream');\n headers.setContentLength(data.size || 0);\n data = stream__default[\"default\"].Readable.from(readBlob$1(data));\n } else if (data && !utils.isStream(data)) {\n if (Buffer.isBuffer(data)) ; else if (utils.isArrayBuffer(data)) {\n data = Buffer.from(new Uint8Array(data));\n } else if (utils.isString(data)) {\n data = Buffer.from(data, 'utf-8');\n } else {\n return reject(new AxiosError(\n 'Data after transformation must be a string, an ArrayBuffer, a Buffer, or a Stream',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n\n // Add Content-Length header if data exists\n headers.setContentLength(data.length, false);\n\n if (config.maxBodyLength > -1 && data.length > config.maxBodyLength) {\n return reject(new AxiosError(\n 'Request body larger than maxBodyLength limit',\n AxiosError.ERR_BAD_REQUEST,\n config\n ));\n }\n }\n\n const contentLength = utils.toFiniteNumber(headers.getContentLength());\n\n if (utils.isArray(maxRate)) {\n maxUploadRate = maxRate[0];\n maxDownloadRate = maxRate[1];\n } else {\n maxUploadRate = maxDownloadRate = maxRate;\n }\n\n if (data && (onUploadProgress || maxUploadRate)) {\n if (!utils.isStream(data)) {\n data = stream__default[\"default\"].Readable.from(data, {objectMode: false});\n }\n\n data = stream__default[\"default\"].pipeline([data, new AxiosTransformStream$1({\n length: contentLength,\n maxRate: utils.toFiniteNumber(maxUploadRate)\n })], utils.noop);\n\n onUploadProgress && data.on('progress', progress => {\n onUploadProgress(Object.assign(progress, {\n upload: true\n }));\n });\n }\n\n // HTTP basic authentication\n let auth = undefined;\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password || '';\n auth = username + ':' + password;\n }\n\n if (!auth && parsed.username) {\n const urlUsername = parsed.username;\n const urlPassword = parsed.password;\n auth = urlUsername + ':' + urlPassword;\n }\n\n auth && headers.delete('authorization');\n\n let path;\n\n try {\n path = buildURL(\n parsed.pathname + parsed.search,\n config.params,\n config.paramsSerializer\n ).replace(/^\\?/, '');\n } catch (err) {\n const customErr = new Error(err.message);\n customErr.config = config;\n customErr.url = config.url;\n customErr.exists = true;\n return reject(customErr);\n }\n\n headers.set(\n 'Accept-Encoding',\n 'gzip, compress, deflate' + (isBrotliSupported ? ', br' : ''), false\n );\n\n const options = {\n path,\n method: method,\n headers: headers.toJSON(),\n agents: { http: config.httpAgent, https: config.httpsAgent },\n auth,\n protocol,\n beforeRedirect: dispatchBeforeRedirect,\n beforeRedirects: {}\n };\n\n if (config.socketPath) {\n options.socketPath = config.socketPath;\n } else {\n options.hostname = parsed.hostname;\n options.port = parsed.port;\n setProxy(options, config.proxy, protocol + '//' + parsed.hostname + (parsed.port ? ':' + parsed.port : '') + options.path);\n }\n\n let transport;\n const isHttpsRequest = isHttps.test(options.protocol);\n options.agent = isHttpsRequest ? config.httpsAgent : config.httpAgent;\n if (config.transport) {\n transport = config.transport;\n } else if (config.maxRedirects === 0) {\n transport = isHttpsRequest ? https__default[\"default\"] : http__default[\"default\"];\n } else {\n if (config.maxRedirects) {\n options.maxRedirects = config.maxRedirects;\n }\n if (config.beforeRedirect) {\n options.beforeRedirects.config = config.beforeRedirect;\n }\n transport = isHttpsRequest ? httpsFollow : httpFollow;\n }\n\n if (config.maxBodyLength > -1) {\n options.maxBodyLength = config.maxBodyLength;\n } else {\n // follow-redirects does not skip comparison, so it should always succeed for axios -1 unlimited\n options.maxBodyLength = Infinity;\n }\n\n if (config.insecureHTTPParser) {\n options.insecureHTTPParser = config.insecureHTTPParser;\n }\n\n // Create the request\n req = transport.request(options, function handleResponse(res) {\n if (req.destroyed) return;\n\n const streams = [res];\n\n const responseLength = +res.headers['content-length'];\n\n if (onDownloadProgress) {\n const transformStream = new AxiosTransformStream$1({\n length: utils.toFiniteNumber(responseLength),\n maxRate: utils.toFiniteNumber(maxDownloadRate)\n });\n\n onDownloadProgress && transformStream.on('progress', progress => {\n onDownloadProgress(Object.assign(progress, {\n download: true\n }));\n });\n\n streams.push(transformStream);\n }\n\n // decompress the response body transparently if required\n let responseStream = res;\n\n // return the last request in case of redirects\n const lastRequest = res.req || req;\n\n // if decompress disabled we should not decompress\n if (config.decompress !== false && res.headers['content-encoding']) {\n // if no content, but headers still say that it is encoded,\n // remove the header not confuse downstream operations\n if (method === 'HEAD' || res.statusCode === 204) {\n delete res.headers['content-encoding'];\n }\n\n switch (res.headers['content-encoding']) {\n /*eslint default-case:0*/\n case 'gzip':\n case 'x-gzip':\n case 'compress':\n case 'x-compress':\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib__default[\"default\"].createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'deflate':\n streams.push(new ZlibHeaderTransformStream$1());\n\n // add the unzipper to the body stream processing pipeline\n streams.push(zlib__default[\"default\"].createUnzip(zlibOptions));\n\n // remove the content-encoding in order to not confuse downstream operations\n delete res.headers['content-encoding'];\n break;\n case 'br':\n if (isBrotliSupported) {\n streams.push(zlib__default[\"default\"].createBrotliDecompress(brotliOptions));\n delete res.headers['content-encoding'];\n }\n }\n }\n\n responseStream = streams.length > 1 ? stream__default[\"default\"].pipeline(streams, utils.noop) : streams[0];\n\n const offListeners = stream__default[\"default\"].finished(responseStream, () => {\n offListeners();\n onFinished();\n });\n\n const response = {\n status: res.statusCode,\n statusText: res.statusMessage,\n headers: new AxiosHeaders$1(res.headers),\n config,\n request: lastRequest\n };\n\n if (responseType === 'stream') {\n response.data = responseStream;\n settle(resolve, reject, response);\n } else {\n const responseBuffer = [];\n let totalResponseBytes = 0;\n\n responseStream.on('data', function handleStreamData(chunk) {\n responseBuffer.push(chunk);\n totalResponseBytes += chunk.length;\n\n // make sure the content length is not over the maxContentLength if specified\n if (config.maxContentLength > -1 && totalResponseBytes > config.maxContentLength) {\n // stream.destroy() emit aborted event before calling reject() on Node.js v16\n rejected = true;\n responseStream.destroy();\n reject(new AxiosError('maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE, config, lastRequest));\n }\n });\n\n responseStream.on('aborted', function handlerStreamAborted() {\n if (rejected) {\n return;\n }\n\n const err = new AxiosError(\n 'maxContentLength size of ' + config.maxContentLength + ' exceeded',\n AxiosError.ERR_BAD_RESPONSE,\n config,\n lastRequest\n );\n responseStream.destroy(err);\n reject(err);\n });\n\n responseStream.on('error', function handleStreamError(err) {\n if (req.destroyed) return;\n reject(AxiosError.from(err, null, config, lastRequest));\n });\n\n responseStream.on('end', function handleStreamEnd() {\n try {\n let responseData = responseBuffer.length === 1 ? responseBuffer[0] : Buffer.concat(responseBuffer);\n if (responseType !== 'arraybuffer') {\n responseData = responseData.toString(responseEncoding);\n if (!responseEncoding || responseEncoding === 'utf8') {\n responseData = utils.stripBOM(responseData);\n }\n }\n response.data = responseData;\n } catch (err) {\n reject(AxiosError.from(err, null, config, response.request, response));\n }\n settle(resolve, reject, response);\n });\n }\n\n emitter.once('abort', err => {\n if (!responseStream.destroyed) {\n responseStream.emit('error', err);\n responseStream.destroy();\n }\n });\n });\n\n emitter.once('abort', err => {\n reject(err);\n req.destroy(err);\n });\n\n // Handle errors\n req.on('error', function handleRequestError(err) {\n // @todo remove\n // if (req.aborted && err.code !== AxiosError.ERR_FR_TOO_MANY_REDIRECTS) return;\n reject(AxiosError.from(err, null, config, req));\n });\n\n // set tcp keep alive to prevent drop connection by peer\n req.on('socket', function handleRequestSocket(socket) {\n // default interval of sending ack packet is 1 minute\n socket.setKeepAlive(true, 1000 * 60);\n });\n\n // Handle request timeout\n if (config.timeout) {\n // This is forcing a int timeout to avoid problems if the `req` interface doesn't handle other types.\n const timeout = parseInt(config.timeout, 10);\n\n if (isNaN(timeout)) {\n reject(new AxiosError(\n 'error trying to parse `config.timeout` to int',\n AxiosError.ERR_BAD_OPTION_VALUE,\n config,\n req\n ));\n\n return;\n }\n\n // Sometime, the response will be very slow, and does not respond, the connect event will be block by event loop system.\n // And timer callback will be fired, and abort() will be invoked before connection, then get \"socket hang up\" and code ECONNRESET.\n // At this time, if we have a large number of request, nodejs will hang up some socket on background. and the number will up and up.\n // And then these socket which be hang up will devouring CPU little by little.\n // ClientRequest.setTimeout will be fired on the specify milliseconds, and can make sure that abort() will be fired after connect.\n req.setTimeout(timeout, function handleRequestTimeout() {\n if (isDone) return;\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n req\n ));\n abort();\n });\n }\n\n\n // Send the request\n if (utils.isStream(data)) {\n let ended = false;\n let errored = false;\n\n data.on('end', () => {\n ended = true;\n });\n\n data.once('error', err => {\n errored = true;\n req.destroy(err);\n });\n\n data.on('close', () => {\n if (!ended && !errored) {\n abort(new CanceledError('Request stream has been aborted', config, req));\n }\n });\n\n data.pipe(req);\n } else {\n req.end(data);\n }\n });\n};\n\nconst cookies = platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n\nconst isURLSameOrigin = platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nconst xhrAdapter = isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders$1.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv)) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders$1.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n};\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n};\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst adapters = {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n};\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nfunction dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders$1.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders$1.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders$1.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nfunction mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n\nconst validators$1 = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators$1[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators$1.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nconst validator = {\n assertOptions,\n validators: validators$1\n};\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager$1(),\n response: new InterceptorManager$1()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer !== undefined) {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders$1.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nconst Axios$1 = Axios;\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nconst CancelToken$1 = CancelToken;\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nfunction spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nfunction isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n\nconst HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nconst HttpStatusCode$1 = HttpStatusCode;\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios$1(defaultConfig);\n const instance = bind(Axios$1.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios$1.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults$1);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios$1;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken$1;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders$1;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode$1;\n\naxios.default = axios;\n\nmodule.exports = axios;\n//# sourceMappingURL=axios.cjs.map\n","// Underscore.js 1.13.6\n// https://underscorejs.org\n// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// Current version.\nvar VERSION = '1.13.6';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nvar root = (typeof self == 'object' && self.self === self && self) ||\n (typeof global == 'object' && global.global === global && global) ||\n Function('return this')() ||\n {};\n\n// Save bytes in the minified (but not gzipped) version:\nvar ArrayProto = Array.prototype, ObjProto = Object.prototype;\nvar SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nvar push = ArrayProto.push,\n slice = ArrayProto.slice,\n toString = ObjProto.toString,\n hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nvar supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nvar nativeIsArray = Array.isArray,\n nativeKeys = Object.keys,\n nativeCreate = Object.create,\n nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nvar _isNaN = isNaN,\n _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nvar hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nvar MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nfunction restArguments(func, startIndex) {\n startIndex = startIndex == null ? func.length - 1 : +startIndex;\n return function() {\n var length = Math.max(arguments.length - startIndex, 0),\n rest = Array(length),\n index = 0;\n for (; index < length; index++) {\n rest[index] = arguments[index + startIndex];\n }\n switch (startIndex) {\n case 0: return func.call(this, rest);\n case 1: return func.call(this, arguments[0], rest);\n case 2: return func.call(this, arguments[0], arguments[1], rest);\n }\n var args = Array(startIndex + 1);\n for (index = 0; index < startIndex; index++) {\n args[index] = arguments[index];\n }\n args[startIndex] = rest;\n return func.apply(this, args);\n };\n}\n\n// Is a given variable an object?\nfunction isObject(obj) {\n var type = typeof obj;\n return type === 'function' || (type === 'object' && !!obj);\n}\n\n// Is a given value equal to null?\nfunction isNull(obj) {\n return obj === null;\n}\n\n// Is a given variable undefined?\nfunction isUndefined(obj) {\n return obj === void 0;\n}\n\n// Is a given value a boolean?\nfunction isBoolean(obj) {\n return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n// Is a given value a DOM element?\nfunction isElement(obj) {\n return !!(obj && obj.nodeType === 1);\n}\n\n// Internal function for creating a `toString`-based type tester.\nfunction tagTester(name) {\n var tag = '[object ' + name + ']';\n return function(obj) {\n return toString.call(obj) === tag;\n };\n}\n\nvar isString = tagTester('String');\n\nvar isNumber = tagTester('Number');\n\nvar isDate = tagTester('Date');\n\nvar isRegExp = tagTester('RegExp');\n\nvar isError = tagTester('Error');\n\nvar isSymbol = tagTester('Symbol');\n\nvar isArrayBuffer = tagTester('ArrayBuffer');\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n isFunction = function(obj) {\n return typeof obj == 'function' || false;\n };\n}\n\nvar isFunction$1 = isFunction;\n\nvar hasObjectTag = tagTester('Object');\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nvar hasStringTagBug = (\n supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n ),\n isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n return obj != null && isFunction$1(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nvar isDataView$1 = (hasStringTagBug ? ie10IsDataView : isDataView);\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nvar isArray = nativeIsArray || tagTester('Array');\n\n// Internal function to check whether `key` is an own property name of `obj`.\nfunction has$1(obj, key) {\n return obj != null && hasOwnProperty.call(obj, key);\n}\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n if (!isArguments(arguments)) {\n isArguments = function(obj) {\n return has$1(obj, 'callee');\n };\n }\n}());\n\nvar isArguments$1 = isArguments;\n\n// Is a given object a finite number?\nfunction isFinite$1(obj) {\n return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n// Is the given value `NaN`?\nfunction isNaN$1(obj) {\n return isNumber(obj) && _isNaN(obj);\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nfunction createSizePropertyCheck(getSizeProperty) {\n return function(collection) {\n var sizeProperty = getSizeProperty(collection);\n return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n }\n}\n\n// Internal helper to generate a function to obtain property `key` from `obj`.\nfunction shallowProperty(key) {\n return function(obj) {\n return obj == null ? void 0 : obj[key];\n };\n}\n\n// Internal helper to obtain the `byteLength` property of an object.\nvar getByteLength = shallowProperty('byteLength');\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nvar isBufferLike = createSizePropertyCheck(getByteLength);\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n // Otherwise, fall back on the above regular expression.\n return nativeIsView ? (nativeIsView(obj) && !isDataView$1(obj)) :\n isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nvar isTypedArray$1 = supportsArrayBuffer ? isTypedArray : constant(false);\n\n// Internal helper to obtain the `length` property of an object.\nvar getLength = shallowProperty('length');\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n var hash = {};\n for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n return {\n contains: function(key) { return hash[key] === true; },\n push: function(key) {\n hash[key] = true;\n return keys.push(key);\n }\n };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nfunction collectNonEnumProps(obj, keys) {\n keys = emulatedSet(keys);\n var nonEnumIdx = nonEnumerableProps.length;\n var constructor = obj.constructor;\n var proto = (isFunction$1(constructor) && constructor.prototype) || ObjProto;\n\n // Constructor is a special case.\n var prop = 'constructor';\n if (has$1(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n while (nonEnumIdx--) {\n prop = nonEnumerableProps[nonEnumIdx];\n if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n keys.push(prop);\n }\n }\n}\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nfunction keys(obj) {\n if (!isObject(obj)) return [];\n if (nativeKeys) return nativeKeys(obj);\n var keys = [];\n for (var key in obj) if (has$1(obj, key)) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nfunction isEmpty(obj) {\n if (obj == null) return true;\n // Skip the more expensive `toString`-based type checks if `obj` has no\n // `.length`.\n var length = getLength(obj);\n if (typeof length == 'number' && (\n isArray(obj) || isString(obj) || isArguments$1(obj)\n )) return length === 0;\n return getLength(keys(obj)) === 0;\n}\n\n// Returns whether an object has a given set of `key:value` pairs.\nfunction isMatch(object, attrs) {\n var _keys = keys(attrs), length = _keys.length;\n if (object == null) return !length;\n var obj = Object(object);\n for (var i = 0; i < length; i++) {\n var key = _keys[i];\n if (attrs[key] !== obj[key] || !(key in obj)) return false;\n }\n return true;\n}\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nfunction _$1(obj) {\n if (obj instanceof _$1) return obj;\n if (!(this instanceof _$1)) return new _$1(obj);\n this._wrapped = obj;\n}\n\n_$1.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_$1.prototype.value = function() {\n return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_$1.prototype.valueOf = _$1.prototype.toJSON = _$1.prototype.value;\n\n_$1.prototype.toString = function() {\n return String(this._wrapped);\n};\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nfunction toBufferView(bufferSource) {\n return new Uint8Array(\n bufferSource.buffer || bufferSource,\n bufferSource.byteOffset || 0,\n getByteLength(bufferSource)\n );\n}\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n // Identical objects are equal. `0 === -0`, but they aren't identical.\n // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n if (a === b) return a !== 0 || 1 / a === 1 / b;\n // `null` or `undefined` only equal to itself (strict comparison).\n if (a == null || b == null) return false;\n // `NaN`s are equivalent, but non-reflexive.\n if (a !== a) return b !== b;\n // Exhaust primitive checks\n var type = typeof a;\n if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n // Unwrap any wrapped objects.\n if (a instanceof _$1) a = a._wrapped;\n if (b instanceof _$1) b = b._wrapped;\n // Compare `[[Class]]` names.\n var className = toString.call(a);\n if (className !== toString.call(b)) return false;\n // Work around a bug in IE 10 - Edge 13.\n if (hasStringTagBug && className == '[object Object]' && isDataView$1(a)) {\n if (!isDataView$1(b)) return false;\n className = tagDataView;\n }\n switch (className) {\n // These types are compared by value.\n case '[object RegExp]':\n // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n case '[object String]':\n // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n // equivalent to `new String(\"5\")`.\n return '' + a === '' + b;\n case '[object Number]':\n // `NaN`s are equivalent, but non-reflexive.\n // Object(NaN) is equivalent to NaN.\n if (+a !== +a) return +b !== +b;\n // An `egal` comparison is performed for other numeric values.\n return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n case '[object Date]':\n case '[object Boolean]':\n // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n // millisecond representations. Note that invalid dates with millisecond representations\n // of `NaN` are not equivalent.\n return +a === +b;\n case '[object Symbol]':\n return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n case '[object ArrayBuffer]':\n case tagDataView:\n // Coerce to typed array so we can fall through.\n return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n }\n\n var areArrays = className === '[object Array]';\n if (!areArrays && isTypedArray$1(a)) {\n var byteLength = getByteLength(a);\n if (byteLength !== getByteLength(b)) return false;\n if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n areArrays = true;\n }\n if (!areArrays) {\n if (typeof a != 'object' || typeof b != 'object') return false;\n\n // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n // from different frames are.\n var aCtor = a.constructor, bCtor = b.constructor;\n if (aCtor !== bCtor && !(isFunction$1(aCtor) && aCtor instanceof aCtor &&\n isFunction$1(bCtor) && bCtor instanceof bCtor)\n && ('constructor' in a && 'constructor' in b)) {\n return false;\n }\n }\n // Assume equality for cyclic structures. The algorithm for detecting cyclic\n // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n // Initializing stack of traversed objects.\n // It's done here since we only need them for objects and arrays comparison.\n aStack = aStack || [];\n bStack = bStack || [];\n var length = aStack.length;\n while (length--) {\n // Linear search. Performance is inversely proportional to the number of\n // unique nested structures.\n if (aStack[length] === a) return bStack[length] === b;\n }\n\n // Add the first object to the stack of traversed objects.\n aStack.push(a);\n bStack.push(b);\n\n // Recursively compare objects and arrays.\n if (areArrays) {\n // Compare array lengths to determine if a deep comparison is necessary.\n length = a.length;\n if (length !== b.length) return false;\n // Deep compare the contents, ignoring non-numeric properties.\n while (length--) {\n if (!eq(a[length], b[length], aStack, bStack)) return false;\n }\n } else {\n // Deep compare objects.\n var _keys = keys(a), key;\n length = _keys.length;\n // Ensure that both objects contain the same number of properties before comparing deep equality.\n if (keys(b).length !== length) return false;\n while (length--) {\n // Deep compare each member\n key = _keys[length];\n if (!(has$1(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n }\n }\n // Remove the first object from the stack of traversed objects.\n aStack.pop();\n bStack.pop();\n return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nfunction isEqual(a, b) {\n return eq(a, b);\n}\n\n// Retrieve all the enumerable property names of an object.\nfunction allKeys(obj) {\n if (!isObject(obj)) return [];\n var keys = [];\n for (var key in obj) keys.push(key);\n // Ahem, IE < 9.\n if (hasEnumBug) collectNonEnumProps(obj, keys);\n return keys;\n}\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nfunction ie11fingerprint(methods) {\n var length = getLength(methods);\n return function(obj) {\n if (obj == null) return false;\n // `Map`, `WeakMap` and `Set` have no enumerable keys.\n var keys = allKeys(obj);\n if (getLength(keys)) return false;\n for (var i = 0; i < length; i++) {\n if (!isFunction$1(obj[methods[i]])) return false;\n }\n // If we are testing against `WeakMap`, we need to ensure that\n // `obj` doesn't have a `forEach` method in order to distinguish\n // it from a regular `Map`.\n return methods !== weakMapMethods || !isFunction$1(obj[forEachName]);\n };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n hasName = 'has',\n commonInit = ['clear', 'delete'],\n mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nvar mapMethods = commonInit.concat(forEachName, mapTail),\n weakMapMethods = commonInit.concat(mapTail),\n setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\nvar isMap = isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\nvar isWeakMap = isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\nvar isSet = isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\nvar isWeakSet = tagTester('WeakSet');\n\n// Retrieve the values of an object's properties.\nfunction values(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var values = Array(length);\n for (var i = 0; i < length; i++) {\n values[i] = obj[_keys[i]];\n }\n return values;\n}\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nfunction pairs(obj) {\n var _keys = keys(obj);\n var length = _keys.length;\n var pairs = Array(length);\n for (var i = 0; i < length; i++) {\n pairs[i] = [_keys[i], obj[_keys[i]]];\n }\n return pairs;\n}\n\n// Invert the keys and values of an object. The values must be serializable.\nfunction invert(obj) {\n var result = {};\n var _keys = keys(obj);\n for (var i = 0, length = _keys.length; i < length; i++) {\n result[obj[_keys[i]]] = _keys[i];\n }\n return result;\n}\n\n// Return a sorted list of the function names available on the object.\nfunction functions(obj) {\n var names = [];\n for (var key in obj) {\n if (isFunction$1(obj[key])) names.push(key);\n }\n return names.sort();\n}\n\n// An internal function for creating assigner functions.\nfunction createAssigner(keysFunc, defaults) {\n return function(obj) {\n var length = arguments.length;\n if (defaults) obj = Object(obj);\n if (length < 2 || obj == null) return obj;\n for (var index = 1; index < length; index++) {\n var source = arguments[index],\n keys = keysFunc(source),\n l = keys.length;\n for (var i = 0; i < l; i++) {\n var key = keys[i];\n if (!defaults || obj[key] === void 0) obj[key] = source[key];\n }\n }\n return obj;\n };\n}\n\n// Extend a given object with all the properties in passed-in object(s).\nvar extend = createAssigner(allKeys);\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nvar extendOwn = createAssigner(keys);\n\n// Fill in a given object with default properties.\nvar defaults = createAssigner(allKeys, true);\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nfunction baseCreate(prototype) {\n if (!isObject(prototype)) return {};\n if (nativeCreate) return nativeCreate(prototype);\n var Ctor = ctor();\n Ctor.prototype = prototype;\n var result = new Ctor;\n Ctor.prototype = null;\n return result;\n}\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nfunction create(prototype, props) {\n var result = baseCreate(prototype);\n if (props) extendOwn(result, props);\n return result;\n}\n\n// Create a (shallow-cloned) duplicate of an object.\nfunction clone(obj) {\n if (!isObject(obj)) return obj;\n return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nfunction tap(obj, interceptor) {\n interceptor(obj);\n return obj;\n}\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nfunction toPath$1(path) {\n return isArray(path) ? path : [path];\n}\n_$1.toPath = toPath$1;\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nfunction toPath(path) {\n return _$1.toPath(path);\n}\n\n// Internal function to obtain a nested property in `obj` along `path`.\nfunction deepGet(obj, path) {\n var length = path.length;\n for (var i = 0; i < length; i++) {\n if (obj == null) return void 0;\n obj = obj[path[i]];\n }\n return length ? obj : void 0;\n}\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nfunction get(object, path, defaultValue) {\n var value = deepGet(object, toPath(path));\n return isUndefined(value) ? defaultValue : value;\n}\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nfunction has(obj, path) {\n path = toPath(path);\n var length = path.length;\n for (var i = 0; i < length; i++) {\n var key = path[i];\n if (!has$1(obj, key)) return false;\n obj = obj[key];\n }\n return !!length;\n}\n\n// Keep the identity function around for default iteratees.\nfunction identity(value) {\n return value;\n}\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nfunction matcher(attrs) {\n attrs = extendOwn({}, attrs);\n return function(obj) {\n return isMatch(obj, attrs);\n };\n}\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nfunction property(path) {\n path = toPath(path);\n return function(obj) {\n return deepGet(obj, path);\n };\n}\n\n// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nfunction optimizeCb(func, context, argCount) {\n if (context === void 0) return func;\n switch (argCount == null ? 3 : argCount) {\n case 1: return function(value) {\n return func.call(context, value);\n };\n // The 2-argument case is omitted because we’re not using it.\n case 3: return function(value, index, collection) {\n return func.call(context, value, index, collection);\n };\n case 4: return function(accumulator, value, index, collection) {\n return func.call(context, accumulator, value, index, collection);\n };\n }\n return function() {\n return func.apply(context, arguments);\n };\n}\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nfunction baseIteratee(value, context, argCount) {\n if (value == null) return identity;\n if (isFunction$1(value)) return optimizeCb(value, context, argCount);\n if (isObject(value) && !isArray(value)) return matcher(value);\n return property(value);\n}\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nfunction iteratee(value, context) {\n return baseIteratee(value, context, Infinity);\n}\n_$1.iteratee = iteratee;\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nfunction cb(value, context, argCount) {\n if (_$1.iteratee !== iteratee) return _$1.iteratee(value, context);\n return baseIteratee(value, context, argCount);\n}\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nfunction mapObject(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = keys(obj),\n length = _keys.length,\n results = {};\n for (var index = 0; index < length; index++) {\n var currentKey = _keys[index];\n results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Predicate-generating function. Often useful outside of Underscore.\nfunction noop(){}\n\n// Generates a function for a given object that returns a given property.\nfunction propertyOf(obj) {\n if (obj == null) return noop;\n return function(path) {\n return get(obj, path);\n };\n}\n\n// Run a function **n** times.\nfunction times(n, iteratee, context) {\n var accum = Array(Math.max(0, n));\n iteratee = optimizeCb(iteratee, context, 1);\n for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n return accum;\n}\n\n// Return a random integer between `min` and `max` (inclusive).\nfunction random(min, max) {\n if (max == null) {\n max = min;\n min = 0;\n }\n return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n// A (possibly faster) way to get the current timestamp as an integer.\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nfunction createEscaper(map) {\n var escaper = function(match) {\n return map[match];\n };\n // Regexes for identifying a key that needs to be escaped.\n var source = '(?:' + keys(map).join('|') + ')';\n var testRegexp = RegExp(source);\n var replaceRegexp = RegExp(source, 'g');\n return function(string) {\n string = string == null ? '' : '' + string;\n return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n };\n}\n\n// Internal list of HTML entities for escaping.\nvar escapeMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`'\n};\n\n// Function for escaping strings to HTML interpolation.\nvar _escape = createEscaper(escapeMap);\n\n// Internal list of HTML entities for unescaping.\nvar unescapeMap = invert(escapeMap);\n\n// Function for unescaping strings from HTML interpolation.\nvar _unescape = createEscaper(unescapeMap);\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nvar templateSettings = _$1.templateSettings = {\n evaluate: /<%([\\s\\S]+?)%>/g,\n interpolate: /<%=([\\s\\S]+?)%>/g,\n escape: /<%-([\\s\\S]+?)%>/g\n};\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n \"'\": \"'\",\n '\\\\': '\\\\',\n '\\r': 'r',\n '\\n': 'n',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nfunction template(text, settings, oldSettings) {\n if (!settings && oldSettings) settings = oldSettings;\n settings = defaults({}, settings, _$1.templateSettings);\n\n // Combine delimiters into one regular expression via alternation.\n var matcher = RegExp([\n (settings.escape || noMatch).source,\n (settings.interpolate || noMatch).source,\n (settings.evaluate || noMatch).source\n ].join('|') + '|$', 'g');\n\n // Compile the template source, escaping string literals appropriately.\n var index = 0;\n var source = \"__p+='\";\n text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n index = offset + match.length;\n\n if (escape) {\n source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n } else if (interpolate) {\n source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n } else if (evaluate) {\n source += \"';\\n\" + evaluate + \"\\n__p+='\";\n }\n\n // Adobe VMs need the match returned to produce the correct offset.\n return match;\n });\n source += \"';\\n\";\n\n var argument = settings.variable;\n if (argument) {\n // Insure against third-party code injection. (CVE-2021-23358)\n if (!bareIdentifier.test(argument)) throw new Error(\n 'variable is not a bare identifier: ' + argument\n );\n } else {\n // If a variable is not specified, place data values in local scope.\n source = 'with(obj||{}){\\n' + source + '}\\n';\n argument = 'obj';\n }\n\n source = \"var __t,__p='',__j=Array.prototype.join,\" +\n \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n source + 'return __p;\\n';\n\n var render;\n try {\n render = new Function(argument, '_', source);\n } catch (e) {\n e.source = source;\n throw e;\n }\n\n var template = function(data) {\n return render.call(this, data, _$1);\n };\n\n // Provide the compiled source as a convenience for precompilation.\n template.source = 'function(' + argument + '){\\n' + source + '}';\n\n return template;\n}\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nfunction result(obj, path, fallback) {\n path = toPath(path);\n var length = path.length;\n if (!length) {\n return isFunction$1(fallback) ? fallback.call(obj) : fallback;\n }\n for (var i = 0; i < length; i++) {\n var prop = obj == null ? void 0 : obj[path[i]];\n if (prop === void 0) {\n prop = fallback;\n i = length; // Ensure we don't continue iterating.\n }\n obj = isFunction$1(prop) ? prop.call(obj) : prop;\n }\n return obj;\n}\n\n// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nfunction uniqueId(prefix) {\n var id = ++idCounter + '';\n return prefix ? prefix + id : id;\n}\n\n// Start chaining a wrapped Underscore object.\nfunction chain(obj) {\n var instance = _$1(obj);\n instance._chain = true;\n return instance;\n}\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nfunction executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n var self = baseCreate(sourceFunc.prototype);\n var result = sourceFunc.apply(self, args);\n if (isObject(result)) return result;\n return self;\n}\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n var placeholder = partial.placeholder;\n var bound = function() {\n var position = 0, length = boundArgs.length;\n var args = Array(length);\n for (var i = 0; i < length; i++) {\n args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n }\n while (position < arguments.length) args.push(arguments[position++]);\n return executeBound(func, bound, this, this, args);\n };\n return bound;\n});\n\npartial.placeholder = _$1;\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nvar bind = restArguments(function(func, context, args) {\n if (!isFunction$1(func)) throw new TypeError('Bind must be called on a function');\n var bound = restArguments(function(callArgs) {\n return executeBound(func, bound, context, this, args.concat(callArgs));\n });\n return bound;\n});\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nvar isArrayLike = createSizePropertyCheck(getLength);\n\n// Internal implementation of a recursive `flatten` function.\nfunction flatten$1(input, depth, strict, output) {\n output = output || [];\n if (!depth && depth !== 0) {\n depth = Infinity;\n } else if (depth <= 0) {\n return output.concat(input);\n }\n var idx = output.length;\n for (var i = 0, length = getLength(input); i < length; i++) {\n var value = input[i];\n if (isArrayLike(value) && (isArray(value) || isArguments$1(value))) {\n // Flatten current level of array or arguments object.\n if (depth > 1) {\n flatten$1(value, depth - 1, strict, output);\n idx = output.length;\n } else {\n var j = 0, len = value.length;\n while (j < len) output[idx++] = value[j++];\n }\n } else if (!strict) {\n output[idx++] = value;\n }\n }\n return output;\n}\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nvar bindAll = restArguments(function(obj, keys) {\n keys = flatten$1(keys, false, false);\n var index = keys.length;\n if (index < 1) throw new Error('bindAll must be passed function names');\n while (index--) {\n var key = keys[index];\n obj[key] = bind(obj[key], obj);\n }\n return obj;\n});\n\n// Memoize an expensive function by storing its results.\nfunction memoize(func, hasher) {\n var memoize = function(key) {\n var cache = memoize.cache;\n var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n if (!has$1(cache, address)) cache[address] = func.apply(this, arguments);\n return cache[address];\n };\n memoize.cache = {};\n return memoize;\n}\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nvar delay = restArguments(function(func, wait, args) {\n return setTimeout(function() {\n return func.apply(null, args);\n }, wait);\n});\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nvar defer = partial(delay, _$1, 1);\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nfunction throttle(func, wait, options) {\n var timeout, context, args, result;\n var previous = 0;\n if (!options) options = {};\n\n var later = function() {\n previous = options.leading === false ? 0 : now();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n };\n\n var throttled = function() {\n var _now = now();\n if (!previous && options.leading === false) previous = _now;\n var remaining = wait - (_now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = _now;\n result = func.apply(context, args);\n if (!timeout) context = args = null;\n } else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n previous = 0;\n timeout = context = args = null;\n };\n\n return throttled;\n}\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nfunction debounce(func, wait, immediate) {\n var timeout, previous, args, result, context;\n\n var later = function() {\n var passed = now() - previous;\n if (wait > passed) {\n timeout = setTimeout(later, wait - passed);\n } else {\n timeout = null;\n if (!immediate) result = func.apply(context, args);\n // This check is needed because `func` can recursively invoke `debounced`.\n if (!timeout) args = context = null;\n }\n };\n\n var debounced = restArguments(function(_args) {\n context = this;\n args = _args;\n previous = now();\n if (!timeout) {\n timeout = setTimeout(later, wait);\n if (immediate) result = func.apply(context, args);\n }\n return result;\n });\n\n debounced.cancel = function() {\n clearTimeout(timeout);\n timeout = args = context = null;\n };\n\n return debounced;\n}\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nfunction wrap(func, wrapper) {\n return partial(wrapper, func);\n}\n\n// Returns a negated version of the passed-in predicate.\nfunction negate(predicate) {\n return function() {\n return !predicate.apply(this, arguments);\n };\n}\n\n// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nfunction compose() {\n var args = arguments;\n var start = args.length - 1;\n return function() {\n var i = start;\n var result = args[start].apply(this, arguments);\n while (i--) result = args[i].call(this, result);\n return result;\n };\n}\n\n// Returns a function that will only be executed on and after the Nth call.\nfunction after(times, func) {\n return function() {\n if (--times < 1) {\n return func.apply(this, arguments);\n }\n };\n}\n\n// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nfunction before(times, func) {\n var memo;\n return function() {\n if (--times > 0) {\n memo = func.apply(this, arguments);\n }\n if (times <= 1) func = null;\n return memo;\n };\n}\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nvar once = partial(before, 2);\n\n// Returns the first key on an object that passes a truth test.\nfunction findKey(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = keys(obj), key;\n for (var i = 0, length = _keys.length; i < length; i++) {\n key = _keys[i];\n if (predicate(obj[key], key, obj)) return key;\n }\n}\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nfunction createPredicateIndexFinder(dir) {\n return function(array, predicate, context) {\n predicate = cb(predicate, context);\n var length = getLength(array);\n var index = dir > 0 ? 0 : length - 1;\n for (; index >= 0 && index < length; index += dir) {\n if (predicate(array[index], index, array)) return index;\n }\n return -1;\n };\n}\n\n// Returns the first index on an array-like that passes a truth test.\nvar findIndex = createPredicateIndexFinder(1);\n\n// Returns the last index on an array-like that passes a truth test.\nvar findLastIndex = createPredicateIndexFinder(-1);\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nfunction sortedIndex(array, obj, iteratee, context) {\n iteratee = cb(iteratee, context, 1);\n var value = iteratee(obj);\n var low = 0, high = getLength(array);\n while (low < high) {\n var mid = Math.floor((low + high) / 2);\n if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n }\n return low;\n}\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nfunction createIndexFinder(dir, predicateFind, sortedIndex) {\n return function(array, item, idx) {\n var i = 0, length = getLength(array);\n if (typeof idx == 'number') {\n if (dir > 0) {\n i = idx >= 0 ? idx : Math.max(idx + length, i);\n } else {\n length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n }\n } else if (sortedIndex && idx && length) {\n idx = sortedIndex(array, item);\n return array[idx] === item ? idx : -1;\n }\n if (item !== item) {\n idx = predicateFind(slice.call(array, i, length), isNaN$1);\n return idx >= 0 ? idx + i : -1;\n }\n for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n if (array[idx] === item) return idx;\n }\n return -1;\n };\n}\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nvar indexOf = createIndexFinder(1, findIndex, sortedIndex);\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nvar lastIndexOf = createIndexFinder(-1, findLastIndex);\n\n// Return the first value which passes a truth test.\nfunction find(obj, predicate, context) {\n var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n var key = keyFinder(obj, predicate, context);\n if (key !== void 0 && key !== -1) return obj[key];\n}\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nfunction findWhere(obj, attrs) {\n return find(obj, matcher(attrs));\n}\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nfunction each(obj, iteratee, context) {\n iteratee = optimizeCb(iteratee, context);\n var i, length;\n if (isArrayLike(obj)) {\n for (i = 0, length = obj.length; i < length; i++) {\n iteratee(obj[i], i, obj);\n }\n } else {\n var _keys = keys(obj);\n for (i = 0, length = _keys.length; i < length; i++) {\n iteratee(obj[_keys[i]], _keys[i], obj);\n }\n }\n return obj;\n}\n\n// Return the results of applying the iteratee to each element.\nfunction map(obj, iteratee, context) {\n iteratee = cb(iteratee, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n results = Array(length);\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n results[index] = iteratee(obj[currentKey], currentKey, obj);\n }\n return results;\n}\n\n// Internal helper to create a reducing function, iterating left or right.\nfunction createReduce(dir) {\n // Wrap code that reassigns argument variables in a separate function than\n // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n var reducer = function(obj, iteratee, memo, initial) {\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length,\n index = dir > 0 ? 0 : length - 1;\n if (!initial) {\n memo = obj[_keys ? _keys[index] : index];\n index += dir;\n }\n for (; index >= 0 && index < length; index += dir) {\n var currentKey = _keys ? _keys[index] : index;\n memo = iteratee(memo, obj[currentKey], currentKey, obj);\n }\n return memo;\n };\n\n return function(obj, iteratee, memo, context) {\n var initial = arguments.length >= 3;\n return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n };\n}\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nvar reduce = createReduce(1);\n\n// The right-associative version of reduce, also known as `foldr`.\nvar reduceRight = createReduce(-1);\n\n// Return all the elements that pass a truth test.\nfunction filter(obj, predicate, context) {\n var results = [];\n predicate = cb(predicate, context);\n each(obj, function(value, index, list) {\n if (predicate(value, index, list)) results.push(value);\n });\n return results;\n}\n\n// Return all the elements for which a truth test fails.\nfunction reject(obj, predicate, context) {\n return filter(obj, negate(cb(predicate)), context);\n}\n\n// Determine whether all of the elements pass a truth test.\nfunction every(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (!predicate(obj[currentKey], currentKey, obj)) return false;\n }\n return true;\n}\n\n// Determine if at least one element in the object passes a truth test.\nfunction some(obj, predicate, context) {\n predicate = cb(predicate, context);\n var _keys = !isArrayLike(obj) && keys(obj),\n length = (_keys || obj).length;\n for (var index = 0; index < length; index++) {\n var currentKey = _keys ? _keys[index] : index;\n if (predicate(obj[currentKey], currentKey, obj)) return true;\n }\n return false;\n}\n\n// Determine if the array or object contains a given item (using `===`).\nfunction contains(obj, item, fromIndex, guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n return indexOf(obj, item, fromIndex) >= 0;\n}\n\n// Invoke a method (with arguments) on every item in a collection.\nvar invoke = restArguments(function(obj, path, args) {\n var contextPath, func;\n if (isFunction$1(path)) {\n func = path;\n } else {\n path = toPath(path);\n contextPath = path.slice(0, -1);\n path = path[path.length - 1];\n }\n return map(obj, function(context) {\n var method = func;\n if (!method) {\n if (contextPath && contextPath.length) {\n context = deepGet(context, contextPath);\n }\n if (context == null) return void 0;\n method = context[path];\n }\n return method == null ? method : method.apply(context, args);\n });\n});\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nfunction pluck(obj, key) {\n return map(obj, property(key));\n}\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nfunction where(obj, attrs) {\n return filter(obj, matcher(attrs));\n}\n\n// Return the maximum element (or element-based computation).\nfunction max(obj, iteratee, context) {\n var result = -Infinity, lastComputed = -Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value > result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed > lastComputed || (computed === -Infinity && result === -Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Return the minimum element (or element-based computation).\nfunction min(obj, iteratee, context) {\n var result = Infinity, lastComputed = Infinity,\n value, computed;\n if (iteratee == null || (typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null)) {\n obj = isArrayLike(obj) ? obj : values(obj);\n for (var i = 0, length = obj.length; i < length; i++) {\n value = obj[i];\n if (value != null && value < result) {\n result = value;\n }\n }\n } else {\n iteratee = cb(iteratee, context);\n each(obj, function(v, index, list) {\n computed = iteratee(v, index, list);\n if (computed < lastComputed || (computed === Infinity && result === Infinity)) {\n result = v;\n lastComputed = computed;\n }\n });\n }\n return result;\n}\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nfunction toArray(obj) {\n if (!obj) return [];\n if (isArray(obj)) return slice.call(obj);\n if (isString(obj)) {\n // Keep surrogate pair characters together.\n return obj.match(reStrSymbol);\n }\n if (isArrayLike(obj)) return map(obj, identity);\n return values(obj);\n}\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nfunction sample(obj, n, guard) {\n if (n == null || guard) {\n if (!isArrayLike(obj)) obj = values(obj);\n return obj[random(obj.length - 1)];\n }\n var sample = toArray(obj);\n var length = getLength(sample);\n n = Math.max(Math.min(n, length), 0);\n var last = length - 1;\n for (var index = 0; index < n; index++) {\n var rand = random(index, last);\n var temp = sample[index];\n sample[index] = sample[rand];\n sample[rand] = temp;\n }\n return sample.slice(0, n);\n}\n\n// Shuffle a collection.\nfunction shuffle(obj) {\n return sample(obj, Infinity);\n}\n\n// Sort the object's values by a criterion produced by an iteratee.\nfunction sortBy(obj, iteratee, context) {\n var index = 0;\n iteratee = cb(iteratee, context);\n return pluck(map(obj, function(value, key, list) {\n return {\n value: value,\n index: index++,\n criteria: iteratee(value, key, list)\n };\n }).sort(function(left, right) {\n var a = left.criteria;\n var b = right.criteria;\n if (a !== b) {\n if (a > b || a === void 0) return 1;\n if (a < b || b === void 0) return -1;\n }\n return left.index - right.index;\n }), 'value');\n}\n\n// An internal function used for aggregate \"group by\" operations.\nfunction group(behavior, partition) {\n return function(obj, iteratee, context) {\n var result = partition ? [[], []] : {};\n iteratee = cb(iteratee, context);\n each(obj, function(value, index) {\n var key = iteratee(value, index, obj);\n behavior(result, value, key);\n });\n return result;\n };\n}\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nvar groupBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nvar indexBy = group(function(result, value, key) {\n result[key] = value;\n});\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nvar countBy = group(function(result, value, key) {\n if (has$1(result, key)) result[key]++; else result[key] = 1;\n});\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nvar partition = group(function(result, value, pass) {\n result[pass ? 0 : 1].push(value);\n}, true);\n\n// Return the number of elements in a collection.\nfunction size(obj) {\n if (obj == null) return 0;\n return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nfunction keyInObj(value, key, obj) {\n return key in obj;\n}\n\n// Return a copy of the object only containing the allowed properties.\nvar pick = restArguments(function(obj, keys) {\n var result = {}, iteratee = keys[0];\n if (obj == null) return result;\n if (isFunction$1(iteratee)) {\n if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n keys = allKeys(obj);\n } else {\n iteratee = keyInObj;\n keys = flatten$1(keys, false, false);\n obj = Object(obj);\n }\n for (var i = 0, length = keys.length; i < length; i++) {\n var key = keys[i];\n var value = obj[key];\n if (iteratee(value, key, obj)) result[key] = value;\n }\n return result;\n});\n\n// Return a copy of the object without the disallowed properties.\nvar omit = restArguments(function(obj, keys) {\n var iteratee = keys[0], context;\n if (isFunction$1(iteratee)) {\n iteratee = negate(iteratee);\n if (keys.length > 1) context = keys[1];\n } else {\n keys = map(flatten$1(keys, false, false), String);\n iteratee = function(value, key) {\n return !contains(keys, key);\n };\n }\n return pick(obj, iteratee, context);\n});\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nfunction initial(array, n, guard) {\n return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nfunction first(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[0];\n return initial(array, array.length - n);\n}\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nfunction rest(array, n, guard) {\n return slice.call(array, n == null || guard ? 1 : n);\n}\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nfunction last(array, n, guard) {\n if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n if (n == null || guard) return array[array.length - 1];\n return rest(array, Math.max(0, array.length - n));\n}\n\n// Trim out all falsy values from an array.\nfunction compact(array) {\n return filter(array, Boolean);\n}\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nfunction flatten(array, depth) {\n return flatten$1(array, depth, false);\n}\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nvar difference = restArguments(function(array, rest) {\n rest = flatten$1(rest, true, true);\n return filter(array, function(value){\n return !contains(rest, value);\n });\n});\n\n// Return a version of the array that does not contain the specified value(s).\nvar without = restArguments(function(array, otherArrays) {\n return difference(array, otherArrays);\n});\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nfunction uniq(array, isSorted, iteratee, context) {\n if (!isBoolean(isSorted)) {\n context = iteratee;\n iteratee = isSorted;\n isSorted = false;\n }\n if (iteratee != null) iteratee = cb(iteratee, context);\n var result = [];\n var seen = [];\n for (var i = 0, length = getLength(array); i < length; i++) {\n var value = array[i],\n computed = iteratee ? iteratee(value, i, array) : value;\n if (isSorted && !iteratee) {\n if (!i || seen !== computed) result.push(value);\n seen = computed;\n } else if (iteratee) {\n if (!contains(seen, computed)) {\n seen.push(computed);\n result.push(value);\n }\n } else if (!contains(result, value)) {\n result.push(value);\n }\n }\n return result;\n}\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nvar union = restArguments(function(arrays) {\n return uniq(flatten$1(arrays, true, true));\n});\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nfunction intersection(array) {\n var result = [];\n var argsLength = arguments.length;\n for (var i = 0, length = getLength(array); i < length; i++) {\n var item = array[i];\n if (contains(result, item)) continue;\n var j;\n for (j = 1; j < argsLength; j++) {\n if (!contains(arguments[j], item)) break;\n }\n if (j === argsLength) result.push(item);\n }\n return result;\n}\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nfunction unzip(array) {\n var length = (array && max(array, getLength).length) || 0;\n var result = Array(length);\n\n for (var index = 0; index < length; index++) {\n result[index] = pluck(array, index);\n }\n return result;\n}\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nvar zip = restArguments(unzip);\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nfunction object(list, values) {\n var result = {};\n for (var i = 0, length = getLength(list); i < length; i++) {\n if (values) {\n result[list[i]] = values[i];\n } else {\n result[list[i][0]] = list[i][1];\n }\n }\n return result;\n}\n\n// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nfunction range(start, stop, step) {\n if (stop == null) {\n stop = start || 0;\n start = 0;\n }\n if (!step) {\n step = stop < start ? -1 : 1;\n }\n\n var length = Math.max(Math.ceil((stop - start) / step), 0);\n var range = Array(length);\n\n for (var idx = 0; idx < length; idx++, start += step) {\n range[idx] = start;\n }\n\n return range;\n}\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nfunction chunk(array, count) {\n if (count == null || count < 1) return [];\n var result = [];\n var i = 0, length = array.length;\n while (i < length) {\n result.push(slice.call(array, i, i += count));\n }\n return result;\n}\n\n// Helper function to continue chaining intermediate results.\nfunction chainResult(instance, obj) {\n return instance._chain ? _$1(obj).chain() : obj;\n}\n\n// Add your own custom functions to the Underscore object.\nfunction mixin(obj) {\n each(functions(obj), function(name) {\n var func = _$1[name] = obj[name];\n _$1.prototype[name] = function() {\n var args = [this._wrapped];\n push.apply(args, arguments);\n return chainResult(this, func.apply(_$1, args));\n };\n });\n return _$1;\n}\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) {\n method.apply(obj, arguments);\n if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n delete obj[0];\n }\n }\n return chainResult(this, obj);\n };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n var method = ArrayProto[name];\n _$1.prototype[name] = function() {\n var obj = this._wrapped;\n if (obj != null) obj = method.apply(obj, arguments);\n return chainResult(this, obj);\n };\n});\n\n// Named Exports\n\nvar allExports = {\n __proto__: null,\n VERSION: VERSION,\n restArguments: restArguments,\n isObject: isObject,\n isNull: isNull,\n isUndefined: isUndefined,\n isBoolean: isBoolean,\n isElement: isElement,\n isString: isString,\n isNumber: isNumber,\n isDate: isDate,\n isRegExp: isRegExp,\n isError: isError,\n isSymbol: isSymbol,\n isArrayBuffer: isArrayBuffer,\n isDataView: isDataView$1,\n isArray: isArray,\n isFunction: isFunction$1,\n isArguments: isArguments$1,\n isFinite: isFinite$1,\n isNaN: isNaN$1,\n isTypedArray: isTypedArray$1,\n isEmpty: isEmpty,\n isMatch: isMatch,\n isEqual: isEqual,\n isMap: isMap,\n isWeakMap: isWeakMap,\n isSet: isSet,\n isWeakSet: isWeakSet,\n keys: keys,\n allKeys: allKeys,\n values: values,\n pairs: pairs,\n invert: invert,\n functions: functions,\n methods: functions,\n extend: extend,\n extendOwn: extendOwn,\n assign: extendOwn,\n defaults: defaults,\n create: create,\n clone: clone,\n tap: tap,\n get: get,\n has: has,\n mapObject: mapObject,\n identity: identity,\n constant: constant,\n noop: noop,\n toPath: toPath$1,\n property: property,\n propertyOf: propertyOf,\n matcher: matcher,\n matches: matcher,\n times: times,\n random: random,\n now: now,\n escape: _escape,\n unescape: _unescape,\n templateSettings: templateSettings,\n template: template,\n result: result,\n uniqueId: uniqueId,\n chain: chain,\n iteratee: iteratee,\n partial: partial,\n bind: bind,\n bindAll: bindAll,\n memoize: memoize,\n delay: delay,\n defer: defer,\n throttle: throttle,\n debounce: debounce,\n wrap: wrap,\n negate: negate,\n compose: compose,\n after: after,\n before: before,\n once: once,\n findKey: findKey,\n findIndex: findIndex,\n findLastIndex: findLastIndex,\n sortedIndex: sortedIndex,\n indexOf: indexOf,\n lastIndexOf: lastIndexOf,\n find: find,\n detect: find,\n findWhere: findWhere,\n each: each,\n forEach: each,\n map: map,\n collect: map,\n reduce: reduce,\n foldl: reduce,\n inject: reduce,\n reduceRight: reduceRight,\n foldr: reduceRight,\n filter: filter,\n select: filter,\n reject: reject,\n every: every,\n all: every,\n some: some,\n any: some,\n contains: contains,\n includes: contains,\n include: contains,\n invoke: invoke,\n pluck: pluck,\n where: where,\n max: max,\n min: min,\n shuffle: shuffle,\n sample: sample,\n sortBy: sortBy,\n groupBy: groupBy,\n indexBy: indexBy,\n countBy: countBy,\n partition: partition,\n toArray: toArray,\n size: size,\n pick: pick,\n omit: omit,\n first: first,\n head: first,\n take: first,\n initial: initial,\n last: last,\n rest: rest,\n tail: rest,\n drop: rest,\n compact: compact,\n flatten: flatten,\n without: without,\n uniq: uniq,\n unique: uniq,\n union: union,\n intersection: intersection,\n difference: difference,\n unzip: unzip,\n transpose: unzip,\n zip: zip,\n object: object,\n range: range,\n chunk: chunk,\n mixin: mixin,\n 'default': _$1\n};\n\n// Default Export\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n\nexports.VERSION = VERSION;\nexports._ = _;\nexports._escape = _escape;\nexports._unescape = _unescape;\nexports.after = after;\nexports.allKeys = allKeys;\nexports.before = before;\nexports.bind = bind;\nexports.bindAll = bindAll;\nexports.chain = chain;\nexports.chunk = chunk;\nexports.clone = clone;\nexports.compact = compact;\nexports.compose = compose;\nexports.constant = constant;\nexports.contains = contains;\nexports.countBy = countBy;\nexports.create = create;\nexports.debounce = debounce;\nexports.defaults = defaults;\nexports.defer = defer;\nexports.delay = delay;\nexports.difference = difference;\nexports.each = each;\nexports.every = every;\nexports.extend = extend;\nexports.extendOwn = extendOwn;\nexports.filter = filter;\nexports.find = find;\nexports.findIndex = findIndex;\nexports.findKey = findKey;\nexports.findLastIndex = findLastIndex;\nexports.findWhere = findWhere;\nexports.first = first;\nexports.flatten = flatten;\nexports.functions = functions;\nexports.get = get;\nexports.groupBy = groupBy;\nexports.has = has;\nexports.identity = identity;\nexports.indexBy = indexBy;\nexports.indexOf = indexOf;\nexports.initial = initial;\nexports.intersection = intersection;\nexports.invert = invert;\nexports.invoke = invoke;\nexports.isArguments = isArguments$1;\nexports.isArray = isArray;\nexports.isArrayBuffer = isArrayBuffer;\nexports.isBoolean = isBoolean;\nexports.isDataView = isDataView$1;\nexports.isDate = isDate;\nexports.isElement = isElement;\nexports.isEmpty = isEmpty;\nexports.isEqual = isEqual;\nexports.isError = isError;\nexports.isFinite = isFinite$1;\nexports.isFunction = isFunction$1;\nexports.isMap = isMap;\nexports.isMatch = isMatch;\nexports.isNaN = isNaN$1;\nexports.isNull = isNull;\nexports.isNumber = isNumber;\nexports.isObject = isObject;\nexports.isRegExp = isRegExp;\nexports.isSet = isSet;\nexports.isString = isString;\nexports.isSymbol = isSymbol;\nexports.isTypedArray = isTypedArray$1;\nexports.isUndefined = isUndefined;\nexports.isWeakMap = isWeakMap;\nexports.isWeakSet = isWeakSet;\nexports.iteratee = iteratee;\nexports.keys = keys;\nexports.last = last;\nexports.lastIndexOf = lastIndexOf;\nexports.map = map;\nexports.mapObject = mapObject;\nexports.matcher = matcher;\nexports.max = max;\nexports.memoize = memoize;\nexports.min = min;\nexports.mixin = mixin;\nexports.negate = negate;\nexports.noop = noop;\nexports.now = now;\nexports.object = object;\nexports.omit = omit;\nexports.once = once;\nexports.pairs = pairs;\nexports.partial = partial;\nexports.partition = partition;\nexports.pick = pick;\nexports.pluck = pluck;\nexports.property = property;\nexports.propertyOf = propertyOf;\nexports.random = random;\nexports.range = range;\nexports.reduce = reduce;\nexports.reduceRight = reduceRight;\nexports.reject = reject;\nexports.rest = rest;\nexports.restArguments = restArguments;\nexports.result = result;\nexports.sample = sample;\nexports.shuffle = shuffle;\nexports.size = size;\nexports.some = some;\nexports.sortBy = sortBy;\nexports.sortedIndex = sortedIndex;\nexports.tap = tap;\nexports.template = template;\nexports.templateSettings = templateSettings;\nexports.throttle = throttle;\nexports.times = times;\nexports.toArray = toArray;\nexports.toPath = toPath$1;\nexports.union = union;\nexports.uniq = uniq;\nexports.uniqueId = uniqueId;\nexports.unzip = unzip;\nexports.values = values;\nexports.where = where;\nexports.without = without;\nexports.wrap = wrap;\nexports.zip = zip;\n//# sourceMappingURL=underscore-node-f.cjs.map\n","// Underscore.js 1.13.6\n// https://underscorejs.org\n// (c) 2009-2022 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n// Underscore may be freely distributed under the MIT license.\n\nvar underscoreNodeF = require('./underscore-node-f.cjs');\n\n\n\nmodule.exports = underscoreNodeF._;\n//# sourceMappingURL=underscore-node.cjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","const core = require('@actions/core');\nconst github = require('@actions/github');\nconst axios = require('axios');\nconst detect = require('language-detect');\nconst httpsProxyAgent = require('https-proxy-agent');\n\nfunction configWithProxy(config) {\n var c = config || {};\n if (process.env.OPENAI_PROXY) {\n core.debug(`use proxy: ${process.env.OPENAI_PROXY}`);\n c.proxy = false;\n c.httpsAgent = new httpsProxyAgent(process.env.OPENAI_PROXY);\n return c;\n }\n return c;\n}\n\n\n\nasync function run() {\n try {\n // Get input values\n const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE');\n const openaiToken = core.getInput('OPENAI_TOKEN');\n const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT');\n const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX');\n const githubToken = core.getInput('GITHUB_TOKEN');\n const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL;\n const promptTemplate = core.getInput('PROMPT_TEMPLATE');\n const maxCodeLength = core.getInput('MAX_CODE_LENGTH');\n const answerTemplate = core.getInput('ANSWER_TEMPLATE');\n const giteaToken = core.getInput('GITHUB_TOKEN');\n const sourceAt = core.getInput('SOURCE_AT');\n\n core.debug(`programmingLanguage: ${programmingLanguage}`);\n core.debug(`openaiToken length: ${openaiToken.length}`);\n core.debug(`fullReviewComment: ${fullReviewComment}`);\n core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`);\n core.debug(`githubToken length: ${githubToken.length}`);\n core.debug(`githubBaseURL: ${githubBaseURL}`);\n core.debug(`promptTemplate: ${promptTemplate}`);\n core.debug(`maxCodeLength: ${maxCodeLength}`);\n core.debug(`answerTemplate: ${answerTemplate}`);\n core.debug(`SourceAt: ${sourceAt}`);\n\n // Get information about the pull request review\n const comment = github.context.payload.comment;\n const repoName = github.context.payload.repository.name;\n const repoOwner = github.context.payload.repository.owner.login;\n const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event\n\n // Get the code to analyze from the review comment\n var content = comment && comment.body || '';\n\n if(sourceAt === 'github') {\n\n const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`;\n console.log(`diff url: ${url}`);\n var response = await axios.get(url, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/vnd.github.diff'\n }\n });\n const code = response.data;\n core.debug(`diff code: ${code}`);\n const files = parsePullRequestDiff(code);\n core.debug(`diff files: ${files}`);\n\n if (!content || content == fullReviewComment) {\n // Extract the code from the pull request content\n content = promptTemplate.replace('${code}', code);\n } else {\n content = content.substring(reviewCommentPrefix.length);\n content = content.replace('${code}', code);\n const fileNames = findFileNames(content);\n core.debug(`found files name in commment: ${fileNames}`);\n for (const fileName of fileNames) {\n for (const key of Object.keys(files)) {\n if (key.includes(fileName)) {\n core.debug(`replace \\${file:${fileName}} with ${key}'s diff`);\n content = content.replace(`\\${file:${fileName}}`, files[key]);\n break;\n }\n }\n }\n }\n content = content.substring(0, maxCodeLength);\n }\n else if(sourceAt === 'gitea')\n {\n const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`;\n console.log(`diff url: ${url}`);\n var response = await axios.get(url, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/vnd.github.diff'\n }\n });\n const code = response.data;\n core.debug(`diff code: ${code}`);\n const files = parsePullRequestDiff(code);\n core.debug(`diff files: ${files}`);\n\n if (!content || content == fullReviewComment) {\n // Extract the code from the pull request content\n content = promptTemplate.replace('${code}', code);\n } else {\n content = content.substring(reviewCommentPrefix.length);\n content = content.replace('${code}', code);\n const fileNames = findFileNames(content);\n core.debug(`found files name in commment: ${fileNames}`);\n for (const fileName of fileNames) {\n for (const key of Object.keys(files)) {\n if (key.includes(fileName)) {\n core.debug(`replace \\${file:${fileName}} with ${key}'s diff`);\n content = content.replace(`\\${file:${fileName}}`, files[key]);\n break;\n }\n }\n }\n }\n content = content.substring(0, maxCodeLength);\n }\n // Determine the programming language if it was not provided\n if (programmingLanguage == 'auto') {\n const detectedLanguage = detect(code);\n core.debug(`Detected programming language: ${detectedLanguage}`);\n programmingLanguage = detectedLanguage;\n }\n\n var messages = [{\n role: \"system\",\n content: `You are a master of programming language ${programmingLanguage}`\n }, {\n role: \"user\",\n content: content\n }];\n\n core.debug(`content: ${content}`);\n\n // Call the OpenAI ChatGPT API to analyze the code\n response = await axios.post('https://api.openai.com/v1/chat/completions', {\n \"model\": \"gpt-3.5-turbo\",\n \"messages\": messages\n }, configWithProxy({\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${openaiToken}`\n }\n }));\n\n const answer = response.data.choices[0].message.content;\n core.debug(`openai response: ${answer}`);\n\n if(sourceAt === 'github') {\n // Reply to the review comment with the OpenAI response\n const octokit = new github.getOctokit(githubToken, {\n baseUrl: githubBaseURL\n });\n\n await octokit.rest.issues.createComment({\n owner: repoOwner,\n repo: repoName,\n issue_number: prNumber,\n body: answerTemplate.replace('${answer}', answer)\n\n });\n } else if (sourceAt === 'gitea')\n {\n\n\n // Make a POST request to create a comment on a pull request\n const comment = answerTemplate.replace('${answer}', answer);\n const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`;\n const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` };\n const data = { 'body': `${comment}`};\n core.debug(`url: ${url}`);\n core.debug(`githubToken: ${githubToken}`);\n core.debug(`data.body: ${data.body}`);\n var response = await axios.post(url, data, {\n headers: {\n Authorization: `token ${githubToken}`,\n Accept: 'application/json'\n }\n });\n }\n } catch (error) {\n core.setFailed(error.message);\n }\n}\n\nfunction parsePullRequestDiff(diffContent) {\n const files = {};\n const diffLines = diffContent.split('\\n');\n\n let currentFile = null;\n let currentLines = [];\n\n for (const line of diffLines) {\n if (line.startsWith('diff --git')) {\n // Start of a new file\n if (currentFile) {\n files[currentFile] = currentLines.join('\\n');\n }\n currentFile = line.substring('diff --git'.length + 1);\n currentLines = [line];\n } else {\n // Add the line to the current file's diff\n currentLines.push(line);\n }\n }\n\n // Add the last file's diff\n if (currentFile) {\n files[currentFile] = currentLines.join('\\n');\n }\n\n return files;\n}\n\nfunction findFileNames(str) {\n const pattern = /\\${file:([^{}]+)}/g;\n const matches = str.matchAll(pattern);\n const names = [];\n for (const match of matches) {\n names.push(match[1]);\n }\n return names;\n}\n\nrun();"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/index.js b/index.js index fb0a78f..4caa746 100644 --- a/index.js +++ b/index.js @@ -18,202 +18,176 @@ function configWithProxy(config) { async function run() { - try { - // Get input values - const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE'); - const openaiToken = core.getInput('OPENAI_TOKEN'); - const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT'); - const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX'); - const githubToken = core.getInput('GITHUB_TOKEN'); - const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL; - const promptTemplate = core.getInput('PROMPT_TEMPLATE'); - const codeTemplate = core.getInput('CODE_TEMPLATE'); - const jokeTemplate = core.getInput('JOKE_TEMPLATE'); - const maxCodeLength = core.getInput('MAX_CODE_LENGTH'); - const answerTemplate = core.getInput('ANSWER_TEMPLATE'); - const giteaToken = core.getInput('GITHUB_TOKEN'); - const sourceAt = core.getInput('SOURCE_AT'); + try { + // Get input values + const programmingLanguage = core.getInput('PROGRAMMING_LANGUAGE'); + const openaiToken = core.getInput('OPENAI_TOKEN'); + const fullReviewComment = core.getInput('FULL_REVIEW_COMMENT'); + const reviewCommentPrefix = core.getInput('REVIEW_COMMENT_PREFIX'); + const githubToken = core.getInput('GITHUB_TOKEN'); + const githubBaseURL = core.getInput('GITHUB_BASE_URL') || process.env.GITHUB_API_URL; + const promptTemplate = core.getInput('PROMPT_TEMPLATE'); + const maxCodeLength = core.getInput('MAX_CODE_LENGTH'); + const answerTemplate = core.getInput('ANSWER_TEMPLATE'); + const giteaToken = core.getInput('GITHUB_TOKEN'); + const sourceAt = core.getInput('SOURCE_AT'); - core.debug(`programmingLanguage: ${programmingLanguage}`); - core.debug(`openaiToken length: ${openaiToken.length}`); - core.debug(`fullReviewComment: ${fullReviewComment}`); - core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`); - core.debug(`githubToken length: ${githubToken.length}`); - core.debug(`githubBaseURL: ${githubBaseURL}`); - core.debug(`promptTemplate: ${promptTemplate}`); - core.debug(`codeTemplate: ${codeTemplate}`); - core.debug(`jokeTemplate: ${jokeTemplate}`); - core.debug(`maxCodeLength: ${maxCodeLength}`); - core.debug(`answerTemplate: ${answerTemplate}`); - core.debug(`SourceAt: ${sourceAt}`); + core.debug(`programmingLanguage: ${programmingLanguage}`); + core.debug(`openaiToken length: ${openaiToken.length}`); + core.debug(`fullReviewComment: ${fullReviewComment}`); + core.debug(`reviewCommentPrefix: ${reviewCommentPrefix}`); + core.debug(`githubToken length: ${githubToken.length}`); + core.debug(`githubBaseURL: ${githubBaseURL}`); + core.debug(`promptTemplate: ${promptTemplate}`); + core.debug(`maxCodeLength: ${maxCodeLength}`); + core.debug(`answerTemplate: ${answerTemplate}`); + core.debug(`SourceAt: ${sourceAt}`); - // Get information about the pull request review - const comment = github.context.payload.comment; - const repoName = github.context.payload.repository.name; - const repoOwner = github.context.payload.repository.owner.login; - const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event + // Get information about the pull request review + const comment = github.context.payload.comment; + const repoName = github.context.payload.repository.name; + const repoOwner = github.context.payload.repository.owner.login; + const prNumber = github.context.payload.number || github.context.payload.issue.number; // get number from a pull request event or comment event - // Get the code to analyze from the review comment - var content = comment && comment.body || ''; - var completeContent = comment && comment.body || ''; - if(sourceAt === 'github') { + // Get the code to analyze from the review comment + var content = comment && comment.body || ''; - const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`; - console.log(`diff url: ${url}`); - var response = await axios.get(url, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/vnd.github.diff' - } - }); - const code = response.data; - core.debug(`diff code: ${code}`); - const files = parsePullRequestDiff(code); - core.debug(`diff files: ${files}`); + if(sourceAt === 'github') { - if (!content || content == fullReviewComment) { - // Extract the code from the pull request content - content = code; - } else { - content = content.substring(reviewCommentPrefix.length); - content = content.replace('${code}', code); - const fileNames = findFileNames(content); - core.debug(`found files name in commment: ${fileNames}`); - for (const fileName of fileNames) { - for (const key of Object.keys(files)) { - if (key.includes(fileName)) { - core.debug(`replace \${file:${fileName}} with ${key}'s diff`); - content = content.replace(`\${file:${fileName}}`, files[key]); - break; - } - } - } - } - content = content.substring(0, maxCodeLength); - } - else if(sourceAt === 'gitea') - { - const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`; - console.log(`diff url: ${url}`); - var response = await axios.get(url, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/vnd.github.diff' - } - }); - const code = response.data; - core.debug(`diff code: ${code}`); - const files = parsePullRequestDiff(code); - core.debug(`diff files: ${files}`); + const url = `${githubBaseURL}/repos/${repoOwner}/${repoName}/pulls/${prNumber}`; + console.log(`diff url: ${url}`); + var response = await axios.get(url, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/vnd.github.diff' + } + }); + const code = response.data; + core.debug(`diff code: ${code}`); + const files = parsePullRequestDiff(code); + core.debug(`diff files: ${files}`); - if (!content || content == fullReviewComment) { - // Extract the code from the pull request content - content = code; - } else { - content = content.substring(reviewCommentPrefix.length); - content = content.replace('${code}', code); - const fileNames = findFileNames(content); - core.debug(`found files name in commment: ${fileNames}`); - for (const fileName of fileNames) { - for (const key of Object.keys(files)) { - if (key.includes(fileName)) { - core.debug(`replace \${file:${fileName}} with ${key}'s diff`); - content = content.replace(`\${file:${fileName}}`, files[key]); - break; - } - } - } - } - content = content.substring(0, maxCodeLength); - } - // Determine the programming language if it was not provided - if (programmingLanguage == 'auto') { - const detectedLanguage = detect(code); - core.debug(`Detected programming language: ${detectedLanguage}`); - programmingLanguage = detectedLanguage; - } - - var messageReview = promptTemplate.replace('${code}', content); - var messageJoke = jokeTemplate.replace('${code}', content); - var reviewInputMessages = [{ - role: "system", - content: `You are a master of programming language ${programmingLanguage}` - }, { - role: "user", - content: messageReview - }]; - - var jokeInputMessages = [{ - role: "system", - content: `You are a master of programming language ${programmingLanguage}` - }, { - role: "user", - content: messageJoke - }]; - - core.debug(`content: ${content}`); - - // Call the OpenAI ChatGPT API to analyze the code - responseReview = await axios.post('https://api.openai.com/v1/chat/completions', { - "model": "gpt-3.5-turbo", - "messages": reviewInputMessages - }, configWithProxy({ - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${openaiToken}` - } - })); - - // Call the OpenAI ChatGPT API to analyze the code - responseJoke = await axios.post('https://api.openai.com/v1/chat/completions', { - "model": "gpt-3.5-turbo", - "messages": jokeInputMessages - }, configWithProxy({ - headers: { - 'Content-Type': 'application/json', - 'Authorization': `Bearer ${openaiToken}` - } - })); - - - const answer = response.data.choices[0].message.content + '/n/n' + '### Funny Joke about this PR:' +'/n/n' + responseJoke.data.choices[0].message.content; - core.debug(`openai response: ${answer}`); - - if(sourceAt === 'github') { - // Reply to the review comment with the OpenAI response - const octokit = new github.getOctokit(githubToken, { - baseUrl: githubBaseURL - }); - - await octokit.rest.issues.createComment({ - owner: repoOwner, - repo: repoName, - issue_number: prNumber, - body: answerTemplate.replace('${answer}', answer) - - }); - } else if (sourceAt === 'gitea') - { - - - // Make a POST request to create a comment on a pull request - const comment = answerTemplate.replace('${answer}', answer); - const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`; - const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` }; - const data = { 'body': `${comment}`}; - core.debug(`url: ${url}`); - core.debug(`githubToken: ${githubToken}`); - core.debug(`data.body: ${data.body}`); - var response = await axios.post(url, data, { - headers: { - Authorization: `token ${githubToken}`, - Accept: 'application/json' + if (!content || content == fullReviewComment) { + // Extract the code from the pull request content + content = promptTemplate.replace('${code}', code); + } else { + content = content.substring(reviewCommentPrefix.length); + content = content.replace('${code}', code); + const fileNames = findFileNames(content); + core.debug(`found files name in commment: ${fileNames}`); + for (const fileName of fileNames) { + for (const key of Object.keys(files)) { + if (key.includes(fileName)) { + core.debug(`replace \${file:${fileName}} with ${key}'s diff`); + content = content.replace(`\${file:${fileName}}`, files[key]); + break; + } + } + } } - }); + content = content.substring(0, maxCodeLength); + } + else if(sourceAt === 'gitea') + { + const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/pulls/${prNumber}.diff`; + console.log(`diff url: ${url}`); + var response = await axios.get(url, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/vnd.github.diff' + } + }); + const code = response.data; + core.debug(`diff code: ${code}`); + const files = parsePullRequestDiff(code); + core.debug(`diff files: ${files}`); + + if (!content || content == fullReviewComment) { + // Extract the code from the pull request content + content = promptTemplate.replace('${code}', code); + } else { + content = content.substring(reviewCommentPrefix.length); + content = content.replace('${code}', code); + const fileNames = findFileNames(content); + core.debug(`found files name in commment: ${fileNames}`); + for (const fileName of fileNames) { + for (const key of Object.keys(files)) { + if (key.includes(fileName)) { + core.debug(`replace \${file:${fileName}} with ${key}'s diff`); + content = content.replace(`\${file:${fileName}}`, files[key]); + break; + } + } + } + } + content = content.substring(0, maxCodeLength); + } + // Determine the programming language if it was not provided + if (programmingLanguage == 'auto') { + const detectedLanguage = detect(code); + core.debug(`Detected programming language: ${detectedLanguage}`); + programmingLanguage = detectedLanguage; + } + + var messages = [{ + role: "system", + content: `You are a master of programming language ${programmingLanguage}` + }, { + role: "user", + content: content + }]; + + core.debug(`content: ${content}`); + + // Call the OpenAI ChatGPT API to analyze the code + response = await axios.post('https://api.openai.com/v1/chat/completions', { + "model": "gpt-3.5-turbo", + "messages": messages + }, configWithProxy({ + headers: { + 'Content-Type': 'application/json', + 'Authorization': `Bearer ${openaiToken}` + } + })); + + const answer = response.data.choices[0].message.content; + core.debug(`openai response: ${answer}`); + + if(sourceAt === 'github') { + // Reply to the review comment with the OpenAI response + const octokit = new github.getOctokit(githubToken, { + baseUrl: githubBaseURL + }); + + await octokit.rest.issues.createComment({ + owner: repoOwner, + repo: repoName, + issue_number: prNumber, + body: answerTemplate.replace('${answer}', answer) + + }); + } else if (sourceAt === 'gitea') + { + + + // Make a POST request to create a comment on a pull request + const comment = answerTemplate.replace('${answer}', answer); + const url = `${githubBaseURL}/api/v1/repos/${repoOwner}/${repoName}/issues/${prNumber}/comments`; + const headers = { 'Content-Type': 'application/json', 'Authorization': `token ${githubToken}` }; + const data = { 'body': `${comment}`}; + core.debug(`url: ${url}`); + core.debug(`githubToken: ${githubToken}`); + core.debug(`data.body: ${data.body}`); + var response = await axios.post(url, data, { + headers: { + Authorization: `token ${githubToken}`, + Accept: 'application/json' + } + }); + } + } catch (error) { + core.setFailed(error.message); } - } catch (error) { - core.setFailed(error.message); - } } function parsePullRequestDiff(diffContent) { @@ -224,22 +198,22 @@ function parsePullRequestDiff(diffContent) { let currentLines = []; for (const line of diffLines) { - if (line.startsWith('diff --git')) { - // Start of a new file - if (currentFile) { - files[currentFile] = currentLines.join('\n'); + if (line.startsWith('diff --git')) { + // Start of a new file + if (currentFile) { + files[currentFile] = currentLines.join('\n'); + } + currentFile = line.substring('diff --git'.length + 1); + currentLines = [line]; + } else { + // Add the line to the current file's diff + currentLines.push(line); } - currentFile = line.substring('diff --git'.length + 1); - currentLines = [line]; - } else { - // Add the line to the current file's diff - currentLines.push(line); - } } // Add the last file's diff if (currentFile) { - files[currentFile] = currentLines.join('\n'); + files[currentFile] = currentLines.join('\n'); } return files; @@ -250,9 +224,9 @@ function findFileNames(str) { const matches = str.matchAll(pattern); const names = []; for (const match of matches) { - names.push(match[1]); + names.push(match[1]); } return names; } -run(); +run(); \ No newline at end of file